Using preferences instead of settings name. Alert for incompaitble plugins now has a button to show preferences

This commit is contained in:
Michael Starke
2019-02-08 15:04:16 +01:00
parent d3641af1fc
commit 00362bf33c
13 changed files with 126 additions and 69 deletions

View File

@@ -210,9 +210,9 @@
4C978E0D19AE54AB003067DF /* MPFlagsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */; }; 4C978E0D19AE54AB003067DF /* MPFlagsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */; };
4C9BFFFB1FD19B5400264B16 /* MPPrettyPasswordTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C9BFFFA1FD19B5400264B16 /* MPPrettyPasswordTransformer.m */; }; 4C9BFFFB1FD19B5400264B16 /* MPPrettyPasswordTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C9BFFFA1FD19B5400264B16 /* MPPrettyPasswordTransformer.m */; };
4CA08DA017A831B200A6544B /* MPAddEntryContextMenuDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA08D9F17A831B200A6544B /* MPAddEntryContextMenuDelegate.m */; }; 4CA08DA017A831B200A6544B /* MPAddEntryContextMenuDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA08D9F17A831B200A6544B /* MPAddEntryContextMenuDelegate.m */; };
4CA0B2ED15BCADAC00654E32 /* SettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CA0B2EC15BCADAC00654E32 /* SettingsWindow.xib */; }; 4CA0B2ED15BCADAC00654E32 /* PreferencesWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CA0B2EC15BCADAC00654E32 /* PreferencesWindow.xib */; };
4CA0B2F915BCAF6700654E32 /* MPGeneralSettingsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B2F815BCAF6700654E32 /* MPGeneralSettingsController.m */; }; 4CA0B2F915BCAF6700654E32 /* MPGeneralSettingsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B2F815BCAF6700654E32 /* MPGeneralSettingsController.m */; };
4CA0B2FC15BCAF8600654E32 /* MPSettingsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B2FB15BCAF8600654E32 /* MPSettingsWindowController.m */; }; 4CA0B2FC15BCAF8600654E32 /* MPPreferencesWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B2FB15BCAF8600654E32 /* MPPreferencesWindowController.m */; };
4CA0F3ED1A3074B50067C0E5 /* MPWindowTitleComboBoxDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0F3EC1A3074B50067C0E5 /* MPWindowTitleComboBoxDelegate.m */; }; 4CA0F3ED1A3074B50067C0E5 /* MPWindowTitleComboBoxDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0F3EC1A3074B50067C0E5 /* MPWindowTitleComboBoxDelegate.m */; };
4CA182741F963FF600DD4A4A /* MPTitlebarColorAccessoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA182721F963FF600DD4A4A /* MPTitlebarColorAccessoryViewController.m */; }; 4CA182741F963FF600DD4A4A /* MPTitlebarColorAccessoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA182721F963FF600DD4A4A /* MPTitlebarColorAccessoryViewController.m */; };
4CA182751F963FF600DD4A4A /* TitlebarColorAccessoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CA182731F963FF600DD4A4A /* TitlebarColorAccessoryViewController.xib */; }; 4CA182751F963FF600DD4A4A /* TitlebarColorAccessoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CA182731F963FF600DD4A4A /* TitlebarColorAccessoryViewController.xib */; };
@@ -724,12 +724,12 @@
4C9BFFFA1FD19B5400264B16 /* MPPrettyPasswordTransformer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPPrettyPasswordTransformer.m; sourceTree = "<group>"; }; 4C9BFFFA1FD19B5400264B16 /* MPPrettyPasswordTransformer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPPrettyPasswordTransformer.m; sourceTree = "<group>"; };
4CA08D9E17A831B200A6544B /* MPAddEntryContextMenuDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAddEntryContextMenuDelegate.h; sourceTree = "<group>"; }; 4CA08D9E17A831B200A6544B /* MPAddEntryContextMenuDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAddEntryContextMenuDelegate.h; sourceTree = "<group>"; };
4CA08D9F17A831B200A6544B /* MPAddEntryContextMenuDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAddEntryContextMenuDelegate.m; sourceTree = "<group>"; }; 4CA08D9F17A831B200A6544B /* MPAddEntryContextMenuDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAddEntryContextMenuDelegate.m; sourceTree = "<group>"; };
4CA0B2EC15BCADAC00654E32 /* SettingsWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SettingsWindow.xib; sourceTree = "<group>"; }; 4CA0B2EC15BCADAC00654E32 /* PreferencesWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PreferencesWindow.xib; sourceTree = "<group>"; };
4CA0B2F715BCAF6700654E32 /* MPGeneralSettingsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPGeneralSettingsController.h; sourceTree = "<group>"; }; 4CA0B2F715BCAF6700654E32 /* MPGeneralSettingsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPGeneralSettingsController.h; sourceTree = "<group>"; };
4CA0B2F815BCAF6700654E32 /* MPGeneralSettingsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPGeneralSettingsController.m; sourceTree = "<group>"; }; 4CA0B2F815BCAF6700654E32 /* MPGeneralSettingsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPGeneralSettingsController.m; sourceTree = "<group>"; };
4CA0B2FA15BCAF8600654E32 /* MPSettingsWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSettingsWindowController.h; sourceTree = "<group>"; }; 4CA0B2FA15BCAF8600654E32 /* MPPreferencesWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPreferencesWindowController.h; sourceTree = "<group>"; };
4CA0B2FB15BCAF8600654E32 /* MPSettingsWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSettingsWindowController.m; sourceTree = "<group>"; }; 4CA0B2FB15BCAF8600654E32 /* MPPreferencesWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPreferencesWindowController.m; sourceTree = "<group>"; };
4CA0B30D15BCB6FD00654E32 /* MPSettingsTab.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPSettingsTab.h; sourceTree = "<group>"; }; 4CA0B30D15BCB6FD00654E32 /* MPPreferencesTab.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPPreferencesTab.h; sourceTree = "<group>"; };
4CA0F3EB1A3074B50067C0E5 /* MPWindowTitleComboBoxDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPWindowTitleComboBoxDelegate.h; sourceTree = "<group>"; }; 4CA0F3EB1A3074B50067C0E5 /* MPWindowTitleComboBoxDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPWindowTitleComboBoxDelegate.h; sourceTree = "<group>"; };
4CA0F3EC1A3074B50067C0E5 /* MPWindowTitleComboBoxDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPWindowTitleComboBoxDelegate.m; sourceTree = "<group>"; }; 4CA0F3EC1A3074B50067C0E5 /* MPWindowTitleComboBoxDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPWindowTitleComboBoxDelegate.m; sourceTree = "<group>"; };
4CA182711F963FF600DD4A4A /* MPTitlebarColorAccessoryViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPTitlebarColorAccessoryViewController.h; sourceTree = "<group>"; }; 4CA182711F963FF600DD4A4A /* MPTitlebarColorAccessoryViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPTitlebarColorAccessoryViewController.h; sourceTree = "<group>"; };
@@ -1246,7 +1246,7 @@
name = "Supporting Files"; name = "Supporting Files";
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4C47D77718B37911002755E4 /* Settings */ = { 4C47D77718B37911002755E4 /* Preferences */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4CA0B2F715BCAF6700654E32 /* MPGeneralSettingsController.h */, 4CA0B2F715BCAF6700654E32 /* MPGeneralSettingsController.h */,
@@ -1268,7 +1268,7 @@
4CC663E5216F7A7100E33965 /* MPPluginRepositoryBrowserViewController.m */, 4CC663E5216F7A7100E33965 /* MPPluginRepositoryBrowserViewController.m */,
4CC663E6216F7A7100E33965 /* PluginRepositoryBrowserView.xib */, 4CC663E6216F7A7100E33965 /* PluginRepositoryBrowserView.xib */,
); );
name = Settings; name = Preferences;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4C4B7EF517A46815000234C7 /* Inspector */ = { 4C4B7EF517A46815000234C7 /* Inspector */ = {
@@ -1547,7 +1547,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4C5133861FA0C32C00C94C73 /* Accessory */, 4C5133861FA0C32C00C94C73 /* Accessory */,
4C47D77718B37911002755E4 /* Settings */, 4C47D77718B37911002755E4 /* Preferences */,
4C4B7EF517A46815000234C7 /* Inspector */, 4C4B7EF517A46815000234C7 /* Inspector */,
4C2E382416D1470200037A9D /* MPViewController.h */, 4C2E382416D1470200037A9D /* MPViewController.h */,
4C2E382516D1470200037A9D /* MPViewController.m */, 4C2E382516D1470200037A9D /* MPViewController.m */,
@@ -1605,7 +1605,7 @@
4CA0B30E15BCB70200654E32 /* Protocolls */ = { 4CA0B30E15BCB70200654E32 /* Protocolls */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4CA0B30D15BCB6FD00654E32 /* MPSettingsTab.h */, 4CA0B30D15BCB6FD00654E32 /* MPPreferencesTab.h */,
4C2B0B7419F66F6400E48913 /* MPTargetNodeResolving.h */, 4C2B0B7419F66F6400E48913 /* MPTargetNodeResolving.h */,
4C7679BC1D75E690001F33D6 /* MPModelChangeObserving.h */, 4C7679BC1D75E690001F33D6 /* MPModelChangeObserving.h */,
); );
@@ -1641,9 +1641,9 @@
4CE8247016E2E96500573141 /* Window Controller */ = { 4CE8247016E2E96500573141 /* Window Controller */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4CA0B2FA15BCAF8600654E32 /* MPSettingsWindowController.h */, 4CA0B2FA15BCAF8600654E32 /* MPPreferencesWindowController.h */,
4CA0B2FB15BCAF8600654E32 /* MPSettingsWindowController.m */, 4CA0B2FB15BCAF8600654E32 /* MPPreferencesWindowController.m */,
4CA0B2EC15BCADAC00654E32 /* SettingsWindow.xib */, 4CA0B2EC15BCADAC00654E32 /* PreferencesWindow.xib */,
4C83814015BF4677001AE468 /* MPDocumentWindowController.h */, 4C83814015BF4677001AE468 /* MPDocumentWindowController.h */,
4C83814115BF4677001AE468 /* MPDocumentWindowController.m */, 4C83814115BF4677001AE468 /* MPDocumentWindowController.m */,
4CD884B615BD47080042BBF8 /* DocumentWindow.xib */, 4CD884B615BD47080042BBF8 /* DocumentWindow.xib */,
@@ -1830,7 +1830,7 @@
4C3826B41AD04D8E007D7D67 /* 39_HistoryTemplate.pdf in Resources */, 4C3826B41AD04D8E007D7D67 /* 39_HistoryTemplate.pdf in Resources */,
4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */, 4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */,
4C3826CD1AD04D8E007D7D67 /* 66_MoneyTemplate.pdf in Resources */, 4C3826CD1AD04D8E007D7D67 /* 66_MoneyTemplate.pdf in Resources */,
4CA0B2ED15BCADAC00654E32 /* SettingsWindow.xib in Resources */, 4CA0B2ED15BCADAC00654E32 /* PreferencesWindow.xib in Resources */,
4C76155C1764C04C0015A1A6 /* GeneralSettings.xib in Resources */, 4C76155C1764C04C0015A1A6 /* GeneralSettings.xib in Resources */,
4CD884B715BD47080042BBF8 /* DocumentWindow.xib in Resources */, 4CD884B715BD47080042BBF8 /* DocumentWindow.xib in Resources */,
4C17F109184E6B6C00E85625 /* 30_TerminalTemplate.pdf in Resources */, 4C17F109184E6B6C00E85625 /* 30_TerminalTemplate.pdf in Resources */,
@@ -1987,7 +1987,7 @@
4C8F0C791FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m in Sources */, 4C8F0C791FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m in Sources */,
4C73B6F1215E64A7009787F7 /* MPWelcomeViewController.m in Sources */, 4C73B6F1215E64A7009787F7 /* MPWelcomeViewController.m in Sources */,
4C6B7C7D18BE7EB0001D5D77 /* MPDocument+History.m in Sources */, 4C6B7C7D18BE7EB0001D5D77 /* MPDocument+History.m in Sources */,
4CA0B2FC15BCAF8600654E32 /* MPSettingsWindowController.m in Sources */, 4CA0B2FC15BCAF8600654E32 /* MPPreferencesWindowController.m in Sources */,
4C4F72D118DF704400E8D378 /* DDHotKeyTextField.m in Sources */, 4C4F72D118DF704400E8D378 /* DDHotKeyTextField.m in Sources */,
4C8F0C6E1FCEE9B900BE157F /* MPPluginConstants.m in Sources */, 4C8F0C6E1FCEE9B900BE157F /* MPPluginConstants.m in Sources */,
4C83814215BF4677001AE468 /* MPDocumentWindowController.m in Sources */, 4C83814215BF4677001AE468 /* MPDocumentWindowController.m in Sources */,

View File

@@ -33,7 +33,7 @@
#import "MPPasswordCreatorViewController.h" #import "MPPasswordCreatorViewController.h"
#import "MPPluginHost.h" #import "MPPluginHost.h"
#import "MPSettingsHelper.h" #import "MPSettingsHelper.h"
#import "MPSettingsWindowController.h" #import "MPPreferencesWindowController.h"
#import "MPStringLengthValueTransformer.h" #import "MPStringLengthValueTransformer.h"
#import "MPPrettyPasswordTransformer.h" #import "MPPrettyPasswordTransformer.h"
#import "MPTemporaryFileStorageCenter.h" #import "MPTemporaryFileStorageCenter.h"
@@ -59,7 +59,7 @@ NSString *const MPDidChangeStoredKeyFilesSettings = @"com.hicknhack.macpass.MPDi
@property (strong) NSWindow *welcomeWindow; @property (strong) NSWindow *welcomeWindow;
@property (strong) IBOutlet NSWindow *passwordCreatorWindow; @property (strong) IBOutlet NSWindow *passwordCreatorWindow;
@property (strong, nonatomic) MPSettingsWindowController *settingsController; @property (strong, nonatomic) MPPreferencesWindowController *preferencesController;
@property (strong, nonatomic) MPPasswordCreatorViewController *passwordCreatorController; @property (strong, nonatomic) MPPasswordCreatorViewController *passwordCreatorController;
@end @end
@@ -228,10 +228,10 @@ NSString *const MPDidChangeStoredKeyFilesSettings = @"com.hicknhack.macpass.MPDi
#pragma mark - #pragma mark -
#pragma mark Actions #pragma mark Actions
- (void)showPreferences:(id)sender { - (void)showPreferences:(id)sender {
if(self.settingsController == nil) { if(self.preferencesController == nil) {
self.settingsController = [[MPSettingsWindowController alloc] init]; self.preferencesController = [[MPPreferencesWindowController alloc] init];
} }
[self.settingsController showSettings]; [self.preferencesController showPreferences];
} }
- (void)showPasswordCreator:(id)sender { - (void)showPasswordCreator:(id)sender {

View File

@@ -523,7 +523,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
} }
- (NSURL *)suggestedKeyURL { - (NSURL *)suggestedKeyURL {
MPAppDelegate *delegate = (MPAppDelegate *)[NSApp delegate]; MPAppDelegate *delegate = (MPAppDelegate *)NSApp.delegate;
if(!delegate.isAllowedToStoreKeyFile) { if(!delegate.isAllowedToStoreKeyFile) {
return nil; return nil;
} }
@@ -630,7 +630,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
if(!metaData.enforceMasterKeyChange) { if(!metaData.enforceMasterKeyChange) {
return NO; return NO;
} }
return ((24*60*60*metaData.masterKeyChangeEnforcementInterval) < -[metaData.masterKeyChanged timeIntervalSinceNow]); return ((24*60*60*metaData.masterKeyChangeEnforcementInterval) < - metaData.masterKeyChanged.timeIntervalSinceNow);
} }
- (BOOL)shouldRecommendPasswordChange { - (BOOL)shouldRecommendPasswordChange {
@@ -638,7 +638,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
if(!metaData.recommendMasterKeyChange) { if(!metaData.recommendMasterKeyChange) {
return NO; return NO;
} }
return ( (24*60*60*metaData.masterKeyChangeRecommendationInterval) < -[metaData.masterKeyChanged timeIntervalSinceNow]); return ( (24*60*60*metaData.masterKeyChangeRecommendationInterval) < - metaData.masterKeyChanged.timeIntervalSinceNow);
} }
#pragma mark Data manipulation #pragma mark Data manipulation

View File

@@ -22,9 +22,9 @@
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#import "MPViewController.h" #import "MPViewController.h"
#import "MPSettingsTab.h" #import "MPPreferencesTab.h"
@interface MPGeneralSettingsController : MPViewController <MPSettingsTab> @interface MPGeneralSettingsController : MPViewController <MPPreferencesTab>
@property (weak) IBOutlet NSButton *clearPasteboardOnQuitCheckButton; @property (weak) IBOutlet NSButton *clearPasteboardOnQuitCheckButton;
@property (weak) IBOutlet NSPopUpButton *clearPasteboardTimeoutPopup; @property (weak) IBOutlet NSPopUpButton *clearPasteboardTimeoutPopup;

View File

@@ -21,11 +21,11 @@
// //
#import "MPViewController.h" #import "MPViewController.h"
#import "MPSettingsTab.h" #import "MPPreferencesTab.h"
@class DDHotKeyTextField; @class DDHotKeyTextField;
@interface MPIntegrationSettingsController : MPViewController <MPSettingsTab, NSTextFieldDelegate> @interface MPIntegrationSettingsController : MPViewController <MPPreferencesTab, NSTextFieldDelegate>
/* Autotype */ /* Autotype */
@property (strong) IBOutlet NSButton *enableGlobalAutotypeCheckBox; @property (strong) IBOutlet NSButton *enableGlobalAutotypeCheckBox;
@property (strong) IBOutlet DDHotKeyTextField *hotKeyTextField; @property (strong) IBOutlet DDHotKeyTextField *hotKeyTextField;

View File

@@ -31,6 +31,7 @@
#import "MPPluginVersionComparator.h" #import "MPPluginVersionComparator.h"
#import "NSApplication+MPAdditions.h" #import "NSApplication+MPAdditions.h"
#import "MPAppDelegate.h"
#import "MPSettingsHelper.h" #import "MPSettingsHelper.h"
#import "NSError+Messages.h" #import "NSError+Messages.h"
@@ -286,7 +287,25 @@ NSString *const MPPluginHostPluginBundleIdentifiyerKey = @"MPPluginHostPluginBun
alert.informativeText = NSLocalizedString(@"ALERT_INCOMPATIBLE_PLUGINS_ENCOUNTERED_INFORMATIVE_TEXT", "Informative text of the alert displayed when plugins where disabled due to incompatibilty"); alert.informativeText = NSLocalizedString(@"ALERT_INCOMPATIBLE_PLUGINS_ENCOUNTERED_INFORMATIVE_TEXT", "Informative text of the alert displayed when plugins where disabled due to incompatibilty");
alert.alertStyle = NSAlertStyleWarning; alert.alertStyle = NSAlertStyleWarning;
alert.showsSuppressionButton = YES; alert.showsSuppressionButton = YES;
[alert runModal]; [alert addButtonWithTitle:NSLocalizedString(@"ALERT_INCOMPATIBLE_PLUGINS_ENCOUNTERED_BUTTON_OK", @"Button in dialog to leave plugin ds disabled and continiue!")];
[alert addButtonWithTitle:NSLocalizedString(@"ALERT_INCOMPATIBLE_PLUGINS_ENCOUNTERED_BUTTON_OPEN_PREFERENCES", @"Button in dialog to open plugin preferences pane!")];
NSModalResponse returnCode = [alert runModal];
//BOOL suppressWarning = (alert.suppressionButton.state == NSOnState);
//[NSUserDefaults.standardUserDefaults setBool:suppressWarning forKey:kMPSettingsKeyAutotypeHideAccessibiltyWarning];
switch(returnCode) {
case NSAlertFirstButtonReturn: {
/* ok, ignore */
break;
}
case NSAlertSecondButtonReturn:
/* open prefs */
[((MPAppDelegate *)NSApp.delegate) showPreferences:nil];
break;
default:
break;
}
} }
} }

