Updated Localization

Added configureable Table headers in Entry view
This commit is contained in:
michael starke
2013-07-31 02:50:13 +02:00
parent 31f456929c
commit 780c8782e6
16 changed files with 204 additions and 81 deletions

View File

@@ -168,6 +168,7 @@
4C67D33017981A2B00A7BDFC /* HNHTokenField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C67D32F17981A2B00A7BDFC /* HNHTokenField.m */; };
4C67D33317981ABA00A7BDFC /* HNHTokenFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C67D33217981ABA00A7BDFC /* HNHTokenFieldCell.m */; };
4C69A73A16D589DF00EC1B1A /* HNHGradientView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C69A73916D589DF00EC1B1A /* HNHGradientView.m */; };
4C6BEA3117A88E6C00CF69A8 /* MPStripLineBreaksTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6BEA3017A88E6C00CF69A8 /* MPStripLineBreaksTransformer.m */; };
4C6D1D25178579570014C5A5 /* 48_FolderTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C6D1D24178579570014C5A5 /* 48_FolderTemplate.pdf */; };
4C6D1D27178586CA0014C5A5 /* 99_AddFolderTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C6D1D26178586CA0014C5A5 /* 99_AddFolderTemplate.pdf */; };
4C6D1D2B17858A250014C5A5 /* MacPass.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4C6D1D2A17858A250014C5A5 /* MacPass.icns */; };
@@ -577,6 +578,8 @@
4C67D33217981ABA00A7BDFC /* HNHTokenFieldCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHTokenFieldCell.m; sourceTree = "<group>"; };
4C69A73816D589DF00EC1B1A /* HNHGradientView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHGradientView.h; sourceTree = "<group>"; };
4C69A73916D589DF00EC1B1A /* HNHGradientView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHGradientView.m; sourceTree = "<group>"; };
4C6BEA2F17A88E6C00CF69A8 /* MPStripLineBreaksTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPStripLineBreaksTransformer.h; sourceTree = "<group>"; };
4C6BEA3017A88E6C00CF69A8 /* MPStripLineBreaksTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPStripLineBreaksTransformer.m; sourceTree = "<group>"; };
4C6D1D24178579570014C5A5 /* 48_FolderTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 48_FolderTemplate.pdf; sourceTree = "<group>"; };
4C6D1D26178586CA0014C5A5 /* 99_AddFolderTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 99_AddFolderTemplate.pdf; sourceTree = "<group>"; };
4C6D1D2A17858A250014C5A5 /* MacPass.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = MacPass.icns; path = "../Assets/App icon/MacPass.icns"; sourceTree = "<group>"; };
@@ -1082,6 +1085,8 @@
4C5BF67A175C01F300D53DF7 /* MPUppercaseStringValueTransformer.m */,
4CF6C70F176F4533007A811D /* MPStringLengthValueTransformer.h */,
4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */,
4C6BEA2F17A88E6C00CF69A8 /* MPStripLineBreaksTransformer.h */,
4C6BEA3017A88E6C00CF69A8 /* MPStripLineBreaksTransformer.m */,
4C888C9516EB754B003D34A1 /* MPActionHelper.h */,
4C888C9616EB754B003D34A1 /* MPActionHelper.m */,
4C2E382116D1421B00037A9D /* MPIconHelper.h */,
@@ -2060,6 +2065,7 @@
4CD7223B17A7CB0700F5A1E1 /* MPWorkflowSettingsController.m in Sources */,
4C2671AD17A7D8FC00F3A645 /* HNHColorWell.m in Sources */,
4CA08DA017A831B200A6544B /* MPAddEntryContextMenuDelegate.m in Sources */,
4C6BEA3117A88E6C00CF69A8 /* MPStripLineBreaksTransformer.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@@ -45,7 +45,7 @@
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSCustomView" id="997686550">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSCustomView" id="163272962">
@@ -55,8 +55,10 @@
<object class="NSButton" id="276578969">
<reference key="NSNextResponder" ref="163272962"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrame">{{7, 5}, {32, 19}}</string>
<reference key="NSSuperview" ref="163272962"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="160641004">
@@ -86,6 +88,7 @@
</array>
<string key="NSFrameSize">{694, 30}</string>
<reference key="NSSuperview" ref="997686550"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="276578969"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSClassName">HNHGradientView</string>
@@ -104,6 +107,7 @@
<array class="NSMutableArray" key="NSSubviews"/>
<string key="NSFrameSize">{694, 548}</string>
<reference key="NSSuperview" ref="262664416"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="736877784"/>
<string key="NSReuseIdentifierKey">_NS:13</string>
<bool key="NSEnabled">YES</bool>
@@ -114,6 +118,7 @@
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{694, 17}</string>
<reference key="NSSuperview" ref="736877784"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="262664416"/>
<reference key="NSTableView" ref="528076956"/>
</object>
@@ -143,7 +148,7 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">headerColor</string>
<object class="NSColor" key="NSColor">
<object class="NSColor" key="NSColor" id="926091365">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
@@ -299,10 +304,7 @@
</array>
<double key="NSIntercellSpacingWidth">3</double>
<double key="NSIntercellSpacingHeight">2</double>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
</object>
<reference key="NSBackgroundColor" ref="926091365"/>
<object class="NSColor" key="NSGridColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
@@ -326,17 +328,19 @@
</array>
<string key="NSFrame">{{0, 17}, {694, 548}}</string>
<reference key="NSSuperview" ref="613995671"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="528076956"/>
<string key="NSReuseIdentifierKey">_NS:11</string>
<reference key="NSDocView" ref="528076956"/>
<reference key="NSBGColor" ref="136901388"/>
<int key="NScvFlags">6</int>
<int key="NScvFlags">4</int>
</object>
<object class="NSScroller" id="1037276411">
<reference key="NSNextResponder" ref="613995671"/>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{224, 17}, {15, 102}}</string>
<reference key="NSSuperview" ref="613995671"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="802411427"/>
<string key="NSReuseIdentifierKey">_NS:58</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
@@ -349,6 +353,7 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{0, 310}, {480, 16}}</string>
<reference key="NSSuperview" ref="613995671"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="163272962"/>
<string key="NSReuseIdentifierKey">_NS:60</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
@@ -365,6 +370,7 @@
</array>
<string key="NSFrameSize">{694, 17}</string>
<reference key="NSSuperview" ref="613995671"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="253618752"/>
<reference key="NSDocView" ref="253618752"/>
<reference key="NSBGColor" ref="136901388"/>
@@ -373,6 +379,7 @@
</array>
<string key="NSFrame">{{0, 30}, {694, 565}}</string>
<reference key="NSSuperview" ref="997686550"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="262664416"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<int key="NSsFlags">133680</int>
@@ -387,6 +394,8 @@
</object>
</array>
<string key="NSFrameSize">{694, 594}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="613995671"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSClassName">NSView</string>
@@ -1729,7 +1738,7 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">844</int>
<int key="maxID">867</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -1756,7 +1765,7 @@
<string key="filterTitleButton">NSButton</string>
<string key="filterURLButton">NSButton</string>
<string key="filterUsernameButton">NSButton</string>
<string key="tableToTop">NSLayoutConstraint</string>
<string key="tableToTopConstraint">NSLayoutConstraint</string>
<string key="trashBar">HNHGradientView</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
@@ -1804,8 +1813,8 @@
<string key="name">filterUsernameButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="tableToTop">
<string key="name">tableToTop</string>
<object class="IBToOneOutletInfo" key="tableToTopConstraint">
<string key="name">tableToTopConstraint</string>
<string key="candidateClassName">NSLayoutConstraint</string>
</object>
<object class="IBToOneOutletInfo" key="trashBar">

View File

@@ -45,9 +45,10 @@
<object class="NSButton" id="317760263">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{182, 18}, {118, 25}}</string>
<string key="NSFrame">{{262, 18}, {118, 25}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:22</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="619274271">
@@ -81,7 +82,7 @@
<object class="NSCollectionView" id="697027275">
<reference key="NSNextResponder" ref="785205210"/>
<int key="NSvFlags">4370</int>
<string key="NSFrameSize">{300, 250}</string>
<string key="NSFrameSize">{380, 280}</string>
<reference key="NSSuperview" ref="785205210"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="319187659"/>
@@ -105,7 +106,7 @@
<int key="NSDraggingSourceMaskForNonLocal">0</int>
</object>
</array>
<string key="NSFrameSize">{300, 250}</string>
<string key="NSFrameSize">{380, 280}</string>
<reference key="NSSuperview" ref="170990502"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="697027275"/>
@@ -151,7 +152,7 @@
<double key="NSPercent">0.63157892227172852</double>
</object>
</array>
<string key="NSFrame">{{10, 50}, {300, 250}}</string>
<string key="NSFrame">{{10, 50}, {380, 280}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="785205210"/>
@@ -165,7 +166,7 @@
<double key="NSMagnification">1</double>
</object>
</array>
<string key="NSFrameSize">{320, 310}</string>
<string key="NSFrameSize">{400, 340}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="170990502"/>
@@ -179,9 +180,10 @@
<object class="NSButton" id="612603831">
<reference key="NSNextResponder" ref="340719917"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{9, 9}, {32, 32}}</string>
<string key="NSFrame">{{4, 4}, {32, 32}}</string>
<reference key="NSSuperview" ref="340719917"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="344314901">
@@ -205,7 +207,7 @@
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrameSize">{50, 50}</string>
<string key="NSFrameSize">{40, 40}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="612603831"/>
@@ -562,22 +564,22 @@
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">148</int>
<int key="objectID">161</int>
<reference key="object" ref="1006496299"/>
<reference key="parent" ref="612603831"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">149</int>
<int key="objectID">162</int>
<reference key="object" ref="1004322278"/>
<reference key="parent" ref="612603831"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">150</int>
<int key="objectID">168</int>
<reference key="object" ref="926242244"/>
<reference key="parent" ref="340719917"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">151</int>
<int key="objectID">169</int>
<reference key="object" ref="528411379"/>
<reference key="parent" ref="340719917"/>
</object>
@@ -617,10 +619,10 @@
<boolean value="NO" key="114.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="114.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="115.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="148.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="150.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="151.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="161.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="162.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="168.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="169.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="57.CustomClassName">HNHScrollView</string>
<boolean value="NO" key="57.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -635,7 +637,7 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">151</int>
<int key="maxID">169</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -688,6 +690,27 @@
<string key="minorKey">./Classes/MPViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSCollectionViewItem</string>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="imageView">NSImageView</string>
<string key="textField">NSTextField</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="imageView">
<string key="name">imageView</string>
<string key="candidateClassName">NSImageView</string>
</object>
<object class="IBToOneOutletInfo" key="textField">
<string key="name">textField</string>
<string key="candidateClassName">NSTextField</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/NSCollectionViewItem.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSLayoutConstraint</string>
<string key="superclassName">NSObject</string>

View File

@@ -8,13 +8,6 @@
#import "Kdb.h"
APPKIT_EXTERN NSString *const MPEntryTitleUndoableKey;
APPKIT_EXTERN NSString *const MPEntryUsernameUndoableKey;
APPKIT_EXTERN NSString *const MPEntryPasswordUndoableKey;
APPKIT_EXTERN NSString *const MPEntryUrlUndoableKey;
APPKIT_EXTERN NSString *const MPEntryNotesUndoableKey;
@interface KdbEntry (Undo)
- (NSString *)titleUndoable;

View File

@@ -11,12 +11,6 @@
#import "KdbGroup+KVOAdditions.h"
#import "KdbGroup+MPTreeTools.h"
NSString *const MPEntryTitleUndoableKey = @"titleUndoable";
NSString *const MPEntryUsernameUndoableKey = @"usernameUndoable";
NSString *const MPEntryPasswordUndoableKey = @"passwordUndoable";
NSString *const MPEntryUrlUndoableKey = @"urlUndoable";
NSString *const MPEntryNotesUndoableKey = @"notesUndoable";
#ifndef MPSetActionName
#define MPSetActionName(key, comment) \
if(![[self undoManager] isUndoing]) {\

View File

@@ -13,6 +13,7 @@
#import "MPSettingsHelper.h"
#import "MPUppercaseStringValueTransformer.h"
#import "MPStringLengthValueTransformer.h"
#import "MPStripLineBreaksTransformer.h"
#import "MPServerDaemon.h"
#import "MPLockDaemon.h"
#import "MPDocumentWindowController.h"
@@ -37,6 +38,7 @@
[MPSettingsHelper setupDefaults];
[MPUppercaseStringValueTransformer registerTransformer];
[MPStringLengthValueTransformer registerTransformer];
[MPStripLineBreaksTransformer registerTransformer];
}
- (void)dealloc {

View File

@@ -99,6 +99,7 @@ typedef NS_ENUM(NSUInteger, MPAlertType) {
_readOnly = NO;
_rootAdapter = [[MPRootAdapter alloc] init];
_version = version;
[[self undoManager] setLevelsOfUndo:10];
switch(_version) {
case MPDatabaseVersion3:
self.tree = [Kdb3Tree templateTree];

View File

@@ -24,7 +24,7 @@
NSArray *classArray = [NSArray arrayWithObject:[NSURL class]];
NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:classArray options:nil];
BOOL ok;
BOOL ok = NO;
for(NSURL *url in arrayOfURLs) {
if([url isFileURL] || [url isFileReferenceURL]) {
continue;

View File

@@ -7,10 +7,7 @@
//
#import <Foundation/Foundation.h>
@class MPEntryViewController;
@interface MPEntryContextMenuDelegate : NSObject <NSMenuDelegate>
@property (weak) MPEntryViewController *viewController;
@end

View File

@@ -7,7 +7,7 @@
//
#import "MPEntryContextMenuDelegate.h"
#import "MPEntryViewController.h"
#import "MPDocument.h"
#import "Kdb4Node.h"
@@ -30,9 +30,9 @@ static NSUInteger const kMPAttachmentsMenuItem = 2000;
if([lastItem isSeparatorItem]) {
[menu removeItem:lastItem];
}
if([self.viewController.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
Kdb4Entry *entry = (Kdb4Entry *)self.viewController.selectedEntry;
MPDocument *document = [[NSDocumentController sharedDocumentController] currentDocument];
if([document.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
Kdb4Entry *entry = (Kdb4Entry *)document.selectedEntry;
if([entry.stringFields count] > 0) {
[menu addItem:[NSMenuItem separatorItem]];
NSMenuItem *customFieldsItem = [[NSMenuItem alloc] init];

View File

@@ -21,6 +21,7 @@
#import "MPConstants.h"
#import "MPEntryTableDataSource.h"
#import "MPStringLengthValueTransformer.h"
#import "MPStripLineBreaksTransformer.h"
#import "MPEntryContextMenuDelegate.h"
#import "HNHTableHeaderCell.h"
@@ -54,6 +55,8 @@ NSString *const MPEntryTableTitleColumnIdentifier = @"MPTitleColumnIdentifier";
NSString *const MPEntryTablePasswordColumnIdentifier = @"MPPasswordColumnIdentifier";
NSString *const MPEntryTableParentColumnIdentifier = @"MPParentColumnIdentifier";
NSString *const MPEntryTableURLColumnIdentifier = @"MPEntryTableURLColumnIdentifier";
NSString *const MPEntryTableNotesColumnIdentifier = @"MPEntryTableNotesColumnIdentifier";
NSString *const MPEntryTableAttachmentColumnIdentifier = @"MPEntryTableAttachmentColumnIdentifier";
NSString *const _MPTableImageCellView = @"ImageCell";
NSString *const _MPTableStringCellView = @"StringCell";
@@ -114,8 +117,6 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
_dataSource = [[MPEntryTableDataSource alloc] init];
_dataSource.viewController = self;
_menuDelegate = [[MPEntryContextMenuDelegate alloc] init];
_menuDelegate.viewController = self;
_selectedEntry = nil;
}
return self;
@@ -127,7 +128,7 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
}
- (void)didLoadView {
[self.view setWantsLayer:YES];
[[self view] setWantsLayer:YES];
[self _hideFilterBarAnimated];
[_bottomBar setBorderType:HNHBorderTop];
@@ -150,7 +151,10 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
NSTableColumn *userNameColumn = [self.entryTable tableColumns][2];
NSTableColumn *passwordColumn = [self.entryTable tableColumns][3];
NSTableColumn *urlColumn = [self.entryTable tableColumns][4];
NSTableColumn *attachmentsColumn = [[NSTableColumn alloc] initWithIdentifier:MPEntryTableAttachmentColumnIdentifier];
NSTableColumn *notesColumn = [[NSTableColumn alloc] initWithIdentifier:MPEntryTableNotesColumnIdentifier];
[self.entryTable addTableColumn:notesColumn];
[self.entryTable addTableColumn:attachmentsColumn];
[parentColumn setIdentifier:MPEntryTableParentColumnIdentifier];
[titleColumn setIdentifier:MPEntryTableTitleColumnIdentifier];
@@ -169,16 +173,19 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
[userNameColumn setSortDescriptorPrototype:userNameSortDescriptor];
[urlColumn setSortDescriptorPrototype:urlSortDescriptor];
[[parentColumn headerCell] setStringValue:@"Group"];
[[titleColumn headerCell] setStringValue:@"Title"];
[[userNameColumn headerCell] setStringValue:@"Username"];
[[passwordColumn headerCell] setStringValue:@"Password"];
[[urlColumn headerCell] setStringValue:@"URL"];
[[parentColumn headerCell] setStringValue:NSLocalizedString(@"GROUP", "")];
[[titleColumn headerCell] setStringValue:NSLocalizedString(@"TITLE", "")];
[[userNameColumn headerCell] setStringValue:NSLocalizedString(@"USERNAME", "")];
[[passwordColumn headerCell] setStringValue:NSLocalizedString(@"PASSWORD", "")];
[[urlColumn headerCell] setStringValue:NSLocalizedString(@"URL", "")];
[[notesColumn headerCell] setStringValue:NSLocalizedString(@"NOTES", "")];
[[attachmentsColumn headerCell] setStringValue:NSLocalizedString(@"ATTACHMENTS", "")];
[self.entryTable bind:NSContentBinding toObject:self.entryArrayController withKeyPath:@"arrangedObjects" options:nil];
[self.entryTable bind:NSSortDescriptorsBinding toObject:self.entryArrayController withKeyPath:@"sortDescriptors" options:nil];
[self.entryTable setDataSource:_dataSource];
[self _setupHeaderMenu];
[parentColumn setHidden:YES];
}
@@ -195,18 +202,19 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
KdbEntry *entry = [self.entryArrayController arrangedObjects][row];
const BOOL isTitleColumn = [[tableColumn identifier] isEqualToString:MPEntryTableTitleColumnIdentifier];
const BOOL isGroupColumn = [[tableColumn identifier] isEqualToString:MPEntryTableParentColumnIdentifier];
const BOOL isPasswordColum = [[tableColumn identifier] isEqualToString:MPEntryTablePasswordColumnIdentifier];
const BOOL isUsernameColumn = [[tableColumn identifier] isEqualToString:MPEntryTableUserNameColumnIdentifier];
const BOOL isURLColumn = [[tableColumn identifier] isEqualToString:MPEntryTableURLColumnIdentifier];
BOOL isTitleColumn = [[tableColumn identifier] isEqualToString:MPEntryTableTitleColumnIdentifier];
BOOL isGroupColumn = [[tableColumn identifier] isEqualToString:MPEntryTableParentColumnIdentifier];
BOOL isPasswordColum = [[tableColumn identifier] isEqualToString:MPEntryTablePasswordColumnIdentifier];
BOOL isUsernameColumn = [[tableColumn identifier] isEqualToString:MPEntryTableUserNameColumnIdentifier];
BOOL isURLColumn = [[tableColumn identifier] isEqualToString:MPEntryTableURLColumnIdentifier];
BOOL isAttachmentColumn = [[tableColumn identifier] isEqualToString:MPEntryTableAttachmentColumnIdentifier];
BOOL isNotesColumn = [[tableColumn identifier] isEqualToString:MPEntryTableNotesColumnIdentifier];
NSTableCellView *view = nil;
if(isTitleColumn || isGroupColumn) {
view = [tableView makeViewWithIdentifier:_MPTableImageCellView owner:self];
if( isTitleColumn ) {
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:MPEntryTitleUndoableKey options:nil];
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:@"titleUndoable" options:nil];
[[view imageView] setImage:[MPIconHelper icon:(MPIconType)entry.image]];
}
else {
@@ -218,17 +226,23 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
else if( isPasswordColum ) {
view = [tableView makeViewWithIdentifier:_MPTAbleSecurCellView owner:self];
NSDictionary *options = @{ NSValueTransformerBindingOption : [NSValueTransformer valueTransformerForName:MPStringLengthValueTransformerName] };
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:MPEntryPasswordUndoableKey options:options];
}
else if( isUsernameColumn || isURLColumn ) {
view = [tableView makeViewWithIdentifier:_MPTableStringCellView owner:self];
if(isURLColumn) {
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:MPEntryUrlUndoableKey options:nil];
//[[view textField] setStringValue:entry.url];
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:@"passwordUndoable" options:options];
}
else {
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:MPEntryUsernameUndoableKey options:nil];
//[[view textField] setStringValue:entry.username];
view = [tableView makeViewWithIdentifier:_MPTableStringCellView owner:self];
if(isURLColumn) {
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:@"urlUndoable" options:nil];
}
else if( isUsernameColumn) {
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:@"usernameUndoable" options:nil];
}
else if( isNotesColumn ) {
NSDictionary *options = @{ NSValueTransformerNameBindingOption : MPStripLineBreaksTransformerName };
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:@"notesUndoable" options:options];
}
else if( isAttachmentColumn ) {
[[view textField] setStringValue:@""];
//[[view textField] bind:NSValueBinding toObject:entry withKeyPath:@"countOfBinaries" options:nil];
}
}
@@ -412,7 +426,6 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
multiplier:1
constant:0];
[[self view] addConstraint:self.filterbarTopConstraint];
[NSAnimationContext runAnimationGroup:^(NSAnimationContext* context) {
context.duration = STATUS_BAR_ANIMATION_TIME;
context.allowsImplicitAnimation = YES;
@@ -424,7 +437,6 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
}
- (void)_hideFilterBarAnimated {
if(![self _showsFilterBar]) {
return; // nothing to do;
}
@@ -522,7 +534,7 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
self.trashBar.inactiveGradient = [[NSGradient alloc] initWithColors:inactiveColors];
}
#pragma mark EntryMenu
#pragma mark ContextMenu
- (void)_setupEntryMenu {
@@ -533,9 +545,36 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
}
[menu setDelegate:_menuDelegate];
[self.entryTable setMenu:menu];
}
- (void)_setupHeaderMenu {
NSMenu *headerMenu = [[NSMenu allocWithZone:[NSMenu menuZone]] init];
[headerMenu addItemWithTitle:NSLocalizedString(@"TITLE", "") action:NULL keyEquivalent:@""];
[headerMenu addItemWithTitle:NSLocalizedString(@"USERNAME", "") action:NULL keyEquivalent:@""];
[headerMenu addItemWithTitle:NSLocalizedString(@"PASSWORD", "") action:NULL keyEquivalent:@""];
[headerMenu addItemWithTitle:NSLocalizedString(@"URL", "") action:NULL keyEquivalent:@""];
[headerMenu addItemWithTitle:NSLocalizedString(@"NOTES", "") action:NULL keyEquivalent:@""];
[headerMenu addItemWithTitle:NSLocalizedString(@"ATTACHMENTS", "") action:NULL keyEquivalent:@""];
NSArray *identifier = @[ MPEntryTableTitleColumnIdentifier,
MPEntryTableUserNameColumnIdentifier,
MPEntryTablePasswordColumnIdentifier,
MPEntryTableURLColumnIdentifier,
MPEntryTableNotesColumnIdentifier,
MPEntryTableAttachmentColumnIdentifier ];
NSDictionary *options = @{ NSValueTransformerNameBindingOption : NSNegateBooleanTransformerName };
for(NSMenuItem *item in [headerMenu itemArray]) {
NSUInteger index = [headerMenu indexOfItem:item];
NSTableColumn *column= [self.entryTable tableColumnWithIdentifier:identifier[index]];
[item bind:NSValueBinding toObject:column withKeyPath:@"hidden" options:options];
}
[[self.entryTable headerView] setMenu:headerMenu];
}
#pragma makr Action Helper
- (KdbEntry *)_clickedOrSelectedEntry {
@@ -598,6 +637,10 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
[document deleteEntry:entry];
}
//- (void)toggleHeader:(id)sender {
// //
//}
#pragma mark Validation
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
return YES;
@@ -643,6 +686,7 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
else
[self copyURL:nil];
}
// TODO: Add more actions for new columns
}
- (void)setFilterMode:(MPFilterModeType)newFilterMode {

View File

@@ -0,0 +1,17 @@
//
// MPStripLineBreaksTransformer.h
// MacPass
//
// Created by Michael Starke on 31.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import <Foundation/Foundation.h>
FOUNDATION_EXPORT NSString *const MPStripLineBreaksTransformerName;
@interface MPStripLineBreaksTransformer : NSValueTransformer
+ (void)registerTransformer;
@end

View File

@@ -0,0 +1,37 @@
//
// MPStripLineBreaksTransformer.m
// MacPass
//
// Created by Michael Starke on 31.07.13.
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
//
#import "MPStripLineBreaksTransformer.h"
NSString *const MPStripLineBreaksTransformerName = @"com.hicknhack.macpass.MPStripLineBreaksTransformerName";
@implementation MPStripLineBreaksTransformer
+ (Class)transformedValueClass {
return [NSString class];
}
+ (BOOL)allowsReverseTransformation {
return NO;
}
+ (void)registerTransformer {
MPStripLineBreaksTransformer *transformer = [[MPStripLineBreaksTransformer alloc] init];
[NSValueTransformer setValueTransformer:transformer
forName:MPStripLineBreaksTransformerName];
}
- (id)transformedValue:(id)value {
if(![value isKindOfClass:[NSString class]]) {
return nil;
}
NSArray *elements = [value componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
return [elements componentsJoinedByString:@" "];
}
@end

View File

@@ -48,7 +48,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>2525</string>
<string>2527</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key>

Binary file not shown.

Binary file not shown.