ui: add account screen management

    - ability to create SIP/IAX/RING accounts
    - add configuration panels: security panel needs to be discussed
    - some settings may change

    Refs #67077

Change-Id: I17afbcbbd067bf75f381492997ad40a72703cf0f
diff --git a/PreferencesViewController.mm b/PreferencesViewController.mm
index d436dd5..103baa4 100644
--- a/PreferencesViewController.mm
+++ b/PreferencesViewController.mm
@@ -31,6 +31,9 @@
 
 #import <QuartzCore/QuartzCore.h>
 
+#include <accountmodel.h>
+
+#import "AccountsVC.h"
 #import "GeneralPrefsVC.h"
 #import "AudioPrefsVC.h"
 #import "VideoPrefsVC.h"
@@ -41,6 +44,7 @@
 
 @implementation PreferencesViewController
 
+static NSString* const kProfilePrefsIdentifier = @"ProfilesPrefsIdentifier";
 static NSString* const kGeneralPrefsIdentifier = @"GeneralPrefsIdentifier";
 static NSString* const kAudioPrefsIdentifer = @"AudioPrefsIdentifer";
 static NSString* const kAncragePrefsIdentifer = @"AncragePrefsIdentifer";
@@ -60,6 +64,8 @@
     // the initialization method of a NSView subclass instead of here.
     self.view.layerContentsRedrawPolicy = NSViewLayerContentsRedrawDuringViewResize;
 
+    [self.view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
+
     CGRect frame = CGRectOffset(self.view.frame, 0, -self.view.frame.size.height);
 
     CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
@@ -75,7 +81,9 @@
 
 - (void) close
 {
-    NSLog(@"closingprefs");
+
+    AccountModel::instance()->save();
+
     CGRect frame = CGRectOffset(self.view.frame, 0, -self.view.frame.size.height);
 
     [CATransaction begin];
@@ -95,7 +103,6 @@
 }
 
 - (void)displayGeneral:(NSToolbarItem *)sender {
-    NSLog(@"GEEENERALL");
     if (self.currentVC != nil) {
         [self.currentVC.view removeFromSuperview];
     }
@@ -129,6 +136,16 @@
     self.currentVC = self.videoPrefsVC;
 }
 
+- (void) displayAccounts:(NSToolbarItem *) sender {
+    if (self.currentVC != nil) {
+        [self.currentVC.view removeFromSuperview];
+    }
+    self.accountsPrefsVC = [[AccountsVC alloc] initWithNibName:@"Accounts" bundle:nil];
+    [self.view addSubview:self.accountsPrefsVC.view];
+    [self.accountsPrefsVC.view setFrame:[self.view bounds]];
+    self.currentVC = self.accountsPrefsVC;
+}
+
 
 #pragma NSToolbar Delegate
 
@@ -136,6 +153,14 @@
 {
     NSToolbarItem* item = nil;
 
+    if ([itemIdentifier isEqualToString: kProfilePrefsIdentifier]) {
+
+        item = [[NSToolbarItem alloc] initWithItemIdentifier: kProfilePrefsIdentifier];
+        [item setImage: [NSImage imageNamed: @"NSUserAccounts"]];
+        [item setLabel: @"Accounts"];
+        [item setAction:@selector(displayAccounts:)];
+    }
+
     if ([itemIdentifier isEqualToString: kGeneralPrefsIdentifier]) {
         item = [[NSToolbarItem alloc] initWithItemIdentifier: kGeneralPrefsIdentifier];
         [item setImage: [NSImage imageNamed: @"general"]];
@@ -150,12 +175,12 @@
         [item setAction:@selector(displayAudio:)];
     }
 
-    if ([itemIdentifier isEqualToString: kAncragePrefsIdentifer]) {
-        item = [[NSToolbarItem alloc] initWithItemIdentifier: kAncragePrefsIdentifer];
-        [item setImage: [NSImage imageNamed: @"ancrage"]];
-        [item setLabel: @"Ancrage"];
-        [item setAction:@selector(displayAncrage:)];
-    }
+//    if ([itemIdentifier isEqualToString: kAncragePrefsIdentifer]) {
+//        item = [[NSToolbarItem alloc] initWithItemIdentifier: kAncragePrefsIdentifer];
+//        [item setImage: [NSImage imageNamed: @"ancrage"]];
+//        [item setLabel: @"Ancrage"];
+//        [item setAction:@selector(displayAncrage:)];
+//    }
 
     if ([itemIdentifier isEqualToString: kDonePrefsIdentifer]) {
         item = [[NSToolbarItem alloc] initWithItemIdentifier: kDonePrefsIdentifer];
@@ -180,10 +205,11 @@
     return [NSArray arrayWithObjects:
             NSToolbarSpaceItemIdentifier,
             NSToolbarFlexibleSpaceItemIdentifier,
+            kProfilePrefsIdentifier,
             kGeneralPrefsIdentifier,
             kAudioPrefsIdentifer,
             kVideoPrefsIdentifer,
-            kAncragePrefsIdentifer,
+ //           kAncragePrefsIdentifer,
             NSToolbarFlexibleSpaceItemIdentifier,
             kDonePrefsIdentifer,
             nil];
@@ -192,9 +218,10 @@
 -(NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar
 {
     return [NSArray arrayWithObjects:
+            kProfilePrefsIdentifier,
             kGeneralPrefsIdentifier,
             kAudioPrefsIdentifer,
-            kAncragePrefsIdentifer,
+ //           kAncragePrefsIdentifer,
             kVideoPrefsIdentifer,
             nil];
 }