diff --git a/Vector/ViewController/RoomViewController.h b/Vector/ViewController/RoomViewController.h index 845d29f5a..6bb39f61d 100644 --- a/Vector/ViewController/RoomViewController.h +++ b/Vector/ViewController/RoomViewController.h @@ -29,6 +29,7 @@ @property (weak, nonatomic) IBOutlet NSLayoutConstraint *expandedHeaderContainerHeightConstraint; // The preview header +@property (weak, nonatomic) IBOutlet UIScrollView *previewScrollView; @property (weak, nonatomic) IBOutlet UIView *previewHeaderContainer; @property (weak, nonatomic) IBOutlet NSLayoutConstraint *previewHeaderContainerHeightConstraint; diff --git a/Vector/ViewController/RoomViewController.m b/Vector/ViewController/RoomViewController.m index 716eb64c6..e7ddcbfca 100644 --- a/Vector/ViewController/RoomViewController.m +++ b/Vector/ViewController/RoomViewController.m @@ -223,9 +223,11 @@ // Note: this operation will force the layout of subviews. That is why cell view classes must be registered before. [self setRoomInputToolbarViewClass:RoomInputToolbarView.class]; - // Disable animation during the update of the inputToolBar height. + // Update the inputToolBar height. + CGFloat height = (self.inputToolbarView ? ((RoomInputToolbarView*)self.inputToolbarView).mainToolbarMinHeightConstraint.constant : 0); + // Disable animation during the update [UIView setAnimationsEnabled:NO]; - [self roomInputToolbarView:self.inputToolbarView heightDidChanged:((RoomInputToolbarView*)self.inputToolbarView).mainToolbarMinHeightConstraint.constant completion:nil]; + [self roomInputToolbarView:self.inputToolbarView heightDidChanged:height completion:nil]; [UIView setAnimationsEnabled:YES]; // set extra area @@ -364,7 +366,7 @@ [self showExpandedHeader:NO]; // Hide preview header (if any) during device rotation - BOOL isPreview = !self.previewHeaderContainer.isHidden; + BOOL isPreview = !self.previewScrollView.isHidden; if (isPreview) { [self showPreviewHeader:NO]; @@ -432,9 +434,15 @@ { self.navigationItem.rightBarButtonItem.enabled = NO; - // Hide input tool bar and activity view. FIXME: These items should be removed instead of being hidden until they will be used for preview. - self.inputToolbarView.hidden = YES; - self.activitiesView.hidden = YES; + // Remove input tool bar and activity view if any + if (self.inputToolbarView) + { + [super setRoomInputToolbarViewClass:nil]; + } + if (self.activitiesView) + { + [super setRoomActivitiesViewClass:nil]; + } if (previewHeader) { @@ -451,9 +459,52 @@ self.titleView.editable = NO; expandedHeader.mxRoom = self.roomDataSource.room; + + // Restore tool bar view and room activities view if none + if (!self.inputToolbarView) + { + [self setRoomInputToolbarViewClass:RoomInputToolbarView.class]; + + // Update the inputToolBar height. + CGFloat height = (self.inputToolbarView ? ((RoomInputToolbarView*)self.inputToolbarView).mainToolbarMinHeightConstraint.constant : 0); + // Disable animation during the update + [UIView setAnimationsEnabled:NO]; + [self roomInputToolbarView:self.inputToolbarView heightDidChanged:height completion:nil]; + [UIView setAnimationsEnabled:YES]; + + [self refreshRoomInputToolbar]; + } + + if (!self.activitiesView) + { + // And the extra area + [self setRoomActivitiesViewClass:RoomActivitiesView.class]; + } } } +- (void)setRoomInputToolbarViewClass:(Class)roomInputToolbarViewClass +{ + // Do not show toolbar in case of preview + if (self.isRoomPreview) + { + roomInputToolbarViewClass = nil; + } + + [super setRoomInputToolbarViewClass:roomInputToolbarViewClass]; +} + +- (void)setRoomActivitiesViewClass:(Class)roomActivitiesViewClass +{ + // Do not show room activities in case of preview + if (self.isRoomPreview) + { + roomActivitiesViewClass = nil; + } + + [super setRoomActivitiesViewClass:roomActivitiesViewClass]; +} + - (BOOL)isIRCStyleCommand:(NSString*)string { // Override the default behavior for `/join` command in order to open automatically the joined room @@ -715,7 +766,7 @@ { // This operation is ignored if a screen rotation is in progress, // or if the view controller is not embedded inside a split view controller yet. - if (self.previewHeaderContainer.isHidden == isVisible && isSizeTransitionInProgress == NO && self.splitViewController) + if (self.previewScrollView.isHidden == isVisible && isSizeTransitionInProgress == NO && self.splitViewController) { if (isVisible) { @@ -784,7 +835,7 @@ previewHeader = nil; } - self.previewHeaderContainer.hidden = !isVisible; + self.previewScrollView.hidden = !isVisible; // Consider the main navigation controller if the current view controller is embedded inside a split view controller. UINavigationController *mainNavigationController = self.navigationController; @@ -833,7 +884,6 @@ [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseIn animations:^{ - self.bubblesTableViewTopConstraint.constant = (isVisible ? self.previewHeaderContainerHeightConstraint.constant - self.bubblesTableView.contentInset.top : 0); if (roomAvatarView) { @@ -1568,9 +1618,12 @@ // Enable back the text input [self setRoomInputToolbarViewClass:RoomInputToolbarView.class]; - + + // Update the inputToolBar height. + CGFloat height = (self.inputToolbarView ? ((RoomInputToolbarView*)self.inputToolbarView).mainToolbarMinHeightConstraint.constant : 0); + // Disable animation during the update [UIView setAnimationsEnabled:NO]; - [self roomInputToolbarView:self.inputToolbarView heightDidChanged:((RoomInputToolbarView*)self.inputToolbarView).mainToolbarMinHeightConstraint.constant completion:nil]; + [self roomInputToolbarView:self.inputToolbarView heightDidChanged:height completion:nil]; [UIView setAnimationsEnabled:YES]; // And the extra area diff --git a/Vector/ViewController/RoomViewController.xib b/Vector/ViewController/RoomViewController.xib index e3a91a8de..38cc36ba7 100644 --- a/Vector/ViewController/RoomViewController.xib +++ b/Vector/ViewController/RoomViewController.xib @@ -14,6 +14,7 @@ + @@ -38,13 +39,25 @@ - + @@ -64,18 +77,19 @@ + - + + - - +