diff --git a/CMakeLists.txt b/CMakeLists.txt index 5141d2814801ecac402d5fede863f9db4aa5fef5..7c5fc9f9658266df618e035ce1185720774d4f56 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -210,8 +210,6 @@ SET(ringclient_VIEWS src/views/RoundedTextField.mm src/views/MessageBubbleView.h src/views/MessageBubbleView.mm - src/views/SendMessageCell.h - src/views/SendMessageCell.mm src/views/SendMessagePanel.h src/views/SendMessagePanel.mm src/views/HoverButton.h diff --git a/src/ConversationVC.mm b/src/ConversationVC.mm index 2084e4fa9b082c30e2f5892d0ff902fb891586a0..e5bfcc6a40b37f7d60e7717c19b4b20805822968 100644 --- a/src/ConversationVC.mm +++ b/src/ConversationVC.mm @@ -29,6 +29,7 @@ #import <globalinstances.h> #import "views/IconButton.h" +#import "views/HoverButton.h" #import "views/IMTableCellView.h" #import "views/NSColor+RingTheme.h" #import "QNSTreeController.h" @@ -53,6 +54,7 @@ __unsafe_unretained IBOutlet NSTextField *conversationID; __unsafe_unretained IBOutlet IconButton* sendButton; __unsafe_unretained IBOutlet IconButton *sendFileButton; + __unsafe_unretained IBOutlet HoverButton *addContactButton; __unsafe_unretained IBOutlet NSLayoutConstraint* sentContactRequestWidth; __unsafe_unretained IBOutlet NSButton* sentContactRequestButton; IBOutlet MessagesVC* messagesViewVC; @@ -157,6 +159,8 @@ [conversationID setHidden:hideBestId]; [titleCenteredConstraint setActive:hideBestId]; [titleTopConstraint setActive:!hideBestId]; + auto accountType = convModel_->owner.profileInfo.type; + [addContactButton setHidden:((convModel_->owner.contactModel->getContact(conv->participants[0]).profileInfo.type != lrc::api::profile::Type::TEMPORARY) || accountType == lrc::api::profile::Type::SIP)]; } - (void)loadView { @@ -233,6 +237,18 @@ convModel_->placeCall(conv->uid); } +- (IBAction)placeAudioCall:(id)sender +{ + auto* conv = [self getCurrentConversation]; + convModel_->placeAudioOnlyCall(conv->uid); +} + +- (IBAction)addContact:(id)sender +{ + auto* conv = [self getCurrentConversation]; + convModel_->makePermanent(conv->uid); +} + - (IBAction)backPressed:(id)sender { [delegate rightPanelClosed]; [self hideWithAnimation:false]; diff --git a/src/MessagesVC.mm b/src/MessagesVC.mm index cdf061340d868fab6808a1703b270431c3bc9c96..48921376ad1fde1023f349a07b8a5f6d57e36291 100644 --- a/src/MessagesVC.mm +++ b/src/MessagesVC.mm @@ -282,10 +282,8 @@ NSInteger const GENERIC_INT_TEXT_TAG = 100; [result updateWidthConstraint:finalWidth]; auto& imageManip = reinterpret_cast<Interfaces::ImageManipulationDelegate&>(GlobalInstances::pixmapManipulator()); - if (isOutgoing) { - [result.photoView setImage:[NSImage imageNamed:@"default_user_icon"]]; - } else { - [result.photoView setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(imageManip.conversationPhoto(*conv, convModel_->owner)))]; + if (!isOutgoing) { + [result.photoView setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(imageManip.conversationPhoto(*conv, convModel_->owner)))]; } return result; diff --git a/src/views/HoverButton.mm b/src/views/HoverButton.mm index 7963527000c1e509c4f5b33a3ba03db2ba4fe79a..086d2ade48b5a4bd34bfc806573b5c1d7df6d72d 100644 --- a/src/views/HoverButton.mm +++ b/src/views/HoverButton.mm @@ -34,7 +34,9 @@ } -(void)mouseEntered:(NSEvent *)theEvent { - self.bgColor = self.hoverColor; + if(self.isEnabled) { + self.bgColor = self.hoverColor; + } [super setNeedsDisplay:YES]; [super mouseEntered:theEvent]; } diff --git a/src/views/IconButton.h b/src/views/IconButton.h index 0701497554db6a8568414b647fed23c7fc2151cf..66b535066a7ea46781f39e74715d68fc038e8376 100644 --- a/src/views/IconButton.h +++ b/src/views/IconButton.h @@ -69,5 +69,12 @@ @property (nonatomic, strong) NSColor* imageColor; +/* + * Image color when button is disabled + * default value : [[NSColor grayColor] colorWithAlphaComponent:0.3]; + */ + +@property (nonatomic, strong) NSColor* buttonDisableColor; + @end diff --git a/src/views/IconButton.mm b/src/views/IconButton.mm index 0223d028a61784931fcdf8e2e11a20b8c42af2aa..96c3271cff39b47a44142828a61af833b0d353e7 100644 --- a/src/views/IconButton.mm +++ b/src/views/IconButton.mm @@ -62,13 +62,21 @@ backgroundColor = self.bgColor ; backgroundStrokeColor = self.bgColor; if(!self.isEnabled) { - tintColor = [[NSColor grayColor] colorWithAlphaComponent:0.3]; + if (self.buttonDisableColor) { + tintColor = self.buttonDisableColor; + } else { + tintColor = [[NSColor grayColor] colorWithAlphaComponent:0.3]; + } } } else if (!self.isEnabled) { backgroundColor = [self.bgColor colorWithAlphaComponent:0.7]; backgroundStrokeColor = [self.bgColor colorWithAlphaComponent:0.7]; - tintColor = [[NSColor grayColor] colorWithAlphaComponent:0.3]; + if (self.buttonDisableColor) { + tintColor = self.buttonDisableColor; + } else { + tintColor = [[NSColor grayColor] colorWithAlphaComponent:0.3]; + } } else if (self.mouseDown || self.isPressed) { if (self.highlightColor) { backgroundColor = self.highlightColor; @@ -84,6 +92,8 @@ backgroundStrokeColor = [self.bgColor darkenColorByValue:0.1]; } + backgroundStrokeColor = NSColor.clearColor; + //// Subframes NSRect group = NSMakeRect(NSMinX(dirtyRect) + floor(NSWidth(dirtyRect) * 0.03333) + 0.5, NSMinY(dirtyRect) + floor(NSHeight(dirtyRect) * 0.03333) + 0.5, diff --git a/src/views/SendMessageCell.h b/src/views/SendMessageCell.h deleted file mode 100644 index 635d327d4f1d73d3fe3f603fe09468a177ba6861..0000000000000000000000000000000000000000 --- a/src/views/SendMessageCell.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2017 Savoir-faire Linux Inc. - * Author: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#import <Cocoa/Cocoa.h> - -@protocol MessageCellDelegate - --(void) focusChanged; - -@end - -@interface SendMessageCell : NSTextFieldCell - -@property (strong, nonatomic) id <MessageCellDelegate> viewDelegate; - -@end diff --git a/src/views/SendMessageCell.mm b/src/views/SendMessageCell.mm deleted file mode 100644 index bfff307023a7d47e7ca49d9136e89c71b4c6fbc2..0000000000000000000000000000000000000000 --- a/src/views/SendMessageCell.mm +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2017 Savoir-faire Linux Inc. - * Author: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#import "SendMessageCell.h" - -@implementation SendMessageCell - -- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView*)controlView { - NSColor* textColor; - - [self.viewDelegate focusChanged]; - - [super drawWithFrame:cellFrame inView:controlView]; -} - -@end - - diff --git a/src/views/SendMessagePanel.h b/src/views/SendMessagePanel.h index c09ca89743f50fce4d9bbcfe7658e84c2f5f2dff..0b44e8311dac6e5ee90c52465a309bd330c36951 100644 --- a/src/views/SendMessagePanel.h +++ b/src/views/SendMessagePanel.h @@ -18,10 +18,7 @@ */ #import <Cocoa/Cocoa.h> -#import "SendMessageCell.h" -@interface SendMessagePanel : NSView <MessageCellDelegate> - -@property (nonatomic, strong) IBOutlet SendMessageCell* messageCell; +@interface SendMessagePanel : NSView @end diff --git a/src/views/SendMessagePanel.mm b/src/views/SendMessagePanel.mm index 06d2441228d67c8e85c0069192ab423bd2827fab..db7281687cf8f833c16c2ba8f8b2a62d71ac5b8b 100644 --- a/src/views/SendMessagePanel.mm +++ b/src/views/SendMessagePanel.mm @@ -22,33 +22,14 @@ @implementation SendMessagePanel --(void) awakeFromNib { - self.messageCell.viewDelegate = self; -} - - - (void)drawRect:(NSRect)dirtyRect { - NSBezierPath *path = [NSBezierPath bezierPath]; - [path moveToPoint:NSMakePoint(40, dirtyRect.size.height)]; - [path lineToPoint:NSMakePoint(dirtyRect.size.width - 40 , dirtyRect.size.height)]; - BOOL isEditing = [(NSTextField *)[self.messageCell controlView] currentEditor] != nil; - if(isEditing) { - [[NSColor ringBlue]set]; - [path setLineWidth:3]; - } - else { - - [[NSColor quaternaryLabelColor]set]; - [path setLineWidth:2]; - } + [path moveToPoint:NSMakePoint(0, dirtyRect.size.height)]; + [path lineToPoint:NSMakePoint(dirtyRect.size.width, dirtyRect.size.height)]; + [[NSColor quaternaryLabelColor]set]; + [path setLineWidth:2]; [path stroke]; [super drawRect:dirtyRect]; } --(void) focusChanged { - - [self setNeedsDisplay:YES]; -} - @end diff --git a/ui/Base.lproj/Conversation.xib b/ui/Base.lproj/Conversation.xib index 492e83bdb7509c0141c70fcf81f24ece754f171c..32fd4e28794b0ec02389e419582b0abe7913e6c7 100644 --- a/ui/Base.lproj/Conversation.xib +++ b/ui/Base.lproj/Conversation.xib @@ -8,6 +8,7 @@ <objects> <customObject id="-2" userLabel="File's Owner" customClass="ConversationVC"> <connections> + <outlet property="addContactButton" destination="pGK-hO-X1Y" id="YeP-Gd-x6e"/> <outlet property="conversationID" destination="SQT-Vf-Lhr" id="eab-vD-7X7"/> <outlet property="conversationTitle" destination="ucx-6g-eJw" id="40T-pM-nix"/> <outlet property="messageField" destination="bsk-Gj-qQ2" id="JYN-bF-ttw"/> @@ -27,16 +28,16 @@ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <subviews> <customView verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="EJD-f8-Xqd"> - <rect key="frame" x="0.0" y="51" width="798" height="719"/> + <rect key="frame" x="0.0" y="61" width="798" height="707"/> <subviews> <scrollView verticalCompressionResistancePriority="250" borderType="none" autohidesScrollers="YES" horizontalLineScroll="62" horizontalPageScroll="10" verticalLineScroll="62" verticalPageScroll="10" hasHorizontalScroller="NO" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" scrollerKnobStyle="dark" translatesAutoresizingMaskIntoConstraints="NO" id="Ez2-Rf-DZN"> - <rect key="frame" x="49" y="0.0" width="700" height="719"/> + <rect key="frame" x="49" y="0.0" width="700" height="707"/> <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="ofC-Bs-tHR"> - <rect key="frame" x="0.0" y="0.0" width="700" height="719"/> + <rect key="frame" x="0.0" y="0.0" width="700" height="707"/> <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="bOO-CW-S21"> - <rect key="frame" x="0.0" y="0.0" width="700" height="719"/> + <rect key="frame" x="0.0" y="0.0" width="700" height="707"/> <autoresizingMask key="autoresizingMask"/> <size key="intercellSpacing" width="3" height="2"/> <color key="backgroundColor" white="1" alpha="0.0" colorSpace="deviceWhite"/> @@ -98,19 +99,11 @@ <rect key="frame" x="1" y="63" width="697" height="60"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" tag="100" translatesAutoresizingMaskIntoConstraints="NO" id="HA2-42-bNS"> - <rect key="frame" x="657" y="15" width="40" height="40"/> - <constraints> - <constraint firstAttribute="width" constant="40" id="659-GG-n6s"/> - <constraint firstAttribute="height" constant="40" id="Wco-GQ-lKP"/> - </constraints> - <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="FYc-av-dNW"/> - </imageView> - <customView ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Sfu-lT-vTc" customClass="MessageBubbleView"> - <rect key="frame" x="5" y="10" width="637" height="40"/> + <customView ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Sfu-lT-vTc" customClass="MessageBubbleView"> + <rect key="frame" x="5" y="5" width="637" height="50"/> <subviews> <customView ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gob-L5-RgR" customClass="NSTextView"> - <rect key="frame" x="0.0" y="0.0" width="637" height="40"/> + <rect key="frame" x="0.0" y="10" width="637" height="40"/> </customView> </subviews> <constraints> @@ -121,30 +114,19 @@ </customView> </subviews> <constraints> - <constraint firstItem="HA2-42-bNS" firstAttribute="leading" secondItem="Sfu-lT-vTc" secondAttribute="trailing" constant="2" id="Cdl-wc-CyM"/> - <constraint firstItem="HA2-42-bNS" firstAttribute="top" secondItem="Kuf-56-7Og" secondAttribute="top" constant="5" id="pOA-ZJ-lX1"/> + <constraint firstAttribute="trailing" secondItem="Sfu-lT-vTc" secondAttribute="trailing" id="oLP-po-bGf"/> <constraint firstItem="Sfu-lT-vTc" firstAttribute="top" secondItem="Kuf-56-7Og" secondAttribute="top" constant="5" id="qxj-49-fiY"/> - <constraint firstAttribute="trailing" secondItem="HA2-42-bNS" secondAttribute="trailing" id="tev-NB-s0E"/> <constraint firstAttribute="bottom" secondItem="Sfu-lT-vTc" secondAttribute="bottom" constant="5" id="yPW-zU-W4e"/> </constraints> <connections> <outlet property="msgBackground" destination="Sfu-lT-vTc" id="7bK-eM-vle"/> <outlet property="msgView" destination="gob-L5-RgR" id="jaX-qj-YQA"/> - <outlet property="photoView" destination="HA2-42-bNS" id="sCn-k7-x60"/> </connections> </tableCellView> <tableCellView identifier="RightOngoingFileView" id="f7f-vE-9kV" userLabel="IMTableCellView" customClass="IMTableCellView"> <rect key="frame" x="1" y="125" width="697" height="60"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" tag="100" translatesAutoresizingMaskIntoConstraints="NO" id="6ZV-0W-v6y"> - <rect key="frame" x="657" y="15" width="40" height="40"/> - <constraints> - <constraint firstAttribute="height" constant="40" id="QUs-oq-f5l"/> - <constraint firstAttribute="width" constant="40" id="w1W-3e-vMf"/> - </constraints> - <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="MUe-8z-ojQ"/> - </imageView> <customView ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="288-cW-DUh" customClass="MessageBubbleView"> <rect key="frame" x="5" y="5" width="637" height="50"/> <subviews> @@ -187,16 +169,13 @@ </subviews> <constraints> <constraint firstItem="288-cW-DUh" firstAttribute="top" secondItem="f7f-vE-9kV" secondAttribute="top" constant="5" id="189-x9-b4Q"/> - <constraint firstItem="6ZV-0W-v6y" firstAttribute="leading" secondItem="288-cW-DUh" secondAttribute="trailing" constant="2" id="Eob-bX-rsc"/> - <constraint firstAttribute="trailing" secondItem="6ZV-0W-v6y" secondAttribute="trailing" id="FFU-0x-vz5"/> <constraint firstAttribute="bottom" secondItem="288-cW-DUh" secondAttribute="bottom" constant="5" id="IDq-mx-De5"/> - <constraint firstItem="6ZV-0W-v6y" firstAttribute="top" secondItem="f7f-vE-9kV" secondAttribute="top" constant="5" id="yuG-tg-EgK"/> + <constraint firstAttribute="trailing" secondItem="288-cW-DUh" secondAttribute="trailing" id="MBw-oY-Aiv"/> </constraints> <connections> <outlet property="declineButton" destination="oA1-1W-48a" id="u4X-s7-mLU"/> <outlet property="msgBackground" destination="288-cW-DUh" id="koc-Gd-hgM"/> <outlet property="msgView" destination="OYt-X6-K8Z" id="feR-5l-GtK"/> - <outlet property="photoView" destination="6ZV-0W-v6y" id="h61-cj-yop"/> <outlet property="progressIndicator" destination="RQe-25-hLb" id="yTf-O0-SLK"/> </connections> </tableCellView> @@ -204,14 +183,6 @@ <rect key="frame" x="1" y="187" width="697" height="60"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" tag="100" translatesAutoresizingMaskIntoConstraints="NO" id="Ayo-jj-LFy"> - <rect key="frame" x="657" y="15" width="40" height="40"/> - <constraints> - <constraint firstAttribute="height" constant="40" id="Xsx-aB-mSP"/> - <constraint firstAttribute="width" constant="40" id="Ybl-P2-4he"/> - </constraints> - <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="qXk-fg-A5x"/> - </imageView> <customView ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PRw-Bx-lOE" customClass="MessageBubbleView"> <rect key="frame" x="5" y="5" width="637" height="50"/> <subviews> @@ -238,16 +209,13 @@ </customView> </subviews> <constraints> - <constraint firstAttribute="trailing" secondItem="Ayo-jj-LFy" secondAttribute="trailing" id="3mw-Ec-2zY"/> - <constraint firstItem="Ayo-jj-LFy" firstAttribute="top" secondItem="4Sx-gX-5hR" secondAttribute="top" constant="5" id="EBF-pl-GH2"/> - <constraint firstItem="Ayo-jj-LFy" firstAttribute="leading" secondItem="PRw-Bx-lOE" secondAttribute="trailing" constant="2" id="GQX-Cp-IUU"/> + <constraint firstAttribute="trailing" secondItem="PRw-Bx-lOE" secondAttribute="trailing" id="QZS-pa-Wo2"/> <constraint firstAttribute="bottom" secondItem="PRw-Bx-lOE" secondAttribute="bottom" constant="5" id="cLM-O7-7x9"/> <constraint firstItem="PRw-Bx-lOE" firstAttribute="top" secondItem="4Sx-gX-5hR" secondAttribute="top" constant="5" id="q5m-ch-0IR"/> </constraints> <connections> <outlet property="msgBackground" destination="PRw-Bx-lOE" id="Lgp-wk-Xx5"/> <outlet property="msgView" destination="Eay-Qd-gzU" id="AsA-MB-ZdR"/> - <outlet property="photoView" destination="Ayo-jj-LFy" id="rbR-Xf-oze"/> <outlet property="statusLabel" destination="yyn-kD-JYn" id="SGR-Ih-255"/> </connections> </tableCellView> @@ -503,10 +471,10 @@ </constraints> </customView> <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="Sn1-dJ-QCw"> - <rect key="frame" x="20" y="767" width="758" height="5"/> + <rect key="frame" x="0.0" y="765" width="798" height="5"/> </box> <button toolTip="Record" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ooq-vs-Xt1" customClass="HoverButton"> - <rect key="frame" x="20" y="779" width="40" height="40"/> + <rect key="frame" x="10" y="778" width="40" height="40"/> <constraints> <constraint firstAttribute="height" constant="40" id="69o-49-0QB"/> <constraint firstAttribute="width" constant="40" id="ImE-zq-KIj"/> @@ -528,11 +496,11 @@ </connections> </button> <customView verticalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="Rth-di-Tls" customClass="SendMessagePanel"> - <rect key="frame" x="0.0" y="0.0" width="798" height="50"/> + <rect key="frame" x="49" y="0.0" width="700" height="60"/> <subviews> <textField verticalCompressionResistancePriority="1000" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bsk-Gj-qQ2"> - <rect key="frame" x="48" y="5" width="666" height="40"/> - <textFieldCell key="cell" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" placeholderString="Send a message" id="Ilz-7v-2fr" customClass="SendMessageCell"> + <rect key="frame" x="58" y="22" width="592" height="17"/> + <textFieldCell key="cell" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" placeholderString="Send a message" id="Ilz-7v-2fr"> <font key="font" metaFont="system"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> @@ -550,7 +518,7 @@ </connections> </textField> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="UJf-cF-RAo" customClass="HoverButton"> - <rect key="frame" x="714" y="5" width="40" height="40"/> + <rect key="frame" x="650" y="10" width="40" height="40"/> <constraints> <constraint firstAttribute="width" constant="40" id="TmF-ip-m4C"/> <constraint firstAttribute="height" constant="40" id="rbQ-lE-sAq"/> @@ -561,7 +529,13 @@ </buttonCell> <userDefinedRuntimeAttributes> <userDefinedRuntimeAttribute type="color" keyPath="imageColor"> - <color key="value" white="0.0" alpha="1" colorSpace="calibratedWhite"/> + <color key="value" red="0.0" green="0.23137254901960785" blue="0.30588235294117649" alpha="1" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="hoverColor"> + <color key="value" red="0.23137254901960785" green="0.75686274509803919" blue="0.82745098039215681" alpha="0.23000000000000001" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="buttonDisableColor"> + <color key="value" red="0.78955939797794117" green="0.75686274509803919" blue="0.82745098039215681" alpha="1" colorSpace="calibratedRGB"/> </userDefinedRuntimeAttribute> </userDefinedRuntimeAttributes> <connections> @@ -570,7 +544,7 @@ </connections> </button> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gwx-eT-PcN" customClass="HoverButton"> - <rect key="frame" x="756" y="5" width="40" height="40"/> + <rect key="frame" x="10" y="10" width="40" height="40"/> <constraints> <constraint firstAttribute="height" constant="40" id="C2W-wV-YvF"/> <constraint firstAttribute="width" constant="40" id="zZF-4P-pW9"/> @@ -581,7 +555,10 @@ </buttonCell> <userDefinedRuntimeAttributes> <userDefinedRuntimeAttribute type="color" keyPath="imageColor"> - <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + <color key="value" red="0.0" green="0.23137254901960785" blue="0.30588235294117649" alpha="1" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="hoverColor"> + <color key="value" red="0.23137254901960785" green="0.75686274509803919" blue="0.82745098039215681" alpha="0.23000000000000001" colorSpace="calibratedRGB"/> </userDefinedRuntimeAttribute> </userDefinedRuntimeAttributes> <connections> @@ -590,30 +567,26 @@ </button> </subviews> <constraints> - <constraint firstItem="gwx-eT-PcN" firstAttribute="centerY" secondItem="Rth-di-Tls" secondAttribute="centerY" id="773-Gg-YNe"/> + <constraint firstItem="UJf-cF-RAo" firstAttribute="centerY" secondItem="gwx-eT-PcN" secondAttribute="centerY" id="8nV-yT-GCB"/> <constraint firstItem="UJf-cF-RAo" firstAttribute="leading" secondItem="bsk-Gj-qQ2" secondAttribute="trailing" constant="2" id="9A3-Gn-6zS"/> - <constraint firstAttribute="bottom" secondItem="bsk-Gj-qQ2" secondAttribute="bottom" constant="5" id="TID-Ww-Gmw"/> + <constraint firstItem="gwx-eT-PcN" firstAttribute="leading" secondItem="Rth-di-Tls" secondAttribute="leading" constant="10" id="QpN-IM-j7U"/> + <constraint firstItem="bsk-Gj-qQ2" firstAttribute="leading" secondItem="gwx-eT-PcN" secondAttribute="trailing" constant="10" id="bOG-S4-zuO"/> <constraint firstItem="UJf-cF-RAo" firstAttribute="centerY" secondItem="Rth-di-Tls" secondAttribute="centerY" id="d73-0x-wSy"/> - <constraint firstItem="gwx-eT-PcN" firstAttribute="leading" secondItem="UJf-cF-RAo" secondAttribute="trailing" constant="2" id="exX-kB-hcR"/> - <constraint firstAttribute="height" constant="50" id="jJO-v2-Wuj"/> - <constraint firstItem="bsk-Gj-qQ2" firstAttribute="top" secondItem="Rth-di-Tls" secondAttribute="top" constant="5" id="jJr-Dt-hhr"/> - <constraint firstItem="bsk-Gj-qQ2" firstAttribute="leading" secondItem="Rth-di-Tls" secondAttribute="leading" constant="50" id="khQ-CU-aUr"/> - <constraint firstAttribute="trailing" secondItem="gwx-eT-PcN" secondAttribute="trailing" constant="2" id="ziq-OV-WVi"/> + <constraint firstItem="bsk-Gj-qQ2" firstAttribute="centerY" secondItem="Rth-di-Tls" secondAttribute="centerY" id="fyr-g5-2iE"/> + <constraint firstAttribute="height" constant="60" id="jJO-v2-Wuj"/> + <constraint firstAttribute="trailing" secondItem="UJf-cF-RAo" secondAttribute="trailing" constant="10" id="kMD-0U-u83"/> </constraints> - <connections> - <outlet property="messageCell" destination="Ilz-7v-2fr" id="eOP-sJ-6Wf"/> - </connections> </customView> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ucx-6g-eJw"> - <rect key="frame" x="68" y="775" width="39" height="48"/> + <rect key="frame" x="58" y="773" width="40" height="50"/> <textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" sendsActionOnEndEditing="YES" alignment="left" placeholderString="Title" id="HnC-1N-RmR"> <font key="font" metaFont="system" size="18"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> - <button verticalHuggingPriority="750" tag="400" translatesAutoresizingMaskIntoConstraints="NO" id="cFH-d7-Erh" userLabel="Call Button" customClass="IconButton"> - <rect key="frame" x="738" y="779" width="40" height="40"/> + <button verticalHuggingPriority="750" tag="400" translatesAutoresizingMaskIntoConstraints="NO" id="cFH-d7-Erh" userLabel="Call Button" customClass="HoverButton"> + <rect key="frame" x="748" y="778" width="40" height="40"/> <constraints> <constraint firstAttribute="width" constant="40" id="4jd-jn-RY1"/> <constraint firstAttribute="height" constant="40" id="DMa-Lq-2Tk"/> @@ -622,6 +595,14 @@ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <font key="font" metaFont="system"/> </buttonCell> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="color" keyPath="imageColor"> + <color key="value" red="0.0" green="0.23137254901960785" blue="0.30588235294117649" alpha="1" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="hoverColor"> + <color key="value" red="0.23137254901960785" green="0.75686274509803919" blue="0.82745098039215681" alpha="0.23410744863013699" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> <connections> <action selector="placeCall:" target="-2" id="2h9-fM-gof"/> </connections> @@ -634,28 +615,76 @@ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> + <button verticalHuggingPriority="750" tag="400" translatesAutoresizingMaskIntoConstraints="NO" id="RuH-fO-poy" userLabel="Audio Call Button" customClass="HoverButton"> + <rect key="frame" x="698" y="778" width="40" height="40"/> + <constraints> + <constraint firstAttribute="width" constant="40" id="HyC-Bf-F7P"/> + <constraint firstAttribute="height" constant="40" id="opT-rp-VwQ"/> + </constraints> + <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_call" imagePosition="overlaps" alignment="center" allowsMixedState="YES" transparent="YES" imageScaling="proportionallyDown" inset="2" id="f0E-8f-ly5"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="color" keyPath="imageColor"> + <color key="value" red="0.0" green="0.23137254900000001" blue="0.30588235289999999" alpha="1" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="hoverColor"> + <color key="value" red="0.23137254900000001" green="0.75686274509999996" blue="0.82745098039999998" alpha="0.23410744859999999" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="placeAudioCall:" target="-2" id="ycm-jI-2M5"/> + </connections> + </button> + <button verticalHuggingPriority="750" tag="400" translatesAutoresizingMaskIntoConstraints="NO" id="pGK-hO-X1Y" userLabel="Add Contact Button" customClass="HoverButton"> + <rect key="frame" x="648" y="778" width="40" height="40"/> + <constraints> + <constraint firstAttribute="width" constant="40" id="Cxh-SD-Ozq"/> + <constraint firstAttribute="height" constant="40" id="UUq-am-hL7"/> + </constraints> + <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_person_add" imagePosition="overlaps" alignment="center" allowsMixedState="YES" transparent="YES" imageScaling="proportionallyDown" inset="2" id="1oc-i4-1bh"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <userDefinedRuntimeAttributes> + <userDefinedRuntimeAttribute type="color" keyPath="imageColor"> + <color key="value" red="0.0" green="0.23137254900000001" blue="0.30588235289999999" alpha="1" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + <userDefinedRuntimeAttribute type="color" keyPath="hoverColor"> + <color key="value" red="0.23137254900000001" green="0.75686274509999996" blue="0.82745098039999998" alpha="0.23410744859999999" colorSpace="calibratedRGB"/> + </userDefinedRuntimeAttribute> + </userDefinedRuntimeAttributes> + <connections> + <action selector="addContact:" target="-2" id="9DI-Pm-X0I"/> + </connections> + </button> </subviews> <constraints> - <constraint firstItem="ooq-vs-Xt1" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="1xM-Rt-OXn"/> + <constraint firstItem="ooq-vs-Xt1" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="10" id="1xM-Rt-OXn"/> <constraint firstItem="ucx-6g-eJw" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="5" id="32s-Wp-DE1"/> <constraint firstItem="cFH-d7-Erh" firstAttribute="centerY" secondItem="ooq-vs-Xt1" secondAttribute="centerY" id="5PE-Sd-Vwg"/> <constraint firstItem="ucx-6g-eJw" firstAttribute="leading" secondItem="ooq-vs-Xt1" secondAttribute="trailing" constant="10" id="60g-Mw-Wax"/> + <constraint firstItem="cFH-d7-Erh" firstAttribute="leading" secondItem="RuH-fO-poy" secondAttribute="trailing" constant="10" id="7Hq-Yy-WfO"/> <constraint firstAttribute="bottom" secondItem="Rth-di-Tls" secondAttribute="bottom" id="9nL-Hs-Oak"/> <constraint firstItem="ucx-6g-eJw" firstAttribute="leading" secondItem="SQT-Vf-Lhr" secondAttribute="leading" id="IQc-hc-YRD"/> - <constraint firstItem="Rth-di-Tls" firstAttribute="leading" secondItem="EJD-f8-Xqd" secondAttribute="leading" id="Ijp-QX-Dkw"/> - <constraint firstItem="cFH-d7-Erh" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="9" id="Tok-wc-chb"/> - <constraint firstItem="EJD-f8-Xqd" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="58" id="XkO-FA-l3J"/> - <constraint firstItem="Sn1-dJ-QCw" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="58" id="aZT-2B-gv9"/> - <constraint firstAttribute="trailing" secondItem="cFH-d7-Erh" secondAttribute="trailing" constant="20" id="bWY-wj-6dr"/> + <constraint firstItem="EJD-f8-Xqd" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="L79-xO-12P"/> + <constraint firstItem="RuH-fO-poy" firstAttribute="centerY" secondItem="ooq-vs-Xt1" secondAttribute="centerY" id="MS8-kk-8g8"/> + <constraint firstItem="cFH-d7-Erh" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="10" id="Tok-wc-chb"/> + <constraint firstItem="EJD-f8-Xqd" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="60" id="XkO-FA-l3J"/> + <constraint firstItem="Sn1-dJ-QCw" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="60" id="aZT-2B-gv9"/> + <constraint firstItem="Rth-di-Tls" firstAttribute="trailing" secondItem="Ez2-Rf-DZN" secondAttribute="trailing" id="b6d-Ue-Zl5"/> + <constraint firstAttribute="trailing" secondItem="cFH-d7-Erh" secondAttribute="trailing" constant="10" id="bWY-wj-6dr"/> <constraint firstItem="EJD-f8-Xqd" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" id="bvr-Gv-Sgb"/> - <constraint firstItem="Sn1-dJ-QCw" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="dtD-1T-QlG"/> + <constraint firstItem="Sn1-dJ-QCw" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="dtD-1T-QlG"/> <constraint firstItem="SQT-Vf-Lhr" firstAttribute="bottom" secondItem="ooq-vs-Xt1" secondAttribute="bottom" id="e8m-qq-0SV"/> <constraint firstItem="Rth-di-Tls" firstAttribute="top" secondItem="EJD-f8-Xqd" secondAttribute="bottom" constant="1" id="f8h-bA-ZrZ"/> - <constraint firstItem="ooq-vs-Xt1" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="9" id="gkR-53-qs5"/> - <constraint firstAttribute="trailing" secondItem="Rth-di-Tls" secondAttribute="trailing" id="iT0-rG-86d"/> - <constraint firstAttribute="trailing" secondItem="Sn1-dJ-QCw" secondAttribute="trailing" constant="20" id="m05-gh-crH"/> - <constraint firstItem="Rth-di-Tls" firstAttribute="trailing" secondItem="EJD-f8-Xqd" secondAttribute="trailing" id="mga-Tu-Ikb"/> - <constraint firstItem="Rth-di-Tls" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="qz7-sE-9Ml"/> + <constraint firstItem="RuH-fO-poy" firstAttribute="leading" secondItem="pGK-hO-X1Y" secondAttribute="trailing" constant="10" id="fCS-uv-8E2"/> + <constraint firstItem="ooq-vs-Xt1" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="10" id="gkR-53-qs5"/> + <constraint firstAttribute="trailing" secondItem="EJD-f8-Xqd" secondAttribute="trailing" id="hSZ-8v-sis"/> + <constraint firstItem="Rth-di-Tls" firstAttribute="leading" secondItem="Ez2-Rf-DZN" secondAttribute="leading" id="jyz-o7-MMh"/> + <constraint firstAttribute="trailing" secondItem="Sn1-dJ-QCw" secondAttribute="trailing" id="m05-gh-crH"/> + <constraint firstItem="pGK-hO-X1Y" firstAttribute="centerY" secondItem="ooq-vs-Xt1" secondAttribute="centerY" id="nQE-VA-2DY"/> <constraint firstItem="ucx-6g-eJw" firstAttribute="centerY" secondItem="ooq-vs-Xt1" secondAttribute="centerY" id="uTp-kU-NmC" userLabel="centeredTitle"/> </constraints> <point key="canvasLocation" x="514" y="475"/> @@ -669,10 +698,12 @@ </objects> <resources> <image name="ic_action_accept" width="72" height="72"/> + <image name="ic_action_call" width="72" height="72"/> <image name="ic_action_cancel" width="72" height="72"/> <image name="ic_action_send" width="72" height="72"/> <image name="ic_action_video" width="72" height="72"/> <image name="ic_arrow_back" width="72" height="72"/> <image name="ic_file_upload" width="72" height="72"/> + <image name="ic_person_add" width="48" height="48"/> </resources> </document>