Chat screen: Remove top menu view.

This commit is contained in:
giomfo
2015-11-25 16:53:52 +01:00
parent 6e6ab76a26
commit 879c6d8a5a
4 changed files with 34 additions and 421 deletions
-5
View File
@@ -64,11 +64,6 @@
"room_participants_admin_name" = "%@ (admin)";
// Chat
"room_menu_search" = "Search";
"room_menu_participants" = "Participants";
"room_menu_favourite" = "Favourite";
"room_menu_unfavourite" = "Unfavourite";
"room_menu_settings" = "Settings";
"room_option_start_group_voice" = "Start group audio chat";
"room_option_start_group_video" = "Start group video chat";
"room_option_share_location" = "Share location";
+4 -220
View File
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="H1p-Uh-vWS">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9059" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="H1p-Uh-vWS">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9049"/>
</dependencies>
<scenes>
<!--RecentsNav-->
@@ -36,235 +36,21 @@
<barButtonItem key="rightBarButtonItem" systemItem="search" id="wyR-qv-IxC" userLabel="Menu Bar Button Item"/>
</navigationItem>
<connections>
<outlet property="favouriteMenuButton" destination="T4w-hc-P7B" id="Lz5-0g-7rS"/>
<outlet property="favouriteMenuLabel" destination="LXt-JD-IQk" id="vaq-sy-VDa"/>
<outlet property="menuListView" destination="B8M-FQ-SbW" id="1az-XM-iKb"/>
<outlet property="participantsMenuButton" destination="KBW-bl-iPb" id="EDK-GB-MOl"/>
<outlet property="participantsMenuLabel" destination="Dl8-aY-l6w" id="bbR-am-Dk8"/>
<outlet property="roomTitleViewContainer" destination="aas-th-FW1" id="SFz-1s-ywg"/>
<outlet property="searchMenuButton" destination="rwa-Zu-pNl" id="Mgy-OQ-AIG"/>
<outlet property="searchMenuLabel" destination="1IX-d8-Pu3" id="4xs-ti-XyD"/>
<outlet property="settingsMenuButton" destination="LzI-qU-WEx" id="dlp-Uc-6YU"/>
<outlet property="settingsMenuLabel" destination="vOA-DR-q63" id="M5D-fX-cTx"/>
<segue destination="y7N-Cs-bXh" kind="show" identifier="showRoomParticipants" id="2sI-aY-muu"/>
<segue destination="e7G-NU-7ck" kind="show" identifier="showRoomDetails" id="vCz-dl-6xQ"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="94y-cU-qQD" userLabel="First Responder" sceneMemberID="firstResponder"/>
<view contentMode="scaleToFill" id="B8M-FQ-SbW" userLabel="Menu List View">
<rect key="frame" x="0.0" y="0.0" width="600" height="178"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="T1v-sT-eZ0" userLabel="Search button View">
<rect key="frame" x="0.0" y="0.0" width="600" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rwa-Zu-pNl">
<rect key="frame" x="0.0" y="0.0" width="600" height="44"/>
<animations/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<inset key="contentEdgeInsets" minX="10" minY="0.0" maxX="0.0" maxY="0.0"/>
<state key="normal" image="search.png">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted" image="search.png"/>
<connections>
<action selector="onButtonPressed:" destination="msb-ol-2LB" eventType="touchUpInside" id="PVJ-Gi-Wmw"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Search in chat" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1IX-d8-Pu3">
<rect key="frame" x="44" y="0.0" width="556" height="44"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<animations/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="rwa-Zu-pNl" secondAttribute="bottom" id="6ze-wT-2NR"/>
<constraint firstItem="1IX-d8-Pu3" firstAttribute="top" secondItem="T1v-sT-eZ0" secondAttribute="top" id="AOF-eP-8id"/>
<constraint firstAttribute="trailing" secondItem="1IX-d8-Pu3" secondAttribute="trailing" id="HZz-ro-w5o"/>
<constraint firstItem="1IX-d8-Pu3" firstAttribute="leading" secondItem="T1v-sT-eZ0" secondAttribute="leading" constant="44" id="JLP-TL-NAH"/>
<constraint firstAttribute="bottom" secondItem="1IX-d8-Pu3" secondAttribute="bottom" id="RbZ-Lc-wf8"/>
<constraint firstItem="rwa-Zu-pNl" firstAttribute="top" secondItem="T1v-sT-eZ0" secondAttribute="top" id="Rkc-QW-tKW"/>
<constraint firstAttribute="height" constant="44" id="ZAr-Ed-R7U"/>
<constraint firstItem="rwa-Zu-pNl" firstAttribute="leading" secondItem="T1v-sT-eZ0" secondAttribute="leading" id="cEX-Gq-bRY"/>
<constraint firstAttribute="trailing" secondItem="rwa-Zu-pNl" secondAttribute="trailing" id="u8e-Bz-DZY"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Hik-C0-w1p" userLabel="Participants button View">
<rect key="frame" x="0.0" y="44" width="600" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KBW-bl-iPb">
<rect key="frame" x="0.0" y="0.0" width="600" height="44"/>
<animations/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<inset key="contentEdgeInsets" minX="10" minY="0.0" maxX="0.0" maxY="0.0"/>
<state key="normal" image="members.png">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted" image="members.png"/>
<connections>
<action selector="onButtonPressed:" destination="msb-ol-2LB" eventType="touchUpInside" id="ba7-ig-TUI"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Participants" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dl8-aY-l6w">
<rect key="frame" x="44" y="0.0" width="556" height="44"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<animations/>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="KBW-bl-iPb" firstAttribute="top" secondItem="Hik-C0-w1p" secondAttribute="top" id="0r9-HY-s4s"/>
<constraint firstItem="Dl8-aY-l6w" firstAttribute="top" secondItem="Hik-C0-w1p" secondAttribute="top" id="Bdg-JT-DKk"/>
<constraint firstAttribute="trailing" secondItem="Dl8-aY-l6w" secondAttribute="trailing" id="OHL-ry-Vv1"/>
<constraint firstItem="KBW-bl-iPb" firstAttribute="leading" secondItem="Hik-C0-w1p" secondAttribute="leading" id="RfV-EE-ePi"/>
<constraint firstAttribute="trailing" secondItem="KBW-bl-iPb" secondAttribute="trailing" id="aeC-Ga-h5c"/>
<constraint firstItem="Dl8-aY-l6w" firstAttribute="leading" secondItem="Hik-C0-w1p" secondAttribute="leading" constant="44" id="guQ-22-e2A"/>
<constraint firstAttribute="bottom" secondItem="Dl8-aY-l6w" secondAttribute="bottom" id="jLK-nN-cO4"/>
<constraint firstAttribute="bottom" secondItem="KBW-bl-iPb" secondAttribute="bottom" id="lC7-XQ-eaD"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UHB-PE-OYb" userLabel="Favourite button View">
<rect key="frame" x="0.0" y="88" width="600" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="T4w-hc-P7B">
<rect key="frame" x="0.0" y="0.0" width="600" height="44"/>
<animations/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<inset key="contentEdgeInsets" minX="10" minY="0.0" maxX="0.0" maxY="0.0"/>
<state key="normal" image="settings.png">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted" image="settings.png"/>
<connections>
<action selector="onButtonPressed:" destination="msb-ol-2LB" eventType="touchUpInside" id="cNy-ro-KKy"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Favourite" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LXt-JD-IQk">
<rect key="frame" x="44" y="0.0" width="556" height="44"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<animations/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="T4w-hc-P7B" firstAttribute="top" secondItem="UHB-PE-OYb" secondAttribute="top" id="2QB-gF-San"/>
<constraint firstAttribute="bottom" secondItem="LXt-JD-IQk" secondAttribute="bottom" id="3Mq-gQ-9WH"/>
<constraint firstItem="LXt-JD-IQk" firstAttribute="top" secondItem="UHB-PE-OYb" secondAttribute="top" id="4Nn-Yw-Dd5"/>
<constraint firstItem="T4w-hc-P7B" firstAttribute="leading" secondItem="UHB-PE-OYb" secondAttribute="leading" id="M2Z-rz-Den"/>
<constraint firstAttribute="trailing" secondItem="T4w-hc-P7B" secondAttribute="trailing" id="QYm-v3-Igr"/>
<constraint firstItem="LXt-JD-IQk" firstAttribute="leading" secondItem="UHB-PE-OYb" secondAttribute="leading" constant="44" id="lki-Qn-3AS"/>
<constraint firstAttribute="bottom" secondItem="T4w-hc-P7B" secondAttribute="bottom" id="pZq-6f-DMx"/>
<constraint firstAttribute="trailing" secondItem="LXt-JD-IQk" secondAttribute="trailing" id="ziw-m9-KHE"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="J1u-dg-Fnb" userLabel="Settings button View">
<rect key="frame" x="0.0" y="132" width="600" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LzI-qU-WEx">
<rect key="frame" x="0.0" y="0.0" width="600" height="44"/>
<animations/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<inset key="contentEdgeInsets" minX="10" minY="0.0" maxX="0.0" maxY="0.0"/>
<state key="normal" image="settings.png">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted" image="settings.png"/>
<connections>
<action selector="onButtonPressed:" destination="msb-ol-2LB" eventType="touchUpInside" id="nTd-oe-EiN"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Settings" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vOA-DR-q63">
<rect key="frame" x="44" y="0.0" width="556" height="44"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<animations/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="LzI-qU-WEx" firstAttribute="leading" secondItem="J1u-dg-Fnb" secondAttribute="leading" id="9gG-OE-dC7"/>
<constraint firstItem="LzI-qU-WEx" firstAttribute="top" secondItem="J1u-dg-Fnb" secondAttribute="top" id="CE2-ox-bEw"/>
<constraint firstAttribute="trailing" secondItem="LzI-qU-WEx" secondAttribute="trailing" id="LqC-Y7-Fe7"/>
<constraint firstAttribute="bottom" secondItem="LzI-qU-WEx" secondAttribute="bottom" id="Rfk-MR-ovx"/>
<constraint firstAttribute="trailing" secondItem="vOA-DR-q63" secondAttribute="trailing" id="WXr-vk-8Dw"/>
<constraint firstItem="vOA-DR-q63" firstAttribute="top" secondItem="J1u-dg-Fnb" secondAttribute="top" id="Xrx-vK-025"/>
<constraint firstItem="vOA-DR-q63" firstAttribute="leading" secondItem="J1u-dg-Fnb" secondAttribute="leading" constant="44" id="a0b-T8-r3B"/>
<constraint firstAttribute="bottom" secondItem="vOA-DR-q63" secondAttribute="bottom" id="wab-3F-eFd"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KSi-QI-yS3" userLabel="Separator View">
<rect key="frame" x="0.0" y="176" width="600" height="2"/>
<animations/>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="2" id="q55-Tl-qp1"/>
</constraints>
</view>
</subviews>
<animations/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="Hik-C0-w1p" firstAttribute="top" secondItem="T1v-sT-eZ0" secondAttribute="bottom" id="2fo-P2-CyT"/>
<constraint firstAttribute="trailing" secondItem="KSi-QI-yS3" secondAttribute="trailing" id="8DZ-NC-vdg"/>
<constraint firstItem="T1v-sT-eZ0" firstAttribute="height" secondItem="UHB-PE-OYb" secondAttribute="height" id="ADr-Zh-NMs"/>
<constraint firstItem="UHB-PE-OYb" firstAttribute="top" secondItem="Hik-C0-w1p" secondAttribute="bottom" id="FLI-Nb-amR"/>
<constraint firstAttribute="trailing" secondItem="T1v-sT-eZ0" secondAttribute="trailing" id="GUm-7X-lIV"/>
<constraint firstAttribute="bottom" secondItem="KSi-QI-yS3" secondAttribute="bottom" id="ImG-tQ-YPG"/>
<constraint firstItem="J1u-dg-Fnb" firstAttribute="width" secondItem="T1v-sT-eZ0" secondAttribute="width" id="J4u-Kd-FHa"/>
<constraint firstItem="T1v-sT-eZ0" firstAttribute="width" secondItem="UHB-PE-OYb" secondAttribute="width" id="MIw-bL-MOC"/>
<constraint firstItem="T1v-sT-eZ0" firstAttribute="top" secondItem="B8M-FQ-SbW" secondAttribute="top" id="PWh-3P-aqs"/>
<constraint firstItem="UHB-PE-OYb" firstAttribute="leading" secondItem="B8M-FQ-SbW" secondAttribute="leading" id="UYe-0J-EM2"/>
<constraint firstItem="T1v-sT-eZ0" firstAttribute="leading" secondItem="B8M-FQ-SbW" secondAttribute="leading" id="XhR-c1-hYS"/>
<constraint firstItem="T1v-sT-eZ0" firstAttribute="width" secondItem="Hik-C0-w1p" secondAttribute="width" id="asH-cB-qXm"/>
<constraint firstItem="J1u-dg-Fnb" firstAttribute="top" secondItem="UHB-PE-OYb" secondAttribute="bottom" id="faY-ym-yM1"/>
<constraint firstItem="J1u-dg-Fnb" firstAttribute="leading" secondItem="B8M-FQ-SbW" secondAttribute="leading" id="gxa-yr-1MC"/>
<constraint firstItem="T1v-sT-eZ0" firstAttribute="height" secondItem="Hik-C0-w1p" secondAttribute="height" id="ixa-QD-KAH"/>
<constraint firstItem="KSi-QI-yS3" firstAttribute="leading" secondItem="B8M-FQ-SbW" secondAttribute="leading" id="vEN-4p-Z8Y"/>
<constraint firstItem="Hik-C0-w1p" firstAttribute="leading" secondItem="B8M-FQ-SbW" secondAttribute="leading" id="zBW-pK-aZH"/>
<constraint firstItem="J1u-dg-Fnb" firstAttribute="height" secondItem="T1v-sT-eZ0" secondAttribute="height" id="zrq-1q-YpH"/>
</constraints>
</view>
</objects>
<point key="canvasLocation" x="1364" y="-1063"/>
</scene>
<!--Room Participants View Controller-->
<scene sceneID="5AK-8u-TUO">
<objects>
<tableViewController hidesBottomBarWhenPushed="YES" id="y7N-Cs-bXh" customClass="RoomParticipantsViewController" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="none" rowHeight="44" sectionHeaderHeight="20" sectionFooterHeight="10" id="Oe9-1Y-zhS">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<animations/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<connections>
<outlet property="dataSource" destination="y7N-Cs-bXh" id="9Zb-6m-GNy"/>
<outlet property="delegate" destination="y7N-Cs-bXh" id="RVg-Nq-nNy"/>
</connections>
</tableView>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Exe-4N-jYR" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="3259" y="-1463"/>
</scene>
<!--Room Details View Controller-->
<scene sceneID="NZu-Q0-P0z">
<objects>
<tableViewController id="e7G-NU-7ck" customClass="RoomDetailsViewController" sceneMemberID="viewController"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="fXh-hO-Zgf" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="3254" y="-755"/>
<point key="canvasLocation" x="2326" y="-1063"/>
</scene>
<!--Authentication View Controller-->
<scene sceneID="FoA-N2-3aF">
@@ -471,12 +257,10 @@
</scene>
</scenes>
<resources>
<image name="members.png" width="16" height="16"/>
<image name="search.png" width="16" height="16"/>
<image name="settings.png" width="16" height="16"/>
</resources>
<inferredMetricsTieBreakers>
<segue reference="0ws-cL-0tk"/>
<segue reference="vqM-5M-ctF"/>
<segue reference="Vo4-8x-dtH"/>
</inferredMetricsTieBreakers>
</document>
@@ -18,16 +18,5 @@
@interface RoomViewController : MXKRoomViewController
@property (strong, nonatomic) IBOutlet UIView *menuListView;
@property (weak, nonatomic) IBOutlet UIButton *searchMenuButton;
@property (weak, nonatomic) IBOutlet UILabel *searchMenuLabel;
@property (weak, nonatomic) IBOutlet UIButton *participantsMenuButton;
@property (weak, nonatomic) IBOutlet UILabel *participantsMenuLabel;
@property (weak, nonatomic) IBOutlet UIButton *favouriteMenuButton;
@property (weak, nonatomic) IBOutlet UILabel *favouriteMenuLabel;
@property (weak, nonatomic) IBOutlet UIButton *settingsMenuButton;
@property (weak, nonatomic) IBOutlet UILabel *settingsMenuLabel;
@end
+30 -185
View File
@@ -29,9 +29,6 @@
@interface RoomViewController ()
{
// The constraint used to animate menu list display
NSLayoutConstraint *menuListTopConstraint;
// the user taps on a member thumbnail
MXRoomMember *selectedRoomMember;
@@ -69,65 +66,7 @@
self.navigationItem.rightBarButtonItem.action = @selector(onButtonPressed:);
self.navigationItem.rightBarButtonItem.enabled = NO;
// Localize strings
self.searchMenuLabel.text = NSLocalizedStringFromTable(@"room_menu_search", @"Vector", nil);
self.participantsMenuLabel.text = NSLocalizedStringFromTable(@"room_menu_participants", @"Vector", nil);
self.favouriteMenuLabel.text = NSLocalizedStringFromTable(@"room_menu_favourite", @"Vector", nil);
self.settingsMenuLabel.text = NSLocalizedStringFromTable(@"room_menu_settings", @"Vector", nil);
// Add the menu list view outside the main view
CGRect frame = self.menuListView.frame;
frame.origin.y = self.topLayoutGuide.length - frame.size.height;
self.menuListView.frame = frame;
[self.view addSubview:self.menuListView];
// Define menu list view constraints
self.menuListView.translatesAutoresizingMaskIntoConstraints = NO;
NSLayoutConstraint *leftConstraint = [NSLayoutConstraint constraintWithItem:self.menuListView
attribute:NSLayoutAttributeLeading
relatedBy:0
toItem:self.view
attribute:NSLayoutAttributeLeading
multiplier:1.0
constant:0];
NSLayoutConstraint *rightConstraint = [NSLayoutConstraint constraintWithItem:self.menuListView
attribute:NSLayoutAttributeTrailing
relatedBy:0
toItem:self.view
attribute:NSLayoutAttributeTrailing
multiplier:1.0
constant:0];
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:self.menuListView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:self.menuListView.frame.size.height];
menuListTopConstraint = [NSLayoutConstraint constraintWithItem:self.menuListView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.topLayoutGuide
attribute:NSLayoutAttributeBottom
multiplier:1.0f
constant:0.0f];
if ([NSLayoutConstraint respondsToSelector:@selector(activateConstraints:)])
{
[NSLayoutConstraint activateConstraints:@[leftConstraint, rightConstraint, heightConstraint, menuListTopConstraint]];
}
else
{
[self.view addConstraint:leftConstraint];
[self.view addConstraint:rightConstraint];
[self.view addConstraint:menuListTopConstraint];
[self.menuListView addConstraint:heightConstraint];
}
[self.view setNeedsUpdateConstraints];
// Localize strings here
if (self.roomDataSource)
{
@@ -160,9 +99,6 @@
self.currentAlert = nil;
}
// Hide menu list view
menuListTopConstraint.constant = 0;
[self removeTypingNotificationsListener];
}
@@ -271,27 +207,10 @@
[super destroy];
}
- (void)setKeyboardHeight:(CGFloat)keyboardHeight
{
// Hide the menu list view when keyboard if displayed
if (keyboardHeight && menuListTopConstraint.constant != 0)
{
[self onButtonPressed:self.navigationItem.rightBarButtonItem];
}
super.keyboardHeight = keyboardHeight;
}
#pragma mark - MXKDataSource delegate
- (void)dataSource:(MXKDataSource *)dataSource didRecognizeAction:(NSString *)actionIdentifier inCell:(id<MXKCellRendering>)cell userInfo:(NSDictionary *)userInfo
{
// Remove sub menu if user tap on table view
if (menuListTopConstraint.constant != 0)
{
[self onButtonPressed:self.navigationItem.rightBarButtonItem];
}
if ([actionIdentifier isEqualToString:kMXKRoomBubbleCellTapOnMessageTextView])
{
self.roomDataSource.showBubblesDateTime = !self.roomDataSource.showBubblesDateTime;
@@ -313,18 +232,7 @@
id pushedViewController = [segue destinationViewController];
if ([[segue identifier] isEqualToString:@"showRoomParticipants"])
{
if ([pushedViewController isKindOfClass:[RoomParticipantsViewController class]])
{
// Dismiss keyboard
[self dismissKeyboard];
RoomParticipantsViewController* participantsViewController = (RoomParticipantsViewController*)pushedViewController;
participantsViewController.mxRoom = self.roomDataSource.room;
}
}
else if ([[segue identifier] isEqualToString:@"showRoomDetails"])
if ([[segue identifier] isEqualToString:@"showRoomDetails"])
{
if ([pushedViewController isKindOfClass:[RoomDetailsViewController class]])
{
@@ -342,17 +250,6 @@
#pragma mark - MXKRoomInputToolbarViewDelegate
- (void)roomInputToolbarView:(MXKRoomInputToolbarView*)toolbarView isTyping:(BOOL)typing
{
// Remove sub menu if user starts typing
if (typing && menuListTopConstraint.constant != 0)
{
[self onButtonPressed:self.navigationItem.rightBarButtonItem];
}
[super roomInputToolbarView:toolbarView isTyping:typing];
}
- (void)roomInputToolbarView:(MXKRoomInputToolbarView*)toolbarView placeCallWithVideo:(BOOL)video
{
[self.mainSession.callManager placeCallInRoom:self.roomDataSource.roomId withVideo:video];
@@ -364,49 +261,7 @@
{
if (sender == self.navigationItem.rightBarButtonItem)
{
// Hide/show the menu list by updating its top constraint
if (menuListTopConstraint.constant)
{
// Hide the menu
menuListTopConstraint.constant = 0;
}
else
{
[self dismissKeyboard];
// Show the menu
menuListTopConstraint.constant = self.menuListView.frame.size.height;
}
// Refresh layout with animation
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseIn
animations:^{
[self.view layoutIfNeeded];
}
completion:^(BOOL finished){
}];
}
else
{
// Hide menu without animation
menuListTopConstraint.constant = 0;
if (sender == self.searchMenuButton)
{
// TODO
}
else if (sender == self.participantsMenuButton)
{
[self performSegueWithIdentifier:@"showRoomParticipants" sender:self];
}
else if (sender == self.favouriteMenuButton)
{
// TODO
}
else if (sender == self.settingsMenuButton)
{
// TODO
}
// FIXME Launch messages search session
}
}
@@ -414,12 +269,6 @@
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Remove sub menu if user tap on table view
if (menuListTopConstraint.constant != 0)
{
[self onButtonPressed:self.navigationItem.rightBarButtonItem];
}
[super tableView:tableView didSelectRowAtIndexPath:indexPath];
}
@@ -427,13 +276,13 @@
- (BOOL)roomTitleViewShouldBeginEditing:(MXKRoomTitleView*)titleView
{
// instead of opening a text edition
// launch a dedicated viewcontroller.
// Instead of editing room title, we open room details view here
dispatch_async(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"showRoomDetails" sender:self];
});
// cancel any requested edition
return NO;
}
@@ -457,35 +306,34 @@
if (self.roomDataSource)
{
// Add typing notification listener
typingNotifListener = [self.roomDataSource.room listenToEventsOfTypes:@[kMXEventTypeStringTypingNotification] onEvent:^(MXEvent *event, MXEventDirection direction, MXRoomState *roomState)
{
// Handle only live events
if (direction == MXEventDirectionForwards)
{
// Retrieve typing users list
NSMutableArray *typingUsers = [NSMutableArray arrayWithArray:self.roomDataSource.room.typingUsers];
// Remove typing info for the current user
NSUInteger index = [typingUsers indexOfObject:self.mainSession.myUser.userId];
if (index != NSNotFound)
{
[typingUsers removeObjectAtIndex:index];
}
// Ignore this notification if both arrays are empty
if (currentTypingUsers.count || typingUsers.count)
{
currentTypingUsers = typingUsers;
[self refreshTypingView];
}
}
}];
typingNotifListener = [self.roomDataSource.room listenToEventsOfTypes:@[kMXEventTypeStringTypingNotification] onEvent:^(MXEvent *event, MXEventDirection direction, MXRoomState *roomState) {
// Handle only live events
if (direction == MXEventDirectionForwards)
{
// Retrieve typing users list
NSMutableArray *typingUsers = [NSMutableArray arrayWithArray:self.roomDataSource.room.typingUsers];
// Remove typing info for the current user
NSUInteger index = [typingUsers indexOfObject:self.mainSession.myUser.userId];
if (index != NSNotFound)
{
[typingUsers removeObjectAtIndex:index];
}
// Ignore this notification if both arrays are empty
if (currentTypingUsers.count || typingUsers.count)
{
currentTypingUsers = typingUsers;
[self refreshTypingView];
}
}
}];
currentTypingUsers = self.roomDataSource.room.typingUsers;
[self refreshTypingView];
}
}
- (void)refreshTypingView
{
NSString* text = nil;
@@ -495,8 +343,8 @@
NSMutableArray *names = [[NSMutableArray alloc] init];
// keeps the only the first two users
//
for(int i = 0; i < MIN(count, 2); i++) {
for(int i = 0; i < MIN(count, 2); i++)
{
NSString* name = [currentTypingUsers objectAtIndex:i];
MXRoomMember* member = [self.roomDataSource.room.state memberWithUserId:name];
@@ -509,7 +357,6 @@
[names addObject:name];
}
if (0 == count)
{
// something to do ?
@@ -535,5 +382,3 @@
@end