UI/UX: refactor messages view
Change-Id: I2292ddf0d958aadc8171a86f12450ec56af0f6fc
Reviewed-by: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
diff --git a/src/views/IMTableCellView.mm b/src/views/IMTableCellView.mm
index 2d86cc9..365837d 100644
--- a/src/views/IMTableCellView.mm
+++ b/src/views/IMTableCellView.mm
@@ -25,7 +25,10 @@
uint64_t interaction;
}
-@synthesize msgView;
+NSString* const MESSAGE_MARGIN = @"10";
+NSString* const TIME_BOX_HEIGHT = @"34";
+
+@synthesize msgView, msgBackground, timeBox, transferedImage;
@synthesize photoView;
@synthesize acceptButton;
@synthesize declineButton;
@@ -50,34 +53,74 @@
[self setupDirection];
[self.msgView setBackgroundColor:[NSColor clearColor]];
[self.msgView setString:@""];
- [self.msgView setAutoresizingMask:NSViewWidthSizable];
- [self.msgView setAutoresizingMask:NSViewHeightSizable];
- [self.msgBackground setAutoresizingMask:NSViewWidthSizable];
- [self.msgBackground setAutoresizingMask:NSViewHeightSizable];
+ [self.msgView setTranslatesAutoresizingMaskIntoConstraints:NO];
+ [self.msgBackground setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.msgView setEnabledTextCheckingTypes:NSTextCheckingTypeLink];
[self.msgView setAutomaticLinkDetectionEnabled:YES];
[self.msgView setEditable:NO];
- if ([self.identifier containsString:@"Message"]) {
- [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-5-[msgView]"
- options:0
- metrics:nil
- views:NSDictionaryOfVariableBindings(msgView)]];
- }
}
-- (void) updateWidthConstraint:(CGFloat) newWidth
+- (void) updateMessageConstraint:(CGFloat) width andHeight: (CGFloat) height timeIsVisible: (bool) visible
{
- [self.msgView removeConstraints:[self.msgView constraints]];
- NSLayoutConstraint* constraint = [NSLayoutConstraint
- constraintWithItem:self.msgView
- attribute:NSLayoutAttributeWidth
- relatedBy:NSLayoutRelationEqual
- toItem: nil
- attribute:NSLayoutAttributeWidth
- multiplier:1.0f
- constant:newWidth];
+ [NSLayoutConstraint deactivateConstraints:[self.msgView constraints]];
+ [NSLayoutConstraint deactivateConstraints:[self.timeBox constraints]];
+ NSString* formatWidth = [NSString stringWithFormat:@"H:|-%@-[msgView(==%@)]-%@-|",
+ MESSAGE_MARGIN,[NSString stringWithFormat:@"%f", width],
+ MESSAGE_MARGIN];
+ NSString* formatHeight = [NSString stringWithFormat:@"V:[msgView(==%@)]",
+ [NSString stringWithFormat:@"%f", height]];
- [self.msgView addConstraint:constraint];
+ NSArray* constraintsMessageHorizontal = [NSLayoutConstraint
+ constraintsWithVisualFormat:formatWidth
+ options:NSLayoutFormatAlignAllCenterY
+ metrics:nil views:NSDictionaryOfVariableBindings(msgView)];
+ NSArray* constraintsMessageVertical = [NSLayoutConstraint
+ constraintsWithVisualFormat:formatHeight
+ options:0
+ metrics:nil views:NSDictionaryOfVariableBindings(msgView)];
+
+ NSLayoutConstraint* centerMessageConstraint =[NSLayoutConstraint constraintWithItem:msgView
+ attribute:NSLayoutAttributeCenterY
+ relatedBy:NSLayoutRelationEqual
+ toItem:msgView.superview
+ attribute:NSLayoutAttributeCenterY
+ multiplier:1.f constant:0.f];
+
+ NSString* formatTime = [NSString stringWithFormat:@"V:[timeBox(%@)]", TIME_BOX_HEIGHT];
+ [self.timeBox setHidden:NO];
+ if (!visible) {
+ formatTime = [NSString stringWithFormat:@"V:[timeBox(1)]"];
+ [self.timeBox setHidden:YES];
+ }
+ NSArray* constraintsVerticalTimeBox = [NSLayoutConstraint
+ constraintsWithVisualFormat:formatTime
+ options:0
+ metrics:nil views:NSDictionaryOfVariableBindings(timeBox)];
+ NSArray* constraints = [[[constraintsMessageHorizontal arrayByAddingObjectsFromArray:constraintsMessageVertical]
+ arrayByAddingObject:centerMessageConstraint] arrayByAddingObjectsFromArray:constraintsVerticalTimeBox];
+ [NSLayoutConstraint activateConstraints:constraints];
+}
+
+- (void) updateImageConstraint: (CGFloat) width andHeight: (CGFloat) height {
+ [NSLayoutConstraint deactivateConstraints:[self.transferedImage constraints]];
+ [self.msgBackground setHidden:YES];
+ NSString* formatHeight = [NSString stringWithFormat:@"V:[transferedImage(==%@)]",[NSString stringWithFormat:@"%f", height]];
+ NSString* formatWidth = [NSString stringWithFormat:
+ @"H:[transferedImage(==%@)]",[NSString stringWithFormat:@"%f", width]];
+ NSArray* constraintsHorizontal = [NSLayoutConstraint
+ constraintsWithVisualFormat:formatWidth
+ options:0
+ metrics:nil views:NSDictionaryOfVariableBindings(transferedImage)];
+ NSArray* constraintsVertical = [NSLayoutConstraint
+ constraintsWithVisualFormat:formatHeight
+ options:0
+ metrics:nil views:NSDictionaryOfVariableBindings(transferedImage)];
+ NSArray* constraints =[constraintsHorizontal arrayByAddingObjectsFromArray:constraintsVertical] ;
+ [NSLayoutConstraint activateConstraints:constraintsHorizontal];
+}
+
+- (void) invalidateImageConstraints {
+[NSLayoutConstraint deactivateConstraints:[self.transferedImage constraints]];
}
- (uint64_t)interaction