View File

@@ -21,9 +21,9 @@
// //
#import "MPViewController.h" #import "MPViewController.h"
#import "MPSettingsTab.h" #import "MPPreferencesTab.h"
@interface MPPluginSettingsController : MPViewController <MPSettingsTab> @interface MPPluginSettingsController : MPViewController <MPPreferencesTab>
- (IBAction)addOrRemovePlugin:(id)sender; - (IBAction)addOrRemovePlugin:(id)sender;
- (IBAction)browsePlugins:(id)sender; - (IBAction)browsePlugins:(id)sender;

View File

@@ -26,7 +26,7 @@
Protrocoll to be implemented by ViewControllers that can be added to Protrocoll to be implemented by ViewControllers that can be added to
the settings windows. Tabs are ordered as the controllers are included. the settings windows. Tabs are ordered as the controllers are included.
*/ */
@protocol MPSettingsTab <NSObject> @protocol MPPreferencesTab <NSObject>
@required @required
@property (readonly, copy) NSString *identifier; @property (readonly, copy) NSString *identifier;

View File

@@ -22,11 +22,18 @@
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
@protocol MPSettingsTab; @protocol MPPreferencesTab;
@interface MPSettingsWindowController : NSWindowController <NSToolbarDelegate> typedef NS_ENUM(NSUInteger, MPPreferencesTab) {
MPPreferencesTabGeneral,
MPPreferencesTabWorkflow,
MPPreferencesTabUpdate,
MPPreferencesTabPlugins
};
- (void)showSettings; @interface MPPreferencesWindowController : NSWindowController <NSToolbarDelegate>
- (void)showSettingsTabWithIdentifier:(NSString *)identifier;
- (void)showPreferences;
- (void)showPreferencesTab:(MPPreferencesTab)tab;
@end @end

