ui: refactor preferences
- use a different window to display preferences. This allows proper window
resizing when switching between panels.
- remove the Setting button from the main interface (and the toolbar).
Issue: #80238
Change-Id: I220bfb3e92cdd426c721b3b5b1b44014a399fb48
diff --git a/src/RingWindowController.mm b/src/RingWindowController.mm
index 8b4036d..b6a0166 100644
--- a/src/RingWindowController.mm
+++ b/src/RingWindowController.mm
@@ -28,32 +28,29 @@
#import "Constants.h"
#import "CurrentCallVC.h"
+#import "PreferencesWC.h"
+#import "views/NSColor+RingTheme.h"
-@interface RingWindowController ()
+@implementation RingWindowController {
-@property CurrentCallVC* currentVC;
-@property (unsafe_unretained) IBOutlet NSView *callView;
-@property (unsafe_unretained) IBOutlet NSTextField *ringIDLabel;
+ __unsafe_unretained IBOutlet NSView *callView;
+ __unsafe_unretained IBOutlet NSTextField *ringIDLabel;
-
-@end
-
-@implementation RingWindowController
-@synthesize currentVC;
-@synthesize callView, ringIDLabel;
+ PreferencesWC *preferencesWC;
+ CurrentCallVC* currentVC;
+}
static NSString* const kPreferencesIdentifier = @"PreferencesIdentifier";
- (void)windowDidLoad {
[super windowDidLoad];
[self.window setMovableByWindowBackground:YES];
- [self displayMainToolBar];
currentVC = [[CurrentCallVC alloc] initWithNibName:@"CurrentCall" bundle:nil];
[callView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
[[currentVC view] setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
- [callView addSubview:[self.currentVC view] positioned:NSWindowAbove relativeTo:nil];
+ [callView addSubview:[currentVC view] positioned:NSWindowAbove relativeTo:nil];
[currentVC initFrame];
@@ -99,149 +96,8 @@
- (IBAction)openPreferences:(id)sender
{
- if(self.preferencesViewController != nil) {
- [self closePreferences:nil];
- return;
- }
- NSToolbar* tb = [[NSToolbar alloc] initWithIdentifier: @"PreferencesToolbar"];
-
- self.preferencesViewController = [[PreferencesVC alloc] initWithNibName:@"PreferencesScreen" bundle:nil];
- self.myCurrentViewController = self.preferencesViewController;
-
- NSLayoutConstraint* test = [NSLayoutConstraint constraintWithItem:self.preferencesViewController.view
- attribute:NSLayoutAttributeWidth
- relatedBy:NSLayoutRelationEqual
- toItem:currentView
- attribute:NSLayoutAttributeWidth
- multiplier:1.0f
- constant:0.0f];
-
- NSLayoutConstraint* test2 = [NSLayoutConstraint constraintWithItem:self.preferencesViewController.view
- attribute:NSLayoutAttributeHeight
- relatedBy:NSLayoutRelationEqual
- toItem:currentView
- attribute:NSLayoutAttributeHeight
- multiplier:1.0f
- constant:0.0f];
-
- NSLayoutConstraint* test3 = [NSLayoutConstraint constraintWithItem:self.preferencesViewController.view
- attribute:NSLayoutAttributeCenterX
- relatedBy:NSLayoutRelationEqual
- toItem:currentView
- attribute:NSLayoutAttributeCenterX
- multiplier:1.0f
- constant:0.0f];
-
-
- [currentView addSubview:[self.preferencesViewController view]];
-
- [tb setDelegate: self.preferencesViewController];
- [self.window setToolbar: tb];
-
- [self.window.toolbar setSelectedItemIdentifier:@"GeneralPrefsIdentifier"];
-
- [currentView addConstraint:test];
- [currentView addConstraint:test2];
- [currentView addConstraint:test3];
- // make sure we automatically resize the controller's view to the current window size
- [[self.myCurrentViewController view] setFrame:[currentView bounds]];
-
- // set the view controller's represented object to the number of subviews in that controller
- // (our NSTextField's value binding will reflect this value)
- [self.myCurrentViewController setRepresentedObject:[NSNumber numberWithUnsignedInteger:[[[self.myCurrentViewController view] subviews] count]]];
-
+ preferencesWC = [[PreferencesWC alloc] initWithWindowNibName:@"PreferencesWindow"];
+ [preferencesWC.window makeKeyAndOrderFront:preferencesWC.window];
}
-- (IBAction) closePreferences:(NSToolbarItem *)sender {
- if(self.myCurrentViewController != nil)
- {
- [self.preferencesViewController close];
- [self displayMainToolBar];
- self.preferencesViewController = nil;
- }
-}
-
--(void) displayMainToolBar
-{
- NSToolbar* tb = [[NSToolbar alloc] initWithIdentifier: @"MainToolbar"];
- [tb setDisplayMode:NSToolbarDisplayModeIconAndLabel];
- [tb setDelegate: self];
- [self.window setToolbar: tb];
-}
-
-// FIXME: This is sick, NSWindowController is catching my selectors
-- (void)displayGeneral:(NSToolbarItem *)sender {
- [self.preferencesViewController displayGeneral:sender];
-}
-
-- (void)displayAudio:(NSToolbarItem *)sender {
- [self.preferencesViewController displayAudio:sender];
-}
-
-- (void)displayAncrage:(NSToolbarItem *)sender {
- [self.preferencesViewController displayAncrage:sender];
-}
-
-- (void)displayVideo:(NSToolbarItem *)sender {
- [self.preferencesViewController displayVideo:sender];
-}
-
-- (void)displayAccounts:(NSToolbarItem *)sender {
- [self.preferencesViewController displayAccounts:sender];
-}
-
-- (void)togglePowerSettings:(id)sender
-{
- BOOL advanced = [[NSUserDefaults standardUserDefaults] boolForKey:Preferences::ShowAdvanced];
- [[NSUserDefaults standardUserDefaults] setBool:!advanced forKey:Preferences::ShowAdvanced];
- [[NSUserDefaults standardUserDefaults] synchronize];
-
- NSToolbar* tb = [[NSToolbar alloc] initWithIdentifier: @"PreferencesToolbar"];
- [tb setDelegate: self.preferencesViewController];
- [self.preferencesViewController displayGeneral:nil];
- [self.window setToolbar:tb];
-}
-
-#pragma mark - NSToolbar Delegate
-
--(NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag
-{
- NSToolbarItem* item = nil;
-
- if ([itemIdentifier isEqualToString: kPreferencesIdentifier]) {
- item = [[NSToolbarItem alloc] initWithItemIdentifier: kPreferencesIdentifier];
- [item setImage: [NSImage imageNamed: @"NSAdvanced"]];
- [item setLabel: @"Settings"];
- [item setAction:@selector(openPreferences:)];
- }
-
- return item;
-}
-
-
--(NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar*)toolbar
-{
- return [NSArray arrayWithObjects:
- NSToolbarSpaceItemIdentifier,
- NSToolbarFlexibleSpaceItemIdentifier,
- NSToolbarSpaceItemIdentifier,
- NSToolbarSpaceItemIdentifier,
- NSToolbarFlexibleSpaceItemIdentifier,
- kPreferencesIdentifier,
- nil];
-}
-
--(NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar
-{
- return [NSArray arrayWithObjects:
- kPreferencesIdentifier,
- nil];
-}
-
--(NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar*)toolbar
-{
- return nil;
-}
-
-
@end