Commit 252a94ab authored by Andreas Traczyk's avatar Andreas Traczyk Committed by Kateryna Kostiuk

UI/UX: refactor smartlist

Change-Id: Ibfd5154757908ebd85f4b0060da00a7c608a0e56
Reviewed-by: Kateryna Kostiuk's avatarKateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
parent 9d8b7923
......@@ -227,7 +227,9 @@ SET(ringclient_OTHERS
src/delegates/ImageManipulationDelegate.h
src/AccountSelectionManager.h
src/AccountSelectionManager.mm
src/utils.h)
src/utils.h
src/NSString+Extensions.h
src/NSString+Extensions.mm)
SET(ringclient_XIBS
......@@ -275,6 +277,7 @@ SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources)
SET(ring_ICONS
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_block.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_attachment.png
${CMAKE_CURRENT_SOURCE_DIR}/data/default_avatar_overlay.png
${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_name.png
......
......@@ -88,6 +88,18 @@
return self;
}
-(void) clearData {
cachedConv_ = nil;
convUid_ = "";
convModel_ = nil;
[messagesViewVC clearData];
QObject::disconnect(modelSortedConnection_);
QObject::disconnect(filterChangedConnection_);
QObject::disconnect(newConversationConnection_);
QObject::disconnect(conversationRemovedConnection_);
}
-(const lrc::api::conversation::Info*) getCurrentConversation
{
if (convModel_ == nil || convUid_.empty())
......@@ -282,6 +294,8 @@
return;
}
[self clearData];
if (!animate) {
[self.view setHidden:YES];
return;
......
......@@ -30,6 +30,7 @@
@interface MessagesVC : NSViewController
-(void)setConversationUid:(const std::string)convUid model:(lrc::api::ConversationModel*)model;
-(void)clearData;
@property (retain, nonatomic) id <MessagesVCDelegate> delegate;
......
/*
* Copyright (C) 2015-2018 Savoir-faire Linux Inc.
* Author: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
......@@ -89,6 +90,16 @@ typedef NS_ENUM(NSInteger, MessageSequencing) {
[conversationView registerNib:cellNib forIdentifier:@"RightOngoingFileView"];
[conversationView registerNib:cellNib forIdentifier:@"RightFinishedFileView"];
}
-(void) clearData {
cachedConv_ = nil;
convUid_ = "";
convModel_ = nil;
QObject::disconnect(modelSortedSignal_);
QObject::disconnect(filterChangedSignal_);
QObject::disconnect(interactionStatusUpdatedSignal_);
QObject::disconnect(newInteractionSignal_);
}
-(const lrc::api::conversation::Info*) getCurrentConversation
{
......@@ -390,8 +401,6 @@ typedef NS_ENUM(NSInteger, MessageSequencing) {
} else {
result = [tableView makeViewWithIdentifier:@"LeftMessageView" owner:self];
}
if (interaction.status == lrc::api::interaction::Status::UNREAD)
convModel_->setInteractionRead(convUid_, it->first);
break;
case lrc::api::interaction::Type::INCOMING_DATA_TRANSFER:
case lrc::api::interaction::Type::OUTGOING_DATA_TRANSFER:
......
/*
* Copyright (C) 2018 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 <Foundation/Foundation.h>
@interface NSString (Extensions)
- (NSString *) removeAllNewLinesAtTheEnd;
- (NSString *) removeEmptyLinesAtBorders;
@end
/*
* Copyright (C) 2018 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 "NSString+Extensions.h"
@implementation NSString (Extensions)
- (NSString *) removeAllNewLinesAtTheEnd {
NSString *result = self;
while ([result endedByEmptyLine]) {
result = [result removeLastWhiteSpaceAndNewLineCharacter];
}
return result;
}
- (NSString *) removeAllNewLinesAtBegining {
NSString *result = self;
while ([result startByEmptyLine]) {
result = [result removeFirstWhiteSpaceAndNewLineCharacter];
}
return result;
}
- (NSString *) removeEmptyLinesAtBorders {
NSString *result = self;
result = [result removeAllNewLinesAtBegining];
result = [result removeAllNewLinesAtTheEnd];
return result;
}
-(bool)endedByEmptyLine {
if ([self length] < 1) {
return false;
}
unichar last = [self characterAtIndex:[self length] - 1];
return [[NSCharacterSet whitespaceAndNewlineCharacterSet] characterIsMember:last];
}
- (bool)startByEmptyLine {
if ([self length] < 1) {
return false;
}
unichar first = [self characterAtIndex:0];
return [[NSCharacterSet whitespaceAndNewlineCharacterSet] characterIsMember:first];
}
- (NSString *) removeLastWhiteSpaceAndNewLineCharacter {
if ([self endedByEmptyLine]) {
return [self substringToIndex:[self length]-1];
}
return self;
}
- (NSString *) removeFirstWhiteSpaceAndNewLineCharacter {
if ([self startByEmptyLine]) {
return [self substringFromIndex:1];
}
return self;
}
@end
This diff is collapsed.
......@@ -277,16 +277,26 @@ namespace Interfaces {
return pxm;
} else {
char color = contact.profileInfo.uri.at(0);
contact.profileInfo.alias.erase(std::remove(contact.profileInfo.alias.begin(), contact.profileInfo.alias.end(), '\n'), contact.profileInfo.alias.end());
contact.profileInfo.alias.erase(std::remove(contact.profileInfo.alias.begin(), contact.profileInfo.alias.end(), ' '), contact.profileInfo.alias.end());
contact.profileInfo.alias.erase(std::remove(contact.profileInfo.alias.begin(), contact.profileInfo.alias.end(), '\r'), contact.profileInfo.alias.end());
if (!contact.profileInfo.alias.empty()) {
return drawDefaultUserPixmap(size, color, std::toupper(contact.profileInfo.alias.at(0)));
} else if((contact.profileInfo.type == lrc::api::profile::Type::RING ||
contact.profileInfo.type == lrc::api::profile::Type::PENDING) &&
!contact.registeredName.empty()) {
contact.registeredName.erase(std::remove(contact.registeredName.begin(), contact.registeredName.end(), '\n'), contact.registeredName.end());
contact.registeredName.erase(std::remove(contact.registeredName.begin(), contact.registeredName.end(), ' '), contact.registeredName.end());
contact.registeredName.erase(std::remove(contact.registeredName.begin(), contact.registeredName.end(), '\r'), contact.registeredName.end());
if(!contact.registeredName.empty()) {
return drawDefaultUserPixmap(size, color, std::toupper(contact.registeredName.at(0)));
} else {
return drawDefaultUserPixmapUriOnly(size, color);
}
} else {
return drawDefaultUserPixmapUriOnly(size, color);
}
}
} catch (const std::out_of_range& e) {
return drawDefaultUserPixmap(size, '?', '?');
......
......@@ -18,6 +18,7 @@
*/
#import <Foundation/Foundation.h>
#import "NSString+Extensions.h"
#import <api/conversation.h>
#import <api/conversationmodel.h>
#import <api/account.h>
......@@ -28,19 +29,39 @@
static inline NSString* bestIDForConversation(const lrc::api::conversation::Info& conv, const lrc::api::ConversationModel& model)
{
auto contact = model.owner.contactModel->getContact(conv.participants[0]);
if (!contact.registeredName.empty())
return @(contact.registeredName.c_str());
if (!contact.registeredName.empty()) {
contact.registeredName.erase(std::remove(contact.registeredName.begin(), contact.registeredName.end(), '\n'), contact.registeredName.end());
contact.registeredName.erase(std::remove(contact.registeredName.begin(), contact.registeredName.end(), '\r'), contact.registeredName.end());
return [@(contact.registeredName.c_str()) removeEmptyLinesAtBorders];
}
else
return @(contact.profileInfo.uri.c_str());
return [@(contact.profileInfo.uri.c_str()) removeEmptyLinesAtBorders];
}
static inline NSString* bestNameForConversation(const lrc::api::conversation::Info& conv, const lrc::api::ConversationModel& model)
{
auto contact = model.owner.contactModel->getContact(conv.participants[0]);
if (!contact.profileInfo.alias.empty())
return @(contact.profileInfo.alias.c_str());
else
if (contact.profileInfo.alias.empty()) {
return bestIDForConversation(conv, model);
}
auto alias = contact.profileInfo.alias;
alias.erase(std::remove(alias.begin(), alias.end(), '\n'), alias.end());
alias.erase(std::remove(alias.begin(), alias.end(), '\r'), alias.end());
if(alias.length() == 0) {
return bestIDForConversation(conv, model);
}
return @(alias.c_str());
}
static inline lrc::api::profile::Type profileType(const lrc::api::conversation::Info& conv, const lrc::api::ConversationModel& model)
{
@try {
auto contact = model.owner.contactModel->getContact(conv.participants[0]);
return contact.profileInfo.type;
}
@catch (NSException *exception) {
lrc::api::profile::Type::INVALID;
}
}
/**
......
......@@ -52,7 +52,7 @@
/*
* Padding
* default value : 5.0
* default value : 8.0
*/
@property CGFloat imageInsets;
......
......@@ -103,12 +103,9 @@
//// Group
{
//// Oval Drawing
NSBezierPath* ovalPath = [NSBezierPath bezierPathWithRoundedRect:
NSMakeRect(NSMinX(group) + floor(NSWidth(group) * 0.00000 + 0.5),
NSMinY(group) + floor(NSHeight(group) * 0.00000 + 0.5),
floor(NSWidth(group) * 1.00000 + 0.5) - floor(NSWidth(group) * 0.00000 + 0.5),
floor(NSHeight(group) * 1.00000 + 0.5) - floor(NSHeight(group) * 0.00000 + 0.5))
xRadius:[self.cornerRadius floatValue] yRadius:[self.cornerRadius floatValue]];
NSBezierPath* ovalPath = [NSBezierPath bezierPathWithRoundedRect:dirtyRect
xRadius:[self.cornerRadius floatValue]
yRadius:[self.cornerRadius floatValue]];
[backgroundColor setFill];
[ovalPath fill];
......
......@@ -32,6 +32,11 @@
*/
@property (nonatomic, strong) NSColor* borderColor;
/*
* default value : [NSNumber numberWithDouble:1.0];
*/
@property (nonatomic, strong) NSNumber* borderThickness;
/*
* default value : (self.frame) / 2;
*/
......
......@@ -34,6 +34,10 @@
self.borderColor = [self.bgColor darkenColorByValue:0.1];
}
if(!self.borderThickness) {
self.borderThickness = [NSNumber numberWithDouble:1.0];
}
self.backgroundColor = [NSColor controlColor];
}
......@@ -42,6 +46,7 @@
NSColor* backgroundColor = self.bgColor;
NSColor* borderColor = self.borderColor;
CGFloat borderThickness = [self.borderThickness floatValue];
NSRect group = NSMakeRect(NSMinX(dirtyRect) + floor(NSWidth(dirtyRect) * 0.03333) + 0.5,
NSMinY(dirtyRect) + floor(NSHeight(dirtyRect) * 0.03333) + 0.5,
......@@ -57,7 +62,7 @@
[backgroundColor setFill];
[ovalPath fill];
[borderColor setStroke];
[ovalPath setLineWidth: 1.0];
[ovalPath setLineWidth: borderThickness];
[ovalPath stroke];
NSDictionary *att = nil;
......
......@@ -329,11 +329,11 @@
</constraints>
</box>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="100" translatesAutoresizingMaskIntoConstraints="NO" id="35p-WS-DUv" userLabel="ContactInteractionLabel">
<rect key="frame" x="330" y="11" width="37" height="17"/>
<rect key="frame" x="347" y="11" width="4" height="17"/>
<constraints>
<constraint firstAttribute="height" constant="17" id="azh-RJ-oYw"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Label" id="jRF-Jm-tK5">
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" id="jRF-Jm-tK5">
<font key="font" metaFont="systemLight" size="13"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
......@@ -379,13 +379,13 @@
</constraints>
</customView>
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="Sn1-dJ-QCw">
<rect key="frame" x="0.0" y="765" width="798" height="5"/>
<rect key="frame" x="0.0" y="770" width="798" height="5"/>
</box>
<button toolTip="Record" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ooq-vs-Xt1" customClass="HoverButton">
<rect key="frame" x="10" y="778" width="40" height="40"/>
<rect key="frame" x="10" y="783" width="35" height="35"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="69o-49-0QB"/>
<constraint firstAttribute="width" constant="40" id="ImE-zq-KIj"/>
<constraint firstAttribute="height" constant="35" id="69o-49-0QB"/>
<constraint firstAttribute="width" constant="35" id="ImE-zq-KIj"/>
</constraints>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_arrow_back" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="DP0-lw-oRl">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
......@@ -396,7 +396,10 @@
<color key="value" red="0.76470588235294112" green="0.76470588235294112" blue="0.76470588235294112" alpha="1" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="imageColor">
<color key="value" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
<color key="value" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="imageInsets">
<integer key="value" value="4"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
......@@ -407,7 +410,7 @@
<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="58" y="22" width="592" height="17"/>
<rect key="frame" x="53" y="22" width="602" 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"/>
......@@ -426,10 +429,10 @@
</connections>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="UJf-cF-RAo" customClass="HoverButton">
<rect key="frame" x="650" y="10" width="40" height="40"/>
<rect key="frame" x="655" y="13" width="35" height="35"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="TmF-ip-m4C"/>
<constraint firstAttribute="height" constant="40" id="rbQ-lE-sAq"/>
<constraint firstAttribute="width" constant="35" id="TmF-ip-m4C"/>
<constraint firstAttribute="height" constant="35" id="rbQ-lE-sAq"/>
</constraints>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_send" imagePosition="overlaps" alignment="center" enabled="NO" transparent="YES" imageScaling="proportionallyDown" inset="2" id="s6a-eK-t3T">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
......@@ -445,6 +448,9 @@
<userDefinedRuntimeAttribute type="color" keyPath="buttonDisableColor">
<color key="value" red="0.78955939797794117" green="0.75686274509803919" blue="0.82745098039215681" alpha="1" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="imageInsets">
<integer key="value" value="4"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="sendMessage:" target="-2" id="5Cf-jA-eJM"/>
......@@ -452,10 +458,10 @@
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gwx-eT-PcN" customClass="HoverButton">
<rect key="frame" x="10" y="10" width="40" height="40"/>
<rect key="frame" x="10" y="13" width="35" height="35"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="C2W-wV-YvF"/>
<constraint firstAttribute="width" constant="40" id="zZF-4P-pW9"/>
<constraint firstAttribute="height" constant="35" id="C2W-wV-YvF"/>
<constraint firstAttribute="width" constant="35" id="zZF-4P-pW9"/>
</constraints>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_file_upload" imagePosition="overlaps" alignment="center" enabled="NO" transparent="YES" imageScaling="proportionallyDown" inset="2" id="gfQ-c5-YPu">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
......@@ -468,6 +474,9 @@
<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="number" keyPath="imageInsets">
<integer key="value" value="4"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="sendFile:" target="-2" id="Lex-2X-KCU"/>
......@@ -486,18 +495,18 @@
</constraints>
</customView>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ucx-6g-eJw">
<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">
<rect key="frame" x="53" y="778" width="4" height="45"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" sendsActionOnEndEditing="YES" alignment="left" 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="HoverButton">
<rect key="frame" x="748" y="778" width="40" height="40"/>
<rect key="frame" x="753" y="783" width="35" height="35"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="4jd-jn-RY1"/>
<constraint firstAttribute="height" constant="40" id="DMa-Lq-2Tk"/>
<constraint firstAttribute="width" constant="35" id="4jd-jn-RY1"/>
<constraint firstAttribute="height" constant="35" id="DMa-Lq-2Tk"/>
</constraints>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_video" imagePosition="overlaps" alignment="center" allowsMixedState="YES" transparent="YES" imageScaling="proportionallyDown" inset="2" id="XOS-rh-WfH">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
......@@ -510,24 +519,27 @@
<userDefinedRuntimeAttribute type="color" keyPath="hoverColor">
<color key="value" red="0.23137254901960785" green="0.75686274509803919" blue="0.82745098039215681" alpha="0.23410744863013699" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="imageInsets">
<integer key="value" value="4"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="placeCall:" target="-2" id="2h9-fM-gof"/>
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SQT-Vf-Lhr" userLabel="IdLabel">
<rect key="frame" x="68" y="779" width="275" height="18"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="ID" id="rW7-RD-TBM">
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SQT-Vf-Lhr" userLabel="IdLabel">
<rect key="frame" x="53" y="783" width="4" height="16"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" id="rW7-RD-TBM">
<font key="font" metaFont="systemLight" size="12"/>
<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="RuH-fO-poy" userLabel="Audio Call Button" customClass="HoverButton">
<rect key="frame" x="698" y="778" width="40" height="40"/>
<rect key="frame" x="708" y="783" width="35" height="35"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="HyC-Bf-F7P"/>
<constraint firstAttribute="height" constant="40" id="opT-rp-VwQ"/>
<constraint firstAttribute="width" constant="35" id="HyC-Bf-F7P"/>
<constraint firstAttribute="height" constant="35" 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"/>
......@@ -540,16 +552,19 @@
<userDefinedRuntimeAttribute type="color" keyPath="hoverColor">
<color key="value" red="0.23137254900000001" green="0.75686274509999996" blue="0.82745098039999998" alpha="0.23410744859999999" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="imageInsets">
<integer key="value" value="4"/>
</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"/>
<rect key="frame" x="663" y="783" width="35" height="35"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="Cxh-SD-Ozq"/>
<constraint firstAttribute="height" constant="40" id="UUq-am-hL7"/>
<constraint firstAttribute="width" constant="35" id="Cxh-SD-Ozq"/>
<constraint firstAttribute="height" constant="35" 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"/>
......@@ -562,6 +577,9 @@
<userDefinedRuntimeAttribute type="color" keyPath="hoverColor">
<color key="value" red="0.23137254900000001" green="0.75686274509999996" blue="0.82745098039999998" alpha="0.23410744859999999" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="imageInsets">
<integer key="value" value="4"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="addContact:" target="-2" id="9DI-Pm-X0I"/>
......@@ -580,7 +598,7 @@
<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="Sn1-dJ-QCw" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="55" 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"/>
......@@ -588,7 +606,6 @@
<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" id="f8h-bA-ZrZ"/>
<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"/>
......
......@@ -65,5 +65,5 @@
/* Class = "NSTextFieldCell"; placeholderString = "Display Role"; ObjectID = "uSw-g5-kte"; */
"uSw-g5-kte.placeholderString" = "Display Role";
/* Class = "NSSearchFieldCell"; placeholderString = "Name, ringID"; ObjectID = "vvE-nM-kSl"; */
"vvE-nM-kSl.placeholderString" = "Name, ringID";
/* Class = "NSSearchFieldCell"; placeholderString = "Search for new or existing contact"; ObjectID = "vvE-nM-kSl"; */
"vvE-nM-kSl.placeholderString" = "Search for new or existing contact";
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment