call: add dialpad access

This commit adds the ability to dial dtmf tones during a call.
It is necessary for interacting with automated services.
RTP dtmf are not working in the daemon, so during SIP account creation
we switch to SIP dtmf.

Tuleap: #154
Change-Id: I9d6758af4bc0b44605dc4b17c08b9b4ceaee84bd
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8e16016..9aa9c54 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -152,6 +152,8 @@
    src/RingWizardLinkAccountVC.mm
    src/RingWizardNewAccountVC.mm
    src/RingWizardNewAccountVC.h
+   src/DialpadWC.mm
+   src/DialpadWC.h
 )
 
 SET(ringclient_BACKENDS
@@ -216,7 +218,9 @@
    AccDevices
    RingWizardLinkAccount
    RingWizardNewAccount
-   RingWizardChoose)
+   RingWizardChoose
+   Dialpad
+)
 
 # Icons
 # This part tells CMake where to find and install the file itself
@@ -228,6 +232,8 @@
 ${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_name.png
 ${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_blue.png
 ${CMAKE_CURRENT_SOURCE_DIR}/data/background_tile.png
+${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_more.png
+${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_dialpad.png
 ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
 ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_arrow_back.png
 ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
@@ -248,7 +254,6 @@
 ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_add_participant.png
 ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_merge_calls.png
 ${CMAKE_CURRENT_SOURCE_DIR}/data/default_user_icon.png
-${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png
 ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_send.png
 ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
 ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_person_add.png
diff --git a/data/dark/ancrage.png b/data/dark/ancrage.png
deleted file mode 100644
index 06635f3..0000000
--- a/data/dark/ancrage.png
+++ /dev/null
Binary files differ
diff --git a/data/dark/ic_dialpad.png b/data/dark/ic_dialpad.png
new file mode 100644
index 0000000..49101a3
--- /dev/null
+++ b/data/dark/ic_dialpad.png
Binary files differ
diff --git a/data/dark/ic_more.png b/data/dark/ic_more.png
new file mode 100644
index 0000000..94d5ab9
--- /dev/null
+++ b/data/dark/ic_more.png
Binary files differ
diff --git a/src/AccountsVC.mm b/src/AccountsVC.mm
index b62b623..98fbf97 100644
--- a/src/AccountsVC.mm
+++ b/src/AccountsVC.mm
@@ -175,6 +175,7 @@
                                           AccountModel::instance().protocolModel()->data(qIdx, Qt::DisplayRole).toString().toNSString(), nil];
     auto acc = AccountModel::instance().add([newAccName UTF8String], qIdx);
     acc->setDisplayName(acc->alias());
+    acc->setDTMFType(DtmfType::OverSip);
     AccountModel::instance().save();
 }
 
diff --git a/src/AppDelegate.h b/src/AppDelegate.h
index d202039..f05a46c 100644
--- a/src/AppDelegate.h
+++ b/src/AppDelegate.h
@@ -26,6 +26,7 @@
 
 - (void) showWizard;
 - (void) showMainWindow;
+- (void) showDialpad;
 - (BOOL) checkForRingAccount;
 
 @end
diff --git a/src/AppDelegate.mm b/src/AppDelegate.mm
index 9064c71..ac8b630 100644
--- a/src/AppDelegate.mm
+++ b/src/AppDelegate.mm
@@ -35,6 +35,7 @@
 
 #import "Constants.h"
 #import "RingWizardWC.h"
+#import "DialpadWC.h"
 
 #if ENABLE_SPARKLE
 @interface AppDelegate() <SUUpdaterDelegate>
@@ -44,6 +45,7 @@
 
 @property RingWindowController* ringWindowController;
 @property RingWizardWC* wizard;
+@property DialpadWC* dialpad;
 @property (nonatomic, strong) dispatch_queue_t scNetworkQueue;
 @property (nonatomic, assign) SCNetworkReachabilityRef currentReachability;
 
@@ -198,13 +200,6 @@
     }
 }
 
-/**
- * click in MainMenu "Setup Ring"
- */
-- (IBAction)showWizard:(id)sender {
-    [self showWizard];
-}
-
 - (void) showWizard
 {
     if(self.wizard == nil) {
@@ -221,6 +216,15 @@
     [self.ringWindowController.window makeKeyAndOrderFront:self];
 }
 
+- (void) showDialpad
+{
+    if (self.dialpad == nil) {
+        self.dialpad = [[DialpadWC alloc] initWithWindowNibName:@"Dialpad"];
+    }
+    [self.dialpad.window makeKeyAndOrderFront:self];
+}
+
+
 - (BOOL) checkForRingAccount
 {
     BOOL foundRingAcc = NO;
diff --git a/src/CurrentCallVC.mm b/src/CurrentCallVC.mm
index 8cc9f22..249b96c 100644
--- a/src/CurrentCallVC.mm
+++ b/src/CurrentCallVC.mm
@@ -40,6 +40,7 @@
 #import <person.h>
 #import <globalinstances.h>
 
+#import "AppDelegate.h"
 #import "views/ITProgressIndicator.h"
 #import "views/CallView.h"
 #import "delegates/ImageManipulationDelegate.h"
@@ -74,6 +75,7 @@
 
 // Call Controls
 @property (unsafe_unretained) IBOutlet NSView* controlsPanel;
+
 @property QHash<int, IconButton*> actionHash;
 @property (unsafe_unretained) IBOutlet IconButton* holdOnOffButton;
 @property (unsafe_unretained) IBOutlet IconButton* hangUpButton;
@@ -86,6 +88,9 @@
 @property (unsafe_unretained) IBOutlet IconButton* addParticipantButton;
 @property (unsafe_unretained) IBOutlet IconButton* chatButton;
 
+@property (unsafe_unretained) IBOutlet NSView* advancedPanel;
+@property (unsafe_unretained) IBOutlet IconButton* advancedButton;
+
 
 // Join call panel
 @property (unsafe_unretained) IBOutlet NSView* joinPanel;
@@ -120,7 +125,7 @@
 @implementation CurrentCallVC
 @synthesize personLabel, personPhoto, actionHash, stateLabel, holdOnOffButton, hangUpButton,
             recordOnOffButton, pickUpButton, chatButton, transferButton, addParticipantButton, timeSpentLabel,
-            muteVideoButton, muteAudioButton, controlsPanel, headerContainer, videoView, incomingDisplayName, incomingPersonPhoto,
+            muteVideoButton, muteAudioButton, controlsPanel, advancedPanel, advancedButton, headerContainer, videoView, incomingDisplayName, incomingPersonPhoto,
             previewView, splitView, loadingIndicator, ringingPanel, joinPanel, outgoingPanel;
 
 @synthesize previewHolder;
@@ -551,6 +556,9 @@
     [timeSpentLabel setStringValue:@""];
     [stateLabel setStringValue:@""];
     [self.addContactButton setHidden:YES];
+
+    [advancedButton setPressed:NO];
+    [advancedPanel setHidden:YES];
 }
 
 -(void) animateOut
@@ -661,6 +669,16 @@
     CallModel::instance().getCall(CallModel::instance().selectionModel()->currentIndex()) << Call::Action::HOLD;
 }
 
+- (IBAction)toggleAdvancedControls:(id)sender {
+    [advancedButton setPressed:!advancedButton.isPressed];
+    [advancedPanel setHidden:![advancedButton isPressed]];
+}
+
+- (IBAction)showDialpad:(id)sender {
+    AppDelegate* appDelegate = (AppDelegate *)[[NSApplication sharedApplication] delegate];
+    [appDelegate showDialpad];
+}
+
 -(IBAction)toggleChat:(id)sender;
 {
     BOOL rightViewCollapsed = [[self splitView] isSubviewCollapsed:[[[self splitView] subviews] objectAtIndex: 1]];
@@ -670,7 +688,7 @@
     } else {
         [self collapseRightView];
     }
-    [chatButton setState:rightViewCollapsed];
+    [chatButton setPressed:rightViewCollapsed];
 }
 
 - (IBAction)muteAudio:(id)sender
@@ -689,7 +707,7 @@
     if (_brokerPopoverVC != nullptr) {
         [_brokerPopoverVC performClose:self];
         _brokerPopoverVC = NULL;
-        [self.transferButton setState:NSOffState];
+        [self.transferButton setPressed:NO];
     } else {
         auto* brokerVC = [[BrokerVC alloc] initWithMode:BrokerMode::TRANSFER];
         _brokerPopoverVC = [[NSPopover alloc] init];
@@ -707,7 +725,7 @@
     if (_brokerPopoverVC != nullptr) {
         [_brokerPopoverVC performClose:self];
         _brokerPopoverVC = NULL;
-        [self.addParticipantButton setState:NSOffState];
+        [self.addParticipantButton setPressed:NO];
     } else {
         auto* brokerVC = [[BrokerVC alloc] initWithMode:BrokerMode::CONFERENCE];
         _brokerPopoverVC = [[NSPopover alloc] init];
@@ -744,8 +762,8 @@
         self.addToContactPopover = NULL;
     }
 
-    [self.addContactButton setState:NSOffState];
-    [self.transferButton setState:NSOffState];
+    [self.addContactButton setPressed:NO];
+    [self.transferButton setPressed:NO];
     [self.addParticipantButton setState:NSOffState];
 }
 
diff --git a/src/DialpadWC.h b/src/DialpadWC.h
new file mode 100644
index 0000000..931d18e
--- /dev/null
+++ b/src/DialpadWC.h
@@ -0,0 +1,24 @@
+/*
+ *  Copyright (C) 2016 Savoir-faire Linux Inc.
+ *  Author: Alexandre Lision <alexandre.lision@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>
+
+@interface DialpadWC : NSWindowController <NSWindowDelegate>
+
+@end
diff --git a/src/DialpadWC.mm b/src/DialpadWC.mm
new file mode 100644
index 0000000..4fc0fd2
--- /dev/null
+++ b/src/DialpadWC.mm
@@ -0,0 +1,97 @@
+/*
+ *  Copyright (C) 2016 Savoir-faire Linux Inc.
+ *  Author: Alexandre Lision <alexandre.lision@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 "DialpadWC.h"
+
+///Qt
+#import <QtCore/qitemselectionmodel.h>
+
+///LRC
+#import <callmodel.h>
+
+@interface DialpadWC ()
+
+@property (unsafe_unretained) IBOutlet NSTextField* composerField;
+
+@end
+
+@implementation DialpadWC
+@synthesize composerField;
+
+- (void)windowDidLoad {
+    [super windowDidLoad];
+
+    QObject::connect(CallModel::instance().selectionModel(),
+                     &QItemSelectionModel::currentChanged,
+                     [=](const QModelIndex &current, const QModelIndex &previous) {
+                         [composerField setStringValue:@""];
+                         [composerField setNeedsDisplay:YES];
+                         if(!current.isValid()) {
+                             [self.window close];
+                         }
+                     });
+}
+
+- (IBAction)dtmfPressed:(id)sender
+{
+    [self sendDTMF:[sender title]];
+}
+
+- (void) keyDown:(NSEvent *)theEvent
+{
+    NSString* characters =  [theEvent characters];
+    if ([characters length] == 1) {
+        NSString* filter = @"0123456789*#";
+        if ([filter containsString:characters]) {
+            [self sendDTMF:characters];
+        }
+    }
+}
+
+- (void) sendDTMF:(NSString*) dtmf
+{
+    if (auto current = CallModel::instance().selectedCall()) {
+        current->playDTMF(QString::fromUtf8([dtmf UTF8String]));
+    }
+    [composerField setStringValue:
+     [NSString stringWithFormat: @"%@ %@", [composerField stringValue], dtmf]];
+}
+
+///Accessibility
+- (void)insertTab:(id)sender
+{
+    if ([[self window] firstResponder] == self) {
+        [[self window] selectNextKeyView:self];
+    }
+}
+
+- (void)insertBacktab:(id)sender
+{
+    if ([[self window] firstResponder] == self) {
+        [[self window] selectPreviousKeyView:self];
+    }
+}
+
+- (void) windowWillClose:(NSNotification *)notification
+{
+    [composerField setStringValue:@""];
+    [composerField setNeedsDisplay:YES];
+}
+
+@end
diff --git a/src/views/IconButton.mm b/src/views/IconButton.mm
index 5ce29ef..55a83ee 100644
--- a/src/views/IconButton.mm
+++ b/src/views/IconButton.mm
@@ -96,7 +96,7 @@
         NSBezierPath* path = [NSBezierPath bezierPathWithRect:dirtyRect];
         [path addClip];
 
-        [self setImagePosition:NSImageOnly];
+        [self setImagePosition:NSImageOverlaps];
         auto rect = NSInsetRect(dirtyRect, self.imageInsets, self.imageInsets);
 
         [[NSColor image:self.image tintedWithColor:tintColor] drawInRect:rect
@@ -107,6 +107,23 @@
                     hints:nil];
 
         [NSGraphicsContext restoreGraphicsState];
+
+        NSRect rect2;
+        NSDictionary *att = nil;
+
+        NSMutableParagraphStyle *style =
+        [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
+        [style setLineBreakMode:NSLineBreakByWordWrapping];
+        [style setAlignment:NSCenterTextAlignment];
+        att = [[NSDictionary alloc] initWithObjectsAndKeys:
+               style, NSParagraphStyleAttributeName,
+               [NSColor whiteColor],
+               NSForegroundColorAttributeName, nil];
+
+        rect.size = [[self title] sizeWithAttributes:att];
+        rect.origin.x = floor( NSMidX([self bounds]) - rect.size.width / 2 );
+        rect.origin.y = floor( NSMidY([self bounds]) - rect.size.height / 2 );
+        [[self title] drawInRect:rect withAttributes:att];
     }
 }
 
diff --git a/ui/Base.lproj/CurrentCall.xib b/ui/Base.lproj/CurrentCall.xib
index 2115b61..bb9e659 100644
--- a/ui/Base.lproj/CurrentCall.xib
+++ b/ui/Base.lproj/CurrentCall.xib
@@ -8,9 +8,12 @@
             <connections>
                 <outlet property="addContactButton" destination="Zss-6A-bSy" id="Px0-5v-NE7"/>
                 <outlet property="addParticipantButton" destination="kIZ-mf-moM" id="7jn-l5-umS"/>
+                <outlet property="advancedButton" destination="VVL-A4-r7n" id="wc7-cJ-Z4N"/>
+                <outlet property="advancedPanel" destination="90B-Yc-WvN" id="C9e-hp-kC4"/>
                 <outlet property="chatButton" destination="fmp-x4-Pef" id="ARt-dr-TRo"/>
                 <outlet property="chatVC" destination="LWe-df-dS6" id="SMR-T0-fYe"/>
                 <outlet property="controlsPanel" destination="Eoi-B8-iL6" id="4xn-3b-SNn"/>
+                <outlet property="dialpadButton" destination="G0w-c3-9pJ" id="RY9-Tc-2US"/>
                 <outlet property="hangUpButton" destination="Kjq-iM-NBL" id="Puz-4L-Okl"/>
                 <outlet property="headerContainer" destination="d0X-cW-Xgz" id="7RM-kh-vCm"/>
                 <outlet property="holdOnOffButton" destination="anb-Y8-JQi" id="HSl-pE-Kwg"/>
@@ -143,10 +146,10 @@
                                     </constraints>
                                 </customView>
                                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="Eoi-B8-iL6" userLabel="Controls">
-                                    <rect key="frame" x="20" y="20" width="452" height="67"/>
+                                    <rect key="frame" x="20" y="20" width="452" height="120"/>
                                     <subviews>
                                         <button toolTip="Mute Audio" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tQl-cT-0Lb" userLabel="Mute Audio" customClass="IconButton">
-                                            <rect key="frame" x="120" y="13" width="40" height="40"/>
+                                            <rect key="frame" x="120" y="20" width="40" height="40"/>
                                             <constraints>
                                                 <constraint firstAttribute="width" constant="40" id="VhT-NE-Ler"/>
                                                 <constraint firstAttribute="height" constant="40" id="WFp-nl-egQ"/>
@@ -167,13 +170,13 @@
                                                 <action selector="muteAudio:" target="-2" id="DBk-mG-FLj"/>
                                             </connections>
                                         </button>
-                                        <button toolTip="Record" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oRa-pS-HN2" customClass="IconButton">
-                                            <rect key="frame" x="220" y="13" width="40" height="40"/>
+                                        <button toolTip="Record" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VVL-A4-r7n" customClass="IconButton">
+                                            <rect key="frame" x="270" y="20" width="40" height="40"/>
                                             <constraints>
-                                                <constraint firstAttribute="width" constant="40" id="5Yb-Ir-aNP"/>
-                                                <constraint firstAttribute="height" constant="40" id="f6U-Sc-LhF"/>
+                                                <constraint firstAttribute="height" constant="40" id="WJY-rX-kLD"/>
+                                                <constraint firstAttribute="width" constant="40" id="jcJ-mm-2kQ"/>
                                             </constraints>
-                                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_record" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="rhz-4Z-avV">
+                                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_more" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="7gG-ds-iaA">
                                                 <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                                                 <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/>
                                             </buttonCell>
@@ -186,11 +189,11 @@
                                                 </userDefinedRuntimeAttribute>
                                             </userDefinedRuntimeAttributes>
                                             <connections>
-                                                <action selector="toggleRecording:" target="-2" id="gAc-ZJ-9PN"/>
+                                                <action selector="toggleAdvancedControls:" target="-2" id="eiq-fF-f7K"/>
                                             </connections>
                                         </button>
                                         <button toolTip="Hold" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="anb-Y8-JQi" userLabel="Hold" customClass="IconButton">
-                                            <rect key="frame" x="70" y="13" width="40" height="40"/>
+                                            <rect key="frame" x="70" y="20" width="40" height="40"/>
                                             <constraints>
                                                 <constraint firstAttribute="width" constant="40" id="QlH-xq-7uO"/>
                                                 <constraint firstAttribute="height" constant="40" id="Xzt-L0-evm"/>
@@ -211,30 +214,8 @@
                                                 <action selector="toggleHold:" target="-2" id="O18-nN-hHE"/>
                                             </connections>
                                         </button>
-                                        <button toolTip="Transfer" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ChW-kg-Sja" customClass="IconButton">
-                                            <rect key="frame" x="270" y="13" width="40" height="40"/>
-                                            <constraints>
-                                                <constraint firstAttribute="height" constant="40" id="9zo-pq-mgF"/>
-                                                <constraint firstAttribute="width" constant="40" id="EVF-UM-brL"/>
-                                            </constraints>
-                                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_transfer" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="FOs-Wt-c2R">
-                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                                                <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/>
-                                            </buttonCell>
-                                            <userDefinedRuntimeAttributes>
-                                                <userDefinedRuntimeAttribute type="color" keyPath="highlightColor">
-                                                    <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/>
-                                                </userDefinedRuntimeAttribute>
-                                                <userDefinedRuntimeAttribute type="color" keyPath="bgColor">
-                                                    <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/>
-                                                </userDefinedRuntimeAttribute>
-                                            </userDefinedRuntimeAttributes>
-                                            <connections>
-                                                <action selector="toggleTransferView:" target="-2" id="Gxt-lS-qZs"/>
-                                            </connections>
-                                        </button>
                                         <button toolTip="Hang up" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Kjq-iM-NBL" userLabel="Hang Up" customClass="IconButton">
-                                            <rect key="frame" x="20" y="13" width="40" height="40"/>
+                                            <rect key="frame" x="20" y="20" width="40" height="40"/>
                                             <constraints>
                                                 <constraint firstAttribute="width" constant="40" id="MYx-uE-Bej"/>
                                                 <constraint firstAttribute="height" constant="40" id="dmD-ga-Kwv"/>
@@ -252,52 +233,8 @@
                                                 <action selector="hangUp:" target="-2" id="1Fj-b8-nfh"/>
                                             </connections>
                                         </button>
-                                        <button toolTip="Add participant" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="kIZ-mf-moM" customClass="IconButton">
-                                            <rect key="frame" x="320" y="13" width="40" height="40"/>
-                                            <constraints>
-                                                <constraint firstAttribute="height" constant="40" id="7qu-cd-B7J"/>
-                                                <constraint firstAttribute="width" constant="40" id="U4p-eV-iCZ"/>
-                                            </constraints>
-                                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_add_participant" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="BOx-wf-CM5">
-                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                                                <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/>
-                                            </buttonCell>
-                                            <userDefinedRuntimeAttributes>
-                                                <userDefinedRuntimeAttribute type="color" keyPath="highlightColor">
-                                                    <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/>
-                                                </userDefinedRuntimeAttribute>
-                                                <userDefinedRuntimeAttribute type="color" keyPath="bgColor">
-                                                    <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/>
-                                                </userDefinedRuntimeAttribute>
-                                            </userDefinedRuntimeAttributes>
-                                            <connections>
-                                                <action selector="toggleAddParticipantView:" target="-2" id="v6X-2r-6im"/>
-                                            </connections>
-                                        </button>
-                                        <button toolTip="Mute Video" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="LVS-yZ-98V" userLabel="Mute Video" customClass="IconButton">
-                                            <rect key="frame" x="170" y="13" width="40" height="40"/>
-                                            <constraints>
-                                                <constraint firstAttribute="height" constant="40" id="Qiq-Nb-gHN"/>
-                                                <constraint firstAttribute="width" constant="40" id="k3u-dD-eLF"/>
-                                            </constraints>
-                                            <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="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 toolTip="Toggle chat" wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fmp-x4-Pef" userLabel="Chat" customClass="IconButton">
-                                            <rect key="frame" x="370" y="13" width="40" height="40"/>
+                                            <rect key="frame" x="392" y="20" width="40" height="40"/>
                                             <constraints>
                                                 <constraint firstAttribute="width" constant="40" id="48U-1h-yAx"/>
                                                 <constraint firstAttribute="height" constant="40" id="EDO-9c-ndD"/>
@@ -327,26 +264,160 @@
                                                 <action selector="toggleChat:" target="-2" id="7HN-HS-oqT"/>
                                             </connections>
                                         </button>
+                                        <button toolTip="Mute Video" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="LVS-yZ-98V" userLabel="Mute Video" customClass="IconButton">
+                                            <rect key="frame" x="170" y="20" width="40" height="40"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="40" id="Qiq-Nb-gHN"/>
+                                                <constraint firstAttribute="width" constant="40" id="k3u-dD-eLF"/>
+                                            </constraints>
+                                            <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="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 toolTip="Add participant" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="kIZ-mf-moM" customClass="IconButton">
+                                            <rect key="frame" x="220" y="20" width="40" height="40"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="40" id="7qu-cd-B7J"/>
+                                                <constraint firstAttribute="width" constant="40" id="U4p-eV-iCZ"/>
+                                            </constraints>
+                                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_add_participant" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="BOx-wf-CM5">
+                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/>
+                                            </buttonCell>
+                                            <userDefinedRuntimeAttributes>
+                                                <userDefinedRuntimeAttribute type="color" keyPath="highlightColor">
+                                                    <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/>
+                                                </userDefinedRuntimeAttribute>
+                                                <userDefinedRuntimeAttribute type="color" keyPath="bgColor">
+                                                    <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/>
+                                                </userDefinedRuntimeAttribute>
+                                            </userDefinedRuntimeAttributes>
+                                            <connections>
+                                                <action selector="toggleAddParticipantView:" target="-2" id="v6X-2r-6im"/>
+                                            </connections>
+                                        </button>
+                                        <customView hidden="YES" translatesAutoresizingMaskIntoConstraints="NO" id="90B-Yc-WvN">
+                                            <rect key="frame" x="200" y="67" width="180" height="50"/>
+                                            <subviews>
+                                                <button toolTip="Record" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G0w-c3-9pJ" customClass="IconButton">
+                                                    <rect key="frame" x="70" y="5" width="40" height="40"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="40" id="XJ8-jj-wG5"/>
+                                                        <constraint firstAttribute="height" constant="40" id="jvT-Ng-6gJ"/>
+                                                    </constraints>
+                                                    <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_dialpad" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="iED-Le-DAL">
+                                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                        <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/>
+                                                    </buttonCell>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="imageInsets">
+                                                            <integer key="value" value="8"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="highlightColor">
+                                                            <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="bgColor">
+                                                            <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                    </userDefinedRuntimeAttributes>
+                                                    <connections>
+                                                        <action selector="showDialpad:" target="-2" id="30d-hA-dri"/>
+                                                    </connections>
+                                                </button>
+                                                <button toolTip="Transfer" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ChW-kg-Sja" customClass="IconButton">
+                                                    <rect key="frame" x="120" y="5" width="40" height="40"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="40" id="9zo-pq-mgF"/>
+                                                        <constraint firstAttribute="width" constant="40" id="EVF-UM-brL"/>
+                                                    </constraints>
+                                                    <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_transfer" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="FOs-Wt-c2R">
+                                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                        <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/>
+                                                    </buttonCell>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="imageInsets">
+                                                            <integer key="value" value="8"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="highlightColor">
+                                                            <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="bgColor">
+                                                            <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                    </userDefinedRuntimeAttributes>
+                                                    <connections>
+                                                        <action selector="toggleTransferView:" target="-2" id="Gxt-lS-qZs"/>
+                                                    </connections>
+                                                </button>
+                                                <button toolTip="Record" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oRa-pS-HN2" customClass="IconButton">
+                                                    <rect key="frame" x="20" y="5" width="40" height="40"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="40" id="5Yb-Ir-aNP"/>
+                                                        <constraint firstAttribute="height" constant="40" id="f6U-Sc-LhF"/>
+                                                    </constraints>
+                                                    <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="ic_action_record" imagePosition="overlaps" alignment="center" transparent="YES" imageScaling="proportionallyDown" id="rhz-4Z-avV">
+                                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                        <font key="font" size="10" name=".HelveticaNeueDeskInterface-Regular"/>
+                                                    </buttonCell>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="imageInsets">
+                                                            <integer key="value" value="8"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="highlightColor">
+                                                            <color key="value" red="0.16862745100000001" green="0.70588235290000001" blue="0.78823529410000004" alpha="1" colorSpace="calibratedRGB"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="bgColor">
+                                                            <color key="value" red="0.16078431369999999" green="0.16078431369999999" blue="0.16078431369999999" alpha="0.80000000000000004" colorSpace="calibratedRGB"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                    </userDefinedRuntimeAttributes>
+                                                    <connections>
+                                                        <action selector="toggleRecording:" target="-2" id="gAc-ZJ-9PN"/>
+                                                    </connections>
+                                                </button>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="180" id="Ayt-Of-VvM"/>
+                                                <constraint firstItem="G0w-c3-9pJ" firstAttribute="centerY" secondItem="90B-Yc-WvN" secondAttribute="centerY" id="HON-Cf-ocr"/>
+                                                <constraint firstItem="G0w-c3-9pJ" firstAttribute="centerX" secondItem="90B-Yc-WvN" secondAttribute="centerX" id="Pm2-Oe-NXk"/>
+                                                <constraint firstItem="ChW-kg-Sja" firstAttribute="centerY" secondItem="90B-Yc-WvN" secondAttribute="centerY" id="RvO-GS-F2C"/>
+                                                <constraint firstItem="oRa-pS-HN2" firstAttribute="leading" secondItem="90B-Yc-WvN" secondAttribute="leading" constant="20" id="eLs-tp-tUO"/>
+                                                <constraint firstItem="oRa-pS-HN2" firstAttribute="centerY" secondItem="90B-Yc-WvN" secondAttribute="centerY" id="gJE-Rv-ZAh"/>
+                                                <constraint firstAttribute="trailing" secondItem="ChW-kg-Sja" secondAttribute="trailing" constant="20" id="qrc-nL-ORI"/>
+                                                <constraint firstAttribute="height" constant="50" id="vLy-fg-Ts0"/>
+                                            </constraints>
+                                        </customView>
                                     </subviews>
                                     <constraints>
-                                        <constraint firstItem="ChW-kg-Sja" firstAttribute="centerY" secondItem="Eoi-B8-iL6" secondAttribute="centerY" id="006-Cv-8BS"/>
-                                        <constraint firstItem="LVS-yZ-98V" firstAttribute="centerY" secondItem="Eoi-B8-iL6" secondAttribute="centerY" id="6vE-ZU-Hu1"/>
                                         <constraint firstItem="tQl-cT-0Lb" firstAttribute="leading" secondItem="anb-Y8-JQi" secondAttribute="trailing" constant="10" id="7MF-DQ-Nb8"/>
-                                        <constraint firstItem="anb-Y8-JQi" firstAttribute="centerY" secondItem="Eoi-B8-iL6" secondAttribute="centerY" id="H6t-wo-Nap"/>
-                                        <constraint firstItem="Kjq-iM-NBL" firstAttribute="centerY" secondItem="Eoi-B8-iL6" secondAttribute="centerY" id="Qt4-Bh-Qef"/>
+                                        <constraint firstItem="VVL-A4-r7n" firstAttribute="centerY" secondItem="kIZ-mf-moM" secondAttribute="centerY" id="87p-Bt-9uI"/>
+                                        <constraint firstItem="LVS-yZ-98V" firstAttribute="centerY" secondItem="tQl-cT-0Lb" secondAttribute="centerY" id="AYj-Vt-7NL"/>
+                                        <constraint firstItem="VVL-A4-r7n" firstAttribute="leading" secondItem="kIZ-mf-moM" secondAttribute="trailing" constant="10" id="BKx-sU-jgs"/>
+                                        <constraint firstItem="VVL-A4-r7n" firstAttribute="centerX" secondItem="90B-Yc-WvN" secondAttribute="centerX" id="FRl-cK-7on"/>
+                                        <constraint firstAttribute="trailing" secondItem="fmp-x4-Pef" secondAttribute="trailing" constant="20" id="Mih-z5-5DI"/>
+                                        <constraint firstAttribute="bottom" secondItem="Kjq-iM-NBL" secondAttribute="bottom" constant="20" id="OcY-fg-QB8"/>
                                         <constraint firstItem="Kjq-iM-NBL" firstAttribute="leading" secondItem="Eoi-B8-iL6" secondAttribute="leading" constant="20" id="Rwo-8h-nvA"/>
                                         <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="385" id="TSJ-9A-brf"/>
-                                        <constraint firstItem="ChW-kg-Sja" firstAttribute="leading" secondItem="oRa-pS-HN2" secondAttribute="trailing" constant="10" id="edH-aj-21j"/>
-                                        <constraint firstItem="tQl-cT-0Lb" firstAttribute="centerY" secondItem="Eoi-B8-iL6" secondAttribute="centerY" id="hgC-Ud-ytJ"/>
-                                        <constraint firstItem="fmp-x4-Pef" firstAttribute="leading" secondItem="kIZ-mf-moM" secondAttribute="trailing" constant="10" id="jy9-gW-YmT"/>
-                                        <constraint firstItem="oRa-pS-HN2" firstAttribute="leading" secondItem="LVS-yZ-98V" secondAttribute="trailing" constant="10" id="k0b-zB-kn7"/>
-                                        <constraint firstItem="oRa-pS-HN2" firstAttribute="centerY" secondItem="Eoi-B8-iL6" secondAttribute="centerY" id="oGK-mj-vWq"/>
-                                        <constraint firstItem="kIZ-mf-moM" firstAttribute="centerY" secondItem="Eoi-B8-iL6" secondAttribute="centerY" id="rne-sf-Ccc"/>
-                                        <constraint firstItem="fmp-x4-Pef" firstAttribute="centerY" secondItem="Eoi-B8-iL6" secondAttribute="centerY" id="s1T-el-Q6J"/>
+                                        <constraint firstItem="90B-Yc-WvN" firstAttribute="top" secondItem="Eoi-B8-iL6" secondAttribute="top" constant="3" id="UeR-c9-imd"/>
+                                        <constraint firstItem="kIZ-mf-moM" firstAttribute="centerY" secondItem="LVS-yZ-98V" secondAttribute="centerY" id="cdg-7O-ise"/>
+                                        <constraint firstItem="kIZ-mf-moM" firstAttribute="leading" secondItem="LVS-yZ-98V" secondAttribute="trailing" constant="10" id="fcF-jl-uYt"/>
+                                        <constraint firstAttribute="bottom" secondItem="fmp-x4-Pef" secondAttribute="bottom" constant="20" id="pKU-g7-5wu"/>
+                                        <constraint firstItem="tQl-cT-0Lb" firstAttribute="centerY" secondItem="anb-Y8-JQi" secondAttribute="centerY" id="rZo-XU-yeF"/>
                                         <constraint firstItem="anb-Y8-JQi" firstAttribute="leading" secondItem="Kjq-iM-NBL" secondAttribute="trailing" constant="10" id="t5V-qu-Ssk"/>
                                         <constraint firstItem="LVS-yZ-98V" firstAttribute="leading" secondItem="tQl-cT-0Lb" secondAttribute="trailing" constant="10" id="v4N-af-SoV"/>
-                                        <constraint firstAttribute="height" constant="67" id="ynu-O5-MN8"/>
-                                        <constraint firstItem="kIZ-mf-moM" firstAttribute="leading" secondItem="ChW-kg-Sja" secondAttribute="trailing" constant="10" id="zP9-uu-hCy"/>
+                                        <constraint firstAttribute="height" constant="120" id="ynu-O5-MN8"/>
+                                        <constraint firstItem="anb-Y8-JQi" firstAttribute="centerY" secondItem="Kjq-iM-NBL" secondAttribute="centerY" id="zA4-c4-mEX"/>
                                     </constraints>
                                 </customView>
                                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="JwW-2h-DyZ" customClass="ITProgressIndicator">
@@ -460,8 +531,8 @@
                                         <constraint firstAttribute="height" constant="112" id="k2h-Lt-lIw"/>
                                     </constraints>
                                 </customView>
-                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="W4l-Be-bhM">
-                                    <rect key="frame" x="135" y="109" width="404" height="291"/>
+                                <customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="W4l-Be-bhM">
+                                    <rect key="frame" x="135" y="148" width="404" height="291"/>
                                     <subviews>
                                         <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9Cd-Vs-wtu">
                                             <rect key="frame" x="234" y="18" width="43" height="17"/>
@@ -758,6 +829,8 @@
         <image name="ic_action_mute_video" width="72" height="72"/>
         <image name="ic_action_record" width="54" height="54"/>
         <image name="ic_action_transfer" width="57.599998474121094" height="57.599998474121094"/>
+        <image name="ic_dialpad" width="72" height="72"/>
+        <image name="ic_more" width="72" height="72"/>
         <image name="ic_person_add" width="48" height="48"/>
     </resources>
 </document>
diff --git a/ui/Base.lproj/Dialpad.xib b/ui/Base.lproj/Dialpad.xib
new file mode 100644
index 0000000..b7b7448
--- /dev/null
+++ b/ui/Base.lproj/Dialpad.xib
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="16B2553a" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+        <capability name="Alignment constraints to the first baseline" minToolsVersion="6.0"/>
+        <capability name="Alignment constraints with different attributes" minToolsVersion="5.1"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="DialpadWC">
+            <connections>
+                <outlet property="composerField" destination="emT-N5-1YW" id="U9O-0X-Hok"/>
+                <outlet property="window" destination="vrA-VP-2Md" id="ufg-AW-usf"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <window title="Dial Pad" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" oneShot="NO" showsToolbarButton="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="vrA-VP-2Md" customClass="NSPanel">
+            <windowStyleMask key="styleMask" titled="YES" closable="YES" utility="YES" HUD="YES"/>
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+            <rect key="contentRect" x="618" y="354" width="202" height="224"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1440" height="900"/>
+            <view key="contentView" id="hfL-1D-aTf">
+                <rect key="frame" x="0.0" y="0.0" width="202" height="224"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dXV-3z-hW7">
+                        <rect key="frame" x="15" y="94" width="50" height="32"/>
+                        <buttonCell key="cell" type="push" title="4" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="GvJ-yA-EDa">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="dtmfPressed:" target="-2" id="Pe0-Ke-PPi"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zSt-EX-wEV">
+                        <rect key="frame" x="138" y="127" width="50" height="32"/>
+                        <buttonCell key="cell" type="push" title="3" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Hd9-Py-oob">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="dtmfPressed:" target="-2" id="WGx-BS-s0r"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uyy-Md-cVr">
+                        <rect key="frame" x="75" y="127" width="50" height="32"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="38" id="xaH-ec-YnR"/>
+                        </constraints>
+                        <buttonCell key="cell" type="push" title="2" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="anB-0b-8qb">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="dtmfPressed:" target="-2" id="QJf-mL-jcD"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IRc-3g-5NF">
+                        <rect key="frame" x="14" y="127" width="50" height="32"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="38" id="s3i-MG-TMl"/>
+                        </constraints>
+                        <buttonCell key="cell" type="push" title="1" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Mda-73-3kM">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="dtmfPressed:" target="-2" id="fa3-3t-QMw"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2WF-eN-2MS">
+                        <rect key="frame" x="75" y="94" width="50" height="32"/>
+                        <buttonCell key="cell" type="push" title="5" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="cXL-QF-edl">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="dtmfPressed:" target="-2" id="Ffb-QN-x4T"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3nO-ic-N80">
+                        <rect key="frame" x="138" y="94" width="50" height="32"/>
+                        <buttonCell key="cell" type="push" title="6" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ENK-x9-8ps">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="dtmfPressed:" target="-2" id="Yvp-hz-fiH"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Sxp-qZ-AE8">
+                        <rect key="frame" x="14" y="61" width="50" height="32"/>
+                        <buttonCell key="cell" type="push" title="7" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="4Dd-Ba-oRg">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="dtmfPressed:" target="-2" id="q1x-yK-Um0"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="FPI-UI-0xU">
+                        <rect key="frame" x="75" y="61" width="50" height="32"/>
+                        <buttonCell key="cell" type="push" title="8" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="CTZ-Rn-5oT">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="dtmfPressed:" target="-2" id="2NF-85-UB0"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2eC-wY-XJA">
+                        <rect key="frame" x="138" y="61" width="50" height="32"/>
+                        <buttonCell key="cell" type="push" title="9" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="TYj-va-kS8">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="dtmfPressed:" target="-2" id="A1H-or-Iw8"/>
+                        </connections>
+                    </button>
+                    <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="emT-N5-1YW">
+                        <rect key="frame" x="19" y="182" width="165" height="22"/>
+                        <textFieldCell key="cell" lineBreakMode="truncatingHead" sendsActionOnEndEditing="YES" state="on" alignment="right" id="xjf-UT-Ycf">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tUf-Uh-y46">
+                        <rect key="frame" x="138" y="28" width="50" height="32"/>
+                        <buttonCell key="cell" type="push" title="#" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="H5T-k1-cjZ">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="dtmfPressed:" target="-2" id="rbL-gv-gVd"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G5n-iK-rHb">
+                        <rect key="frame" x="15" y="28" width="50" height="32"/>
+                        <buttonCell key="cell" type="push" title="*" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6ZB-c1-gR6">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="dtmfPressed:" target="-2" id="Mqz-tu-Y9S"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b4a-jZ-6Vh">
+                        <rect key="frame" x="75" y="28" width="50" height="32"/>
+                        <buttonCell key="cell" type="push" title="0" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="u3Z-SY-MgY">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="dtmfPressed:" target="-2" id="8EU-G8-f0Q"/>
+                        </connections>
+                    </button>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="FPI-UI-0xU" firstAttribute="leading" secondItem="b4a-jZ-6Vh" secondAttribute="leading" id="1ag-9g-TAe"/>
+                    <constraint firstItem="IRc-3g-5NF" firstAttribute="baseline" secondItem="uyy-Md-cVr" secondAttribute="baseline" id="508-JY-NEq"/>
+                    <constraint firstItem="2WF-eN-2MS" firstAttribute="trailing" secondItem="FPI-UI-0xU" secondAttribute="trailing" id="5So-JG-Qez"/>
+                    <constraint firstItem="zSt-EX-wEV" firstAttribute="leading" secondItem="uyy-Md-cVr" secondAttribute="trailing" constant="25" id="ATL-zS-eci"/>
+                    <constraint firstItem="emT-N5-1YW" firstAttribute="centerX" secondItem="hfL-1D-aTf" secondAttribute="centerX" id="AbX-fM-F10"/>
+                    <constraint firstItem="dXV-3z-hW7" firstAttribute="trailing" secondItem="G5n-iK-rHb" secondAttribute="trailing" id="AmD-P6-Bex"/>
+                    <constraint firstItem="2WF-eN-2MS" firstAttribute="baseline" secondItem="3nO-ic-N80" secondAttribute="baseline" id="Bhi-PB-sI3"/>
+                    <constraint firstItem="dXV-3z-hW7" firstAttribute="top" secondItem="IRc-3g-5NF" secondAttribute="bottom" constant="12" symbolic="YES" id="Bq7-oq-8Up"/>
+                    <constraint firstItem="emT-N5-1YW" firstAttribute="leading" secondItem="dXV-3z-hW7" secondAttribute="leading" id="BqE-N2-9Xw"/>
+                    <constraint firstItem="dXV-3z-hW7" firstAttribute="centerY" secondItem="hfL-1D-aTf" secondAttribute="centerY" id="CdY-Ev-4J9"/>
+                    <constraint firstItem="zSt-EX-wEV" firstAttribute="leading" secondItem="3nO-ic-N80" secondAttribute="leading" id="F9T-fH-dID"/>
+                    <constraint firstItem="3nO-ic-N80" firstAttribute="leading" secondItem="2eC-wY-XJA" secondAttribute="leading" id="GaU-Ts-Qhn"/>
+                    <constraint firstItem="emT-N5-1YW" firstAttribute="trailing" secondItem="zSt-EX-wEV" secondAttribute="trailing" id="J8g-kT-3M0"/>
+                    <constraint firstItem="b4a-jZ-6Vh" firstAttribute="baseline" secondItem="tUf-Uh-y46" secondAttribute="baseline" id="Kg0-bZ-cGm"/>
+                    <constraint firstItem="IRc-3g-5NF" firstAttribute="leading" secondItem="Sxp-qZ-AE8" secondAttribute="leading" id="Kvm-fk-MFe"/>
+                    <constraint firstItem="IRc-3g-5NF" firstAttribute="top" secondItem="emT-N5-1YW" secondAttribute="bottom" constant="27" id="MXt-1H-2j6"/>
+                    <constraint firstItem="IRc-3g-5NF" firstAttribute="leading" secondItem="hfL-1D-aTf" secondAttribute="leading" constant="20" symbolic="YES" id="NTu-5k-cTf"/>
+                    <constraint firstItem="uyy-Md-cVr" firstAttribute="trailing" secondItem="2WF-eN-2MS" secondAttribute="trailing" id="PLK-9K-j7s"/>
+                    <constraint firstItem="uyy-Md-cVr" firstAttribute="leading" secondItem="2WF-eN-2MS" secondAttribute="leading" id="Q0d-rb-xFZ"/>
+                    <constraint firstItem="FPI-UI-0xU" firstAttribute="baseline" secondItem="2eC-wY-XJA" secondAttribute="baseline" id="Qk4-3p-2cf"/>
+                    <constraint firstAttribute="bottom" secondItem="G5n-iK-rHb" secondAttribute="bottom" constant="35" id="Vgw-Ns-3CQ"/>
+                    <constraint firstItem="uyy-Md-cVr" firstAttribute="leading" secondItem="IRc-3g-5NF" secondAttribute="trailing" constant="23" id="WaY-R8-AOD"/>
+                    <constraint firstItem="IRc-3g-5NF" firstAttribute="trailing" secondItem="Sxp-qZ-AE8" secondAttribute="trailing" id="X30-9U-wxP"/>
+                    <constraint firstItem="2WF-eN-2MS" firstAttribute="leading" secondItem="dXV-3z-hW7" secondAttribute="trailing" constant="22" id="XCz-p2-mpX"/>
+                    <constraint firstItem="zSt-EX-wEV" firstAttribute="trailing" secondItem="3nO-ic-N80" secondAttribute="trailing" id="aIg-QS-eG4"/>
+                    <constraint firstItem="uyy-Md-cVr" firstAttribute="baseline" secondItem="IRc-3g-5NF" secondAttribute="firstBaseline" id="b2f-BO-xex"/>
+                    <constraint firstItem="G5n-iK-rHb" firstAttribute="baseline" secondItem="b4a-jZ-6Vh" secondAttribute="baseline" id="fwH-d8-Opi"/>
+                    <constraint firstItem="Sxp-qZ-AE8" firstAttribute="baseline" secondItem="FPI-UI-0xU" secondAttribute="baseline" id="gak-87-jom"/>
+                    <constraint firstItem="FPI-UI-0xU" firstAttribute="trailing" secondItem="b4a-jZ-6Vh" secondAttribute="trailing" id="grA-W6-BIg"/>
+                    <constraint firstItem="2eC-wY-XJA" firstAttribute="trailing" secondItem="tUf-Uh-y46" secondAttribute="trailing" id="jiP-TS-SMp"/>
+                    <constraint firstItem="G5n-iK-rHb" firstAttribute="top" secondItem="Sxp-qZ-AE8" secondAttribute="bottom" constant="12" symbolic="YES" id="kN3-av-JuM"/>
+                    <constraint firstItem="uyy-Md-cVr" firstAttribute="baseline" secondItem="zSt-EX-wEV" secondAttribute="baseline" id="kpO-Kz-Js8"/>
+                    <constraint firstItem="dXV-3z-hW7" firstAttribute="baseline" secondItem="2WF-eN-2MS" secondAttribute="baseline" id="lSS-mi-Mau"/>
+                    <constraint firstItem="2WF-eN-2MS" firstAttribute="leading" secondItem="FPI-UI-0xU" secondAttribute="leading" id="lvT-sj-4Ts"/>
+                    <constraint firstAttribute="trailing" secondItem="emT-N5-1YW" secondAttribute="trailing" constant="20" symbolic="YES" id="nf1-dX-Pus"/>
+                    <constraint firstItem="3nO-ic-N80" firstAttribute="trailing" secondItem="2eC-wY-XJA" secondAttribute="trailing" id="pqk-AX-ozV"/>
+                    <constraint firstItem="2eC-wY-XJA" firstAttribute="leading" secondItem="tUf-Uh-y46" secondAttribute="leading" id="sSG-xY-tIm"/>
+                    <constraint firstItem="dXV-3z-hW7" firstAttribute="leading" secondItem="G5n-iK-rHb" secondAttribute="leading" id="sbO-UA-nW9"/>
+                    <constraint firstItem="emT-N5-1YW" firstAttribute="top" secondItem="hfL-1D-aTf" secondAttribute="top" constant="20" symbolic="YES" id="wnW-Ou-8bE"/>
+                    <constraint firstItem="Sxp-qZ-AE8" firstAttribute="top" secondItem="dXV-3z-hW7" secondAttribute="bottom" constant="12" symbolic="YES" id="zjb-cS-6Pu"/>
+                </constraints>
+            </view>
+            <connections>
+                <outlet property="delegate" destination="-2" id="lSe-XL-EXz"/>
+            </connections>
+            <point key="canvasLocation" x="98" y="312"/>
+        </window>
+    </objects>
+</document>