- Fixed Adding Contact View Icons
- Fixed Resend Icon
This commit is contained in:
parent
f5aa09208f
commit
94267659bc
|
@ -74,24 +74,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||
}
|
||||
_ = JingleManager.instance;
|
||||
|
||||
if #available(iOS 15, *) {
|
||||
let tabAppearance = UITabBarAppearance()
|
||||
tabAppearance.configureWithOpaqueBackground()
|
||||
UITabBar.appearance().scrollEdgeAppearance = tabAppearance
|
||||
}
|
||||
if #available(iOS 13, *) {
|
||||
let appearance = UINavigationBarAppearance()
|
||||
appearance.configureWithOpaqueBackground()
|
||||
appearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor(named: "AddToContactsBar")!]
|
||||
appearance.backgroundColor = UIColor(named: "chatslistBackground")
|
||||
UINavigationBar.appearance().standardAppearance = appearance;
|
||||
UINavigationBar.appearance().scrollEdgeAppearance = appearance
|
||||
UINavigationBar.appearance().compactAppearance = appearance
|
||||
|
||||
let tabAppearance = UITabBarAppearance()
|
||||
tabAppearance.configureWithOpaqueBackground()
|
||||
UITabBar.appearance().standardAppearance = tabAppearance
|
||||
}
|
||||
setUIAppearances()
|
||||
|
||||
NotificationManager.instance.initialize(provider: MainNotificationManagerProvider());
|
||||
xmppService.initialize();
|
||||
Settings.setDefaultSettings()
|
||||
|
@ -151,6 +135,29 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||
return true
|
||||
}
|
||||
|
||||
func setUIAppearances() {
|
||||
if #available(iOS 15, *) {
|
||||
let tabAppearance = UITabBarAppearance()
|
||||
tabAppearance.configureWithOpaqueBackground()
|
||||
UITabBar.appearance().scrollEdgeAppearance = tabAppearance
|
||||
}
|
||||
if #available(iOS 13, *) {
|
||||
let appearance = UINavigationBarAppearance()
|
||||
appearance.configureWithOpaqueBackground()
|
||||
appearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor(named: "AddToContactsBar")!]
|
||||
appearance.backgroundColor = UIColor(named: "chatslistBackground")
|
||||
UINavigationBar.appearance().standardAppearance = appearance;
|
||||
UINavigationBar.appearance().scrollEdgeAppearance = appearance
|
||||
UINavigationBar.appearance().compactAppearance = appearance
|
||||
|
||||
let tabAppearance = UITabBarAppearance()
|
||||
tabAppearance.configureWithOpaqueBackground()
|
||||
UITabBar.appearance().standardAppearance = tabAppearance
|
||||
} else {
|
||||
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.black]
|
||||
}
|
||||
}
|
||||
|
||||
@objc func accountsChanged(_ notification: Notification) {
|
||||
DispatchQueue.main.async {
|
||||
if let rootView = self.window?.rootViewController {
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "1.000",
|
||||
"green" : "1.000",
|
||||
"red" : "1.000"
|
||||
"blue" : "0.000",
|
||||
"green" : "0.000",
|
||||
"red" : "0.000"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
|
|
21
Snikket/Assets.xcassets/info.circle.imageset/Contents.json
vendored
Normal file
21
Snikket/Assets.xcassets/info.circle.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "info.circle@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
Snikket/Assets.xcassets/info.circle.imageset/info.circle@2x.png
vendored
Normal file
BIN
Snikket/Assets.xcassets/info.circle.imageset/info.circle@2x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="vAU-gJ-Tx3">
|
||||
<device id="retina6_5" orientation="portrait" appearance="light"/>
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/>
|
||||
|
@ -16,30 +16,30 @@
|
|||
<objects>
|
||||
<viewController storyboardIdentifier="ChatsListViewController" title="Chats" id="9pv-A4-QxB" customClass="ChatsListViewController" customModule="Snikket" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="90" sectionHeaderHeight="28" sectionFooterHeight="28" id="3ug-3t-4BD">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<prototypes>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="ChatsListTableViewCellNew" rowHeight="66" id="0IJ-1b-Ma3" customClass="ChatsListTableViewCell" customModule="Snikket" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="44.666666030883789" width="414" height="66"/>
|
||||
<rect key="frame" x="0.0" y="44.5" width="375" height="66"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<tableViewCellContentView key="contentView" multipleTouchEnabled="YES" contentMode="center" tableViewCell="0IJ-1b-Ma3" id="f45-bS-0LJ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="66"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="66"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<view opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bw5-x2-Cry">
|
||||
<rect key="frame" x="70" y="3" width="338" height="60"/>
|
||||
<rect key="frame" x="70" y="3" width="299" height="60"/>
|
||||
<subviews>
|
||||
<view opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="200" translatesAutoresizingMaskIntoConstraints="NO" id="i0O-Zv-fEx">
|
||||
<rect key="frame" x="0.0" y="0.0" width="338" height="20.666666666666668"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="299" height="20.5"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Chat with" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Qr0-8H-IJq">
|
||||
<rect key="frame" x="0.0" y="0.0" width="266.66666666666669" height="20.666666666666668"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="227.5" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" text="Timestamp" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ga8-2K-hxE">
|
||||
<rect key="frame" x="266.66666666666669" y="0.0" width="71.333333333333314" height="20.666666666666668"/>
|
||||
<rect key="frame" x="227.5" y="0.0" width="71.5" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="light" pointSize="14"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<attributedString key="userComments">
|
||||
|
@ -58,7 +58,7 @@
|
|||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="200" text="Last message" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" minimumFontSize="13" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="wE7-Lf-1a4">
|
||||
<rect key="frame" x="0.0" y="21.666666666666668" width="338" height="38.333333333333329"/>
|
||||
<rect key="frame" x="0.0" y="21.5" width="299" height="38.5"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="light" pointSize="14"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<attributedString key="userComments">
|
||||
|
@ -167,68 +167,77 @@
|
|||
<objects>
|
||||
<viewController storyboardIdentifier="ChatViewController" title="Chat" id="WP2-Cp-7ZE" customClass="ChatViewController" customModule="Snikket" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" opaque="NO" contentMode="scaleToFill" id="MXY-a0-pWq">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="808"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="623"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<containerView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gYg-Wz-iZc">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="725"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="574"/>
|
||||
<connections>
|
||||
<segue destination="GGV-aa-8IC" kind="embed" id="585-T5-dGR"/>
|
||||
</connections>
|
||||
</containerView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0oA-5d-4WD">
|
||||
<rect key="frame" x="20" y="9.9999999999999964" width="374" height="63.666666666666657"/>
|
||||
<rect key="frame" x="20" y="10" width="335" height="64"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fa9-4g-iNW">
|
||||
<rect key="frame" x="309" y="15" width="55" height="33.666666666666664"/>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fa9-4g-iNW">
|
||||
<rect key="frame" x="270" y="15" width="55" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="55" id="F1N-vd-bKI"/>
|
||||
</constraints>
|
||||
<state key="normal" title="Button"/>
|
||||
<buttonConfiguration key="configuration" style="plain">
|
||||
<backgroundConfiguration key="background" image="xmark.circle" imageContentMode="scaleAspectFit"/>
|
||||
</buttonConfiguration>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<connections>
|
||||
<action selector="rejectSubscriptionTapped:" destination="WP2-Cp-7ZE" eventType="touchUpInside" id="ATX-p5-rfq"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kNl-ad-SgK">
|
||||
<rect key="frame" x="254" y="15" width="55" height="33.666666666666664"/>
|
||||
<button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kNl-ad-SgK">
|
||||
<rect key="frame" x="215" y="15" width="55" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="55" id="WqV-bq-jjx"/>
|
||||
</constraints>
|
||||
<state key="normal" title="Button"/>
|
||||
<buttonConfiguration key="configuration" style="plain">
|
||||
<backgroundConfiguration key="background" image="checkmark.circle" imageContentMode="scaleAspectFit"/>
|
||||
</buttonConfiguration>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="18"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<connections>
|
||||
<action selector="acceptSubscriptionTapped:" destination="WP2-Cp-7ZE" eventType="touchUpInside" id="bq5-18-Ns1"/>
|
||||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Contact added you to their contact list. Add to contacts?" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="ezh-iK-Sk7">
|
||||
<rect key="frame" x="10.000000000000014" y="10" width="237.33333333333337" height="43.666666666666664"/>
|
||||
<rect key="frame" x="10" y="10" width="197.5" height="44"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="19"/>
|
||||
<color key="textColor" systemColor="systemBackgroundColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="xmark.circle" translatesAutoresizingMaskIntoConstraints="NO" id="AS0-Q7-MrW">
|
||||
<rect key="frame" x="270" y="15" width="55" height="34"/>
|
||||
</imageView>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="checkmark.circle" translatesAutoresizingMaskIntoConstraints="NO" id="BG2-fh-ymZ">
|
||||
<rect key="frame" x="215" y="15" width="55" height="34"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" name="AddToContactsBar"/>
|
||||
<constraints>
|
||||
<constraint firstItem="kNl-ad-SgK" firstAttribute="top" secondItem="0oA-5d-4WD" secondAttribute="top" constant="15" id="0Td-UW-nUJ"/>
|
||||
<constraint firstItem="fa9-4g-iNW" firstAttribute="leading" secondItem="AS0-Q7-MrW" secondAttribute="leading" id="3En-Wg-qUq"/>
|
||||
<constraint firstAttribute="bottom" secondItem="fa9-4g-iNW" secondAttribute="bottom" constant="15" id="7Yj-Jo-hA5"/>
|
||||
<constraint firstItem="ezh-iK-Sk7" firstAttribute="top" secondItem="0oA-5d-4WD" secondAttribute="top" constant="10" id="EH7-zf-Ylj"/>
|
||||
<constraint firstItem="kNl-ad-SgK" firstAttribute="trailing" secondItem="BG2-fh-ymZ" secondAttribute="trailing" id="FHX-Pd-S30"/>
|
||||
<constraint firstItem="kNl-ad-SgK" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="ezh-iK-Sk7" secondAttribute="trailing" constant="5" id="IGA-RE-J3E"/>
|
||||
<constraint firstItem="fa9-4g-iNW" firstAttribute="leading" secondItem="kNl-ad-SgK" secondAttribute="trailing" id="QJ2-T7-JJc"/>
|
||||
<constraint firstItem="kNl-ad-SgK" firstAttribute="top" secondItem="BG2-fh-ymZ" secondAttribute="top" id="USZ-x4-7hI"/>
|
||||
<constraint firstItem="fa9-4g-iNW" firstAttribute="bottom" secondItem="AS0-Q7-MrW" secondAttribute="bottom" id="Yqj-wy-SHC"/>
|
||||
<constraint firstItem="ezh-iK-Sk7" firstAttribute="leading" secondItem="0oA-5d-4WD" secondAttribute="leading" constant="10" id="acT-n4-ejR"/>
|
||||
<constraint firstItem="fa9-4g-iNW" firstAttribute="top" secondItem="AS0-Q7-MrW" secondAttribute="top" id="ge1-Dm-uDL"/>
|
||||
<constraint firstItem="fa9-4g-iNW" firstAttribute="top" secondItem="0oA-5d-4WD" secondAttribute="top" constant="15" id="jFH-Ju-QWm"/>
|
||||
<constraint firstItem="ezh-iK-Sk7" firstAttribute="centerY" secondItem="0oA-5d-4WD" secondAttribute="centerY" id="jG9-Cm-2jo"/>
|
||||
<constraint firstAttribute="bottom" secondItem="ezh-iK-Sk7" secondAttribute="bottom" constant="10" id="lkV-5D-9hF"/>
|
||||
<constraint firstItem="kNl-ad-SgK" firstAttribute="leading" secondItem="BG2-fh-ymZ" secondAttribute="leading" id="peb-R7-axT"/>
|
||||
<constraint firstAttribute="bottom" secondItem="kNl-ad-SgK" secondAttribute="bottom" constant="15" id="rVU-fS-vCy"/>
|
||||
<constraint firstItem="fa9-4g-iNW" firstAttribute="trailing" secondItem="AS0-Q7-MrW" secondAttribute="trailing" id="uga-Ok-yHK"/>
|
||||
<constraint firstAttribute="trailing" secondItem="fa9-4g-iNW" secondAttribute="trailing" constant="10" id="wUE-ll-MrO"/>
|
||||
<constraint firstItem="kNl-ad-SgK" firstAttribute="bottom" secondItem="BG2-fh-ymZ" secondAttribute="bottom" id="yEx-SG-x7Z"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="k9G-H8-3Hb" customClass="RoundShadowButton" customModule="Snikket" customModuleProvider="target">
|
||||
<rect key="frame" x="344" y="625" width="40" height="40"/>
|
||||
<rect key="frame" x="305" y="474" width="40" height="40"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="40" id="O5s-Tu-hic"/>
|
||||
|
@ -260,7 +269,7 @@
|
|||
<nil key="title"/>
|
||||
<barButtonItem key="backBarButtonItem" title="Back" id="Dx3-QU-3cN"/>
|
||||
<view key="titleView" contentMode="scaleToFill" id="fc4-l0-VbW" customClass="ChatTitleView" customModule="Snikket" customModuleProvider="target">
|
||||
<rect key="frame" x="55" y="2" width="304" height="40"/>
|
||||
<rect key="frame" x="35.5" y="2" width="304" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="752" verticalHuggingPriority="251" horizontalCompressionResistancePriority="752" verticalCompressionResistancePriority="751" text="Jane Doe #bc-ignore!" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UWL-vQ-lxc">
|
||||
|
@ -315,7 +324,7 @@
|
|||
<objects>
|
||||
<navigationController id="Vme-Fz-tNU" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="3da-sf-ndC">
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<color key="barTintColor" name="chatslistBackground"/>
|
||||
</navigationBar>
|
||||
|
@ -332,17 +341,17 @@
|
|||
<objects>
|
||||
<viewController storyboardIdentifier="SendLocationViewController" id="Dpu-gT-0aH" customClass="SendLocationViewController" customModule="Snikket" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="7e8-2E-mCc">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<mapView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" mapType="standard" translatesAutoresizingMaskIntoConstraints="NO" id="1f2-gi-WCW">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
</mapView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillProportionally" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="W1p-QZ-jTV">
|
||||
<rect key="frame" x="10" y="812" width="394" height="50"/>
|
||||
<rect key="frame" x="10" y="617" width="355" height="50"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5tI-9V-tVB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="394" height="50"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="355" height="50"/>
|
||||
<color key="backgroundColor" name="chatslistBackground"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="20"/>
|
||||
<state key="normal" title="Send Current Location">
|
||||
|
@ -353,7 +362,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="phf-EQ-gyQ">
|
||||
<rect key="frame" x="0.0" y="1" width="50" height="48.666666666666671"/>
|
||||
<rect key="frame" x="0.0" y="0.5" width="50" height="49"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="50" id="1EC-e6-vnR"/>
|
||||
<constraint firstAttribute="height" constant="50" id="FIe-Hm-SeQ"/>
|
||||
|
@ -402,7 +411,7 @@
|
|||
<objects>
|
||||
<viewController storyboardIdentifier="emptyDetailViewController" id="sks-Bw-Z68" customClass="EmptyViewController" customModule="Snikket" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="2uN-Ke-AFc">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<viewLayoutGuide key="safeArea" id="z5H-oQ-jNc"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
|
@ -418,11 +427,11 @@
|
|||
<objects>
|
||||
<viewController restorationIdentifier="SetupViewController" storyboardIdentifier="SetupViewController" id="ib9-Sm-LTl" userLabel="Setup View Controller" customClass="SetupViewController" customModule="Snikket" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="wsj-r3-ZjG">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Siskin IM" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="V18-Iv-6Re">
|
||||
<rect key="frame" x="137" y="447.33333333333331" width="140" height="39"/>
|
||||
<rect key="frame" x="117.5" y="312" width="140" height="39"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="32"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<size key="shadowOffset" width="0.0" height="0.0"/>
|
||||
|
@ -431,7 +440,7 @@
|
|||
</attributedString>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="by Tigase, Inc." textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8ba-yZ-XRA">
|
||||
<rect key="frame" x="154" y="486.33333333333331" width="146" height="25.999999999999943"/>
|
||||
<rect key="frame" x="134.5" y="351" width="146" height="26"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-MediumItalic" family="Helvetica Neue" pointSize="22"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<attributedString key="userComments">
|
||||
|
@ -439,7 +448,7 @@
|
|||
</attributedString>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WyQ-cb-VAl">
|
||||
<rect key="frame" x="20" y="739" width="374" height="41"/>
|
||||
<rect key="frame" x="16" y="544" width="343" height="41"/>
|
||||
<color key="backgroundColor" name="tintColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<inset key="contentEdgeInsets" minX="0.0" minY="10" maxX="0.0" maxY="10"/>
|
||||
|
@ -454,7 +463,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZzM-t7-zvW">
|
||||
<rect key="frame" x="20" y="801" width="374" height="41"/>
|
||||
<rect key="frame" x="16" y="606" width="343" height="41"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<inset key="contentEdgeInsets" minX="0.0" minY="10" maxX="0.0" maxY="10"/>
|
||||
<state key="normal" title="Sign in to an existing XMPP account">
|
||||
|
@ -468,7 +477,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="appLogo" translatesAutoresizingMaskIntoConstraints="NO" id="P5D-Hi-rSq">
|
||||
<rect key="frame" x="27.666666666666657" y="69" width="358.66666666666674" height="358.33333333333331"/>
|
||||
<rect key="frame" x="54" y="25" width="267" height="267"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="P5D-Hi-rSq" secondAttribute="height" multiplier="1:1" id="ZYD-Yr-y5b"/>
|
||||
</constraints>
|
||||
|
@ -547,20 +556,20 @@
|
|||
<objects>
|
||||
<tableViewController extendedLayoutIncludesOpaqueBars="YES" id="mps-t3-QBq" customClass="RosterViewController" customModule="Snikket" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="dbg-Pp-Ujo">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<color key="separatorColor" systemColor="systemBackgroundColor"/>
|
||||
<prototypes>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="RosterItemTableViewCell" selectionStyle="none" indentationWidth="10" reuseIdentifier="RosterItemTableViewCell" rowHeight="48" id="ONc-pU-DYD" customClass="RosterItemTableViewCell" customModule="Snikket" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="44.666666030883789" width="414" height="48"/>
|
||||
<rect key="frame" x="0.0" y="44.5" width="375" height="48"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" tableViewCell="ONc-pU-DYD" id="UqK-Bi-A4U">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="48"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="48"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="cbu-SQ-mtx">
|
||||
<rect key="frame" x="2" y="2" width="410" height="44"/>
|
||||
<rect key="frame" x="2" y="2" width="371" height="44"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PEi-Gx-E77" customClass="AvatarStatusView" customModule="Snikket" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="44" height="44"/>
|
||||
|
@ -584,10 +593,10 @@
|
|||
</connections>
|
||||
</view>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="fPJ-VF-UlI">
|
||||
<rect key="frame" x="54" y="0.0" width="356" height="44"/>
|
||||
<rect key="frame" x="54" y="0.0" width="317" height="44"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vEG-as-CLS">
|
||||
<rect key="frame" x="0.0" y="0.0" width="356" height="26"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="317" height="26"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<attributedString key="userComments">
|
||||
|
@ -595,7 +604,7 @@
|
|||
</attributedString>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tRD-rd-7dm">
|
||||
<rect key="frame" x="0.0" y="26" width="356" height="18"/>
|
||||
<rect key="frame" x="0.0" y="26" width="317" height="18"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="light" pointSize="15"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<attributedString key="userComments">
|
||||
|
@ -652,7 +661,7 @@
|
|||
<tabBarItem key="tabBarItem" title="Chats" image="message.fill" catalog="system" id="acW-dT-cKf"/>
|
||||
<toolbarItems/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="7zK-CH-Y1Y">
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<color key="backgroundColor" name="chatslistBackground"/>
|
||||
<color key="tintColor" name="tintColor"/>
|
||||
|
@ -683,7 +692,7 @@
|
|||
<navigationController storyboardIdentifier="ChatViewNavigationController" automaticallyAdjustsScrollViewInsets="NO" id="XmR-SP-8PN" sceneMemberID="viewController">
|
||||
<toolbarItems/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" translucent="NO" id="ZXL-ae-Ls9">
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<color key="tintColor" name="tintColor"/>
|
||||
<color key="barTintColor" name="chatslistBackground"/>
|
||||
|
@ -720,7 +729,7 @@
|
|||
</tabBarItem>
|
||||
<toolbarItems/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="QfB-Do-9or">
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<color key="backgroundColor" name="chatslistBackground"/>
|
||||
<color key="tintColor" name="tintColor"/>
|
||||
|
@ -747,7 +756,7 @@
|
|||
<navigationController storyboardIdentifier="RosterItemEditNavigationController" id="DqK-vA-tM9" sceneMemberID="viewController">
|
||||
<toolbarItems/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="c2l-7V-bZB">
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<color key="tintColor" name="tintColor"/>
|
||||
<color key="barTintColor" name="chatslistBackground"/>
|
||||
|
@ -772,21 +781,21 @@
|
|||
<objects>
|
||||
<tableViewController id="WDE-Vb-oKK" customClass="RosterItemEditViewController" customModule="Snikket" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" allowsSelection="NO" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="Ock-Af-3IY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" systemColor="groupTableViewBackgroundColor"/>
|
||||
<sections>
|
||||
<tableViewSection headerTitle="Account" id="Mfv-HJ-QDO">
|
||||
<cells>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="mk1-zp-AU3">
|
||||
<rect key="frame" x="0.0" y="49" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="49.5" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="mk1-zp-AU3" id="Da1-kS-KYt">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="local_user@example.com #bc-ignore!" placeholder="Select account" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="gXY-yq-Y2K">
|
||||
<rect key="frame" x="20" y="0.0" width="374" height="44"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<textInputTraits key="textInputTraits"/>
|
||||
</textField>
|
||||
|
@ -804,14 +813,14 @@
|
|||
<tableViewSection headerTitle="JID" id="Qgj-eQ-geg">
|
||||
<cells>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="ubC-3x-1ej">
|
||||
<rect key="frame" x="0.0" y="142.66666603088379" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="143.5" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ubC-3x-1ej" id="6FY-Rq-hWY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="local_user@example.com #bc-ignore!" placeholder="Enter chat address" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="BM3-28-huR">
|
||||
<rect key="frame" x="20" y="0.0" width="374" height="44"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<textInputTraits key="textInputTraits" keyboardType="emailAddress"/>
|
||||
</textField>
|
||||
|
@ -829,14 +838,14 @@
|
|||
<tableViewSection headerTitle="Name" id="Kfl-J5-hdD">
|
||||
<cells>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="bnU-C3-Ei1">
|
||||
<rect key="frame" x="0.0" y="236.33333206176758" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="237.5" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="bnU-C3-Ei1" id="sWs-wY-Vy8">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="Juliet Capulet #bc-ignore!" placeholder="Enter contact name" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="OGf-mX-8z3">
|
||||
<rect key="frame" x="20" y="0.0" width="374" height="44"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<textInputTraits key="textInputTraits"/>
|
||||
</textField>
|
||||
|
@ -854,20 +863,20 @@
|
|||
<tableViewSection headerTitle="PRESENCE" id="Q28-Ig-9NP">
|
||||
<cells>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="yky-H4-cbk">
|
||||
<rect key="frame" x="0.0" y="329.99999809265137" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="331.5" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="yky-H4-cbk" id="Qga-yz-bXa">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Send presence updates" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="upM-mW-rMZ">
|
||||
<rect key="frame" x="20" y="11.666666666666664" width="180.66666666666666" height="21"/>
|
||||
<rect key="frame" x="16" y="11.5" width="180.5" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dOv-Qh-hdZ">
|
||||
<rect key="frame" x="345" y="6.6666666666666679" width="51" height="31.000000000000004"/>
|
||||
<rect key="frame" x="310" y="6.5" width="51" height="31"/>
|
||||
</switch>
|
||||
</subviews>
|
||||
<constraints>
|
||||
|
@ -880,20 +889,20 @@
|
|||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="GLY-Pk-gl9">
|
||||
<rect key="frame" x="0.0" y="373.99999809265137" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="375.5" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="GLY-Pk-gl9" id="P7U-6w-pcx">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Receive presence updates" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ffo-7n-Tn2">
|
||||
<rect key="frame" x="20" y="11.666666666666664" width="201" height="21"/>
|
||||
<rect key="frame" x="16" y="11.5" width="201" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QIs-qT-dLK">
|
||||
<rect key="frame" x="345" y="6.6666666666666679" width="51" height="31.000000000000004"/>
|
||||
<rect key="frame" x="310" y="6.5" width="51" height="31"/>
|
||||
</switch>
|
||||
</subviews>
|
||||
<constraints>
|
||||
|
@ -942,26 +951,26 @@
|
|||
<objects>
|
||||
<tableViewController storyboardIdentifier="ContactViewController" id="rSR-7g-CFO" customClass="ContactViewController" customModule="Snikket" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" sectionFooterHeight="18" id="NKE-a4-JkF">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" systemColor="groupTableViewBackgroundColor"/>
|
||||
<prototypes>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="BasicInfoCell" rowHeight="94" id="C58-uk-LaV" customClass="ContactBasicTableViewCell" customModule="Snikket" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="49" width="414" height="94"/>
|
||||
<rect key="frame" x="0.0" y="49.5" width="375" height="94"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="C58-uk-LaV" id="ZeZ-oS-SaN">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="94"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="94"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="34W-5a-mO1">
|
||||
<rect key="frame" x="20" y="11" width="60" height="60"/>
|
||||
<rect key="frame" x="16" y="11" width="60" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="60" id="1cR-NX-9Qr"/>
|
||||
<constraint firstAttribute="height" constant="60" id="nSG-p5-eAy"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" text="John Doe" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="koS-ci-GqT">
|
||||
<rect key="frame" x="88" y="11" width="306" height="21"/>
|
||||
<rect key="frame" x="84" y="11" width="275" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<attributedString key="userComments">
|
||||
|
@ -969,7 +978,7 @@
|
|||
</attributedString>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="749" text="Company, Inc." textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0rT-oB-jot">
|
||||
<rect key="frame" x="88" y="36" width="306" height="11"/>
|
||||
<rect key="frame" x="84" y="36" width="275" height="11"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -978,7 +987,7 @@
|
|||
</attributedString>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="user@example.com" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rOe-Pg-XBh">
|
||||
<rect key="frame" x="88" y="51" width="306" height="16"/>
|
||||
<rect key="frame" x="84" y="51" width="275" height="16"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -987,7 +996,7 @@
|
|||
</attributedString>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="using test@example.com" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6Zq-Ql-WA0">
|
||||
<rect key="frame" x="88" y="71" width="306" height="12"/>
|
||||
<rect key="frame" x="84" y="71" width="275" height="12"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="12" id="AV3-vs-7NN"/>
|
||||
</constraints>
|
||||
|
@ -1027,14 +1036,14 @@
|
|||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="ContactFormCell" selectionStyle="default" indentationWidth="10" reuseIdentifier="ContactFormCell" rowHeight="51" id="pQL-wq-Sb9" customClass="ContactFormTableViewCell" customModule="Snikket" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="143" width="414" height="51"/>
|
||||
<rect key="frame" x="0.0" y="143.5" width="375" height="51"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="pQL-wq-Sb9" id="9Se-nj-MAA">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="51"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" text="Type" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yxF-LM-meS">
|
||||
<rect key="frame" x="20" y="9" width="374" height="14.666666666666664"/>
|
||||
<rect key="frame" x="16" y="9" width="343" height="14.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" name="tintColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -1043,7 +1052,7 @@
|
|||
</attributedString>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="b03-5W-Imh">
|
||||
<rect key="frame" x="28" y="25.666666666666671" width="366" height="17"/>
|
||||
<rect key="frame" x="24" y="25.5" width="335" height="17"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -1068,14 +1077,14 @@
|
|||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="AddressCell" rowHeight="80" id="73R-lk-SWh" customClass="ContactFormTableViewCell" customModule="Snikket" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="194" width="414" height="80"/>
|
||||
<rect key="frame" x="0.0" y="194.5" width="375" height="80"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="73R-lk-SWh" id="AoC-2k-RUL">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="80"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="80"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" text="Type" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="agd-7n-AkX">
|
||||
<rect key="frame" x="20" y="9" width="374" height="14.666666666666664"/>
|
||||
<rect key="frame" x="16" y="9" width="343" height="14.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" name="tintColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -1084,7 +1093,7 @@
|
|||
</attributedString>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Address" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="DZS-A8-CWS">
|
||||
<rect key="frame" x="28" y="25.666666666666671" width="366" height="47"/>
|
||||
<rect key="frame" x="24" y="25.5" width="335" height="47"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -1109,14 +1118,14 @@
|
|||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="BlockContactCell" textLabel="kwQ-p7-cX2" rowHeight="44" style="IBUITableViewCellStyleDefault" id="Mn6-i8-kwI">
|
||||
<rect key="frame" x="0.0" y="274" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="274.5" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Mn6-i8-kwI" id="0S2-hp-vS3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Block contact" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="kwQ-p7-cX2">
|
||||
<rect key="frame" x="20" y="0.0" width="374" height="44"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
|
@ -1126,14 +1135,14 @@
|
|||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="MuteContactCell" textLabel="g8N-kr-fax" rowHeight="44" style="IBUITableViewCellStyleDefault" id="rXF-fn-cOY">
|
||||
<rect key="frame" x="0.0" y="318" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="318.5" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="rXF-fn-cOY" id="Cfg-a8-bA5">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Mute contact" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="g8N-kr-fax">
|
||||
<rect key="frame" x="20" y="0.0" width="374" height="44"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
|
@ -1143,21 +1152,21 @@
|
|||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="OMEMOEncryptionCell" textLabel="XZp-oZ-XpC" detailTextLabel="vIB-ar-uog" rowHeight="44" style="IBUITableViewCellStyleValue1" id="EPN-iV-X5r" customClass="OMEMOEncryptionSwitchTableViewCell" customModule="Snikket" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="362" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="362.5" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="EPN-iV-X5r" id="cx2-fQ-N3b">
|
||||
<rect key="frame" x="0.0" y="0.0" width="384.33333333333331" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="349.5" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Message encryption" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="XZp-oZ-XpC">
|
||||
<rect key="frame" x="20" y="11.999999999999998" width="154.33333333333334" height="20.333333333333332"/>
|
||||
<rect key="frame" x="16" y="12" width="154.5" height="20.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Detail" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="vIB-ar-uog">
|
||||
<rect key="frame" x="332.66666666666663" y="11.999999999999998" width="43.666666666666664" height="20.333333333333332"/>
|
||||
<rect key="frame" x="297.5" y="12" width="44" height="20.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" systemColor="secondaryLabelColor"/>
|
||||
|
@ -1170,14 +1179,14 @@
|
|||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="OMEMOIdentityCell" rowHeight="60" id="3q3-ov-q6z" customClass="OMEMOIdentityTableViewCell" customModule="Snikket" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="406" width="414" height="60"/>
|
||||
<rect key="frame" x="0.0" y="406.5" width="375" height="60"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="3q3-ov-q6z" id="ArO-fK-TDf">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="60"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="60"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="diN-oY-G54">
|
||||
<rect key="frame" x="10" y="13" width="324.33333333333331" height="34"/>
|
||||
<rect key="frame" x="10" y="13" width="296" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="P0U-51-Isi"/>
|
||||
</constraints>
|
||||
|
@ -1192,7 +1201,7 @@
|
|||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bsQ-Fj-zSv">
|
||||
<rect key="frame" x="355" y="14.666666666666664" width="51" height="31"/>
|
||||
<rect key="frame" x="316" y="14.5" width="51" height="31"/>
|
||||
<connections>
|
||||
<action selector="valueChanged:" destination="3q3-ov-q6z" eventType="valueChanged" id="YOR-XP-dbc"/>
|
||||
</connections>
|
||||
|
@ -1212,14 +1221,14 @@
|
|||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="AttachmentsCell" textLabel="EpU-tc-DIx" rowHeight="44" style="IBUITableViewCellStyleDefault" id="09h-vH-qSu">
|
||||
<rect key="frame" x="0.0" y="466" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="466.5" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="09h-vH-qSu" id="Khc-ES-FDl">
|
||||
<rect key="frame" x="0.0" y="0.0" width="384.33333333333331" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="349.5" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Attachments" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="EpU-tc-DIx">
|
||||
<rect key="frame" x="20" y="0.0" width="356.33333333333331" height="44"/>
|
||||
<rect key="frame" x="16" y="0.0" width="325.5" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
|
@ -1232,14 +1241,14 @@
|
|||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="ClearHistoryCell" textLabel="qjs-BY-Nid" rowHeight="44" style="IBUITableViewCellStyleDefault" id="B47-IG-b97">
|
||||
<rect key="frame" x="0.0" y="510" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="510.5" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="B47-IG-b97" id="vsw-L3-YyE">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Clear History" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="qjs-BY-Nid">
|
||||
<rect key="frame" x="20" y="0.0" width="374" height="44"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
|
@ -1249,14 +1258,14 @@
|
|||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="AddToContactsCell" textLabel="zrb-Yr-XQO" rowHeight="44" style="IBUITableViewCellStyleDefault" id="uOR-5c-dcP">
|
||||
<rect key="frame" x="0.0" y="554" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="554.5" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="uOR-5c-dcP" id="96g-I4-URe">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Add to contact list" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="zrb-Yr-XQO">
|
||||
<rect key="frame" x="20" y="0.0" width="374" height="44"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
|
@ -1297,7 +1306,7 @@
|
|||
<navigationController restorationIdentifier="ContactViewNavigationController" storyboardIdentifier="ContactViewNavigationController" automaticallyAdjustsScrollViewInsets="NO" id="JIC-ew-OGP" sceneMemberID="viewController">
|
||||
<toolbarItems/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="26o-Nz-6qA">
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<attributedString key="userComments">
|
||||
<fragment content="#bc-ignore!"/>
|
||||
|
@ -1317,21 +1326,21 @@
|
|||
<objects>
|
||||
<viewController storyboardIdentifier="NewFeatureSuggestionView" modalPresentationStyle="formSheet" id="Z9W-jo-gSy" customClass="NewFeatureSuggestionView" customModule="Snikket" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="nB0-oQ-Zoc">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Message Archiving" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ckp-Mb-v0c">
|
||||
<rect key="frame" x="103" y="64" width="208" height="29"/>
|
||||
<rect key="frame" x="83.5" y="20" width="208" height="29"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="24"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Your server for account \(account) supports message archiving. Would you like to enable this feature?" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.59999999999999998" adjustsLetterSpacingToFitWidth="YES" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1dk-YA-RVu">
|
||||
<rect key="frame" x="29.666666666666657" y="302.33333333333337" width="354.66666666666674" height="358.33333333333337"/>
|
||||
<rect key="frame" x="25.5" y="212.5" width="324.5" height="266.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wvT-dz-RVz">
|
||||
<rect key="frame" x="30" y="820" width="61" height="32"/>
|
||||
<rect key="frame" x="30" y="625" width="61" height="32"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<state key="normal" title="Not now"/>
|
||||
<connections>
|
||||
|
@ -1339,17 +1348,17 @@
|
|||
</connections>
|
||||
</button>
|
||||
<activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="ApQ-D1-Gfw">
|
||||
<rect key="frame" x="188.66666666666666" y="429.66666666666669" width="37" height="37"/>
|
||||
<rect key="frame" x="169" y="315" width="37" height="37"/>
|
||||
<color key="color" name="selectedMenuItemColor" catalog="System" colorSpace="catalog"/>
|
||||
</activityIndicatorView>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="messageArchiving" translatesAutoresizingMaskIntoConstraints="NO" id="j8I-n6-mj7">
|
||||
<rect key="frame" x="117.33333333333333" y="113.00000000000001" width="179.33333333333337" height="179.33333333333337"/>
|
||||
<rect key="frame" x="121" y="69" width="133" height="133.5"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="j8I-n6-mj7" secondAttribute="height" multiplier="1:1" id="MAF-hM-QM0"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yJk-Px-1oo">
|
||||
<rect key="frame" x="330" y="819.66666666666663" width="54" height="33"/>
|
||||
<rect key="frame" x="291" y="624.5" width="54" height="33"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="17"/>
|
||||
<state key="normal" title="Enable"/>
|
||||
<connections>
|
||||
|
@ -1402,7 +1411,7 @@
|
|||
<objects>
|
||||
<collectionViewController storyboardIdentifier="ChatAttachmentsController" title="Attachments" id="N9z-ms-iaT" customClass="ChatAttachmentsController" customModule="Snikket" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<collectionView key="view" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" id="cHc-Jl-VKK">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="2" minimumInteritemSpacing="2" id="mzE-f3-Idj">
|
||||
|
@ -1455,7 +1464,7 @@
|
|||
<objects>
|
||||
<viewController storyboardIdentifier="SettingsNavigationControllerDummy" useStoryboardIdentifierAsRestorationIdentifier="YES" id="w4Y-E8-hif" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="cLl-kf-X7x">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<viewLayoutGuide key="safeArea" id="KbB-FL-79t"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
|
|
|
@ -98,7 +98,7 @@ class ChannelViewController: BaseChatViewControllerWithDataSourceAndContextMenuA
|
|||
}
|
||||
cell.nicknameView?.text = item.authorNickname;
|
||||
|
||||
cell.set(message: item, maxMessageWidth: self.view.frame.width * 0.60)
|
||||
cell.set(message: item, maxMessageWidth: self.view.frame.width * 0.60, indexPath: indexPath)
|
||||
return cell;
|
||||
}
|
||||
case let item as ChatAttachment:
|
||||
|
@ -116,7 +116,7 @@ class ChannelViewController: BaseChatViewControllerWithDataSourceAndContextMenuA
|
|||
}
|
||||
cell.nicknameView?.text = item.authorNickname;
|
||||
|
||||
cell.set(attachment: item, maxImageWidth: self.view.frame.width * 0.60)
|
||||
cell.set(attachment: item, maxImageWidth: self.view.frame.width * 0.60, indexPath: indexPath)
|
||||
cell.setNeedsUpdateConstraints();
|
||||
cell.updateConstraintsIfNeeded();
|
||||
|
||||
|
@ -125,7 +125,7 @@ class ChannelViewController: BaseChatViewControllerWithDataSourceAndContextMenuA
|
|||
let id = "ChatTableViewLinkPreviewCell";
|
||||
let cell: LinkPreviewChatTableViewCell = tableView.dequeueReusableCell(withIdentifier: id, for: indexPath) as! LinkPreviewChatTableViewCell;
|
||||
cell.contentView.transform = dataSource.inverted ? CGAffineTransform(a: 1, b: 0, c: 0, d: -1, tx: 0, ty: 0) : CGAffineTransform.identity;
|
||||
cell.set(linkPreview: item);
|
||||
cell.set(linkPreview: item, indexPath: indexPath)
|
||||
return cell;
|
||||
case let item as SystemMessage:
|
||||
let cell: ChatTableViewSystemCell = tableView.dequeueReusableCell(withIdentifier: "ChatTableViewSystemCell", for: indexPath) as! ChatTableViewSystemCell;
|
||||
|
@ -146,7 +146,7 @@ class ChannelViewController: BaseChatViewControllerWithDataSourceAndContextMenuA
|
|||
}
|
||||
}
|
||||
cell.nicknameView?.text = item.authorNickname;
|
||||
cell.set(invitation: item);
|
||||
cell.set(invitation: item, indexPath: indexPath)
|
||||
return cell;
|
||||
default:
|
||||
return tableView.dequeueReusableCell(withIdentifier: "ChatTableViewMessageCell", for: indexPath);
|
||||
|
|
|
@ -177,13 +177,13 @@ class AttachmentChatTableViewCell: BaseChatTableViewCell, UIContextMenuInteracti
|
|||
audioPlayer?.play()
|
||||
|
||||
if let player = self.audioPlayer, let audioTimer = self.audioTimer, let sliderTimer = self.sliderTimer {
|
||||
self.audioPlayerDelegate?.didPlayAudio(audioPlayer: player, audioTimer: audioTimer, sliderTimer: sliderTimer, playButton: self.playButton)
|
||||
self.cellDelegate?.didPlayAudio(audioPlayer: player, audioTimer: audioTimer, sliderTimer: sliderTimer, playButton: self.playButton)
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
audioPlayer?.pause()
|
||||
self.audioPlayerDelegate?.didStopAudio()
|
||||
self.cellDelegate?.didStopAudio()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -207,7 +207,7 @@ class AttachmentChatTableViewCell: BaseChatTableViewCell, UIContextMenuInteracti
|
|||
|
||||
if slider.value == 0.0, !player.isPlaying {
|
||||
self.playButton.isSelected = false
|
||||
self.audioPlayerDelegate?.didStopAudio()
|
||||
self.cellDelegate?.didStopAudio()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -229,13 +229,13 @@ class AttachmentChatTableViewCell: BaseChatTableViewCell, UIContextMenuInteracti
|
|||
audioTime.text = NSString(format: "%02d:%02d", minutes,seconds) as String
|
||||
}
|
||||
|
||||
func set(attachment item: ChatAttachment, maxImageWidth: CGFloat) {
|
||||
func set(attachment item: ChatAttachment, maxImageWidth: CGFloat, indexPath: IndexPath) {
|
||||
self.item = item;
|
||||
self.customView.subviews.forEach { view in
|
||||
view.removeFromSuperview()
|
||||
}
|
||||
|
||||
super.set(item: item);
|
||||
super.set(item: item, indexPath: indexPath)
|
||||
|
||||
self.customView?.isOpaque = true;
|
||||
self.customView?.backgroundColor = self.backgroundColor;
|
||||
|
@ -586,7 +586,7 @@ class AttachmentChatTableViewCell: BaseChatTableViewCell, UIContextMenuInteracti
|
|||
details.text = "\(typeName) - \(fileSize)";
|
||||
|
||||
if UTTypeConformsTo(uti, kUTTypeImage) {
|
||||
iconView.image = UIImage(contentsOfFile: fileUrl.path)!
|
||||
iconView.image = UIImage(contentsOfFile: fileUrl.path)
|
||||
self.viewType = .imagePreview;
|
||||
self.setImageConstraints(image: iconView.image, maxImageWidth: maxImageWidth)
|
||||
} else if UTTypeConformsTo(uti, kUTTypeMovie) {
|
||||
|
|
|
@ -22,9 +22,10 @@
|
|||
import UIKit
|
||||
import AVKit
|
||||
|
||||
protocol AudioPlayerDelegate {
|
||||
protocol CellDelegate {
|
||||
func didPlayAudio(audioPlayer: AVAudioPlayer, audioTimer: Foundation.Timer, sliderTimer: Foundation.Timer, playButton: UIButton)
|
||||
func didStopAudio()
|
||||
func didTapResend(indexPath: IndexPath)
|
||||
}
|
||||
|
||||
class BaseChatTableViewCellFormatter {
|
||||
|
@ -58,8 +59,9 @@ class BaseChatTableViewCell: UITableViewCell, UIDocumentInteractionControllerDel
|
|||
@IBOutlet var stateView: UILabel?;
|
||||
@IBOutlet var bubbleImageView: UIImageView!
|
||||
@IBOutlet weak var lockStateImageView: UIImageView?
|
||||
var indexPath: IndexPath?
|
||||
|
||||
var audioPlayerDelegate: AudioPlayerDelegate?
|
||||
var cellDelegate: CellDelegate?
|
||||
|
||||
var originalTimestampColor: UIColor!;
|
||||
|
||||
|
@ -108,7 +110,9 @@ class BaseChatTableViewCell: UITableViewCell, UIDocumentInteractionControllerDel
|
|||
}
|
||||
|
||||
|
||||
func set(item: ChatViewItemProtocol) {
|
||||
func set(item: ChatViewItemProtocol, indexPath: IndexPath) {
|
||||
|
||||
self.indexPath = indexPath
|
||||
lockStateImageView?.isHidden = true
|
||||
let fgcolor = item.state.direction == .incoming ? "chatMessageText" : "chatMessageTextOutgoing";
|
||||
let lockImage = item.state.direction == .incoming ? "lock-incoming" : "lock-outgoing"
|
||||
|
@ -148,8 +152,11 @@ class BaseChatTableViewCell: UITableViewCell, UIDocumentInteractionControllerDel
|
|||
|
||||
if item.state.isError {
|
||||
if item.state.direction == .outgoing {
|
||||
self.accessoryType = .detailButton;
|
||||
self.tintColor = UIColor.red;
|
||||
let accessoryButton = UIButton(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
|
||||
accessoryButton.setImage(UIImage(named: "info.circle"), for: .normal)
|
||||
accessoryButton.addTarget(self, action: #selector(didTapResend), for: .touchUpInside)
|
||||
accessoryButton.transform = CGAffineTransform(a: 1, b: 0, c: 0, d: -1, tx: 0, ty: 0)
|
||||
self.accessoryView = accessoryButton
|
||||
}
|
||||
} else {
|
||||
self.accessoryType = .none;
|
||||
|
@ -160,6 +167,14 @@ class BaseChatTableViewCell: UITableViewCell, UIDocumentInteractionControllerDel
|
|||
self.timestampView?.textColor = item.state.isError && item.state.direction == .incoming ? UIColor.red : originalTimestampColor;
|
||||
}
|
||||
|
||||
@objc func didTapResend() {
|
||||
guard let indexPath = indexPath else {
|
||||
return
|
||||
}
|
||||
|
||||
self.cellDelegate?.didTapResend(indexPath: indexPath)
|
||||
}
|
||||
|
||||
@objc func actionMore(_ sender: UIMenuController) {
|
||||
NotificationCenter.default.post(name: NSNotification.Name("tableViewCellShowEditToolbar"), object: self);
|
||||
}
|
||||
|
|
|
@ -61,9 +61,9 @@ class ChatTableViewCell: BaseChatTableViewCell, UITextViewDelegate {
|
|||
originalTextColor = messageTextView.textColor;
|
||||
}
|
||||
|
||||
func set(message item: ChatMessage, maxMessageWidth: CGFloat) {
|
||||
func set(message item: ChatMessage, maxMessageWidth: CGFloat, indexPath: IndexPath) {
|
||||
messageTextView.textView.delegate = self;
|
||||
super.set(item: item)
|
||||
super.set(item: item, indexPath: indexPath)
|
||||
|
||||
mapView.removeFromSuperview()
|
||||
if isGeoLocation(message: item.message) {
|
||||
|
|
|
@ -212,8 +212,9 @@ class ChatViewController : BaseChatViewControllerWithDataSourceAndContextMenuAnd
|
|||
let color = incoming ? #colorLiteral(red: 0.01663736999, green: 0.4700628519, blue: 0.6680073142, alpha: 1) : #colorLiteral(red: 0.4562267661, green: 0.4913363457, blue: 0, alpha: 1)
|
||||
cell.avatarView?.set(bareJID: jid, name: name, avatar: AvatarManager.instance.avatar(for: incoming ? jid : account, on: account), orDefault: AvatarManager.instance.defaultAvatar, backColor: color);
|
||||
cell.nicknameView?.text = ""
|
||||
cell.set(message: item, maxMessageWidth: self.view.frame.width * 0.60)
|
||||
cell.set(message: item, maxMessageWidth: self.view.frame.width * 0.60, indexPath: indexPath)
|
||||
cell.backgroundColor = .clear
|
||||
cell.cellDelegate = self
|
||||
cell.contentView.backgroundColor = .clear
|
||||
cell.bubbleImageView.isHidden = false
|
||||
return cell;
|
||||
|
@ -227,15 +228,15 @@ class ChatViewController : BaseChatViewControllerWithDataSourceAndContextMenuAnd
|
|||
let color = incoming ? #colorLiteral(red: 0.01663736999, green: 0.4700628519, blue: 0.6680073142, alpha: 1) : #colorLiteral(red: 0.4562267661, green: 0.4913363457, blue: 0, alpha: 1)
|
||||
cell.avatarView?.set(bareJID: jid, name: name, avatar: AvatarManager.instance.avatar(for: incoming ? jid : account, on: account), orDefault: AvatarManager.instance.defaultAvatar, backColor: color);
|
||||
cell.nicknameView?.text = ""
|
||||
cell.set(attachment: item, maxImageWidth: self.view.frame.width * 0.60)
|
||||
cell.audioPlayerDelegate = self
|
||||
cell.set(attachment: item, maxImageWidth: self.view.frame.width * 0.60, indexPath: indexPath)
|
||||
cell.cellDelegate = self
|
||||
cell.bubbleImageView.isHidden = false
|
||||
return cell;
|
||||
case let item as ChatLinkPreview:
|
||||
let id = "ChatTableViewLinkPreviewCell";
|
||||
let cell: LinkPreviewChatTableViewCell = tableView.dequeueReusableCell(withIdentifier: id, for: indexPath) as! LinkPreviewChatTableViewCell;
|
||||
cell.contentView.transform = dataSource.inverted ? CGAffineTransform(a: 1, b: 0, c: 0, d: -1, tx: 0, ty: 0) : CGAffineTransform.identity;
|
||||
cell.set(linkPreview: item);
|
||||
cell.set(linkPreview: item, indexPath: indexPath)
|
||||
return cell;
|
||||
case let item as SystemMessage:
|
||||
let cell: ChatTableViewSystemCell = tableView.dequeueReusableCell(withIdentifier: "ChatTableViewSystemCell", for: indexPath) as! ChatTableViewSystemCell;
|
||||
|
@ -249,41 +250,12 @@ class ChatViewController : BaseChatViewControllerWithDataSourceAndContextMenuAnd
|
|||
let name = incoming ? self.titleView.name : localNickname;
|
||||
cell.avatarView?.set(bareJID: jid, name: name, avatar: AvatarManager.instance.avatar(for: incoming ? jid : account, on: account), orDefault: AvatarManager.instance.defaultAvatar);
|
||||
cell.nicknameView?.text = name;
|
||||
cell.set(invitation: item);
|
||||
cell.set(invitation: item, indexPath: indexPath)
|
||||
return cell;
|
||||
default:
|
||||
return tableView.dequeueReusableCell(withIdentifier: "ChatTableViewCellIncoming", for: indexPath);
|
||||
}
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView, accessoryButtonTappedForRowWith indexPath: IndexPath) {
|
||||
print("accessory button cliecked at", indexPath)
|
||||
guard let item = dataSource.getItem(at: indexPath.row) as? ChatEntry, let chat = self.chat as? DBChat else {
|
||||
return;
|
||||
}
|
||||
|
||||
DispatchQueue.main.async {
|
||||
let alert = UIAlertController(title: NSLocalizedString("Details", comment: ""), message: item.error ?? NSLocalizedString("Unkown error occured", comment: ""), preferredStyle: .alert);
|
||||
alert.addAction(UIAlertAction(title: NSLocalizedString("Resend", comment: ""), style: .default, handler: {(action) in
|
||||
//print("resending message with body", item.message);
|
||||
|
||||
switch item {
|
||||
case let item as ChatMessage:
|
||||
MessageEventHandler.sendMessage(chat: chat, body: item.message, url: nil);
|
||||
DBChatHistoryStore.instance.remove(item: item);
|
||||
case let item as ChatAttachment:
|
||||
let oldLocalFile = DownloadStore.instance.url(for: "\(item.id)");
|
||||
MessageEventHandler.sendAttachment(chat: chat, originalUrl: oldLocalFile, uploadedUrl: item.url, appendix: item.appendix, completionHandler: {
|
||||
DBChatHistoryStore.instance.remove(item: item);
|
||||
});
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}));
|
||||
alert.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, handler: nil));
|
||||
self.present(alert, animated: true, completion: nil);
|
||||
}
|
||||
}
|
||||
|
||||
override func canExecuteContext(action: BaseChatViewControllerWithDataSourceAndContextMenuAndToolbar.ContextAction, forItem item: ChatEntry, at indexPath: IndexPath) -> Bool {
|
||||
switch action {
|
||||
|
@ -604,7 +576,7 @@ class ChatTitleView: UIView {
|
|||
}
|
||||
}
|
||||
|
||||
extension ChatViewController: AudioPlayerDelegate {
|
||||
extension ChatViewController: CellDelegate {
|
||||
func didPlayAudio(audioPlayer: AVAudioPlayer, audioTimer: Foundation.Timer, sliderTimer: Foundation.Timer, playButton: UIButton) {
|
||||
|
||||
self.cellAudioPlayer?.pause()
|
||||
|
@ -625,4 +597,33 @@ extension ChatViewController: AudioPlayerDelegate {
|
|||
self.cellAudioPlayButton = nil
|
||||
}
|
||||
|
||||
func didTapResend(indexPath: IndexPath) {
|
||||
|
||||
guard let item = dataSource.getItem(at: indexPath.row) as? ChatEntry, let chat = self.chat as? DBChat else {
|
||||
return;
|
||||
}
|
||||
|
||||
DispatchQueue.main.async {
|
||||
let alert = UIAlertController(title: NSLocalizedString("Details", comment: ""), message: item.error ?? NSLocalizedString("Unkown error occured", comment: ""), preferredStyle: .alert);
|
||||
alert.addAction(UIAlertAction(title: NSLocalizedString("Resend", comment: ""), style: .default, handler: {(action) in
|
||||
//print("resending message with body", item.message);
|
||||
|
||||
switch item {
|
||||
case let item as ChatMessage:
|
||||
MessageEventHandler.sendMessage(chat: chat, body: item.message, url: nil);
|
||||
DBChatHistoryStore.instance.remove(item: item);
|
||||
case let item as ChatAttachment:
|
||||
let oldLocalFile = DownloadStore.instance.url(for: "\(item.id)");
|
||||
MessageEventHandler.sendAttachment(chat: chat, originalUrl: oldLocalFile, uploadedUrl: item.url, appendix: item.appendix, completionHandler: {
|
||||
DBChatHistoryStore.instance.remove(item: item);
|
||||
});
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}));
|
||||
alert.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, handler: nil));
|
||||
self.present(alert, animated: true, completion: nil);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
import UIKit
|
||||
|
||||
class ConversationLogController: UIViewController, ChatViewDataSourceDelegate, UIScrollViewDelegate {
|
||||
class ConversationLogController: UIViewController, ChatViewDataSourceDelegate {
|
||||
|
||||
private let firstRowIndexPath = IndexPath(row: 0, section: 0);
|
||||
|
||||
|
@ -55,21 +55,6 @@ class ConversationLogController: UIViewController, ChatViewDataSourceDelegate, U
|
|||
conversationLogDelegate?.initialize(tableView: self.tableView);
|
||||
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(showEditToolbar), name: NSNotification.Name("tableViewCellShowEditToolbar"), object: nil);
|
||||
|
||||
let scrollView = UIScrollView()
|
||||
scrollView.bounds = view.bounds
|
||||
scrollView.contentOffset.y = 1
|
||||
scrollView.contentSize.height = view.bounds.height + 1
|
||||
scrollView.delegate = self
|
||||
view.addSubview(scrollView)
|
||||
}
|
||||
|
||||
func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool {
|
||||
if self.dataSource.count != 0 {
|
||||
let indexpath = IndexPath(row: self.dataSource.count - 1, section: 0)
|
||||
self.tableView.scrollToRow(at: indexpath, at: .bottom, animated: true)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
|
|
|
@ -34,8 +34,8 @@ class InvitationChatTableViewCell: BaseChatTableViewCell {
|
|||
|
||||
private var buttonBottomContraint: NSLayoutConstraint?;
|
||||
|
||||
func set(invitation: ChatInvitation) {
|
||||
super.set(item: invitation);
|
||||
func set(invitation: ChatInvitation, indexPath: IndexPath) {
|
||||
super.set(item: invitation, indexPath: indexPath)
|
||||
self.account = invitation.account;
|
||||
self.appendix = invitation.appendix;
|
||||
acceptButton.layer.borderWidth = 2.0;
|
||||
|
|
|
@ -44,8 +44,8 @@ class LinkPreviewChatTableViewCell: BaseChatTableViewCell {
|
|||
}
|
||||
}
|
||||
|
||||
func set(linkPreview item: ChatLinkPreview) {
|
||||
super.set(item: item);
|
||||
func set(linkPreview item: ChatLinkPreview, indexPath: IndexPath) {
|
||||
super.set(item: item, indexPath: indexPath)
|
||||
if #available(iOS 13.0, *) {
|
||||
var metadata = MetadataCache.instance.metadata(for: "\(item.id)");
|
||||
var isNew = false;
|
||||
|
|
|
@ -106,11 +106,5 @@
|
|||
/* Class = "UILabel"; text = "Add to contact list"; ObjectID = "zrb-Yr-XQO"; */
|
||||
"zrb-Yr-XQO.text" = "Add to contact list";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "fa9-4g-iNW"; */
|
||||
"fa9-4g-iNW.normalTitle" = "";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "k9G-H8-3Hb"; */
|
||||
"k9G-H8-3Hb.normalTitle" = "";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "kNl-ad-SgK"; */
|
||||
"kNl-ad-SgK.normalTitle" = "";
|
||||
|
|
|
@ -106,11 +106,5 @@
|
|||
/* Class = "UILabel"; text = "Add to contact list"; ObjectID = "zrb-Yr-XQO"; */
|
||||
"zrb-Yr-XQO.text" = "Add to contact list";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "fa9-4g-iNW"; */
|
||||
"fa9-4g-iNW.normalTitle" = "";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "k9G-H8-3Hb"; */
|
||||
"k9G-H8-3Hb.normalTitle" = "";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "kNl-ad-SgK"; */
|
||||
"kNl-ad-SgK.normalTitle" = "";
|
||||
|
|
|
@ -106,11 +106,5 @@
|
|||
/* Class = "UILabel"; text = "Add to contact list"; ObjectID = "zrb-Yr-XQO"; */
|
||||
"zrb-Yr-XQO.text" = "Add to contact list";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "fa9-4g-iNW"; */
|
||||
"fa9-4g-iNW.normalTitle" = "";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "k9G-H8-3Hb"; */
|
||||
"k9G-H8-3Hb.normalTitle" = "";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "kNl-ad-SgK"; */
|
||||
"kNl-ad-SgK.normalTitle" = "";
|
||||
|
|
|
@ -106,11 +106,5 @@
|
|||
/* Class = "UILabel"; text = "Add to contact list"; ObjectID = "zrb-Yr-XQO"; */
|
||||
"zrb-Yr-XQO.text" = "Add to contact list";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "fa9-4g-iNW"; */
|
||||
"fa9-4g-iNW.normalTitle" = "";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "k9G-H8-3Hb"; */
|
||||
"k9G-H8-3Hb.normalTitle" = "";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "kNl-ad-SgK"; */
|
||||
"kNl-ad-SgK.normalTitle" = "";
|
||||
|
|
|
@ -106,11 +106,5 @@
|
|||
/* Class = "UILabel"; text = "Add to contact list"; ObjectID = "zrb-Yr-XQO"; */
|
||||
"zrb-Yr-XQO.text" = "Add to contact list";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "fa9-4g-iNW"; */
|
||||
"fa9-4g-iNW.normalTitle" = "";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "k9G-H8-3Hb"; */
|
||||
"k9G-H8-3Hb.normalTitle" = "";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "kNl-ad-SgK"; */
|
||||
"kNl-ad-SgK.normalTitle" = "";
|
||||
|
|
|
@ -22,8 +22,14 @@
|
|||
import UIKit
|
||||
import TigaseSwift
|
||||
import TigaseSwiftOMEMO
|
||||
import AVKit
|
||||
|
||||
class MucChatViewController: BaseChatViewControllerWithDataSourceAndContextMenuAndToolbar {
|
||||
|
||||
var cellAudioPlayer: AVAudioPlayer?
|
||||
var cellAudioTimer: Foundation.Timer?
|
||||
var cellSliderTimer: Foundation.Timer?
|
||||
var cellAudioPlayButton: UIButton?
|
||||
|
||||
static let MENTION_OCCUPANT = Notification.Name("groupchatMentionOccupant");
|
||||
|
||||
|
@ -172,8 +178,8 @@ class MucChatViewController: BaseChatViewControllerWithDataSourceAndContextMenuA
|
|||
} else {
|
||||
cell.nicknameView?.text = item.state.direction == .incoming ? "· " + sender : ""
|
||||
}
|
||||
|
||||
cell.set(message: item, maxMessageWidth: self.view.frame.width * 0.60)
|
||||
cell.cellDelegate = self
|
||||
cell.set(message: item, maxMessageWidth: self.view.frame.width * 0.60, indexPath: indexPath)
|
||||
cell.bubbleImageView.isHidden = false
|
||||
return cell;
|
||||
}
|
||||
|
@ -208,7 +214,8 @@ class MucChatViewController: BaseChatViewControllerWithDataSourceAndContextMenuA
|
|||
cell.nicknameView?.text = item.state.direction == .incoming ? "· " + sender : ""
|
||||
}
|
||||
|
||||
cell.set(attachment: item, maxImageWidth: self.view.frame.width * 0.60)
|
||||
cell.cellDelegate = self
|
||||
cell.set(attachment: item, maxImageWidth: self.view.frame.width * 0.60, indexPath: indexPath)
|
||||
cell.setNeedsUpdateConstraints();
|
||||
cell.updateConstraintsIfNeeded();
|
||||
cell.bubbleImageView.isHidden = false
|
||||
|
@ -217,7 +224,7 @@ class MucChatViewController: BaseChatViewControllerWithDataSourceAndContextMenuA
|
|||
let id = "ChatTableViewLinkPreviewCell";
|
||||
let cell: LinkPreviewChatTableViewCell = tableView.dequeueReusableCell(withIdentifier: id, for: indexPath) as! LinkPreviewChatTableViewCell;
|
||||
cell.contentView.transform = dataSource.inverted ? CGAffineTransform(a: 1, b: 0, c: 0, d: -1, tx: 0, ty: 0) : CGAffineTransform.identity;
|
||||
cell.set(linkPreview: item);
|
||||
cell.set(linkPreview: item, indexPath: indexPath)
|
||||
return cell;
|
||||
case let item as SystemMessage:
|
||||
let cell: ChatTableViewSystemCell = tableView.dequeueReusableCell(withIdentifier: "ChatTableViewSystemCell", for: indexPath) as! ChatTableViewSystemCell;
|
||||
|
@ -253,7 +260,7 @@ class MucChatViewController: BaseChatViewControllerWithDataSourceAndContextMenuA
|
|||
} else {
|
||||
cell.nicknameView?.text = sender;
|
||||
}
|
||||
cell.set(invitation: item);
|
||||
cell.set(invitation: item, indexPath: indexPath)
|
||||
return cell;
|
||||
default:
|
||||
return tableView.dequeueReusableCell(withIdentifier: "ChatTableViewMessageCell", for: indexPath);
|
||||
|
@ -560,3 +567,29 @@ class MucTitleView: UIView {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension MucChatViewController: CellDelegate {
|
||||
func didPlayAudio(audioPlayer: AVAudioPlayer, audioTimer: Foundation.Timer, sliderTimer: Foundation.Timer, playButton: UIButton) {
|
||||
|
||||
self.cellAudioPlayer?.pause()
|
||||
self.cellAudioTimer?.invalidate()
|
||||
self.cellSliderTimer?.invalidate()
|
||||
if let button = self.cellAudioPlayButton { button.isSelected = false }
|
||||
|
||||
self.cellSliderTimer = sliderTimer
|
||||
self.cellAudioTimer = audioTimer
|
||||
self.cellAudioPlayer = audioPlayer
|
||||
self.cellAudioPlayButton = playButton
|
||||
}
|
||||
|
||||
func didStopAudio() {
|
||||
self.cellSliderTimer = nil
|
||||
self.cellAudioTimer = nil
|
||||
self.cellAudioPlayer = nil
|
||||
self.cellAudioPlayButton = nil
|
||||
}
|
||||
|
||||
func didTapResend(indexPath: IndexPath) {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -64,9 +64,6 @@ class RosterViewController: AbstractRosterViewController, UIGestureRecognizerDel
|
|||
}
|
||||
|
||||
private func setColors() {
|
||||
// navigationController?.navigationBar.barStyle = .black;
|
||||
// navigationController?.navigationBar.isTranslucent = true;
|
||||
//searchController.searchBar.barStyle = .black;
|
||||
self.view.backgroundColor = UIColor(named: "chatslistBackground")!;
|
||||
self.navigationController?.view.backgroundColor = UIColor(named: "chatslistBackground")!;
|
||||
if #available(iOS 13.0, *) {
|
||||
|
@ -75,12 +72,7 @@ class RosterViewController: AbstractRosterViewController, UIGestureRecognizerDel
|
|||
self.tableView.backgroundColor = UIColor.white;
|
||||
}
|
||||
searchController.searchBar.tintColor = UIColor(named: "tintColor")!;
|
||||
navigationController?.navigationBar.barTintColor = UIColor(named: "chatslistBackground");//?.withAlphaComponent(0.2);
|
||||
navigationController?.navigationBar.tintColor = UIColor(named: "tintColor")!;
|
||||
if #available(iOS 13.0, *) {
|
||||
// (navigationItem.titleView as? UISegmentedControl)?.selectedSegmentTintColor =
|
||||
} else {
|
||||
}
|
||||
navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.black]
|
||||
}
|
||||
|
||||
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
|
||||
|
|
|
@ -106,11 +106,5 @@
|
|||
/* Class = "UILabel"; text = "Add to contact list"; ObjectID = "zrb-Yr-XQO"; */
|
||||
"zrb-Yr-XQO.text" = "Add to contact list";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "fa9-4g-iNW"; */
|
||||
"fa9-4g-iNW.normalTitle" = "";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "k9G-H8-3Hb"; */
|
||||
"k9G-H8-3Hb.normalTitle" = "";
|
||||
|
||||
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "kNl-ad-SgK"; */
|
||||
"kNl-ad-SgK.normalTitle" = "";
|
||||
|
|
Loading…
Reference in a new issue