From 77a50d5774966497cbe549211d3af7c7a7e4bd0f Mon Sep 17 00:00:00 2001 From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> Date: Tue, 8 May 2018 17:47:31 -0400 Subject: [PATCH] refactor call view UI/UX Change-Id: I5dbb49de98ec9c2e69636d69d063ebc02a86c5a3 Reviewed-by: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com> --- src/CurrentCallVC.mm | 78 ++++-- src/utils.h | 29 ++- ui/Base.lproj/CurrentCall.xib | 454 +++++++++++++++++++--------------- 3 files changed, 338 insertions(+), 223 deletions(-) diff --git a/src/CurrentCallVC.mm b/src/CurrentCallVC.mm index 2d8f351f..dea1d5bb 100644 --- a/src/CurrentCallVC.mm +++ b/src/CurrentCallVC.mm @@ -76,6 +76,11 @@ @property (unsafe_unretained) IBOutlet NSTextField* timeSpentLabel; @property (unsafe_unretained) IBOutlet NSImageView* personPhoto; +@property (unsafe_unretained) IBOutlet NSImageView* outgoingPhoto; +@property (unsafe_unretained) IBOutlet NSTextField* outgoingPersonLabel; +@property (unsafe_unretained) IBOutlet NSTextField* outgoingStateLabel; +@property (unsafe_unretained) IBOutlet NSTextField* outgoingId; + // Call Controls @property (unsafe_unretained) IBOutlet NSView* controlsPanel; @@ -85,10 +90,10 @@ @property (unsafe_unretained) IBOutlet IconButton* pickUpButton; @property (unsafe_unretained) IBOutlet IconButton* muteAudioButton; @property (unsafe_unretained) IBOutlet IconButton* muteVideoButton; -@property (unsafe_unretained) IBOutlet IconButton* addContactButton; @property (unsafe_unretained) IBOutlet IconButton* transferButton; @property (unsafe_unretained) IBOutlet IconButton* addParticipantButton; @property (unsafe_unretained) IBOutlet IconButton* chatButton; +@property (unsafe_unretained) IBOutlet IconButton* qualityButton; @property (unsafe_unretained) IBOutlet NSView* advancedPanel; @property (unsafe_unretained) IBOutlet IconButton* advancedButton; @@ -129,7 +134,7 @@ recordOnOffButton, pickUpButton, chatButton, transferButton, addParticipantButton, timeSpentLabel, muteVideoButton, muteAudioButton, controlsPanel, advancedPanel, advancedButton, headerContainer, videoView, incomingDisplayName, incomingPersonPhoto, previewView, splitView, loadingIndicator, ringingPanel, joinPanel, - outgoingPanel; + outgoingPanel, outgoingPersonLabel, outgoingStateLabel, outgoingPhoto, outgoingId; @synthesize previewHolder; @synthesize videoHolder; @@ -171,10 +176,10 @@ videoHolder = [[RendererConnectionsHolder alloc] init]; [loadingIndicator setColor:[NSColor whiteColor]]; - [loadingIndicator setNumberOfLines:100]; - [loadingIndicator setWidthOfLine:2]; - [loadingIndicator setLengthOfLine:2]; - [loadingIndicator setInnerMargin:30]; + [loadingIndicator setNumberOfLines:200]; + [loadingIndicator setWidthOfLine:4]; + [loadingIndicator setLengthOfLine:4]; + [loadingIndicator setInnerMargin:59]; [self.videoView setCallDelegate:self]; CGColor* color = [[[NSColor blackColor] colorWithAlphaComponent:0.2] CGColor]; @@ -203,7 +208,7 @@ [timeSpentLabel setHidden:YES]; } --(void) updateCall:(BOOL) firstRun +-(void) updateCall { if (accountInfo_ == nil) return; @@ -216,8 +221,17 @@ auto currentCall = callModel->getCall(callUid_); NSLog(@"\n status %@ \n",@(lrc::api::call::to_string(currentCall.status).c_str())); auto convIt = getConversationFromUid(convUid_, *accountInfo_->conversationModel); - if (convIt != accountInfo_->conversationModel->allFilteredConversations().end()) - [personLabel setStringValue:bestNameForConversation(*convIt, *accountInfo_->conversationModel)]; + if (convIt != accountInfo_->conversationModel->allFilteredConversations().end()) { + NSString* bestName = bestNameForConversation(*convIt, *accountInfo_->conversationModel); + [personLabel setStringValue:bestName]; + [outgoingPersonLabel setStringValue:bestName]; + NSString* ringID = bestIDForConversation(*convIt, *accountInfo_->conversationModel); + if([bestName isEqualToString:ringID]) { + ringID = @""; + } + [outgoingId setStringValue:ringID]; + } + [timeSpentLabel setStringValue:@(callModel->getFormattedCallDuration(callUid_).c_str())]; if (refreshDurationTimer == nil) refreshDurationTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 @@ -226,11 +240,7 @@ userInfo:nil repeats:YES]; [stateLabel setStringValue:@(to_string(currentCall.status).c_str())]; - - if (firstRun) { - // QVariant photo = GlobalInstances::pixmapManipulator().callPhoto(currentCall, QSize(100,100), NO); - //[personPhoto setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(photo))]; - } + [outgoingStateLabel setStringValue:@(to_string(currentCall.status).c_str())]; // Default values for this views [loadingIndicator setHidden:YES]; @@ -245,9 +255,15 @@ case Status::SEARCHING: case Status::OUTGOING_REQUESTED: case Status::CONNECTING: + [headerContainer setHidden:YES]; + [outgoingPanel setHidden:NO]; + [outgoingPhoto setHidden:NO]; + [self setupContactInfo:outgoingPhoto]; [loadingIndicator setHidden:NO]; + [controlsPanel setHidden:YES]; break; case Status::INCOMING_RINGING: + [outgoingPhoto setHidden:YES]; [controlsPanel setHidden:YES]; [outgoingPanel setHidden:YES]; [self setupIncoming:callUid_]; @@ -255,15 +271,22 @@ case Status::OUTGOING_RINGING: [controlsPanel setHidden:YES]; [outgoingPanel setHidden:NO]; + [loadingIndicator setHidden:NO]; + [headerContainer setHidden:YES]; break; -// case Status::CONFERENCE: -// [self setupConference:currentCall]; -// break; + /*case Status::CONFERENCE: + [self setupConference:currentCall]; + break;*/ case Status::PAUSED: case Status::PEER_PAUSED: case Status::INACTIVE: case Status::IN_PROGRESS: + // change constraints (uncollapse avatar) + [self setupContactInfo:personPhoto]; [timeSpentLabel setHidden:NO]; + [outgoingPhoto setHidden:YES]; + [headerContainer setHidden:NO]; + break; case Status::CONNECTED: case Status::AUTO_ANSWERING: break; @@ -278,6 +301,17 @@ } +-(void) setupContactInfo:(NSImageView*)imageView +{ + auto* convModel = accountInfo_->conversationModel.get(); + auto it = getConversationFromUid(convUid_, *convModel); + if (it != convModel->allFilteredConversations().end()) { + auto& imgManip = reinterpret_cast<Interfaces::ImageManipulationDelegate&>(GlobalInstances::pixmapManipulator()); + QVariant photo = imgManip.conversationPhoto(*it, *accountInfo_, QSize(120, 120), NO); + [imageView setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(photo))]; + } +} + -(void) setupIncoming:(const std::string&) callId { if (accountInfo_ == nil) @@ -336,7 +370,7 @@ self.selectedCallChanged = QObject::connect(callModel, &lrc::api::NewCallModel::callStatusChanged, [self](const std::string callId) { - [self updateCall:NO]; + [self updateCall]; }); } @@ -531,6 +565,7 @@ [self.chatButton setHidden:YES]; [self.addParticipantButton setHidden:YES]; [self.transferButton setHidden:YES]; + [self.qualityButton setHidden:YES]; [self.chatButton setPressed:NO]; [self.mergeCallsButton setState:NSOffState]; @@ -539,7 +574,9 @@ [personLabel setStringValue:@""]; [timeSpentLabel setStringValue:@""]; [stateLabel setStringValue:@""]; - [self.addContactButton setHidden:YES]; + + [outgoingPersonLabel setStringValue:@""]; + [outgoingStateLabel setStringValue:@""]; [advancedButton setPressed:NO]; [advancedPanel setHidden:YES]; @@ -563,7 +600,7 @@ return; [loadingIndicator setAnimates:YES]; - [self updateCall:YES]; + [self updateCall]; /* monitor media for messaging text messaging */ QObject::disconnect(self.messageConnection); @@ -794,7 +831,6 @@ self.addToContactPopover = NULL; } - [self.addContactButton setPressed:NO]; [self.transferButton setPressed:NO]; [self.addParticipantButton setState:NSOffState]; } diff --git a/src/utils.h b/src/utils.h index 1c971a64..bf07d1a1 100755 --- a/src/utils.h +++ b/src/utils.h @@ -17,14 +17,22 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#import <map> + #import <Foundation/Foundation.h> #import "NSString+Extensions.h" + +// new lrc #import <api/conversation.h> #import <api/conversationmodel.h> #import <api/account.h> #import <api/contactmodel.h> #import <api/contact.h> -#import <map> + +// old lrc +#import <QSortFilterProxyModel> +#import <accountmodel.h> +#import <codecmodel.h> static inline NSString* bestIDForConversation(const lrc::api::conversation::Info& conv, const lrc::api::ConversationModel& model) { @@ -77,3 +85,22 @@ static inline lrc::api::ConversationModel::ConversationQueue::const_iterator get return uid == conv.uid; }); } + +static inline void +setVideoAutoQuality(bool autoQuality, std::string accountId) +{ + auto thisAccount = AccountModel::instance().getById(QByteArray::fromStdString(accountId)); + if (const auto& codecModel = thisAccount->codecModel()) { + const auto& videoCodecs = codecModel->videoCodecs(); + for (int i=0; i < videoCodecs->rowCount();i++) { + const auto& idx = videoCodecs->index(i,0); + + if (autoQuality) { + videoCodecs->setData(idx, "true", CodecModel::Role::AUTO_QUALITY_ENABLED); + } else { + videoCodecs->setData(idx, "false", CodecModel::Role::AUTO_QUALITY_ENABLED); + } + } + codecModel << CodecModel::EditAction::SAVE; + } +} diff --git a/ui/Base.lproj/CurrentCall.xib b/ui/Base.lproj/CurrentCall.xib index 5b9fd8fb..653b4d20 100644 --- a/ui/Base.lproj/CurrentCall.xib +++ b/ui/Base.lproj/CurrentCall.xib @@ -4,19 +4,18 @@ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13771"/> <capability name="box content view" minToolsVersion="7.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + <capability name="stacking Non-gravity area distributions on NSStackView" minToolsVersion="7.0" minSystemVersion="10.11"/> <capability name="system font weights other than Regular or Bold" minToolsVersion="7.0"/> </dependencies> <objects> <customObject id="-2" userLabel="File's Owner" customClass="CurrentCallVC"> <connections> - <outlet property="addContactButton" destination="Zss-6A-bSy" id="Px0-5v-NE7"/> - <outlet property="addParticipantButton" destination="kIZ-mf-moM" id="7jn-l5-umS"/> + <outlet property="addParticipantButton" destination="TIU-Vj-ODN" id="Aki-6Z-8OC"/> <outlet property="advancedButton" destination="VVL-A4-r7n" id="wc7-cJ-Z4N"/> - <outlet property="advancedPanel" destination="90B-Yc-WvN" id="C9e-hp-kC4"/> + <outlet property="advancedPanel" destination="sqy-ob-lGY" id="tHK-lA-p3G"/> <outlet property="chatButton" destination="fmp-x4-Pef" id="ARt-dr-TRo"/> <outlet property="chatVC" destination="LWe-df-dS6" id="SMR-T0-fYe"/> <outlet property="controlsPanel" destination="Eoi-B8-iL6" id="4xn-3b-SNn"/> - <outlet property="dialpadButton" destination="G0w-c3-9pJ" id="RY9-Tc-2US"/> <outlet property="hangUpButton" destination="Kjq-iM-NBL" id="Puz-4L-Okl"/> <outlet property="headerContainer" destination="d0X-cW-Xgz" id="7RM-kh-vCm"/> <outlet property="holdOnOffButton" destination="anb-Y8-JQi" id="HSl-pE-Kwg"/> @@ -27,17 +26,22 @@ <outlet property="mergeCallsButton" destination="9e8-ji-QId" id="sb6-n5-E7k"/> <outlet property="muteAudioButton" destination="tQl-cT-0Lb" id="qV4-Ef-UTx"/> <outlet property="muteVideoButton" destination="LVS-yZ-98V" id="qQs-zP-wQ4"/> + <outlet property="outgoingId" destination="yey-xg-Lzf" id="45Y-9Q-7Se"/> <outlet property="outgoingPanel" destination="se7-PJ-iwD" id="exA-Az-Blj"/> + <outlet property="outgoingPersonLabel" destination="nYS-zr-wbV" id="HoO-bD-XSy"/> + <outlet property="outgoingPhoto" destination="z3E-kv-Uwb" id="BLF-rf-EGC"/> + <outlet property="outgoingStateLabel" destination="Ff6-F4-zbn" id="RXJ-JL-cTf"/> <outlet property="personLabel" destination="bg3-hB-nE8" id="t6l-1B-JxI"/> <outlet property="personPhoto" destination="X5k-sy-WtA" id="aMI-eo-QqK"/> <outlet property="pickUpButton" destination="qgD-3D-nD5" id="mkD-IT-22E"/> <outlet property="previewView" destination="6y6-RH-qOp" id="1PY-sd-mh4"/> - <outlet property="recordOnOffButton" destination="oRa-pS-HN2" id="N7C-wn-0le"/> + <outlet property="qualityButton" destination="B4i-m9-3Vo" id="LWI-qi-q3f"/> + <outlet property="recordOnOffButton" destination="QYT-0n-4sw" id="LpC-8i-BGz"/> <outlet property="ringingPanel" destination="W4l-Be-bhM" id="aZ4-9D-wOd"/> <outlet property="splitView" destination="GIJ-gB-FZo" id="PM0-az-Q8X"/> <outlet property="stateLabel" destination="kFD-FB-vig" id="SSO-14-q2t"/> <outlet property="timeSpentLabel" destination="cIU-M7-xpN" id="9Rl-t3-gjY"/> - <outlet property="transferButton" destination="ChW-kg-Sja" id="v4D-c0-u6T"/> + <outlet property="transferButton" destination="aHZ-qL-mYf" id="9id-Nt-M7i"/> <outlet property="videoView" destination="2wf-Py-l6B" id="dEF-Gx-w6x"/> <outlet property="view" destination="Hz6-mo-xeY" id="VKn-lN-ijP"/> </connections> @@ -45,18 +49,18 @@ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/> <customView wantsLayer="YES" id="Hz6-mo-xeY"> - <rect key="frame" x="0.0" y="0.0" width="1118" height="509"/> + <rect key="frame" x="0.0" y="0.0" width="1118" height="481"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <subviews> <splitView wantsLayer="YES" dividerStyle="thin" vertical="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GIJ-gB-FZo"> - <rect key="frame" x="0.0" y="0.0" width="1118" height="509"/> + <rect key="frame" x="0.0" y="0.0" width="1118" height="481"/> <subviews> <customView wantsLayer="YES" id="2wf-Py-l6B" customClass="CallView"> - <rect key="frame" x="0.0" y="0.0" width="745" height="509"/> + <rect key="frame" x="0.0" y="0.0" width="745" height="481"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <subviews> <customView translatesAutoresizingMaskIntoConstraints="NO" id="d0X-cW-Xgz"> - <rect key="frame" x="0.0" y="438" width="745" height="71"/> + <rect key="frame" x="0.0" y="410" width="745" height="71"/> <subviews> <textField hidden="YES" horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cIU-M7-xpN"> <rect key="frame" x="623" y="23" width="104" height="24"/> @@ -91,34 +95,6 @@ </constraints> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="dK5-Oj-aua"/> </imageView> - <button hidden="YES" wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Zss-6A-bSy" userLabel="AddToContact" customClass="IconButton"> - <rect key="frame" x="167" y="7" width="30" height="30"/> - <constraints> - <constraint firstAttribute="height" constant="30" id="9GG-e3-JDT"/> - <constraint firstAttribute="width" constant="30" id="DdM-FT-7kb"/> - </constraints> - <backgroundFilters> - <ciFilter name="CIColorMonochrome"> - <configuration> - <ciColor key="inputColor" red="1" green="0.53908979892730713" blue="0.15185309946537018" alpha="1"/> - <null key="inputImage"/> - <real key="inputIntensity" value="1"/> - </configuration> - </ciFilter> - </backgroundFilters> - <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_person_add" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyUpOrDown" id="3Ea-x8-Ndg"> - <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> - <font key="font" metaFont="system"/> - </buttonCell> - <userDefinedRuntimeAttributes> - <userDefinedRuntimeAttribute type="number" keyPath="imageInsets"> - <integer key="value" value="6"/> - </userDefinedRuntimeAttribute> - </userDefinedRuntimeAttributes> - <connections> - <action selector="addToContact:" target="-2" id="OI1-7U-4T7"/> - </connections> - </button> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kFD-FB-vig"> <rect key="frame" x="76" y="39" width="36" height="17"/> <constraints> @@ -132,8 +108,6 @@ </textField> </subviews> <constraints> - <constraint firstItem="Zss-6A-bSy" firstAttribute="leading" secondItem="bg3-hB-nE8" secondAttribute="trailing" constant="8" id="6V0-Gq-SMw"/> - <constraint firstItem="Zss-6A-bSy" firstAttribute="centerY" secondItem="bg3-hB-nE8" secondAttribute="centerY" id="CSK-r9-Zt7"/> <constraint firstItem="kFD-FB-vig" firstAttribute="leading" secondItem="bg3-hB-nE8" secondAttribute="leading" id="LXG-QI-oPf"/> <constraint firstItem="cIU-M7-xpN" firstAttribute="top" secondItem="d0X-cW-Xgz" secondAttribute="top" constant="24" id="Qc7-qp-qSV"/> <constraint firstAttribute="trailing" secondItem="cIU-M7-xpN" secondAttribute="trailing" constant="20" id="RXf-xZ-4f9"/> @@ -151,6 +125,150 @@ <customView translatesAutoresizingMaskIntoConstraints="NO" id="Eoi-B8-iL6" userLabel="Controls"> <rect key="frame" x="20" y="20" width="522" height="120"/> <subviews> + <stackView hidden="YES" distribution="fill" orientation="horizontal" alignment="top" spacing="10" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sqy-ob-lGY" userLabel="Advanced Panel"> + <rect key="frame" x="120" y="63" width="240" height="50"/> + <subviews> + <button toolTip="Transfer" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="B4i-m9-3Vo" userLabel="Quality Button" customClass="IconButton"> + <rect key="frame" x="0.0" y="10" width="40" height="40"/> + <constraints> + <constraint firstAttribute="height" constant="40" id="l6i-kt-7Tb"/> + <constraint firstAttribute="width" constant="40" id="pm6-ew-zui"/> + </constraints> + <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_quality" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="M8f-I2-Z0d"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/> + </buttonCell> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="number" keyPath="imageInsets"> + <integer key="value" value="8"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="highlightColor"> + <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="bgColor"> + <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="toggleQualityView:" target="-2" id="Ny6-AQ-jmS"/> + </connections> + </button> + <button toolTip="Add participant" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="TIU-Vj-ODN" userLabel="Add Participant Button" customClass="IconButton"> + <rect key="frame" x="50" y="10" width="40" height="40"/> + <constraints> + <constraint firstAttribute="width" constant="40" id="NH7-wn-OEA"/> + <constraint firstAttribute="height" constant="40" id="P40-Nc-aDZ"/> + </constraints> + <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_add_participant" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="fok-z6-iXg"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/> + </buttonCell> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="color" keyPath="highlightColor"> + <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="bgColor"> + <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="toggleAddParticipantView:" target="-2" id="tgk-Sv-aYr"/> + </connections> + </button> + <button toolTip="Record" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="QYT-0n-4sw" userLabel="Record On Off Button" customClass="IconButton"> + <rect key="frame" x="100" y="10" width="40" height="40"/> + <constraints> + <constraint firstAttribute="height" constant="40" id="I7O-NK-0Cq"/> + <constraint firstAttribute="width" constant="40" id="Jgi-MM-qiZ"/> + </constraints> + <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_record" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="LWc-BQ-h4g"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/> + </buttonCell> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="number" keyPath="imageInsets"> + <integer key="value" value="8"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="highlightColor"> + <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="bgColor"> + <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="toggleRecording:" target="-2" id="zVh-ci-nzl"/> + </connections> + </button> + <button toolTip="Record" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Szd-ad-xxI" userLabel="Dialpad Button" customClass="IconButton"> + <rect key="frame" x="150" y="10" width="40" height="40"/> + <constraints> + <constraint firstAttribute="width" constant="40" id="QET-Bd-GvH"/> + <constraint firstAttribute="height" constant="40" id="zon-xu-MYY"/> + </constraints> + <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_dialpad" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="Dhn-Uq-hcz"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/> + </buttonCell> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="number" keyPath="imageInsets"> + <integer key="value" value="8"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="highlightColor"> + <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="bgColor"> + <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="showDialpad:" target="-2" id="n75-kN-ISS"/> + </connections> + </button> + <button toolTip="Transfer" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aHZ-qL-mYf" userLabel="Transfer Button" customClass="IconButton"> + <rect key="frame" x="200" y="10" width="40" height="40"/> + <constraints> + <constraint firstAttribute="width" constant="40" id="P3U-ub-4fz"/> + <constraint firstAttribute="height" constant="40" id="ppO-DW-vNN"/> + </constraints> + <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_transfer" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="ZLa-4T-TX4"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/> + </buttonCell> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="number" keyPath="imageInsets"> + <integer key="value" value="8"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="highlightColor"> + <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="bgColor"> + <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="toggleTransferView:" target="-2" id="UzS-ti-Tf6"/> + </connections> + </button> + </subviews> + <constraints> + <constraint firstAttribute="height" constant="50" id="lBZ-jM-VKt"/> + </constraints> + <visibilityPriorities> + <integer value="1000"/> + <integer value="1000"/> + <integer value="1000"/> + <integer value="1000"/> + <integer value="1000"/> + </visibilityPriorities> + <customSpacing> + <real value="3.4028234663852886e+38"/> + <real value="3.4028234663852886e+38"/> + <real value="3.4028234663852886e+38"/> + <real value="3.4028234663852886e+38"/> + <real value="3.4028234663852886e+38"/> + </customSpacing> + </stackView> <button toolTip="Mute Audio" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tQl-cT-0Lb" userLabel="Mute Audio" customClass="IconButton"> <rect key="frame" x="120" y="20" width="40" height="40"/> <constraints> @@ -174,14 +292,14 @@ </connections> </button> <button toolTip="Record" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VVL-A4-r7n" customClass="IconButton"> - <rect key="frame" x="270" y="20" width="40" height="40"/> + <rect key="frame" x="220" y="20" width="40" height="40"/> <constraints> <constraint firstAttribute="height" constant="40" id="WJY-rX-kLD"/> <constraint firstAttribute="width" constant="40" id="jcJ-mm-2kQ"/> </constraints> <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_more" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="7gG-ds-iaA"> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> - <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/> + <font key="font" metaFont="system"/> </buttonCell> <userDefinedRuntimeAttributes> <userDefinedRuntimeAttribute type="color" keyPath="highlightColor"> @@ -289,132 +407,18 @@ <action selector="muteVideo:" target="-2" id="a6W-aB-zWX"/> </connections> </button> - <button toolTip="Add participant" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="kIZ-mf-moM" customClass="IconButton"> - <rect key="frame" x="220" y="20" width="40" height="40"/> - <constraints> - <constraint firstAttribute="height" constant="40" id="7qu-cd-B7J"/> - <constraint firstAttribute="width" constant="40" id="U4p-eV-iCZ"/> - </constraints> - <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_add_participant" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="BOx-wf-CM5"> - <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> - <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/> - </buttonCell> - <userDefinedRuntimeAttributes> - <userDefinedRuntimeAttribute type="color" keyPath="highlightColor"> - <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/> - </userDefinedRuntimeAttribute> - <userDefinedRuntimeAttribute type="color" keyPath="bgColor"> - <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/> - </userDefinedRuntimeAttribute> - </userDefinedRuntimeAttributes> - <connections> - <action selector="toggleAddParticipantView:" target="-2" id="v6X-2r-6im"/> - </connections> - </button> - <customView hidden="YES" translatesAutoresizingMaskIntoConstraints="NO" id="90B-Yc-WvN"> - <rect key="frame" x="200" y="67" width="180" height="50"/> - <subviews> - <button toolTip="Record" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G0w-c3-9pJ" customClass="IconButton"> - <rect key="frame" x="70" y="5" width="40" height="40"/> - <constraints> - <constraint firstAttribute="width" constant="40" id="XJ8-jj-wG5"/> - <constraint firstAttribute="height" constant="40" id="jvT-Ng-6gJ"/> - </constraints> - <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_dialpad" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="iED-Le-DAL"> - <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> - <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/> - </buttonCell> - <userDefinedRuntimeAttributes> - <userDefinedRuntimeAttribute type="number" keyPath="imageInsets"> - <integer key="value" value="8"/> - </userDefinedRuntimeAttribute> - <userDefinedRuntimeAttribute type="color" keyPath="highlightColor"> - <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/> - </userDefinedRuntimeAttribute> - <userDefinedRuntimeAttribute type="color" keyPath="bgColor"> - <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/> - </userDefinedRuntimeAttribute> - </userDefinedRuntimeAttributes> - <connections> - <action selector="showDialpad:" target="-2" id="30d-hA-dri"/> - </connections> - </button> - <button toolTip="Transfer" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ChW-kg-Sja" customClass="IconButton"> - <rect key="frame" x="120" y="5" width="40" height="40"/> - <constraints> - <constraint firstAttribute="height" constant="40" id="9zo-pq-mgF"/> - <constraint firstAttribute="width" constant="40" id="EVF-UM-brL"/> - </constraints> - <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_transfer" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="FOs-Wt-c2R"> - <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> - <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/> - </buttonCell> - <userDefinedRuntimeAttributes> - <userDefinedRuntimeAttribute type="number" keyPath="imageInsets"> - <integer key="value" value="8"/> - </userDefinedRuntimeAttribute> - <userDefinedRuntimeAttribute type="color" keyPath="highlightColor"> - <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/> - </userDefinedRuntimeAttribute> - <userDefinedRuntimeAttribute type="color" keyPath="bgColor"> - <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/> - </userDefinedRuntimeAttribute> - </userDefinedRuntimeAttributes> - <connections> - <action selector="toggleTransferView:" target="-2" id="Gxt-lS-qZs"/> - </connections> - </button> - <button toolTip="Record" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oRa-pS-HN2" customClass="IconButton"> - <rect key="frame" x="20" y="5" width="40" height="40"/> - <constraints> - <constraint firstAttribute="width" constant="40" id="5Yb-Ir-aNP"/> - <constraint firstAttribute="height" constant="40" id="f6U-Sc-LhF"/> - </constraints> - <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_record" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="rhz-4Z-avV"> - <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> - <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/> - </buttonCell> - <userDefinedRuntimeAttributes> - <userDefinedRuntimeAttribute type="number" keyPath="imageInsets"> - <integer key="value" value="8"/> - </userDefinedRuntimeAttribute> - <userDefinedRuntimeAttribute type="color" keyPath="highlightColor"> - <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/> - </userDefinedRuntimeAttribute> - <userDefinedRuntimeAttribute type="color" keyPath="bgColor"> - <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/> - </userDefinedRuntimeAttribute> - </userDefinedRuntimeAttributes> - <connections> - <action selector="toggleRecording:" target="-2" id="gAc-ZJ-9PN"/> - </connections> - </button> - </subviews> - <constraints> - <constraint firstAttribute="width" constant="180" id="Ayt-Of-VvM"/> - <constraint firstItem="G0w-c3-9pJ" firstAttribute="centerY" secondItem="90B-Yc-WvN" secondAttribute="centerY" id="HON-Cf-ocr"/> - <constraint firstItem="G0w-c3-9pJ" firstAttribute="centerX" secondItem="90B-Yc-WvN" secondAttribute="centerX" id="Pm2-Oe-NXk"/> - <constraint firstItem="ChW-kg-Sja" firstAttribute="centerY" secondItem="90B-Yc-WvN" secondAttribute="centerY" id="RvO-GS-F2C"/> - <constraint firstItem="oRa-pS-HN2" firstAttribute="leading" secondItem="90B-Yc-WvN" secondAttribute="leading" constant="20" id="eLs-tp-tUO"/> - <constraint firstItem="oRa-pS-HN2" firstAttribute="centerY" secondItem="90B-Yc-WvN" secondAttribute="centerY" id="gJE-Rv-ZAh"/> - <constraint firstAttribute="trailing" secondItem="ChW-kg-Sja" secondAttribute="trailing" constant="20" id="qrc-nL-ORI"/> - <constraint firstAttribute="height" constant="50" id="vLy-fg-Ts0"/> - </constraints> - </customView> </subviews> <constraints> + <constraint firstItem="sqy-ob-lGY" firstAttribute="centerX" secondItem="VVL-A4-r7n" secondAttribute="centerX" id="18o-Wc-tsO"/> <constraint firstItem="tQl-cT-0Lb" firstAttribute="leading" secondItem="anb-Y8-JQi" secondAttribute="trailing" constant="10" id="7MF-DQ-Nb8"/> - <constraint firstItem="VVL-A4-r7n" firstAttribute="centerY" secondItem="kIZ-mf-moM" secondAttribute="centerY" id="87p-Bt-9uI"/> <constraint firstItem="LVS-yZ-98V" firstAttribute="centerY" secondItem="tQl-cT-0Lb" secondAttribute="centerY" id="AYj-Vt-7NL"/> - <constraint firstItem="VVL-A4-r7n" firstAttribute="leading" secondItem="kIZ-mf-moM" secondAttribute="trailing" constant="10" id="BKx-sU-jgs"/> - <constraint firstItem="VVL-A4-r7n" firstAttribute="centerX" secondItem="90B-Yc-WvN" secondAttribute="centerX" id="FRl-cK-7on"/> + <constraint firstItem="VVL-A4-r7n" firstAttribute="leading" secondItem="LVS-yZ-98V" secondAttribute="trailing" constant="10" id="ERi-S1-WQC"/> <constraint firstAttribute="trailing" secondItem="fmp-x4-Pef" secondAttribute="trailing" constant="20" id="Mih-z5-5DI"/> <constraint firstAttribute="bottom" secondItem="Kjq-iM-NBL" secondAttribute="bottom" constant="20" id="OcY-fg-QB8"/> <constraint firstItem="Kjq-iM-NBL" firstAttribute="leading" secondItem="Eoi-B8-iL6" secondAttribute="leading" constant="20" id="Rwo-8h-nvA"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="385" id="TSJ-9A-brf"/> - <constraint firstItem="90B-Yc-WvN" firstAttribute="top" secondItem="Eoi-B8-iL6" secondAttribute="top" constant="3" id="UeR-c9-imd"/> - <constraint firstItem="kIZ-mf-moM" firstAttribute="centerY" secondItem="LVS-yZ-98V" secondAttribute="centerY" id="cdg-7O-ise"/> - <constraint firstItem="kIZ-mf-moM" firstAttribute="leading" secondItem="LVS-yZ-98V" secondAttribute="trailing" constant="10" id="fcF-jl-uYt"/> + <constraint firstItem="sqy-ob-lGY" firstAttribute="top" secondItem="Eoi-B8-iL6" secondAttribute="top" constant="7" id="X7H-uf-xCa"/> + <constraint firstItem="VVL-A4-r7n" firstAttribute="baseline" secondItem="LVS-yZ-98V" secondAttribute="baseline" id="lVY-Uc-rzo"/> <constraint firstAttribute="bottom" secondItem="fmp-x4-Pef" secondAttribute="bottom" constant="20" id="pKU-g7-5wu"/> <constraint firstItem="tQl-cT-0Lb" firstAttribute="centerY" secondItem="anb-Y8-JQi" secondAttribute="centerY" id="rZo-XU-yeF"/> <constraint firstItem="anb-Y8-JQi" firstAttribute="leading" secondItem="Kjq-iM-NBL" secondAttribute="trailing" constant="10" id="t5V-qu-Ssk"/> @@ -423,13 +427,6 @@ <constraint firstItem="anb-Y8-JQi" firstAttribute="centerY" secondItem="Kjq-iM-NBL" secondAttribute="centerY" id="zA4-c4-mEX"/> </constraints> </customView> - <customView translatesAutoresizingMaskIntoConstraints="NO" id="JwW-2h-DyZ" customClass="ITProgressIndicator"> - <rect key="frame" x="323" y="204" width="100" height="100"/> - <constraints> - <constraint firstAttribute="height" constant="100" id="gpl-re-hHE"/> - <constraint firstAttribute="width" constant="100" id="nmo-HF-lhL"/> - </constraints> - </customView> <customView translatesAutoresizingMaskIntoConstraints="NO" id="6y6-RH-qOp" userLabel="Preview"> <rect key="frame" x="550" y="20" width="175" height="120"/> <constraints> @@ -438,7 +435,7 @@ </constraints> </customView> <customView hidden="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MNG-eU-B2N"> - <rect key="frame" x="505" y="343" width="150" height="60"/> + <rect key="frame" x="505" y="315" width="150" height="60"/> <subviews> <button toolTip="Hang up" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mc3-HV-hek" userLabel="Hang Up" customClass="IconButton"> <rect key="frame" x="20" y="10" width="40" height="40"/> @@ -491,19 +488,56 @@ <constraint firstItem="9e8-ji-QId" firstAttribute="centerY" secondItem="MNG-eU-B2N" secondAttribute="centerY" id="nmt-le-y0u"/> </constraints> </customView> - <customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="se7-PJ-iwD"> - <rect key="frame" x="545" y="223" width="110" height="112"/> + <customView translatesAutoresizingMaskIntoConstraints="NO" id="se7-PJ-iwD"> + <rect key="frame" x="0.0" y="0.0" width="745" height="481"/> <subviews> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Aav-3e-AnU"> - <rect key="frame" x="32" y="7" width="46" height="17"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Cancel" id="TlL-HO-5Ey"> - <font key="font" metaFont="system"/> - <color key="textColor" name="windowFrameColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nYS-zr-wbV" userLabel="Outgoing Person Label"> + <rect key="frame" x="314" y="230" width="118" height="22"/> + <constraints> + <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="81" id="GJV-Oh-m0p"/> + </constraints> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" placeholderString="Person name" id="1hb-v4-YlI"> + <font key="font" metaFont="systemSemibold" size="18"/> + <color key="textColor" name="highlightColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <customView translatesAutoresizingMaskIntoConstraints="NO" id="JwW-2h-DyZ" customClass="ITProgressIndicator"> + <rect key="frame" x="309" y="264" width="128" height="128"/> + <constraints> + <constraint firstAttribute="height" constant="128" id="gpl-re-hHE"/> + <constraint firstAttribute="width" constant="128" id="nmo-HF-lhL"/> + </constraints> + </customView> + <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="yey-xg-Lzf" userLabel="Outgoing Id"> + <rect key="frame" x="340" y="207" width="65" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" alignment="center" title="person Id" id="27H-gG-Hvo"> + <font key="font" metaFont="systemLight" size="13"/> + <color key="textColor" red="0.81568627450980391" green="0.81568627450980391" blue="0.81568627450980391" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Ff6-F4-zbn" userLabel="Outgoing State"> + <rect key="frame" x="352" y="165" width="42" height="18"/> + <constraints> + <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="29" id="tka-qK-aZu"/> + </constraints> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" placeholderString="State" id="dPt-JY-yxV"> + <font key="font" metaFont="systemLight" size="14"/> + <color key="textColor" name="highlightColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="highlightColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> - <button toolTip="Hang up" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="D0G-XT-lhI" userLabel="Hang Up" customClass="IconButton"> - <rect key="frame" x="27" y="32" width="56" height="56"/> + <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="z3E-kv-Uwb" userLabel="Outgoing Avatar View"> + <rect key="frame" x="313" y="268" width="120" height="120"/> + <constraints> + <constraint firstAttribute="width" constant="120" id="dRT-ka-car"/> + <constraint firstAttribute="height" constant="120" id="fVW-Pp-ecn"/> + </constraints> + <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="ic_action_accept" id="iIZ-0v-tM8"/> + </imageView> + <button toolTip="Hang up" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="D0G-XT-lhI" userLabel="Outgoing Hang Up" customClass="IconButton"> + <rect key="frame" x="345" y="85" width="56" height="56"/> <constraints> <constraint firstAttribute="height" constant="56" id="FTZ-JO-UdI"/> <constraint firstAttribute="width" constant="56" id="i20-DN-iit"/> @@ -526,16 +560,22 @@ </button> </subviews> <constraints> - <constraint firstItem="D0G-XT-lhI" firstAttribute="centerX" secondItem="se7-PJ-iwD" secondAttribute="centerX" id="Ety-3T-k5N"/> - <constraint firstItem="D0G-XT-lhI" firstAttribute="top" secondItem="se7-PJ-iwD" secondAttribute="top" constant="24" id="K7F-Z0-GFu"/> - <constraint firstItem="Aav-3e-AnU" firstAttribute="top" secondItem="D0G-XT-lhI" secondAttribute="bottom" constant="8" id="Kz0-3c-wmP"/> - <constraint firstItem="Aav-3e-AnU" firstAttribute="centerX" secondItem="se7-PJ-iwD" secondAttribute="centerX" id="Teh-iF-VrN"/> - <constraint firstAttribute="width" constant="110" id="eyg-Eq-bcF"/> - <constraint firstAttribute="height" constant="112" id="k2h-Lt-lIw"/> + <constraint firstItem="yey-xg-Lzf" firstAttribute="centerX" secondItem="se7-PJ-iwD" secondAttribute="centerX" id="1RS-qb-2t0"/> + <constraint firstItem="D0G-XT-lhI" firstAttribute="centerX" secondItem="se7-PJ-iwD" secondAttribute="centerX" id="1Zb-Uz-OU2"/> + <constraint firstItem="nYS-zr-wbV" firstAttribute="centerX" secondItem="se7-PJ-iwD" secondAttribute="centerX" id="CuL-51-dnZ"/> + <constraint firstItem="D0G-XT-lhI" firstAttribute="top" secondItem="Ff6-F4-zbn" secondAttribute="bottom" constant="24" id="GBi-RB-zZW"/> + <constraint firstItem="z3E-kv-Uwb" firstAttribute="centerX" secondItem="se7-PJ-iwD" secondAttribute="centerX" id="Gxu-Q0-raS"/> + <constraint firstItem="JwW-2h-DyZ" firstAttribute="centerY" secondItem="z3E-kv-Uwb" secondAttribute="centerY" id="QjO-I7-661"/> + <constraint firstItem="yey-xg-Lzf" firstAttribute="top" secondItem="nYS-zr-wbV" secondAttribute="bottom" constant="6" id="UnT-p9-fnM"/> + <constraint firstItem="nYS-zr-wbV" firstAttribute="top" secondItem="z3E-kv-Uwb" secondAttribute="bottom" constant="16" id="dgj-He-chv"/> + <constraint firstItem="Ff6-F4-zbn" firstAttribute="centerX" secondItem="se7-PJ-iwD" secondAttribute="centerX" id="g3v-fZ-Zsr"/> + <constraint firstItem="JwW-2h-DyZ" firstAttribute="centerX" secondItem="z3E-kv-Uwb" secondAttribute="centerX" id="n5g-r3-BAl"/> + <constraint firstItem="Ff6-F4-zbn" firstAttribute="top" secondItem="yey-xg-Lzf" secondAttribute="bottom" constant="24" id="wiB-xE-I5y"/> + <constraint firstItem="nYS-zr-wbV" firstAttribute="centerY" secondItem="se7-PJ-iwD" secondAttribute="centerY" id="yzX-Iv-Afb"/> </constraints> </customView> <customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="W4l-Be-bhM"> - <rect key="frame" x="135" y="148" width="404" height="291"/> + <rect key="frame" x="135" y="120" width="404" height="291"/> <subviews> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9Cd-Vs-wtu"> <rect key="frame" x="234" y="18" width="43" height="17"/> @@ -649,7 +689,6 @@ </customView> </subviews> <constraints> - <constraint firstAttribute="centerX" secondItem="JwW-2h-DyZ" secondAttribute="centerX" id="4eh-az-oI5"/> <constraint firstItem="6y6-RH-qOp" firstAttribute="leading" secondItem="Eoi-B8-iL6" secondAttribute="trailing" constant="8" id="7wV-uh-Xb7"/> <constraint firstAttribute="bottom" secondItem="Eoi-B8-iL6" secondAttribute="bottom" constant="20" id="9j2-HZ-hNX"/> <constraint firstItem="MNG-eU-B2N" firstAttribute="centerX" secondItem="2wf-Py-l6B" secondAttribute="centerX" id="DbU-cn-glx"/> @@ -658,28 +697,29 @@ <constraint firstAttribute="bottom" secondItem="6y6-RH-qOp" secondAttribute="bottom" constant="20" id="HOt-7O-FU2"/> <constraint firstAttribute="trailing" secondItem="6y6-RH-qOp" secondAttribute="trailing" constant="20" id="KTx-SN-RUg"/> <constraint firstItem="d0X-cW-Xgz" firstAttribute="top" secondItem="2wf-Py-l6B" secondAttribute="top" id="MKB-zm-C75"/> - <constraint firstAttribute="centerY" secondItem="JwW-2h-DyZ" secondAttribute="centerY" id="Na1-o4-4Ds"/> + <constraint firstItem="se7-PJ-iwD" firstAttribute="centerY" secondItem="2wf-Py-l6B" secondAttribute="centerY" id="Mne-RM-mJr"/> + <constraint firstItem="se7-PJ-iwD" firstAttribute="width" secondItem="2wf-Py-l6B" secondAttribute="width" id="O1b-nk-1Y1"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="575" id="aB1-HF-No8"/> <constraint firstItem="d0X-cW-Xgz" firstAttribute="leading" secondItem="2wf-Py-l6B" secondAttribute="leading" id="efy-70-qsJ"/> <constraint firstItem="se7-PJ-iwD" firstAttribute="centerX" secondItem="2wf-Py-l6B" secondAttribute="centerX" id="hts-ke-nkj"/> <constraint firstItem="Eoi-B8-iL6" firstAttribute="top" secondItem="MNG-eU-B2N" secondAttribute="bottom" constant="8" id="jm6-9s-ojD"/> <constraint firstItem="W4l-Be-bhM" firstAttribute="centerX" secondItem="2wf-Py-l6B" secondAttribute="centerX" id="lvd-la-SAZ"/> + <constraint firstItem="se7-PJ-iwD" firstAttribute="height" secondItem="2wf-Py-l6B" secondAttribute="height" id="nkk-DO-Hod"/> <constraint firstItem="Eoi-B8-iL6" firstAttribute="leading" secondItem="2wf-Py-l6B" secondAttribute="leading" constant="20" id="sHw-xg-QAo"/> - <constraint firstAttribute="bottom" secondItem="se7-PJ-iwD" secondAttribute="bottom" constant="20" id="tXh-Su-z4a"/> </constraints> </customView> <customView wantsLayer="YES" id="TdD-3L-553"> - <rect key="frame" x="746" y="0.0" width="372" height="509"/> + <rect key="frame" x="746" y="0.0" width="372" height="481"/> <autoresizingMask key="autoresizingMask"/> <subviews> <scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="62" horizontalPageScroll="10" verticalLineScroll="62" verticalPageScroll="10" hasHorizontalScroller="NO" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" scrollerKnobStyle="dark" translatesAutoresizingMaskIntoConstraints="NO" id="o0i-7W-5fA"> - <rect key="frame" x="20" y="42" width="332" height="465"/> + <rect key="frame" x="20" y="42" width="332" height="437"/> <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="H2i-4W-Gvt"> - <rect key="frame" x="0.0" y="0.0" width="332" height="465"/> + <rect key="frame" x="0.0" y="0.0" width="332" height="437"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="none" autosaveColumns="NO" rowHeight="60" rowSizeStyle="automatic" viewBased="YES" id="ZOj-5b-rnp"> - <rect key="frame" x="0.0" y="0.0" width="332" height="448"/> + <rect key="frame" x="0.0" y="0.0" width="332" height="420"/> <autoresizingMask key="autoresizingMask"/> <size key="intercellSpacing" width="3" height="2"/> <color key="backgroundColor" white="1" alpha="0.0" colorSpace="deviceWhite"/> @@ -737,14 +777,19 @@ </constraints> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="AmG-9L-7JZ"/> </imageView> - <customView ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="wfP-VD-ALD" customClass="MessageBubbleView"> + <customView translatesAutoresizingMaskIntoConstraints="NO" id="wfP-VD-ALD" customClass="MessageBubbleView"> <rect key="frame" x="50" y="0.0" width="287" height="26"/> <subviews> - <customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PUG-NN-vrV" customClass="NSTextView"> + <customView translatesAutoresizingMaskIntoConstraints="NO" id="PUG-NN-vrV" customClass="NSTextView"> <rect key="frame" x="0.0" y="-25" width="287" height="48"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> </customView> </subviews> + <constraints> + <constraint firstItem="PUG-NN-vrV" firstAttribute="leading" secondItem="wfP-VD-ALD" secondAttribute="leading" id="1f0-zg-Hvm"/> + <constraint firstAttribute="trailing" secondItem="PUG-NN-vrV" secondAttribute="trailing" id="JSK-qe-xls"/> + <constraint firstAttribute="bottom" secondItem="PUG-NN-vrV" secondAttribute="bottom" constant="-25" id="lQm-Ue-mua"/> + <constraint firstItem="PUG-NN-vrV" firstAttribute="top" secondItem="wfP-VD-ALD" secondAttribute="top" constant="3" id="tkd-UZ-D3R"/> + </constraints> </customView> </subviews> <constraints> @@ -756,6 +801,7 @@ <constraint firstItem="siU-cO-eGp" firstAttribute="leading" secondItem="ISP-Ld-mHk" secondAttribute="leading" id="adZ-9b-R8G"/> <constraint firstItem="KCp-bZ-69S" firstAttribute="leading" secondItem="ISP-Ld-mHk" secondAttribute="leading" id="wUx-5B-FOC"/> <constraint firstAttribute="bottom" secondItem="wfP-VD-ALD" secondAttribute="bottom" id="wxQ-eM-vOR"/> + <constraint firstAttribute="trailing" secondItem="wfP-VD-ALD" secondAttribute="trailing" constant="-8" id="ye2-e8-LDL"/> </constraints> <connections> <outlet property="msgBackground" destination="wfP-VD-ALD" id="fbB-OB-zyZ"/> @@ -796,17 +842,23 @@ <constraint firstAttribute="height" constant="34" id="p3P-Wg-s0n"/> </constraints> </box> - <customView ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0o9-as-0kP" customClass="MessageBubbleView"> - <rect key="frame" x="58" y="0.0" width="311" height="26"/> + <customView translatesAutoresizingMaskIntoConstraints="NO" id="0o9-as-0kP" customClass="MessageBubbleView"> + <rect key="frame" x="58" y="0.0" width="271" height="26"/> <subviews> - <customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3id-hP-gmA" customClass="NSTextView"> + <customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3id-hP-gmA" customClass="NSTextView"> <rect key="frame" x="0.0" y="-14" width="58" height="0.0"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> </customView> </subviews> + <constraints> + <constraint firstItem="3id-hP-gmA" firstAttribute="top" secondItem="0o9-as-0kP" secondAttribute="top" constant="40" id="Gu3-09-70Y"/> + <constraint firstItem="3id-hP-gmA" firstAttribute="leading" secondItem="0o9-as-0kP" secondAttribute="leading" id="OZk-VX-6m9"/> + <constraint firstAttribute="bottom" secondItem="3id-hP-gmA" secondAttribute="bottom" constant="-14" id="PRc-v8-dCp"/> + <constraint firstAttribute="trailing" secondItem="3id-hP-gmA" secondAttribute="trailing" constant="253" id="o9d-kz-fGq"/> + </constraints> </customView> </subviews> <constraints> + <constraint firstItem="0o9-as-0kP" firstAttribute="leading" secondItem="rMU-hx-cKa" secondAttribute="leading" constant="58" id="DSf-ri-RXA"/> <constraint firstItem="hfc-s5-yWK" firstAttribute="top" secondItem="rMU-hx-cKa" secondAttribute="top" id="G37-AS-eTc"/> <constraint firstAttribute="trailing" secondItem="0o9-as-0kP" secondAttribute="trailing" id="Qjo-Xd-8ci"/> <constraint firstAttribute="bottom" secondItem="0o9-as-0kP" secondAttribute="bottom" id="XTL-j6-WbQ"/> @@ -959,7 +1011,7 @@ <constraint firstAttribute="bottom" secondItem="GIJ-gB-FZo" secondAttribute="bottom" id="cSp-R2-2P7"/> <constraint firstItem="GIJ-gB-FZo" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="gYP-xn-tdT"/> </constraints> - <point key="canvasLocation" x="1428" y="21.5"/> + <point key="canvasLocation" x="1428" y="19.5"/> </customView> <viewController id="LWe-df-dS6" customClass="ChatVC"> <connections> @@ -1032,10 +1084,10 @@ <image name="ic_action_merge_calls" width="72" height="72"/> <image name="ic_action_mute_audio" width="72" height="72"/> <image name="ic_action_mute_video" width="72" height="72"/> + <image name="ic_action_quality" width="72" height="72"/> <image name="ic_action_record" width="54" height="54"/> <image name="ic_action_transfer" width="57.599998474121094" height="57.599998474121094"/> <image name="ic_dialpad" width="72" height="72"/> <image name="ic_more" width="72" height="72"/> - <image name="ic_person_add" width="48" height="48"/> </resources> </document> -- GitLab