Merge pull request #1810 from vector-im/riot_1645_2

BF: Cannot join from a room preview for room with a long topic
This commit is contained in:
manuroe 2018-03-12 17:17:32 +01:00 committed by GitHub
commit 4c014e4c5f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 55 additions and 19 deletions

View file

@ -1227,11 +1227,8 @@
// Set the right room title view // Set the right room title view
if (self.isRoomPreview) if (self.isRoomPreview)
{ {
// Disable the right buttons // Do not show the right buttons
for (UIBarButtonItem *barButtonItem in self.navigationItem.rightBarButtonItems) self.navigationItem.rightBarButtonItems = nil;
{
barButtonItem.enabled = NO;
}
[self showPreviewHeader:YES]; [self showPreviewHeader:YES];
} }
@ -1583,7 +1580,8 @@
{ {
if (previewHeader) if (previewHeader)
{ {
if (isLandscapeOriented) if (isLandscapeOriented
&& [GBDeviceInfo deviceInfo].family != GBDeviceFamilyiPad)
{ {
CGRect frame = self.navigationController.navigationBar.frame; CGRect frame = self.navigationController.navigationBar.frame;
@ -1606,6 +1604,31 @@
previewHeader.mainHeaderContainer.hidden = NO; previewHeader.mainHeaderContainer.hidden = NO;
previewHeader.mainHeaderBackgroundHeightConstraint.constant = previewHeader.mainHeaderContainer.frame.size.height; previewHeader.mainHeaderBackgroundHeightConstraint.constant = previewHeader.mainHeaderContainer.frame.size.height;
if ([previewHeader isKindOfClass:PreviewRoomTitleView.class])
{
// In case of preview, update the header height so that we can
// display as much as possible the room topic in this header.
// Note: the header height is handled by the previewHeader.mainHeaderBackgroundHeightConstraint.
PreviewRoomTitleView *previewRoomTitleView = (PreviewRoomTitleView *)previewHeader;
// Compute the height required to display all the room topic
CGSize sizeThatFitsTextView = [previewRoomTitleView.roomTopic sizeThatFits:CGSizeMake(previewRoomTitleView.roomTopic.frame.size.width, MAXFLOAT)];
// Increase the preview header height according to the room topic height
// but limit it in order to let room for room messages at the screen bottom.
// This free space depends on the device.
// On an iphone 5 screen, the room topic height cannot be more than 50px.
// Then, on larger screen, we can allow it a bit more height but we
// apply a factor to give more priority to the display of more messages.
CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height;
CGFloat maxRoomTopicHeight = 50 + (screenHeight - 568) / 3;
CGFloat additionalHeight = MIN(maxRoomTopicHeight, sizeThatFitsTextView.height)
- previewRoomTitleView.roomTopic.frame.size.height;
previewHeader.mainHeaderBackgroundHeightConstraint.constant += additionalHeight;
}
[self setRoomTitleViewClass:RoomAvatarTitleView.class]; [self setRoomTitleViewClass:RoomAvatarTitleView.class];
// Note the avatar title view does not define tap gesture. // Note the avatar title view does not define tap gesture.

View file

@ -24,7 +24,7 @@
@property (weak, nonatomic) IBOutlet UIView *mainHeaderContainer; @property (weak, nonatomic) IBOutlet UIView *mainHeaderContainer;
@property (weak, nonatomic) IBOutlet MXKImageView *roomAvatar; @property (weak, nonatomic) IBOutlet MXKImageView *roomAvatar;
@property (weak, nonatomic) IBOutlet UILabel *roomTopic; @property (weak, nonatomic) IBOutlet UITextView *roomTopic;
@property (weak, nonatomic) IBOutlet UILabel *roomMembers; @property (weak, nonatomic) IBOutlet UILabel *roomMembers;
@property (weak, nonatomic) IBOutlet UIView *roomMembersDetailsIcon; @property (weak, nonatomic) IBOutlet UIView *roomMembersDetailsIcon;

View file

@ -67,7 +67,6 @@
self.displayNameTextField.textColor = (self.mxRoom.summary.displayname.length ? kRiotPrimaryTextColor : kRiotSecondaryTextColor); self.displayNameTextField.textColor = (self.mxRoom.summary.displayname.length ? kRiotPrimaryTextColor : kRiotSecondaryTextColor);
self.roomTopic.textColor = kRiotTopicTextColor; self.roomTopic.textColor = kRiotTopicTextColor;
self.roomTopic.numberOfLines = 0;
self.roomMembers.textColor = kRiotColorGreen; self.roomMembers.textColor = kRiotColorGreen;
@ -107,6 +106,10 @@
// Room topic // Room topic
self.roomTopic.text = self.roomPreviewData.roomTopic; self.roomTopic.text = self.roomPreviewData.roomTopic;
[UIView setAnimationsEnabled:NO];
[self.roomTopic scrollRangeToVisible:NSMakeRange(0, 0)];
[UIView setAnimationsEnabled:YES];
// Joined members count // Joined members count
if (self.roomPreviewData.numJoinedMembers > 1) if (self.roomPreviewData.numJoinedMembers > 1)
{ {
@ -148,6 +151,14 @@
{ {
roomName = NSLocalizedStringFromTable(@"room_preview_try_join_an_unknown_room_default", @"Vector", nil); roomName = NSLocalizedStringFromTable(@"room_preview_try_join_an_unknown_room_default", @"Vector", nil);
} }
else if (roomName.length > 20)
{
// Would have been nice to get the cropped string displayed by
// self.displayNameTextField but the value is not accessible.
// Cut it off by hand
roomName = [NSString stringWithFormat:@"%@…",[roomName substringToIndex:20]];
}
self.previewLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_preview_try_join_an_unknown_room", @"Vector", nil), roomName]; self.previewLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_preview_try_join_an_unknown_room", @"Vector", nil), roomName];
} }
} }

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13196" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait"> <device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/> <adaptation id="fullscreen"/>
</device> </device>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13173"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
<capability name="Aspect ratio constraints" minToolsVersion="5.1"/> <capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/> <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
@ -47,22 +47,22 @@
<outlet property="delegate" destination="Cpa-Xt-cwB" id="BIq-nD-Pb9"/> <outlet property="delegate" destination="Cpa-Xt-cwB" id="BIq-nD-Pb9"/>
</connections> </connections>
</textField> </textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tk0-pA-9a0"> <textView opaque="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" editable="NO" text="Room Topic" textAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="Tk0-pA-9a0">
<rect key="frame" x="282" y="153" width="36" height="17"/> <rect key="frame" x="31" y="153" width="538" height="17"/>
<accessibility key="accessibilityConfiguration" identifier="RoomTopic"/> <accessibility key="accessibilityConfiguration" identifier="RoomTopic"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/> <fontDescription key="fontDescription" type="system" pointSize="14"/>
</label> <textInputTraits key="textInputTraits"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ou0-3Z-weL"> </textView>
<rect key="frame" x="282" y="184" width="36" height="17"/> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="X members" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ou0-3Z-weL">
<rect key="frame" x="262" y="184" width="76" height="17"/>
<accessibility key="accessibilityConfiguration" identifier="RoomMembers"/> <accessibility key="accessibilityConfiguration" identifier="RoomMembers"/>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="details_icon" translatesAutoresizingMaskIntoConstraints="NO" id="S3Y-wJ-HOe"> <imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="details_icon" translatesAutoresizingMaskIntoConstraints="NO" id="S3Y-wJ-HOe">
<rect key="frame" x="325" y="187" width="6" height="12"/> <rect key="frame" x="345" y="187" width="6" height="12"/>
<accessibility key="accessibilityConfiguration" identifier="RoomMembersDetailsIcon"/> <accessibility key="accessibilityConfiguration" identifier="RoomMembersDetailsIcon"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="6" id="XTx-6p-2wB"/> <constraint firstAttribute="width" constant="6" id="XTx-6p-2wB"/>
@ -87,6 +87,7 @@
<constraint firstItem="Tk0-pA-9a0" firstAttribute="top" secondItem="6uH-I3-RQg" secondAttribute="bottom" constant="5" id="TUS-xE-O6O"/> <constraint firstItem="Tk0-pA-9a0" firstAttribute="top" secondItem="6uH-I3-RQg" secondAttribute="bottom" constant="5" id="TUS-xE-O6O"/>
<constraint firstItem="6uH-I3-RQg" firstAttribute="top" secondItem="4yt-FK-V2Z" secondAttribute="bottom" constant="8" id="Wsd-KT-hxy"/> <constraint firstItem="6uH-I3-RQg" firstAttribute="top" secondItem="4yt-FK-V2Z" secondAttribute="bottom" constant="8" id="Wsd-KT-hxy"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="6uH-I3-RQg" secondAttribute="trailing" constant="31" id="aK3-vQ-EVu"/> <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="6uH-I3-RQg" secondAttribute="trailing" constant="31" id="aK3-vQ-EVu"/>
<constraint firstItem="Tk0-pA-9a0" firstAttribute="width" secondItem="BkF-x3-7fX" secondAttribute="width" priority="750" id="bWP-2y-KTg"/>
<constraint firstItem="ou0-3Z-weL" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="BkF-x3-7fX" secondAttribute="leading" constant="31" id="c9h-h2-VEs"/> <constraint firstItem="ou0-3Z-weL" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="BkF-x3-7fX" secondAttribute="leading" constant="31" id="c9h-h2-VEs"/>
<constraint firstItem="6uH-I3-RQg" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="BkF-x3-7fX" secondAttribute="leading" constant="31" id="gnq-cO-l4Y"/> <constraint firstItem="6uH-I3-RQg" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="BkF-x3-7fX" secondAttribute="leading" constant="31" id="gnq-cO-l4Y"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ou0-3Z-weL" secondAttribute="trailing" constant="31" id="sPZ-Hp-JeH"/> <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ou0-3Z-weL" secondAttribute="trailing" constant="31" id="sPZ-Hp-JeH"/>
@ -166,6 +167,7 @@
<constraint firstItem="BkF-x3-7fX" firstAttribute="leading" secondItem="Cpa-Xt-cwB" secondAttribute="leading" id="Uvb-cK-dQf"/> <constraint firstItem="BkF-x3-7fX" firstAttribute="leading" secondItem="Cpa-Xt-cwB" secondAttribute="leading" id="Uvb-cK-dQf"/>
<constraint firstItem="BkF-x3-7fX" firstAttribute="top" secondItem="Cpa-Xt-cwB" secondAttribute="top" id="Zru-9A-ifB"/> <constraint firstItem="BkF-x3-7fX" firstAttribute="top" secondItem="Cpa-Xt-cwB" secondAttribute="top" id="Zru-9A-ifB"/>
<constraint firstAttribute="trailing" secondItem="y5s-FK-My4" secondAttribute="trailing" id="d4g-19-C58"/> <constraint firstAttribute="trailing" secondItem="y5s-FK-My4" secondAttribute="trailing" id="d4g-19-C58"/>
<constraint firstItem="BkF-x3-7fX" firstAttribute="bottom" secondItem="y5s-FK-My4" secondAttribute="bottom" id="gzp-8c-3iR"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="IwA-0X-IYb" secondAttribute="trailing" constant="31" id="iGR-eh-0e9"/> <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="IwA-0X-IYb" secondAttribute="trailing" constant="31" id="iGR-eh-0e9"/>
<constraint firstItem="WmW-5h-jL1" firstAttribute="top" secondItem="gIX-nY-f6M" secondAttribute="bottom" constant="17" id="ioD-jo-XQe"/> <constraint firstItem="WmW-5h-jL1" firstAttribute="top" secondItem="gIX-nY-f6M" secondAttribute="bottom" constant="17" id="ioD-jo-XQe"/>
<constraint firstItem="IwA-0X-IYb" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Cpa-Xt-cwB" secondAttribute="leading" constant="31" id="lpD-yd-qgt"/> <constraint firstItem="IwA-0X-IYb" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Cpa-Xt-cwB" secondAttribute="leading" constant="31" id="lpD-yd-qgt"/>