diff --git a/MacPass.xcodeproj/project.pbxproj b/MacPass.xcodeproj/project.pbxproj index fb16eaf4..2fc3984c 100644 --- a/MacPass.xcodeproj/project.pbxproj +++ b/MacPass.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ 4C00E33817D8FA3500F37192 /* DDHotKeyCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C00E33717D8FA3500F37192 /* DDHotKeyCenter.m */; }; 4C00E33B17D8FAC100F37192 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C00E33A17D8FAC100F37192 /* Carbon.framework */; }; 4C01C2421764D8980016D5D0 /* MPContextMenuHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */; }; + 4C06B17F21D9691F00CD4BBC /* MPPluginStatusTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C06B17E21D9691F00CD4BBC /* MPPluginStatusTableCellView.m */; }; 4C0728BD17B5B7F7005A7DD9 /* MPPasswordEditWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0728BC17B5B7F7005A7DD9 /* MPPasswordEditWindowController.m */; }; 4C0728BF17B68ED0005A7DD9 /* SavePanelAccessoryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C0728BE17B68ED0005A7DD9 /* SavePanelAccessoryView.xib */; }; 4C08ACEA204F01C700863D99 /* keyboardTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C08ACE9204F01C700863D99 /* keyboardTemplate.pdf */; }; @@ -335,6 +336,8 @@ 4C00E33A17D8FAC100F37192 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; 4C01C2401764D8980016D5D0 /* MPContextMenuHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = MPContextMenuHelper.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = MPContextMenuHelper.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 4C06B17D21D9691F00CD4BBC /* MPPluginStatusTableCellView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPPluginStatusTableCellView.h; sourceTree = ""; }; + 4C06B17E21D9691F00CD4BBC /* MPPluginStatusTableCellView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPPluginStatusTableCellView.m; sourceTree = ""; }; 4C0728BB17B5B7F7005A7DD9 /* MPPasswordEditWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasswordEditWindowController.h; sourceTree = ""; }; 4C0728BC17B5B7F7005A7DD9 /* MPPasswordEditWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasswordEditWindowController.m; sourceTree = ""; }; 4C0728BE17B68ED0005A7DD9 /* SavePanelAccessoryView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SavePanelAccessoryView.xib; sourceTree = ""; }; @@ -1062,6 +1065,8 @@ 4C0F043F2147A6FA000B8568 /* MPCustomFieldTableView.m */, 4C370EFC215B76CB00703AAE /* MPOutlineTableCellView.h */, 4C370EFD215B76CB00703AAE /* MPOutlineTableCellView.m */, + 4C06B17D21D9691F00CD4BBC /* MPPluginStatusTableCellView.h */, + 4C06B17E21D9691F00CD4BBC /* MPPluginStatusTableCellView.m */, ); name = Views; sourceTree = ""; @@ -2047,6 +2052,7 @@ 4C9BFFFB1FD19B5400264B16 /* MPPrettyPasswordTransformer.m in Sources */, 4CA0F3ED1A3074B50067C0E5 /* MPWindowTitleComboBoxDelegate.m in Sources */, 4CF78064176E75AD0032EE71 /* MPIntegrationSettingsController.m in Sources */, + 4C06B17F21D9691F00CD4BBC /* MPPluginStatusTableCellView.m in Sources */, 4C25703F1BF11C2300D39416 /* MPPluginSettingsController.m in Sources */, 4CF6C711176F4533007A811D /* MPStringLengthValueTransformer.m in Sources */, 4C349A00218852160055AF45 /* MPKeyTyper.m in Sources */, diff --git a/MacPass/MPPluginRepositoryBrowserViewController.m b/MacPass/MPPluginRepositoryBrowserViewController.m index feed3383..b660d6b7 100644 --- a/MacPass/MPPluginRepositoryBrowserViewController.m +++ b/MacPass/MPPluginRepositoryBrowserViewController.m @@ -12,6 +12,7 @@ #import "MPPluginRepository.h" #import "MPPluginRepositoryItem.h" #import "MPPluginVersionComparator.h" +#import "MPPluginStatusTableCellView.h" typedef NS_ENUM(NSUInteger, MPPluginTableColumn) { @@ -65,14 +66,19 @@ typedef NS_ENUM(NSUInteger, MPPluginTableColumn) { view.textField.stringValue = item.currentVersion; } else if(column == MPPluginTableColumnStatus) { + MPPluginStatusTableCellView *statusView = (MPPluginStatusTableCellView *)view; + statusView.actionButton.hidden = NO; MPPlugin *plugin = [MPPluginHost.sharedHost pluginWithBundleIdentifier:item.bundleIdentifier]; if(plugin) { switch([MPPluginVersionComparator compareVersion:plugin.shortVersionString toVersion:item.currentVersion]) { case NSOrderedSame: view.textField.stringValue = [NSString stringWithFormat:NSLocalizedString(@"PLUGIN_BROWSER_LATEST_VERSION_INSTALLED", "Status for an up-to-date plugin in the plugin browser")]; + statusView.actionButton.hidden = YES; + statusView.actionButton.title = @""; break; case NSOrderedAscending: view.textField.stringValue = [NSString stringWithFormat:NSLocalizedString(@"PLUGIN_BROWSER_NEWER_VERSION_%@_AVAILABLE", "Status for an outdated plugin version in the plugin browser"), item.currentVersion]; + statusView.actionButton.title = NSLocalizedString(@"PLUGIN_BROWSER_UPDATE_VERSION_BUTTON", "Button to update the Plugin to the current version"); break; case NSOrderedDescending: view.textField.stringValue = [NSString stringWithFormat:NSLocalizedString(@"PLUGIN_BROWSER_UNKNOWN_PLUGIN_VERSION_INSTALLED_%@", "Status for an unkonw plugin version in the plugin browser"), plugin.shortVersionString]; @@ -80,6 +86,9 @@ typedef NS_ENUM(NSUInteger, MPPluginTableColumn) { } } else { + MPPluginStatusTableCellView *statusView = (MPPluginStatusTableCellView *)view; + statusView.actionButton.hidden = NO; + statusView.actionButton.title = NSLocalizedString(@"PLUGIN_BROWSER_INSTALL_PLUGIN_BUTTON", "Install plugin"); view.textField.stringValue = [NSString stringWithFormat:NSLocalizedString(@"PLUGIN_BROWSER_PLUGIN_NOT_INSTALLED", "Status for an uninstalled plugin in the plugin browser")]; } } diff --git a/MacPass/MPPluginStatusTableCellView.h b/MacPass/MPPluginStatusTableCellView.h new file mode 100644 index 00000000..bbb9954a --- /dev/null +++ b/MacPass/MPPluginStatusTableCellView.h @@ -0,0 +1,19 @@ +// +// MPPluginStatusTableCellView.h +// MacPass +// +// Created by Michael Starke on 30.12.18. +// Copyright © 2018 HicknHack Software GmbH. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MPPluginStatusTableCellView : NSTableCellView + +@property (strong) IBOutlet NSButton *actionButton; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MacPass/MPPluginStatusTableCellView.m b/MacPass/MPPluginStatusTableCellView.m new file mode 100644 index 00000000..08999058 --- /dev/null +++ b/MacPass/MPPluginStatusTableCellView.m @@ -0,0 +1,13 @@ +// +// MPPluginStatusTableCellView.m +// MacPass +// +// Created by Michael Starke on 30.12.18. +// Copyright © 2018 HicknHack Software GmbH. All rights reserved. +// + +#import "MPPluginStatusTableCellView.h" + +@implementation MPPluginStatusTableCellView + +@end diff --git a/MacPass/PluginRepositoryBrowserView.xib b/MacPass/PluginRepositoryBrowserView.xib index 6f52f320..fdb2a9b7 100644 --- a/MacPass/PluginRepositoryBrowserView.xib +++ b/MacPass/PluginRepositoryBrowserView.xib @@ -111,21 +111,35 @@ - + - - - + + + + + + + + + + + @@ -142,7 +156,7 @@ - + @@ -211,7 +225,7 @@ - +