Commit 266fca0e authored by Alexandre Lision's avatar Alexandre Lision

ui: update in-call actions

- use new button theme for call controls buttons.
- add an icon for recording
- gide buttons when available instead of disabling them

Issue: #79400
Change-Id: I712467b8f7b7fe16317f4283ae9d4f91bc8b9203
parent 6da08a80
......@@ -182,6 +182,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_audio.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_chat.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_quality.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_record.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_received.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_missed.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_made.png
......
......@@ -61,6 +61,7 @@
@property (unsafe_unretained) IBOutlet NSButton *muteVideoButton;
@property (unsafe_unretained) IBOutlet NSButton *addContactButton;
@property (unsafe_unretained) IBOutlet NSView *headerContainer;
@property (unsafe_unretained) IBOutlet NSButton *qualityButton;
@property (unsafe_unretained) IBOutlet ITProgressIndicator *loadingIndicator;
......@@ -109,18 +110,9 @@
const QModelIndex& idx = CallModel::instance()->userActionModel()->index(row,0);
UserActionModel::Action action = qvariant_cast<UserActionModel::Action>(idx.data(UserActionModel::Role::ACTION));
NSButton* a = actionHash[(int) action];
if (a != nil) {
[a setEnabled:(idx.flags() & Qt::ItemIsEnabled)];
if (a) {
[a setHidden:!(idx.flags() & Qt::ItemIsEnabled)];
[a setState:(idx.data(Qt::CheckStateRole) == Qt::Checked) ? NSOnState : NSOffState];
if(action == UserActionModel::Action::HOLD) {
NSString* imgName = (a.state == NSOnState ? @"ic_action_holdoff" : @"ic_action_hold");
[a setImage:[NSImage imageNamed:imgName]];
}
if(action == UserActionModel::Action::RECORD) {
[a setTitle:(a.state == NSOnState ? @"Record off" : @"Record")];
}
}
}
......@@ -138,7 +130,14 @@
[self.addContactButton setHidden:!shouldShow];
Call::State state = callIdx.data((int)Call::Role::State).value<Call::State>();
// Default values for this views
[loadingIndicator setHidden:YES];
[self.qualityButton setHidden:YES];
[self.chatButton setHidden:YES];
[videoView setShouldAcceptInteractions:NO];
[stateLabel setStringValue:callIdx.data((int)Call::Role::HumanStateName).toString().toNSString()];
switch (state) {
case Call::State::DIALING:
......@@ -147,33 +146,27 @@
case Call::State::NEW:
break;
case Call::State::INITIALIZATION:
[videoView setShouldAcceptInteractions:NO];
[loadingIndicator setHidden:NO];
break;
case Call::State::CONNECTED:
[videoView setShouldAcceptInteractions:NO];
[loadingIndicator setHidden:NO];
break;
case Call::State::RINGING:
[videoView setShouldAcceptInteractions:NO];
break;
case Call::State::CURRENT:
[videoView setShouldAcceptInteractions:YES];
[self.chatButton setHidden:NO];
[self.qualityButton setHidden:NO];
break;
case Call::State::HOLD:
[videoView setShouldAcceptInteractions:NO];
break;
case Call::State::BUSY:
[videoView setShouldAcceptInteractions:NO];
break;
case Call::State::OVER:
[videoView setShouldAcceptInteractions:NO];
case Call::State::FAILURE:
if(self.splitView.isInFullScreenMode)
[self.splitView exitFullScreenModeWithOptions:nil];
break;
case Call::State::FAILURE:
[videoView setShouldAcceptInteractions:NO];
break;
}
}
......@@ -224,6 +217,7 @@
[loadingIndicator setLengthOfLine:2];
[loadingIndicator setInnerMargin:30];
[self.qualityPopOver setDelegate:self];
[self.videoView setCallDelegate:self];
[self connect];
......@@ -541,6 +535,8 @@
if (self.addToContactPopover != nullptr) {
[self.addToContactPopover performClose:self];
self.addToContactPopover = NULL;
[self.addContactButton setState:NSOffState];
} else if (!contactmethod->contact() || contactmethod->contact()->isPlaceHolder()) {
auto* editorVC = [[PersonLinkerVC alloc] initWithNibName:@"PersonLinker" bundle:nil];
[editorVC setMethodToLink:contactmethod];
......@@ -596,11 +592,18 @@
uam << UserActionModel::Action::MUTE_VIDEO;
}
- (IBAction)displayQualityPopUp:(id)sender {
[self.qualityPopOver showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxXEdge];
}
#pragma mark - NSPopOverDelegate
- (void)popoverWillClose:(NSNotification *)notification
{
[self.qualityButton setState:NSOffState];
[self.addContactButton setState:NSOffState];
}
- (void)popoverDidClose:(NSNotification *)notification
{
if (self.addToContactPopover != nullptr) {
......
......@@ -16,21 +16,40 @@
* 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>
@interface IconButton : NSButton
@property (nonatomic) BOOL mouseDown;
/*
* This properties can be overriden in IB in User Defined Runtime Attributes
* By default this values will be initialized in awakeFromNib with:
* bgColor -> [NSColor ringBlue]
* cornerRadius to view frame width / 2 (circle)
* By default this values will be initialized in awakeFromNib
*/
/*
* Background color of the button
* default value : [NSColor ringBlue]
*/
@property (nonatomic, strong) NSColor* bgColor;
/*
* Background color of the button when highlighted
* default value : view frame width / 2 (circle)
*/
@property (nonatomic, strong) NSColor* highlightColor;
/*
* Background color of the button when highlighted
* default value : view frame width / 2 (circle)
*/
@property (nonatomic, strong) NSNumber* cornerRadius;
/*
* Padding
* default value : 5.0
*/
@property CGFloat imageInsets;
@end
......@@ -21,7 +21,6 @@
#import "NSColor+RingTheme.h"
@implementation IconButton
-(void) awakeFromNib {
......@@ -32,6 +31,9 @@
if (!self.cornerRadius) {
self.cornerRadius = @(NSWidth(self.frame) / 2);
}
if (self.imageInsets == 0)
self.imageInsets = 5.0f;
}
- (void)drawRect:(NSRect)dirtyRect
......@@ -42,8 +44,14 @@
NSColor* backgroundStrokeColor5;
if (self.mouseDown || self.state == NSOnState) {
backgroundColor6 = [self.bgColor darkenColorByValue:0.3];
backgroundStrokeColor5 = [self.bgColor darkenColorByValue:0.4];
if (self.highlightColor) {
backgroundColor6 = self.highlightColor;
backgroundStrokeColor5 = [self.highlightColor darkenColorByValue:0.1];
} else {
backgroundColor6 = [self.bgColor darkenColorByValue:0.3];
backgroundStrokeColor5 = [self.bgColor darkenColorByValue:0.4];
}
} else {
backgroundColor6 = self.bgColor;
backgroundStrokeColor5 = [self.bgColor darkenColorByValue:0.1];
......@@ -52,13 +60,10 @@
//// Subframes
NSRect group = NSMakeRect(NSMinX(dirtyRect) + floor(NSWidth(dirtyRect) * 0.03333) + 0.5, NSMinY(dirtyRect) + floor(NSHeight(dirtyRect) * 0.03333) + 0.5, floor(NSWidth(dirtyRect) * 0.96667) - floor(NSWidth(dirtyRect) * 0.03333), floor(NSHeight(dirtyRect) * 0.96667) - floor(NSHeight(dirtyRect) * 0.03333));
//// Group
{
//// Oval Drawing
// NSBezierPath* ovalPath = [NSBezierPath bezierPathWithOvalInRect: 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))];
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: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]];
[backgroundColor6 setFill];
[ovalPath fill];
......@@ -72,7 +77,8 @@ NSBezierPath* ovalPath = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(NSMi
[path addClip];
[self setImagePosition:NSImageOnly];
auto rect2 = NSInsetRect(dirtyRect, 5, 5);
auto rect2 = NSInsetRect(dirtyRect, self.imageInsets, self.imageInsets);
[[NSColor image:self.image tintedWithColor:[NSColor whiteColor]]
drawInRect:rect2
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14F27" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="8191"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="CurrentCallVC">
......@@ -19,6 +19,7 @@
<outlet property="personLabel" destination="bg3-hB-nE8" id="t6l-1B-JxI"/>
<outlet property="pickUpButton" destination="qgD-3D-nD5" id="mkD-IT-22E"/>
<outlet property="previewView" destination="6y6-RH-qOp" id="1PY-sd-mh4"/>
<outlet property="qualityButton" destination="j52-5l-K3e" id="fHh-32-Q5k"/>
<outlet property="qualityPopOver" destination="DRa-ai-N1h" id="Cb1-1p-7bO"/>
<outlet property="recordOnOffButton" destination="oRa-pS-HN2" id="N7C-wn-0le"/>
<outlet property="splitView" destination="GIJ-gB-FZo" id="PM0-az-Q8X"/>
......@@ -80,8 +81,11 @@
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button hidden="YES" wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Zss-6A-bSy" userLabel="AddToContact">
<rect key="frame" x="107" y="6" width="54" height="32"/>
<button hidden="YES" wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Zss-6A-bSy" userLabel="AddToContact" customClass="IconButton">
<rect key="frame" x="109" y="9" width="30" height="30"/>
<constraints>
<constraint firstAttribute="width" constant="30" id="DdM-FT-7kb"/>
</constraints>
<backgroundFilters>
<ciFilter name="CIColorMonochrome">
<configuration>
......@@ -91,8 +95,8 @@
</configuration>
</ciFilter>
</backgroundFilters>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="ic_person_add" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyUpOrDown" id="3Ea-x8-Ndg">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<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>
<connections>
......@@ -121,85 +125,99 @@
<constraint firstAttribute="width" constant="175" id="aEv-Tt-tSD"/>
</constraints>
</customView>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="JwW-2h-DyZ" customClass="ITProgressIndicator">
<rect key="frame" x="287" y="205" 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="Eoi-B8-iL6" userLabel="Controls">
<rect key="frame" x="20" y="20" width="452" height="81"/>
<rect key="frame" x="20" y="20" width="452" height="67"/>
<subviews>
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Kjq-iM-NBL" userLabel="Hang Up">
<rect key="frame" x="162" y="40" width="58" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="54" id="7Ja-wI-kLL"/>
<constraint firstAttribute="height" constant="27" id="E2W-LK-NfM"/>
</constraints>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="ic_action_hangup" imagePosition="overlaps" alignment="left" borderStyle="border" imageScaling="proportionallyDown" id="kR5-bV-2KY">
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tQl-cT-0Lb" userLabel="Mute Audio" customClass="IconButton">
<rect key="frame" x="173" y="13" width="40" height="40"/>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_mute_audio" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="7wg-Q4-mbD">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="hangUp:" target="-2" id="1Fj-b8-nfh"/>
</connections>
</button>
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tQl-cT-0Lb" userLabel="Mute Audio">
<rect key="frame" x="197" y="5" width="58" height="32"/>
<constraints>
<constraint firstAttribute="height" constant="27" id="TbE-0y-0UT"/>
<constraint firstAttribute="width" constant="54" id="eIi-Jg-kdC"/>
</constraints>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="ic_action_mute_audio" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyDown" id="7wg-Q4-mbD">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</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="muteAudio:" target="-2" id="DBk-mG-FLj"/>
</connections>
</button>
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="qgD-3D-nD5" userLabel="Accept">
<rect key="frame" x="100" y="40" width="58" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="54" id="9Aq-GM-wT2"/>
<constraint firstAttribute="height" constant="27" id="mnN-fs-Rr6"/>
</constraints>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="ic_action_call" imagePosition="overlaps" alignment="left" borderStyle="border" imageScaling="proportionallyDown" id="CoO-HS-nEB">
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qgD-3D-nD5" userLabel="Accept" customClass="IconButton">
<rect key="frame" x="9" y="14" width="40" height="40"/>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_call" imagePosition="overlaps" alignment="left" transparent="YES" imageScaling="proportionallyDown" id="CoO-HS-nEB">
<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="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="bgColor">
<color key="value" red="0.23529411764705882" green="0.6470588235294118" blue="0.16078431372549018" alpha="0.80000000000000004" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="accept:" target="-2" id="maS-G8-eY7"/>
</connections>
</button>
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oRa-pS-HN2">
<rect key="frame" x="124" y="5" width="69" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="65" id="Afw-2T-aY9"/>
<constraint firstAttribute="height" constant="27" id="t21-HC-Wvs"/>
</constraints>
<buttonCell key="cell" type="bevel" title="Record" bezelStyle="regularSquare" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyDown" id="rhz-4Z-avV">
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oRa-pS-HN2" customClass="IconButton">
<rect key="frame" x="340" y="13" width="40" height="40"/>
<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" metaFont="system"/>
<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>
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="anb-Y8-JQi" userLabel="Hold">
<rect key="frame" x="224" y="40" width="53" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="49" id="QBx-uC-sub"/>
<constraint firstAttribute="height" constant="27" id="nPV-iA-aaw"/>
</constraints>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="ic_action_hold" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyDown" id="7w5-d1-mNe">
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="anb-Y8-JQi" userLabel="Hold" customClass="IconButton">
<rect key="frame" x="129" y="14" width="40" height="40"/>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_hold" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="7w5-d1-mNe">
<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="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="toggleHold:" target="-2" id="O18-nN-hHE"/>
</connections>
</button>
<button wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fmp-x4-Pef" userLabel="Chat">
<rect key="frame" x="281" y="40" width="54" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="50" id="eC5-B4-omb"/>
<constraint firstAttribute="height" constant="27" id="wYS-TH-4rc"/>
</constraints>
<button wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fmp-x4-Pef" userLabel="Chat" customClass="IconButton">
<rect key="frame" x="404" y="12" width="40" height="40"/>
<backgroundFilters>
<ciFilter name="CIColorMonochrome">
<configuration>
......@@ -209,20 +227,48 @@
</configuration>
</ciFilter>
</backgroundFilters>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="ic_action_chat" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyUpOrDown" id="1fJ-X6-Rza">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_chat" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyUpOrDown" id="1fJ-X6-Rza">
<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="10"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="highlightColor">
<color key="value" red="0.16862745098039217" green="0.70588235294117641" blue="0.78823529411764703" alpha="1" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="bgColor">
<color key="value" red="0.16078431372549018" green="0.16078431372549018" blue="0.16078431372549018" alpha="0.80000000000000004" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="toggleChat:" target="-2" id="7HN-HS-oqT"/>
</connections>
</button>
<button wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="j52-5l-K3e" userLabel="Quality">
<rect key="frame" x="321" y="5" width="54" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="50" id="HMQ-8b-b48"/>
<constraint firstAttribute="height" constant="27" id="RHV-j9-SKc"/>
</constraints>
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LVS-yZ-98V" userLabel="Mute Video" customClass="IconButton">
<rect key="frame" x="223" y="13" width="40" height="40"/>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_mute_video" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="sSe-V6-C7i">
<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="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="muteVideo:" target="-2" id="a6W-aB-zWX"/>
</connections>
</button>
<button wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="j52-5l-K3e" userLabel="Quality" customClass="IconButton">
<rect key="frame" x="282" y="12" width="40" height="40"/>
<backgroundFilters>
<ciFilter name="CIColorMonochrome">
<configuration>
......@@ -232,68 +278,54 @@
</configuration>
</ciFilter>
</backgroundFilters>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="ic_action_quality" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyUpOrDown" id="Vv0-lu-Pg9">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_quality" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyUpOrDown" id="Vv0-lu-Pg9">
<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="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="displayQualityPopUp:" target="-2" id="EbO-ZD-Zsm"/>
</connections>
</button>
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="LVS-yZ-98V" userLabel="Mute Video">
<rect key="frame" x="259" y="5" width="58" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="54" id="D26-l1-SRe"/>
<constraint firstAttribute="height" constant="27" id="qDd-Wq-7QG"/>
</constraints>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="ic_action_mute_video" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyDown" id="sSe-V6-C7i">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<button horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kjq-iM-NBL" userLabel="Hang Up" customClass="IconButton">
<rect key="frame" x="69" y="13" width="40" height="40"/>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_hangup" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="kR5-bV-2KY">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="bgColor">
<color key="value" red="0.94509803921568625" green="0.16078431372549018" blue="0.0" alpha="0.83999999999999997" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="imageInsets">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="muteVideo:" target="-2" id="a6W-aB-zWX"/>
<action selector="hangUp:" target="-2" id="1Fj-b8-nfh"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="qgD-3D-nD5" firstAttribute="top" secondItem="Eoi-B8-iL6" secondAttribute="top" constant="11" id="1lr-kB-A5h"/>
<constraint firstItem="Kjq-iM-NBL" firstAttribute="leading" secondItem="qgD-3D-nD5" secondAttribute="trailing" constant="8" id="3iK-1x-F2q"/>
<constraint firstItem="anb-Y8-JQi" firstAttribute="top" secondItem="Eoi-B8-iL6" secondAttribute="top" constant="11" id="4C3-og-43v"/>
<constraint firstAttribute="bottom" secondItem="fmp-x4-Pef" secondAttribute="bottom" constant="43" id="4qt-Sw-3oV"/>
<constraint firstItem="LVS-yZ-98V" firstAttribute="top" secondItem="fmp-x4-Pef" secondAttribute="bottom" constant="8" id="6Tt-Zj-Gnf"/>
<constraint firstAttribute="bottom" secondItem="LVS-yZ-98V" secondAttribute="bottom" constant="8" id="9xT-hf-H7Q"/>
<constraint firstItem="j52-5l-K3e" firstAttribute="top" secondItem="fmp-x4-Pef" secondAttribute="bottom" constant="8" id="FGP-OT-jtW"/>
<constraint firstAttribute="bottom" secondItem="Kjq-iM-NBL" secondAttribute="bottom" constant="43" id="IPS-1V-PVm"/>
<constraint firstItem="LVS-yZ-98V" firstAttribute="leading" secondItem="tQl-cT-0Lb" secondAttribute="trailing" constant="8" id="IUv-fA-Zva"/>
<constraint firstAttribute="bottom" secondItem="qgD-3D-nD5" secondAttribute="bottom" constant="43" id="KYy-za-dDq"/>
<constraint firstItem="j52-5l-K3e" firstAttribute="leading" secondItem="LVS-yZ-98V" secondAttribute="trailing" constant="8" id="LmM-7T-m9j"/>
<constraint firstItem="anb-Y8-JQi" firstAttribute="leading" secondItem="Kjq-iM-NBL" secondAttribute="trailing" constant="8" id="Mcj-US-rZq"/>
<constraint firstAttribute="bottom" secondItem="anb-Y8-JQi" secondAttribute="bottom" constant="43" id="MwL-3I-lJv"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="385" id="TSJ-9A-brf"/>
<constraint firstItem="fmp-x4-Pef" firstAttribute="top" secondItem="Eoi-B8-iL6" secondAttribute="top" constant="11" id="Wmf-0A-jba"/>
<constraint firstItem="Kjq-iM-NBL" firstAttribute="top" secondItem="Eoi-B8-iL6" secondAttribute="top" constant="11" id="a1R-g8-5gl"/>
<constraint firstAttribute="bottom" secondItem="oRa-pS-HN2" secondAttribute="bottom" constant="8" id="aOv-xQ-1pk"/>
<constraint firstItem="fmp-x4-Pef" firstAttribute="leading" secondItem="anb-Y8-JQi" secondAttribute="trailing" constant="8" id="bSy-yw-J5C"/>
<constraint firstItem="tQl-cT-0Lb" firstAttribute="leading" secondItem="oRa-pS-HN2" secondAttribute="trailing" constant="8" id="d6a-bF-2d5"/>
<constraint firstItem="oRa-pS-HN2" firstAttribute="top" secondItem="Eoi-B8-iL6" secondAttribute="top" constant="46" id="faC-l8-iCU"/>
<constraint firstItem="tQl-cT-0Lb" firstAttribute="top" secondItem="anb-Y8-JQi" secondAttribute="bottom" constant="8" id="gZK-fs-Aml"/>
<constraint firstItem="oRa-pS-HN2" firstAttribute="leading" secondItem="Eoi-B8-iL6" secondAttribute="leading" constant="126" id="htl-he-rlg"/>
<constraint firstAttribute="bottom" secondItem="tQl-cT-0Lb" secondAttribute="bottom" constant="8" id="iWQ-V7-2PF"/>
<constraint firstItem="fmp-x4-Pef" firstAttribute="leading" secondItem="anb-Y8-JQi" secondAttribute="trailing" constant="8" id="jfN-xU-POX"/>
<constraint firstItem="qgD-3D-nD5" firstAttribute="leading" secondItem="oRa-pS-HN2" secondAttribute="trailing" constant="-89" id="wQF-FD-dbj"/>
</constraints>
</customView>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="JwW-2h-DyZ" customClass="ITProgressIndicator">
<rect key="frame" x="287" y="205" width="100" height="100"/>
<constraints>
<constraint firstAttribute="height" constant="100" id="gpl-re-hHE"/>
<constraint firstAttribute="width" constant="100" id="nmo-HF-lhL"/>
<constraint firstAttribute="height" constant="67" id="ynu-O5-MN8"/>
</constraints>
</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 firstAttribute="trailing" secondItem="d0X-cW-Xgz" secondAttribute="trailing" constant="20" id="G79-Jv-EYw"/>
<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"/>
......@@ -301,7 +333,6 @@
<constraint firstAttribute="centerY" secondItem="JwW-2h-DyZ" secondAttribute="centerY" id="Na1-o4-4Ds"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="675" id="ciq-ed-2FK"/>
<constraint firstItem="d0X-cW-Xgz" firstAttribute="leading" secondItem="2wf-Py-l6B" secondAttribute="leading" constant="20" id="efy-70-qsJ"/>
<constraint firstAttribute="bottom" secondItem="Eoi-B8-iL6" secondAttribute="bottom" constant="20" id="glQ-Is-Pk6"/>