View File

@@ -20,40 +20,43 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
// //
#import "MPSettingsWindowController.h" #import "MPPreferencesWindowController.h"
#import "MPPreferencesTab.h"
#import "MPGeneralSettingsController.h" #import "MPGeneralSettingsController.h"
#import "MPIntegrationSettingsController.h" #import "MPIntegrationSettingsController.h"
#import "MPWorkflowSettingsController.h" #import "MPWorkflowSettingsController.h"
#import "MPUpdateSettingsController.h" #import "MPUpdateSettingsController.h"
#import "MPPluginSettingsController.h" #import "MPPluginSettingsController.h"
@interface MPSettingsWindowController () { @interface MPPreferencesWindowController () {
NSString *lastIdentifier; NSString *lastIdentifier;
} }
@property (strong, nonatomic) NSMutableDictionary *settingsController; @property (strong, nonatomic) NSMutableDictionary *preferencesController;
@property (strong, nonatomic) NSMutableDictionary *toolbarItems; @property (strong, nonatomic) NSMutableDictionary *toolbarItems;
@property (strong) NSArray *defaultToolbarItems; @property (strong) NSArray *defaultToolbarItems;
@end @end
@implementation MPSettingsWindowController @implementation MPPreferencesWindowController
- (NSString *)windowNibName { - (NSString *)windowNibName {
return @"SettingsWindow"; return @"PreferencesWindow";
} }
-(id)init { -(id)init {
self = [super initWithWindow:nil]; self = [super initWithWindow:nil];
if(self) { if(self) {
NSToolbar *tb = [[NSToolbar alloc] initWithIdentifier:@"SettingsToolBar"]; NSToolbar *tb = [[NSToolbar alloc] initWithIdentifier:@"PreferencesToolBar"];
tb.allowsUserCustomization = NO; tb.allowsUserCustomization = NO;
tb.displayMode = NSToolbarDisplayModeIconAndLabel; tb.displayMode = NSToolbarDisplayModeIconAndLabel;
_settingsController = [[NSMutableDictionary alloc] initWithCapacity:5]; _preferencesController = [[NSMutableDictionary alloc] initWithCapacity:5];
_toolbarItems = [[NSMutableDictionary alloc] initWithCapacity:5]; _toolbarItems = [[NSMutableDictionary alloc] initWithCapacity:5];
lastIdentifier = nil; lastIdentifier = nil;
[self _setupDefaultSettingsTabs]; [self _setupDefaultPreferencesTabs];
tb.delegate = self; tb.delegate = self;
self.window.toolbar = tb; self.window.toolbar = tb;
@@ -62,17 +65,17 @@
} }
- (void)showSettings { - (void)showPreferences {
if(self.defaultToolbarItems.count > 0) { if(self.defaultToolbarItems.count > 0) {
[self showSettingsTabWithIdentifier:self.defaultToolbarItems[0]]; [self _showPreferencesTabWithIdentifier:self.defaultToolbarItems[0]];
} }
} }
- (void)showSettingsTabWithIdentifier:(NSString *)identifier { - (void)_showPreferencesTabWithIdentifier:(NSString *)identifier {
if(nil == identifier) { if(nil == identifier) {
@throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Identifier cannot be nil" userInfo:nil]; @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Identifier cannot be nil" userInfo:nil];
} }
id<MPSettingsTab> tab = self.settingsController[identifier]; id<MPPreferencesTab> tab = self.preferencesController[identifier];
if(tab == nil){ if(tab == nil){
NSLog(@"Warning. Unknown settingscontroller for identifier: %@. Did you miss to add the controller?", identifier); NSLog(@"Warning. Unknown settingscontroller for identifier: %@. Did you miss to add the controller?", identifier);
return; return;
@@ -111,8 +114,35 @@
[self.window makeKeyAndOrderFront:nil]; [self.window makeKeyAndOrderFront:nil];
} }
- (void)_addSettingsTab:(id<MPSettingsTab>)tabController { - (void)showPreferencesTab:(MPPreferencesTab)tab {
if(NO == [tabController conformsToProtocol:@protocol(MPSettingsTab)]) { Class tabClass;
switch(tab) {
case MPPreferencesTabPlugins:
tabClass = MPPluginSettingsController.class;
break;
case MPPreferencesTabUpdate:
tabClass = MPUpdateSettingsController.class;
break;
case MPPreferencesTabWorkflow:
tabClass = MPWorkflowSettingsController.class;
break;
case MPPreferencesTabGeneral:
default:
tabClass = MPGeneralSettingsController.class;
break;
}
NSString *identifier;
for(id<MPPreferencesTab> tab in self.preferencesController) {
if([tab isKindOfClass:tabClass]) {
identifier = tab.identifier;
break;
}
}
[self _showPreferencesTabWithIdentifier:identifier];
}
- (void)_addSettingsTab:(id<MPPreferencesTab>)tabController {
if(NO == [tabController conformsToProtocol:@protocol(MPPreferencesTab)]) {
NSException *protocollException = [NSException exceptionWithName:NSInvalidArgumentException NSException *protocollException = [NSException exceptionWithName:NSInvalidArgumentException
reason:@"Controller must conform to MPSettingsTabProtrocoll" reason:@"Controller must conform to MPSettingsTabProtrocoll"
userInfo:nil]; userInfo:nil];
@@ -125,22 +155,22 @@
@throw controllerException; @throw controllerException;
} }
NSString *identifier = tabController.identifier; NSString *identifier = tabController.identifier;
if(nil != self.settingsController[identifier]) { if(nil != self.preferencesController[identifier]) {
NSLog(@"Warning: Settingscontroller with identifier %@ already present!", identifier); NSLog(@"Warning: Settingscontroller with identifier %@ already present!", identifier);
} }
else { else {
self.settingsController[identifier] = tabController; self.preferencesController[identifier] = tabController;
} }
} }
- (void)_setupDefaultSettingsTabs { - (void)_setupDefaultPreferencesTabs {
NSArray *controllers = @[ [[MPGeneralSettingsController alloc] init], NSArray *controllers = @[ [[MPGeneralSettingsController alloc] init],
[[MPIntegrationSettingsController alloc] init], [[MPIntegrationSettingsController alloc] init],
[[MPWorkflowSettingsController alloc] init], [[MPWorkflowSettingsController alloc] init],
[[MPUpdateSettingsController alloc] init], [[MPUpdateSettingsController alloc] init],
[[MPPluginSettingsController alloc] init] ]; [[MPPluginSettingsController alloc] init] ];
NSMutableArray *identifier = [[NSMutableArray alloc] initWithCapacity:controllers.count]; NSMutableArray *identifier = [[NSMutableArray alloc] initWithCapacity:controllers.count];
for(id<MPSettingsTab> controller in controllers) { for(id<MPPreferencesTab> controller in controllers) {
[self _addSettingsTab:controller]; [self _addSettingsTab:controller];
[identifier addObject:controller.identifier]; [identifier addObject:controller.identifier];
} }
@@ -150,14 +180,14 @@
- (void)_showSettingsTab:(id)sender { - (void)_showSettingsTab:(id)sender {
if([sender respondsToSelector:@selector(itemIdentifier)]) { if([sender respondsToSelector:@selector(itemIdentifier)]) {
NSString *identfier = [sender itemIdentifier]; NSString *identfier = [sender itemIdentifier];
[self showSettingsTabWithIdentifier:identfier]; [self _showPreferencesTabWithIdentifier:identfier];
} }
} }
#pragma mark NSToolbarDelegate #pragma mark NSToolbarDelegate
- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar { - (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar {
return self.settingsController.allKeys; return self.preferencesController.allKeys;
} }
- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar { - (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar {
@@ -165,7 +195,7 @@
} }
- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar { - (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar {
return self.settingsController.allKeys; return self.preferencesController.allKeys;
} }
- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag { - (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag {
@@ -176,7 +206,7 @@
Setup the item to use the controllers label if one is present Setup the item to use the controllers label if one is present
and supports the appropriate @optional protocol messages and supports the appropriate @optional protocol messages
*/ */
id<MPSettingsTab> tab = self.settingsController[itemIdentifier]; id<MPPreferencesTab> tab = self.preferencesController[itemIdentifier];
if([tab respondsToSelector:@selector(label)]) { if([tab respondsToSelector:@selector(label)]) {
item.label = [tab label]; item.label = [tab label];
} }

View File

@@ -21,8 +21,8 @@
// //
#import "MPViewController.h" #import "MPViewController.h"
#import "MPSettingsTab.h" #import "MPPreferencesTab.h"
@interface MPUpdateSettingsController : MPViewController <MPSettingsTab> @interface MPUpdateSettingsController : MPViewController <MPPreferencesTab>
@end @end

View File

@@ -21,9 +21,9 @@
// //
#import "MPViewController.h" #import "MPViewController.h"
#import "MPSettingsTab.h" #import "MPPreferencesTab.h"
@interface MPWorkflowSettingsController : MPViewController <MPSettingsTab> @interface MPWorkflowSettingsController : MPViewController <MPPreferencesTab>
@property (weak) IBOutlet NSPopUpButton *browserPopup; @property (weak) IBOutlet NSPopUpButton *browserPopup;
@property (weak) IBOutlet NSPopUpButton *doubleClickURLPopup; @property (weak) IBOutlet NSPopUpButton *doubleClickURLPopup;

View File

@@ -1,18 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12121" systemVersion="16F73" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12121"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
<customObject id="-2" userLabel="File's Owner" customClass="MPSettingsWindowController"> <customObject id="-2" userLabel="File's Owner" customClass="MPPreferencesWindowController">
<connections> <connections>
<outlet property="window" destination="1" id="3"/> <outlet property="window" destination="1" id="3"/>
</connections> </connections>
</customObject> </customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" showsToolbarButton="NO" visibleAtLaunch="NO" animationBehavior="default" id="1"> <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/> <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<rect key="contentRect" x="196" y="240" width="400" height="300"/> <rect key="contentRect" x="196" y="240" width="400" height="300"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/> <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>