diff --git a/MacPass.xcodeproj/project.pbxproj b/MacPass.xcodeproj/project.pbxproj index 153b6741..eacb332e 100644 --- a/MacPass.xcodeproj/project.pbxproj +++ b/MacPass.xcodeproj/project.pbxproj @@ -12,6 +12,7 @@ 4C01C245176500C40016D5D0 /* HNHLevelIndicatorCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C244176500C40016D5D0 /* HNHLevelIndicatorCell.m */; }; 4C0D9B37177F84D700D0857C /* HNHSecureTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0D9B36177F84D700D0857C /* HNHSecureTextView.m */; }; 4C0D9B3A177F867100D0857C /* HNHSecureLayoutManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0D9B39177F867100D0857C /* HNHSecureLayoutManager.m */; }; + 4C16BA6217879A3C002B42BD /* MPPasswordStringFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C16BA6117879A3C002B42BD /* MPPasswordStringFormatter.m */; }; 4C1DDCDD1711ECEB00C98DA3 /* PasswordCreatorWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */; }; 4C22040D1746ED160054C916 /* KdbGroup+Undo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C22040C1746ED160054C916 /* KdbGroup+Undo.m */; }; 4C245B76176E1E3D0086100E /* DDData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A6A176E1E3C0086100E /* DDData.m */; }; @@ -47,6 +48,7 @@ 4C2724DA17790E7C00FD8456 /* NSMutableData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2724D917790E7C00FD8456 /* NSMutableData+Base64.m */; }; 4C2A6134177A1D5F00C9826C /* KPLErrorCodes.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2A6133177A1D5F00C9826C /* KPLErrorCodes.m */; }; 4C2C4C2C16D3BE3700D49295 /* KdbGroup+MPTreeTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2C4C2B16D3BE3700D49295 /* KdbGroup+MPTreeTools.m */; }; + 4C2C8B341787500E009649F3 /* UnprotectedWarningView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C2C8B331787500E009649F3 /* UnprotectedWarningView.xib */; }; 4C2E381D16D11FF900037A9D /* 03_ServerTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */; }; 4C2E381E16D11FF900037A9D /* 04_KlipperTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */; }; 4C2E381F16D11FF900037A9D /* 05_LanguagesTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381C16D11FF900037A9D /* 05_LanguagesTemplate.pdf */; }; @@ -125,7 +127,6 @@ 4C701CBC178618A000581B88 /* 12_RemoteTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C701CBB178618A000581B88 /* 12_RemoteTemplate.pdf */; }; 4C74DD07177BD1640034A9DB /* MPCustomFieldView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C74DD06177BD1640034A9DB /* MPCustomFieldView.m */; }; 4C76155C1764C04C0015A1A6 /* GeneralSettings.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C76155E1764C04C0015A1A6 /* GeneralSettings.xib */; }; - 4C7615631764C08C0015A1A6 /* PasswordEditView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C7615651764C08C0015A1A6 /* PasswordEditView.xib */; }; 4C7615681764C0C40015A1A6 /* PasswordInputView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C76156A1764C0C40015A1A6 /* PasswordInputView.xib */; }; 4C76156D1764C0E20015A1A6 /* InspectorView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C76156F1764C0E20015A1A6 /* InspectorView.xib */; }; 4C7714AA176C998F00549F2A /* 43_TrashTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C7714A9176C998F00549F2A /* 43_TrashTemplate.pdf */; }; @@ -137,7 +138,6 @@ 4C77E37A15B84A240093A587 /* MPAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C77E37915B84A240093A587 /* MPAppDelegate.m */; }; 4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C77E37B15B84A240093A587 /* MainMenu.xib */; }; 4C79DF2A176685870083708F /* HNHRoundedTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C79DF29176685870083708F /* HNHRoundedTextField.m */; }; - 4C7E832A172DE2F2002493D8 /* MPPasswordEditViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C7E8329172DE2F2002493D8 /* MPPasswordEditViewController.m */; }; 4C7F35681779DFFB00C57890 /* Errors.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4C7F356A1779DFFB00C57890 /* Errors.strings */; }; 4C80BB6F176DE06F00E5E248 /* HNHScrollDocumentViewAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C80BB6E176DE06F00E5E248 /* HNHScrollDocumentViewAdapter.m */; }; 4C811C8316ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C811C8216ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.m */; }; @@ -172,8 +172,8 @@ 4CC672791781D0C0006DEDCF /* KdbGroup+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC672781781D0C0006DEDCF /* KdbGroup+MPAdditions.m */; }; 4CC6727C1781D0D2006DEDCF /* KdbEntry+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6727B1781D0D2006DEDCF /* KdbEntry+MPAdditions.m */; }; 4CC7EA1B17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC7EA1A17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m */; }; - 4CD5D702177A5EE400100649 /* DocumentSettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CD5D701177A5EE400100649 /* DocumentSettingsWindow.xib */; }; - 4CD5D705177A5F3300100649 /* MPDocumentSettingsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CD5D704177A5F3300100649 /* MPDocumentSettingsWindowController.m */; }; + 4CD5D702177A5EE400100649 /* DatabaseSettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CD5D701177A5EE400100649 /* DatabaseSettingsWindow.xib */; }; + 4CD5D705177A5F3300100649 /* MPDatabaseSettingsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CD5D704177A5F3300100649 /* MPDatabaseSettingsWindowController.m */; }; 4CD78ABC16D155FF00768A1D /* 07_NotepadTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CD78AB716D155FF00768A1D /* 07_NotepadTemplate.pdf */; }; 4CD78ABD16D155FF00768A1D /* 08_SocketTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CD78AB816D155FF00768A1D /* 08_SocketTemplate.pdf */; }; 4CD78ABE16D155FF00768A1D /* 09_IdentityTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CD78AB916D155FF00768A1D /* 09_IdentityTemplate.pdf */; }; @@ -188,6 +188,7 @@ 4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */; }; 4CE8247516E2F2B900573141 /* MPOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8247416E2F2B900573141 /* MPOverlayView.m */; }; 4CF1F0CA1786B37900CD920E /* NSData+Gzip.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF1F0C81786B37900CD920E /* NSData+Gzip.m */; }; + 4CF29BF417879D0000851B60 /* 99_SaveToDiskTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CF29BF317879D0000851B60 /* 99_SaveToDiskTemplate.pdf */; }; 4CF6C711176F4533007A811D /* MPStringLengthValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */; }; 4CF6C718176F5234007A811D /* MPAssociateRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF6C717176F5234007A811D /* MPAssociateRequestHandler.m */; }; 4CF78057176E5CFD0032EE71 /* MPConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF78056176E5CFD0032EE71 /* MPConnection.m */; }; @@ -209,6 +210,8 @@ 4C0D9B36177F84D700D0857C /* HNHSecureTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHSecureTextView.m; sourceTree = ""; }; 4C0D9B38177F867100D0857C /* HNHSecureLayoutManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHSecureLayoutManager.h; sourceTree = ""; }; 4C0D9B39177F867100D0857C /* HNHSecureLayoutManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHSecureLayoutManager.m; sourceTree = ""; }; + 4C16BA6017879A3C002B42BD /* MPPasswordStringFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasswordStringFormatter.h; sourceTree = ""; }; + 4C16BA6117879A3C002B42BD /* MPPasswordStringFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasswordStringFormatter.m; sourceTree = ""; }; 4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PasswordCreatorWindow.xib; sourceTree = ""; }; 4C22040B1746ED160054C916 /* KdbGroup+Undo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbGroup+Undo.h"; sourceTree = ""; }; 4C22040C1746ED160054C916 /* KdbGroup+Undo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbGroup+Undo.m"; sourceTree = ""; }; @@ -279,6 +282,7 @@ 4C2A6133177A1D5F00C9826C /* KPLErrorCodes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KPLErrorCodes.m; sourceTree = ""; }; 4C2C4C2A16D3BE3700D49295 /* KdbGroup+MPTreeTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbGroup+MPTreeTools.h"; sourceTree = ""; }; 4C2C4C2B16D3BE3700D49295 /* KdbGroup+MPTreeTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbGroup+MPTreeTools.m"; sourceTree = ""; }; + 4C2C8B331787500E009649F3 /* UnprotectedWarningView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UnprotectedWarningView.xib; sourceTree = ""; }; 4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 03_ServerTemplate.pdf; sourceTree = ""; }; 4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 04_KlipperTemplate.pdf; sourceTree = ""; }; 4C2E381C16D11FF900037A9D /* 05_LanguagesTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 05_LanguagesTemplate.pdf; sourceTree = ""; }; @@ -424,19 +428,14 @@ 4C74DD06177BD1640034A9DB /* MPCustomFieldView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCustomFieldView.m; sourceTree = ""; }; 4C76155F1764C0590015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/GeneralSettings.xib; sourceTree = ""; }; 4C7615601764C05A0015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - 4C7615661764C08F0015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PasswordEditView.xib; sourceTree = ""; }; - 4C7615671764C09E0015A1A6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/PasswordEditView.strings; sourceTree = ""; }; 4C76156B1764C0C80015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PasswordInputView.xib; sourceTree = ""; }; 4C76156C1764C0CC0015A1A6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/PasswordInputView.strings; sourceTree = ""; }; 4C7615701764C0E80015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/InspectorView.xib; sourceTree = ""; }; 4C7615721764C4A40015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/GeneralSettings.strings; sourceTree = ""; }; - 4C7615731764C4A40015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/MainMenu.strings; sourceTree = ""; }; - 4C7615741764C4A40015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/PasswordEditView.strings; sourceTree = ""; }; 4C7615751764C4A40015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/PasswordInputView.strings; sourceTree = ""; }; 4C7615771764C4A40015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; 4C7615781764C4A50015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = de; path = de.lproj/Credits.rtf; sourceTree = ""; }; 4C7615791764C4A50015A1A6 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; - 4C76157B1764C5450015A1A6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/MainMenu.strings; sourceTree = ""; }; 4C7714A9176C998F00549F2A /* 43_TrashTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 43_TrashTemplate.pdf; sourceTree = ""; }; 4C7714AB176C9D4600549F2A /* 99_InfoTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 99_InfoTemplate.pdf; sourceTree = ""; }; 4C77547316E55FE800970E02 /* MPInspectorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPInspectorViewController.h; sourceTree = ""; }; @@ -454,9 +453,6 @@ 4C77E37915B84A240093A587 /* MPAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPAppDelegate.m; sourceTree = ""; }; 4C79DF28176685870083708F /* HNHRoundedTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHRoundedTextField.h; sourceTree = ""; }; 4C79DF29176685870083708F /* HNHRoundedTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHRoundedTextField.m; sourceTree = ""; }; - 4C79DF2F1766941D0083708F /* MPResponderQuery.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPResponderQuery.h; sourceTree = ""; }; - 4C7E8328172DE2F2002493D8 /* MPPasswordEditViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasswordEditViewController.h; sourceTree = ""; }; - 4C7E8329172DE2F2002493D8 /* MPPasswordEditViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasswordEditViewController.m; sourceTree = ""; }; 4C7F35691779DFFB00C57890 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Errors.strings; sourceTree = ""; }; 4C7F356B1779DFFF00C57890 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Errors.strings; sourceTree = ""; }; 4C80BB6D176DE06F00E5E248 /* HNHScrollDocumentViewAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHScrollDocumentViewAdapter.h; sourceTree = ""; }; @@ -490,6 +486,7 @@ 4CA23357176DB8F000F0B6AC /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/GeneralSettings.strings; sourceTree = ""; }; 4CA23358176DBFE100F0B6AC /* MPLockDaemon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPLockDaemon.h; sourceTree = ""; }; 4CA23359176DBFE100F0B6AC /* MPLockDaemon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPLockDaemon.m; sourceTree = ""; }; + 4CAAFDD51787AED60013FCF9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/MainMenu.strings; sourceTree = ""; }; 4CAD745615B887FD00104512 /* DDXMLElementAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDXMLElementAdditions.h; sourceTree = ""; }; 4CAD745715B887FD00104512 /* DDXMLElementAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDXMLElementAdditions.m; sourceTree = ""; }; 4CAD745915B887FD00104512 /* NSString+DDXML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+DDXML.h"; sourceTree = ""; }; @@ -509,7 +506,6 @@ 4CB9339816D3A0DD00A13B5D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; 4CBA2AB617074B59006D8139 /* MPSettingsHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSettingsHelper.h; sourceTree = ""; }; 4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSettingsHelper.m; sourceTree = ""; }; - 4CC0B8DA1773729F00311E8C /* MPFirstResonderNotification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPFirstResonderNotification.h; sourceTree = ""; }; 4CC1AEBC16D4467C006D2AAB /* KdbTree+MPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbTree+MPAdditions.h"; sourceTree = ""; }; 4CC1AEBD16D4467C006D2AAB /* KdbTree+MPAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbTree+MPAdditions.m"; sourceTree = ""; }; 4CC299FD176F99E50050C939 /* MPRequestHandlerService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPRequestHandlerService.h; sourceTree = ""; }; @@ -524,9 +520,9 @@ 4CC6727B1781D0D2006DEDCF /* KdbEntry+MPAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbEntry+MPAdditions.m"; sourceTree = ""; }; 4CC7EA1917807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHRoundendTextFieldCellHelper.h; sourceTree = ""; }; 4CC7EA1A17807E7E0089D4F3 /* HNHRoundendTextFieldCellHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHRoundendTextFieldCellHelper.m; sourceTree = ""; }; - 4CD5D701177A5EE400100649 /* DocumentSettingsWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DocumentSettingsWindow.xib; sourceTree = ""; }; - 4CD5D703177A5F3300100649 /* MPDocumentSettingsWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDocumentSettingsWindowController.h; sourceTree = ""; }; - 4CD5D704177A5F3300100649 /* MPDocumentSettingsWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPDocumentSettingsWindowController.m; sourceTree = ""; }; + 4CD5D701177A5EE400100649 /* DatabaseSettingsWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DatabaseSettingsWindow.xib; sourceTree = ""; }; + 4CD5D703177A5F3300100649 /* MPDatabaseSettingsWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDatabaseSettingsWindowController.h; sourceTree = ""; }; + 4CD5D704177A5F3300100649 /* MPDatabaseSettingsWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPDatabaseSettingsWindowController.m; sourceTree = ""; }; 4CD78AB716D155FF00768A1D /* 07_NotepadTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 07_NotepadTemplate.pdf; sourceTree = ""; }; 4CD78AB816D155FF00768A1D /* 08_SocketTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 08_SocketTemplate.pdf; sourceTree = ""; }; 4CD78AB916D155FF00768A1D /* 09_IdentityTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 09_IdentityTemplate.pdf; sourceTree = ""; }; @@ -548,6 +544,7 @@ 4CE8247416E2F2B900573141 /* MPOverlayView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayView.m; sourceTree = ""; }; 4CF1F0C81786B37900CD920E /* NSData+Gzip.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Gzip.m"; sourceTree = ""; }; 4CF1F0C91786B37900CD920E /* NSData+Gzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Gzip.h"; sourceTree = ""; }; + 4CF29BF317879D0000851B60 /* 99_SaveToDiskTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 99_SaveToDiskTemplate.pdf; sourceTree = ""; }; 4CF6C70F176F4533007A811D /* MPStringLengthValueTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPStringLengthValueTransformer.h; sourceTree = ""; }; 4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPStringLengthValueTransformer.m; sourceTree = ""; }; 4CF6C715176F5183007A811D /* MPServerRequestHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPServerRequestHandler.h; sourceTree = ""; }; @@ -593,6 +590,7 @@ 4C3FFD9D16DAF60600DF9186 /* FilterBar.xib */, 4C76156F1764C0E20015A1A6 /* InspectorView.xib */, 4CE39AC016ECE359000FE29D /* IconSelection.xib */, + 4C2C8B331787500E009649F3 /* UnprotectedWarningView.xib */, 4C74DD05177BD1640034A9DB /* MPCustomFieldView.h */, 4C74DD06177BD1640034A9DB /* MPCustomFieldView.m */, 4CE8247316E2F2B900573141 /* MPOverlayView.h */, @@ -611,6 +609,17 @@ name = Views; sourceTree = ""; }; + 4C16BA5F1787997E002B42BD /* ValueTransformer */ = { + isa = PBXGroup; + children = ( + 4C5BF679175C01F300D53DF7 /* MPUppercaseStringValueTransformer.h */, + 4C5BF67A175C01F300D53DF7 /* MPUppercaseStringValueTransformer.m */, + 4CF6C70F176F4533007A811D /* MPStringLengthValueTransformer.h */, + 4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */, + ); + name = ValueTransformer; + sourceTree = ""; + }; 4C245A64176E1E3C0086100E /* CocoaHTTPServer */ = { isa = PBXGroup; children = ( @@ -810,22 +819,23 @@ 4C2E382016D141F700037A9D /* Helper */ = { isa = PBXGroup; children = ( + 4C16BA5F1787997E002B42BD /* ValueTransformer */, + 4C888C9516EB754B003D34A1 /* MPActionHelper.h */, + 4C888C9616EB754B003D34A1 /* MPActionHelper.m */, 4C2E382116D1421B00037A9D /* MPIconHelper.h */, 4C2E382216D1421B00037A9D /* MPIconHelper.m */, 4C920E2816DCDFA00083839B /* MPLoggerProxy.h */, 4C920E2916DCDFA00083839B /* MPLoggerProxy.m */, 4CBA2AB617074B59006D8139 /* MPSettingsHelper.h */, 4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */, - 4C5BF679175C01F300D53DF7 /* MPUppercaseStringValueTransformer.h */, - 4C5BF67A175C01F300D53DF7 /* MPUppercaseStringValueTransformer.m */, - 4CF6C70F176F4533007A811D /* MPStringLengthValueTransformer.h */, - 4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */, 4C01C2401764D8980016D5D0 /* MPContextMenuHelper.h */, 4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */, 4C569D9C17652AC800595B62 /* MPConstants.h */, 4C569D9D17652B0600595B62 /* MPConstants.m */, 4CA23358176DBFE100F0B6AC /* MPLockDaemon.h */, 4CA23359176DBFE100F0B6AC /* MPLockDaemon.m */, + 4C16BA6017879A3C002B42BD /* MPPasswordStringFormatter.h */, + 4C16BA6117879A3C002B42BD /* MPPasswordStringFormatter.m */, ); name = Helper; sourceTree = ""; @@ -888,9 +898,10 @@ 4C701CBB178618A000581B88 /* 12_RemoteTemplate.pdf */, 4C7714A9176C998F00549F2A /* 43_TrashTemplate.pdf */, 4C6D1D24178579570014C5A5 /* 48_FolderTemplate.pdf */, - 4C7714AB176C9D4600549F2A /* 99_InfoTemplate.pdf */, - 4C366642178748F500B249F1 /* 99_HarddiskTemplate.pdf */, 4C6D1D26178586CA0014C5A5 /* 99_AddFolderTemplate.pdf */, + 4C366642178748F500B249F1 /* 99_HarddiskTemplate.pdf */, + 4C7714AB176C9D4600549F2A /* 99_InfoTemplate.pdf */, + 4CF29BF317879D0000851B60 /* 99_SaveToDiskTemplate.pdf */, ); path = Icons; sourceTree = ""; @@ -1035,7 +1046,6 @@ 4C2C4C2516D3BCEA00D49295 /* KeePassLib Categories */, 4C2E382016D141F700037A9D /* Helper */, 4C586F9C16D07ABD00E7DB57 /* Icons */, - 4CA0B30F15BCB85D00654E32 /* General */, 4CA0B30E15BCB70200654E32 /* Protocolls */, 4CE8247116E2E98200573141 /* Data Controller */, 4CE8247016E2E96500573141 /* Window Controller */, @@ -1076,8 +1086,6 @@ 4C2E382516D1470200037A9D /* MPViewController.m */, 4C65FAE616D16DDB006E0577 /* MPPasswordInputController.h */, 4C65FAE716D16DDB006E0577 /* MPPasswordInputController.m */, - 4C7E8328172DE2F2002493D8 /* MPPasswordEditViewController.h */, - 4C7E8329172DE2F2002493D8 /* MPPasswordEditViewController.m */, 4C5A11FB1708DE8700223D8A /* MPPasswordCreatorViewController.h */, 4C5A11FC1708DE8700223D8A /* MPPasswordCreatorViewController.m */, 4CDF01A116D1B76700D0AC08 /* MPEntryViewController.h */, @@ -1097,21 +1105,10 @@ children = ( 4CF6C715176F5183007A811D /* MPServerRequestHandler.h */, 4CA0B30D15BCB6FD00654E32 /* MPSettingsTab.h */, - 4C79DF2F1766941D0083708F /* MPResponderQuery.h */, - 4CC0B8DA1773729F00311E8C /* MPFirstResonderNotification.h */, ); name = Protocolls; sourceTree = ""; }; - 4CA0B30F15BCB85D00654E32 /* General */ = { - isa = PBXGroup; - children = ( - 4C888C9516EB754B003D34A1 /* MPActionHelper.h */, - 4C888C9616EB754B003D34A1 /* MPActionHelper.m */, - ); - name = General; - sourceTree = ""; - }; 4CAD745415B887FD00104512 /* KissXML */ = { isa = PBXGroup; children = ( @@ -1215,8 +1212,8 @@ 4C83814115BF4677001AE468 /* MPDocumentWindowController.m */, 4CE8246D16E2E93400573141 /* MPOverlayWindowController.h */, 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */, - 4CD5D703177A5F3300100649 /* MPDocumentSettingsWindowController.h */, - 4CD5D704177A5F3300100649 /* MPDocumentSettingsWindowController.m */, + 4CD5D703177A5F3300100649 /* MPDatabaseSettingsWindowController.h */, + 4CD5D704177A5F3300100649 /* MPDatabaseSettingsWindowController.m */, ); name = "Window Controller"; sourceTree = ""; @@ -1237,7 +1234,7 @@ 4CD884B615BD47080042BBF8 /* DocumentWindow.xib */, 4C431BCE16E2BAB000700A81 /* OverlayWindow.xib */, 4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */, - 4CD5D701177A5EE400100649 /* DocumentSettingsWindow.xib */, + 4CD5D701177A5EE400100649 /* DatabaseSettingsWindow.xib */, ); name = Windows; sourceTree = ""; @@ -1254,7 +1251,6 @@ 4CF78061176E752E0032EE71 /* PasswordInputs */ = { isa = PBXGroup; children = ( - 4C7615651764C08C0015A1A6 /* PasswordEditView.xib */, 4C76156A1764C0C40015A1A6 /* PasswordInputView.xib */, 4C5A11FD1708DE8700223D8A /* PasswordCreatorView.xib */, ); @@ -1344,17 +1340,18 @@ 4CE39AC116ECE359000FE29D /* IconSelection.xib in Resources */, 4C5A11FF1708DE8800223D8A /* PasswordCreatorView.xib in Resources */, 4C1DDCDD1711ECEB00C98DA3 /* PasswordCreatorWindow.xib in Resources */, - 4C7615631764C08C0015A1A6 /* PasswordEditView.xib in Resources */, 4C7714AA176C998F00549F2A /* 43_TrashTemplate.pdf in Resources */, 4C7714AC176C9D4600549F2A /* 99_InfoTemplate.pdf in Resources */, 4CF7805F176E75110032EE71 /* ServerSettings.xib in Resources */, 4C7F35681779DFFB00C57890 /* Errors.strings in Resources */, - 4CD5D702177A5EE400100649 /* DocumentSettingsWindow.xib in Resources */, + 4CD5D702177A5EE400100649 /* DatabaseSettingsWindow.xib in Resources */, 4C6D1D25178579570014C5A5 /* 48_FolderTemplate.pdf in Resources */, 4C6D1D27178586CA0014C5A5 /* 99_AddFolderTemplate.pdf in Resources */, 4C6D1D2B17858A250014C5A5 /* MacPass.icns in Resources */, 4C701CBC178618A000581B88 /* 12_RemoteTemplate.pdf in Resources */, 4C366643178748F500B249F1 /* 99_HarddiskTemplate.pdf in Resources */, + 4C2C8B341787500E009649F3 /* UnprotectedWarningView.xib in Resources */, + 4CF29BF417879D0000851B60 /* 99_SaveToDiskTemplate.pdf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1448,7 +1445,6 @@ 4C46B88517063A070046109A /* NSString+MPPasswordCreation.m in Sources */, 4C46B88817063A170046109A /* NSString+MPPasswordAnalysis.m in Sources */, 4C5A11FE1708DE8700223D8A /* MPPasswordCreatorViewController.m in Sources */, - 4C7E832A172DE2F2002493D8 /* MPPasswordEditViewController.m in Sources */, 4CE5B54B173AFBA700207B39 /* MPDocument.m in Sources */, 4C22040D1746ED160054C916 /* KdbGroup+Undo.m in Sources */, 4C3D4C0817594CA40038DAAC /* HNHSeparator.m in Sources */, @@ -1512,7 +1508,7 @@ 4C2724D71778FF1A00FD8456 /* NSUUID+KeePassLib.m in Sources */, 4C2724DA17790E7C00FD8456 /* NSMutableData+Base64.m in Sources */, 4C2A6134177A1D5F00C9826C /* KPLErrorCodes.m in Sources */, - 4CD5D705177A5F3300100649 /* MPDocumentSettingsWindowController.m in Sources */, + 4CD5D705177A5F3300100649 /* MPDatabaseSettingsWindowController.m in Sources */, 4C5EC302177B700D00DA955B /* MPRootAdapter.m in Sources */, 4C74DD07177BD1640034A9DB /* MPCustomFieldView.m in Sources */, 4C36E5B4177CD4FB00152132 /* Kdb4Tree+KVOAdditions.m in Sources */, @@ -1528,6 +1524,7 @@ 4C5FE9AE17843CE20001D5A8 /* MPSelectedAttachmentTableCellView.m in Sources */, 4CF1F0CA1786B37900CD920E /* NSData+Gzip.m in Sources */, 4C3666411787327E00B249F1 /* MPDocument+Attachments.m in Sources */, + 4C16BA6217879A3C002B42BD /* MPPasswordStringFormatter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1544,16 +1541,6 @@ name = GeneralSettings.xib; sourceTree = ""; }; - 4C7615651764C08C0015A1A6 /* PasswordEditView.xib */ = { - isa = PBXVariantGroup; - children = ( - 4C7615661764C08F0015A1A6 /* Base */, - 4C7615671764C09E0015A1A6 /* en */, - 4C7615741764C4A40015A1A6 /* de */, - ); - name = PasswordEditView.xib; - sourceTree = ""; - }; 4C76156A1764C0C40015A1A6 /* PasswordInputView.xib */ = { isa = PBXVariantGroup; children = ( @@ -1587,8 +1574,7 @@ isa = PBXVariantGroup; children = ( 4C7615601764C05A0015A1A6 /* Base */, - 4C7615731764C4A40015A1A6 /* de */, - 4C76157B1764C5450015A1A6 /* en */, + 4CAAFDD51787AED60013FCF9 /* en */, ); name = MainMenu.xib; sourceTree = ""; diff --git a/MacPass/Base.lproj/InspectorView.xib b/MacPass/Base.lproj/InspectorView.xib index cf289946..24aeb52e 100644 --- a/MacPass/Base.lproj/InspectorView.xib +++ b/MacPass/Base.lproj/InspectorView.xib @@ -18,8 +18,6 @@ NSCustomView NSImageCell NSImageView - NSLevelIndicator - NSLevelIndicatorCell NSScrollView NSScroller NSSegmentedCell @@ -404,7 +402,6 @@ 268 {{20, 152}, {253, 19}} - _NS:9 {250, 750} YES @@ -428,47 +425,6 @@ NO - - - 268 - {{17, 131}, {42, 14}} - - - _NS:1535 - YES - - 68157504 - 272761856 - Quality - - _NS:1535 - - - - - NO - - - - 268 - {{20, 105}, {253, 18}} - - - _NS:9 - YES - - 0 - 0 - _NS:9 - - 2 - 2 - 2 - 2 - 2 - - NO - 268 @@ -498,6 +454,7 @@ 268 {{17, 16}, {259, 11}} + _NS:1535 YES @@ -1554,7 +1511,7 @@ 164 NSImage - 99_HarddiskTemplate + 99_SaveToDiskTemplate @@ -2224,22 +2181,6 @@ 29 3 - - - 3 - 1 - - 4 - 1 - - 8 - - 1000 - - 9 - 40 - 3 - 5 @@ -2256,86 +2197,6 @@ 29 3 - - - 6 - 0 - - 6 - 1 - - 20 - - 1000 - - 8 - 29 - 3 - - - - 3 - 0 - - 4 - 1 - - 8 - - 1000 - - 9 - 40 - 3 - - - - 5 - 0 - - 5 - 1 - - 20 - - 1000 - - 8 - 29 - 3 - - - - 3 - 0 - - 4 - 1 - - 8 - - 1000 - - 9 - 40 - 3 - - - - 5 - 0 - - 5 - 1 - - 20 - - 1000 - - 8 - 29 - 3 - 6 @@ -2729,8 +2590,6 @@ - - @@ -2958,37 +2817,6 @@ - - 1604 - - - - - - - - 1605 - - - - - 1606 - - - - - 1609 - - - - - - - - 1610 - - - 1665 @@ -3029,11 +2857,6 @@ - - 1741 - - - 1849 @@ -3089,16 +2912,6 @@ - - 1904 - - - - - 1905 - - - 1884 @@ -3117,11 +2930,6 @@ - - 1919 - - - 1929 @@ -4133,11 +3941,6 @@ - - 2085 - - - 2086 @@ -4698,7 +4501,7 @@ com.apple.InterfaceBuilder.CocoaPlugin - + @@ -4723,13 +4526,7 @@ - - - - - - @@ -4809,14 +4606,6 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - HNHLevelIndicatorCell - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -4825,7 +4614,6 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -4840,10 +4628,7 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -4943,7 +4728,6 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -5072,7 +4856,7 @@ - 2260 + 2261 @@ -5084,17 +4868,9 @@ ./Classes/HNHGradientView.h - - HNHLevelIndicatorCell - NSLevelIndicatorCell - - IBProjectSource - ./Classes/HNHLevelIndicatorCell.h - - HNHRoundedSecureTextFieldCell - NSSecureTextFieldCell + NSTextFieldCell IBProjectSource ./Classes/HNHRoundedSecureTextFieldCell.h @@ -5155,6 +4931,7 @@ MPInspectorViewController MPViewController + id id id id @@ -5162,6 +4939,10 @@ id + + _popUpPasswordGenerator: + id + addAttachment: id @@ -5333,7 +5114,7 @@ {128, 128} {128, 128} {128, 128} - {128, 128} + {128, 128} {15, 15} {8, 8} {128, 128} diff --git a/MacPass/Base.lproj/MainMenu.xib b/MacPass/Base.lproj/MainMenu.xib index 71331c71..db9afe19 100644 --- a/MacPass/Base.lproj/MainMenu.xib +++ b/MacPass/Base.lproj/MainMenu.xib @@ -274,7 +274,7 @@ - Document Settings… + Database Settings… 2147483647 @@ -282,7 +282,7 @@ - Change Password… + Change Master Password… 2147483647 @@ -788,11 +788,11 @@ - showDocumentSettings: + showDatabaseSettings: - 1233 + 1234 @@ -1298,7 +1298,7 @@ - 1233 + 1234 @@ -1358,15 +1358,15 @@ NSWindowController id - id + id editPassword: id - - showDocumentSettings: + + showDatabaseSettings: id diff --git a/MacPass/Base.lproj/PasswordInputView.xib b/MacPass/Base.lproj/PasswordInputView.xib index cebce41f..fead723c 100644 --- a/MacPass/Base.lproj/PasswordInputView.xib +++ b/MacPass/Base.lproj/PasswordInputView.xib @@ -230,7 +230,6 @@ {{277, 51}, {83, 32}} - _NS:9 {250, 250} YES @@ -988,7 +987,7 @@ HNHRoundedSecureTextFieldCell - NSSecureTextFieldCell + NSTextFieldCell IBProjectSource ./Classes/HNHRoundedSecureTextFieldCell.h diff --git a/MacPass/DatabaseSettingsWindow.xib b/MacPass/DatabaseSettingsWindow.xib index 1cadf9ef..91788c13 100644 --- a/MacPass/DatabaseSettingsWindow.xib +++ b/MacPass/DatabaseSettingsWindow.xib @@ -42,7 +42,7 @@ - MPDocumentSettingsWindowController + MPDatabaseSettingsWindowController FirstResponder @@ -66,16 +66,15 @@ 268 - {{378, 13}, {75, 32}} + {{384, 13}, {69, 32}} - _NS:9 YES 67108864 134217728 - Close + Save LucidaGrande 13 @@ -98,7 +97,7 @@ {{13, 41}, {441, 246}} - + _NS:9 @@ -263,7 +262,7 @@ - 2 + 0 6 {463, 10000000} @@ -302,7 +301,6 @@ 256 {{193, 1}, {16, 121}} - _NS:83 NO @@ -347,14 +345,15 @@ - + 256 268 - {{69, 130}, {68, 17}} + {{69, 126}, {68, 17}} + _NS:1535 YES @@ -373,9 +372,10 @@ 268 - {{142, 128}, {164, 22}} + {{142, 124}, {164, 22}} - + + _NS:9 YES @@ -398,9 +398,10 @@ Apple URL pasteboard type NSFilenamesPboardType - {{139, 67}, {170, 22}} + {{139, 95}, {170, 22}} - + + _NS:9 YES @@ -426,8 +427,9 @@ 268 - {{86, 71}, {51, 17}} + {{86, 99}, {51, 17}} + _NS:1535 YES @@ -446,16 +448,17 @@ 268 - {{142, 44}, {164, 19}} + {{142, 72}, {164, 19}} - + + _NS:9 YES - -2080374784 + -1543503872 134217728 - Generate Key - + Generate Keyfile + LucidaGrande 12 16 @@ -471,49 +474,35 @@ NO - + 268 - {{142, 96}, {164, 22}} + {{314, 97}, {44, 19}} - + + _NS:9 YES - - -1804599231 - 272630784 - - + + -2080374784 + 134217728 + Clear + _NS:9 - - YES - - - - NO - - - - 268 - {{22, 98}, {115, 17}} - - - _NS:1535 - YES - - 68157504 - 272630784 - Repeat Password: - - _NS:1535 - - - + + -2038153216 + 164 + + + 400 + 75 NO {{10, 33}, {421, 200}} + + Protection @@ -669,7 +658,7 @@ - + 256 @@ -677,7 +666,6 @@ 268 {{15, 154}, {149, 18}} - _NS:9 YES @@ -704,7 +692,6 @@ 268 {{15, 55}, {138, 18}} - _NS:9 YES @@ -731,8 +718,6 @@ 268 {{43, 35}, {187, 18}} - - _NS:9 YES @@ -758,7 +743,6 @@ 268 {{42, 131}, {94, 17}} - _NS:1535 YES @@ -779,7 +763,6 @@ 268 {{42, 106}, {142, 17}} - _NS:1535 YES @@ -800,7 +783,6 @@ 268 {{187, 101}, {122, 26}} - _NS:9 YES @@ -876,7 +858,6 @@ 268 {{189, 129}, {96, 22}} - _NS:9 YES @@ -898,7 +879,6 @@ 268 {{290, 126}, {19, 27}} - _NS:1099 YES @@ -918,7 +898,6 @@ 268 {{187, 54}, {220, 26}} - _NS:9 {750, 750} @@ -935,23 +914,23 @@ 400 75 - + + + A Folder + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + YES OtherViews - - - A Folder - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - + Item 2 @@ -986,8 +965,6 @@ {{10, 33}, {421, 200}} - - Advanced @@ -995,22 +972,47 @@ - + 0 YES YES - + + + + 268 + {{302, 13}, {82, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Cancel + + _NS:9 + + -2038284288 + 129 + + Gw + 200 + 25 + + NO + {467, 293} - {{0, 0}, {2560, 1418}} + {{0, 0}, {1920, 1058}} {10000000000000, 10000000000000} YES @@ -1121,14 +1123,6 @@ 699 - - - close: - - - - 707 - enableRecycleBinCheckButton @@ -1137,6 +1131,38 @@ 815 + + + clearKey: + + + + 954 + + + + generateKey: + + + + 955 + + + + close: + + + + 961 + + + + save: + + + + 962 + @@ -1176,15 +1202,15 @@ 2 - + - 3 + 5 0 - - 4 + + 6 1 - - 10 + + 12 1000 @@ -1224,6 +1250,38 @@ 29 3 + + + 3 + 0 + + 4 + 1 + + 10 + + 1000 + + 6 + 24 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + 3 @@ -1274,6 +1332,7 @@ + @@ -1334,6 +1393,22 @@ 29 3 + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + 6 @@ -1382,22 +1457,6 @@ 24 3 - - - 3 - 0 - - 4 - 1 - - 8 - - 1000 - - 6 - 24 - 3 - 3 @@ -1410,8 +1469,8 @@ 1000 - 3 - 9 + 9 + 40 3 @@ -1430,20 +1489,20 @@ 24 3 - + 3 0 - - 3 + + 4 1 - 62 + 13 1000 - 3 - 9 + 9 + 40 3 @@ -1474,8 +1533,8 @@ 1000 - 6 - 24 + 9 + 40 2 @@ -2450,6 +2509,54 @@ 620 + + + 10 + 0 + + 10 + 1 + + -7 + + 1000 + + 5 + 22 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + 3 @@ -2482,23 +2589,7 @@ 24 2 - - - 6 - 0 - - 6 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - + 5 0 @@ -2514,63 +2605,15 @@ 24 3 - + 3 0 - - 4 - 1 - - 8 - - 1000 - - 6 - 24 - 3 - - - - 5 - 0 - - 6 - 1 - - 8 - - 1000 - - 6 - 24 - 3 - - - - 10 - 0 - - 10 - 1 - - -7 - - 1000 - - 5 - 22 - 2 - - - - 3 - 0 4 1 - 10 + 8 1000 @@ -2578,8 +2621,24 @@ 24 3 - - + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + 6 0 @@ -2594,24 +2653,8 @@ 24 2 - - - 6 - 0 - - 6 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - - + + 5 0 @@ -2642,22 +2685,6 @@ 24 3 - - - 5 - 0 - - 5 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - 3 @@ -2674,39 +2701,7 @@ 24 2 - - - 5 - 0 - - 5 - 1 - - 25 - - 1000 - - 3 - 9 - 3 - - - - 11 - 0 - - 11 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - + 11 0 @@ -2722,13 +2717,28 @@ 24 2 - - - - + + + 5 + 0 + + 5 + 1 + + 72 + + 1000 + + 3 + 9 + 3 + + + + @@ -2838,11 +2848,6 @@ - - 657 - - - 665 @@ -2853,11 +2858,6 @@ - - 675 - - - 674 @@ -2873,11 +2873,6 @@ - - 671 - - - 668 @@ -2893,34 +2888,6 @@ - - 765 - - - - - - - - 766 - - - - - 771 - - - - - 775 - - - - - 776 - - - 731 @@ -2934,64 +2901,6 @@ - - 777 - - - - - 733 - - - - - 735 - - - - - 742 - - - - - - - - 774 - - - - - 769 - - - - - 761 - - - - - 749 - - - - - 748 - - - - - 770 - - - - - 744 - - - 625 @@ -3016,36 +2925,11 @@ - - 754 - - - - - 751 - - - 762 - - 752 - - - - - 764 - - - - - 648 - - - 626 @@ -3061,11 +2945,6 @@ - - 708 - - - 365 @@ -3111,6 +2990,132 @@ + + 853 + + + + + 854 + + + + + 867 + + + + + 869 + + + + + 871 + + + + + 906 + + + + + 923 + + + + + 927 + + + + + 928 + + + + + 942 + + + + + 944 + + + + + 945 + + + + + 949 + + + + + 950 + + + + + 884 + + + + + + + + 948 + + + + + 947 + + + + + 946 + + + + + 885 + + + + + 956 + + + + + + + + 957 + + + + + 958 + + + + + 959 + + + + + 960 + + + @@ -3123,13 +3128,15 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + + + - + com.apple.InterfaceBuilder.CocoaPlugin @@ -3149,16 +3156,16 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + - + - + com.apple.InterfaceBuilder.CocoaPlugin @@ -3282,23 +3289,20 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - - + + - - - - - - - - - + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin @@ -3309,27 +3313,23 @@ com.apple.InterfaceBuilder.CocoaPlugin - HNHRoundedTextFieldCell + HNHRoundedSecureTextFieldCell com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin @@ -3342,35 +3342,11 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - HNHRoundedTextFieldCell - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3378,26 +3354,66 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - 850 + 962 - HNHRoundedTextFieldCell + HNHRoundedSecureTextFieldCell NSTextFieldCell IBProjectSource - ./Classes/HNHRoundedTextFieldCell.h + ./Classes/HNHRoundedSecureTextFieldCell.h - MPDocumentSettingsWindowController + MPDatabaseSettingsWindowController NSWindowController + + id + id + + + + clearKey: + id + + + generateKey: + id + + NSTextView NSTextField @@ -3469,7 +3485,7 @@ IBProjectSource - ./Classes/MPDocumentSettingsWindowController.h + ./Classes/MPDatabaseSettingsWindowController.h @@ -3480,6 +3496,24 @@ ./Classes/NSLayoutConstraint.h + + NSTextView + + orderFrontSharingServicePicker: + id + + + orderFrontSharingServicePicker: + + orderFrontSharingServicePicker: + id + + + + IBProjectSource + ./Classes/NSTextView.h + + 0 diff --git a/MacPass/DocumentWindow.xib b/MacPass/DocumentWindow.xib index 416480f5..adde5c56 100644 --- a/MacPass/DocumentWindow.xib +++ b/MacPass/DocumentWindow.xib @@ -36,7 +36,7 @@ 15 2 - {{196, 240}, {560, 490}} + {{196, 240}, {700, 500}} 1618477056 Window NSWindow @@ -46,20 +46,21 @@ 256 - {560, 490} + {700, 500} - {{0, 0}, {1920, 1058}} {10000000000000, 10000000000000} YES - + 268 {560, 194} + + _NS:9 YES 2 @@ -158,15 +159,15 @@ NSWindowController id - id + id editPassword: id - - showDocumentSettings: + + showDatabaseSettings: id diff --git a/MacPass/EntryView.xib b/MacPass/EntryView.xib index 704075aa..c08e62c6 100644 --- a/MacPass/EntryView.xib +++ b/MacPass/EntryView.xib @@ -57,6 +57,7 @@ 268 {{7, 5}, {32, 19}} + _NS:9 YES @@ -85,8 +86,9 @@ NO - {684, 30} + {694, 30} + _NS:9 HNHGradientView @@ -103,8 +105,9 @@ 256 - {684, 548} + {694, 548} + _NS:13 YES @@ -113,8 +116,9 @@ 256 - {684, 17} + {694, 17} + @@ -272,7 +276,7 @@ - 188 + 198 10 3.4028234663852886e+38 @@ -325,8 +329,9 @@ 1 - {{0, 17}, {684, 548}} + {{0, 17}, {694, 548}} + _NS:11 @@ -338,6 +343,7 @@ -2147483392 {{224, 17}, {15, 102}} + _NS:58 NO @@ -350,6 +356,7 @@ -2147483392 {{0, 310}, {480, 16}} + _NS:60 NO @@ -364,16 +371,18 @@ - {684, 17} + {694, 17} + 4 - {{0, 30}, {684, 565}} + {{0, 30}, {694, 565}} + _NS:9 133680 @@ -387,8 +396,9 @@ 1 - {684, 594} + {694, 594} + _NS:9 NSView @@ -646,7 +656,7 @@ 266 - {188, 17} + {198, 17} {250, 750} @@ -663,7 +673,7 @@ NO - {{494, 1}, {188, 17}} + {{494, 1}, {198, 17}} @@ -1565,7 +1575,7 @@ - 790 + 834 @@ -1705,7 +1715,7 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + @@ -1725,15 +1735,117 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - 801 + 834 + + + + + HNHGradientView + NSView + + IBProjectSource + ./Classes/HNHGradientView.h + + + + MPEntryViewController + MPViewController + + NSButton + HNHGradientView + NSTableView + NSView + NSButton + NSTextField + NSSearchField + NSButton + NSButton + NSButton + NSLayoutConstraint + + + + addEntryButton + NSButton + + + bottomBar + HNHGradientView + + + entryTable + NSTableView + + + filterBar + NSView + + + filterDoneButton + NSButton + + + filterLabelTextField + NSTextField + + + filterSearchField + NSSearchField + + + filterTitleButton + NSButton + + + filterURLButton + NSButton + + + filterUsernameButton + NSButton + + + tableToTop + NSLayoutConstraint + + + + IBProjectSource + ./Classes/MPEntryViewController.h + + + + MPTableView + NSTableView + + IBProjectSource + ./Classes/MPTableView.h + + + + MPViewController + NSViewController + + IBProjectSource + ./Classes/MPViewController.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + - 0 IBCocoaFramework YES diff --git a/MacPass/MPDatabaseSettingsWindowController.h b/MacPass/MPDatabaseSettingsWindowController.h index d70a44fa..2377839c 100644 --- a/MacPass/MPDatabaseSettingsWindowController.h +++ b/MacPass/MPDatabaseSettingsWindowController.h @@ -8,9 +8,16 @@ #import +typedef NS_ENUM(NSUInteger, MPDatabaseSettingsTab) { + MPDatabaseSettingsTabGeneral, + MPDatabaseSettingsTabPassword, + MPDatabaseSettingsTabDisplay, + MPDatabaseSettingsTabAdvanced +}; + @class MPDocument; -@interface MPDocumentSettingsWindowController : NSWindowController +@interface MPDatabaseSettingsWindowController : NSWindowController @property (weak) IBOutlet NSTabView *sectionTabView; @@ -23,6 +30,9 @@ @property (weak) IBOutlet NSTextField *passwordTextField; @property (weak) IBOutlet NSPathControl *keyfilePathControl; +- (IBAction)clearKey:(id)sender; +- (IBAction)generateKey:(id)sender; + /* Display Tab */ @property (weak) IBOutlet NSButton *protectTitleCheckButton; @property (weak) IBOutlet NSButton *protectUserNameCheckButton; @@ -30,13 +40,15 @@ @property (weak) IBOutlet NSButton *protectURLCheckButton; @property (weak) IBOutlet NSButton *protectNotesCheckButton; - /* Advanced Tab*/ @property (weak) IBOutlet NSButton *enableRecycleBinCheckButton; @property (weak) IBOutlet NSButton *emptyRecycleBinOnQuitCheckButton; @property (weak) IBOutlet NSPopUpButton *selectRecycleBinGroupPopUpButton; - (id)initWithDocument:(MPDocument *)document; + +- (void)showSettingsTab:(MPDatabaseSettingsTab)tab; + - (void)update; @end diff --git a/MacPass/MPDatabaseSettingsWindowController.m b/MacPass/MPDatabaseSettingsWindowController.m index 5c2ed703..28dd7d00 100644 --- a/MacPass/MPDatabaseSettingsWindowController.m +++ b/MacPass/MPDatabaseSettingsWindowController.m @@ -6,7 +6,7 @@ // Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. // -#import "MPDocumentSettingsWindowController.h" +#import "MPDatabaseSettingsWindowController.h" #import "MPDocument.h" #import "MPDocumentWindowController.h" #import "MPDatabaseVersion.h" @@ -16,20 +16,22 @@ #import "Kdb4Node.h" #import "KdbGroup+MPAdditions.h" -@interface MPDocumentSettingsWindowController () { +@interface MPDatabaseSettingsWindowController () { MPDocument *_document; } +@property (nonatomic,assign) BOOL trashEnabled; + @end -@implementation MPDocumentSettingsWindowController +@implementation MPDatabaseSettingsWindowController - (id)init { return [self initWithDocument:nil]; } - (id)initWithDocument:(MPDocument *)document { - self = [super initWithWindowNibName:@"DocumentSettingsWindow"]; + self = [super initWithWindowNibName:@"DatabaseSettingsWindow"]; if(self) { _document = document; } @@ -53,11 +55,40 @@ } } +- (IBAction)save:(id)sender { + + /* Protection */ + _document.password = [self.passwordTextField stringValue]; + _document.key = [self.keyfilePathControl URL]; + + /* General */ + _document.treeV4.databaseDescription = [self.databaseDescriptionTextView string]; + _document.treeV4.databaseName = [self.databaseNameTextField stringValue]; + + /* Display */ + + /* Advanced */ + _document.treeV4.recycleBinEnabled = self.trashEnabled; + NSMenuItem *menuItem = [self.selectRecycleBinGroupPopUpButton selectedItem]; + KdbGroup *group = [menuItem representedObject]; + [_document useGroupAsTrash:group]; + + _document.treeV4.protectNotes = [self.protectNotesCheckButton state] == NSOnState; + _document.treeV4.protectPassword = [self.protectPasswortCheckButton state] == NSOnState; + _document.treeV4.protectTitle = [self.protectTitleCheckButton state] == NSOnState; + _document.treeV4.protectUrl = [self.protectURLCheckButton state] == NSOnState; + _document.treeV4.protectUserName = [self.protectUserNameCheckButton state] == NSOnState; + + /* Close to finish */ + [self close:nil]; +} + - (IBAction)close:(id)sender { [NSApp endSheet:[self window]]; [[self window] orderOut:nil]; } + - (void)update { /* Update all stuff that might have changed */ Kdb4Tree *tree = _document.treeV4; @@ -66,36 +97,42 @@ } } +- (void)showSettingsTab:(MPDatabaseSettingsTab)tab { + [self.sectionTabView selectTabViewItemAtIndex:tab]; +} + +#pragma mark Actions +- (IBAction)clearKey:(id)sender { + [self.keyfilePathControl setURL:nil]; +} + +- (IBAction)generateKey:(id)sender { +} + #pragma mark Private Helper - (void)_setupDatabase:(Kdb4Tree *)tree { - [self.databaseNameTextField bind:NSValueBinding toObject:tree withKeyPath:@"databaseName" options:nil]; - [self.databaseDescriptionTextView bind:NSValueBinding toObject:tree withKeyPath:@"databaseDescription" options:nil]; + [self.databaseNameTextField setStringValue:tree.databaseName]; + [self.databaseDescriptionTextView setString:tree.databaseDescription]; } - (void)_setupProtectionTab:(Kdb4Tree *)tree { - [self.protectNotesCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"protectNotes" options:nil]; - [self.protectPasswortCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"protectPassword" options:nil]; - [self.protectTitleCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"protectTitle" options:nil]; - [self.protectURLCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"protectUrl" options:nil]; - [self.protectUserNameCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"protectUserName" options:nil]; + [self.protectNotesCheckButton setState:tree.protectNotes ? NSOnState : NSOffState ]; + [self.protectNotesCheckButton setState:tree.protectPassword ? NSOnState : NSOffState]; + [self.protectTitleCheckButton setState:tree.protectTitle ? NSOnState : NSOffState]; + [self.protectURLCheckButton setState:tree.protectUrl ? NSOnState : NSOffState]; + [self.protectUserNameCheckButton setState:tree.protectUserName ? NSOnState : NSOffState]; } - (void)_setupAdvancedTab:(Kdb4Tree *)tree { - [self.enableRecycleBinCheckButton bind:NSValueBinding toObject:tree withKeyPath:@"recycleBinEnabled" options:nil]; - [self.selectRecycleBinGroupPopUpButton bind:NSEnabledBinding toObject:tree withKeyPath:@"recycleBinEnabled" options:nil]; + self.trashEnabled = tree.recycleBinEnabled; + [self.enableRecycleBinCheckButton bind:NSValueBinding toObject:self withKeyPath:@"trashEnabled" options:nil]; + [self.selectRecycleBinGroupPopUpButton bind:NSEnabledBinding toObject:self withKeyPath:@"trashEnabled" options:nil]; [self _updateTrashFolders:tree]; } - (void)_setupPasswordTab:(Kdb4Tree *)tree { - -} - - -- (void)_didSelectTrashFolder:(id)sender { - NSMenuItem *menuItem = sender; - /* if we do not get a group, use nil to reset the trash */ - KdbGroup *group = [menuItem representedObject]; - [_document useGroupAsTrash:group]; + [self.passwordTextField setStringValue:_document.password ? _document.password : @""]; + [self.keyfilePathControl setURL:_document.key]; } - (void)_updateTrashFolders:(Kdb4Tree *)tree { @@ -105,22 +142,21 @@ - (NSMenu *)_buildTreeMenu:(Kdb4Tree *)tree { NSMenu *menu = [[NSMenu alloc] init]; + [menu setAutoenablesItems:NO]; for(Kdb4Group *group in tree.root.groups) { NSMenuItem *groupItem = [[NSMenuItem alloc] init]; [groupItem setImage:group.icon]; [groupItem setTitle:group.name]; - [groupItem setAction:@selector(_didSelectTrashFolder:)]; - [groupItem setTarget:self]; [groupItem setRepresentedObject:group]; + [groupItem setEnabled:YES]; if([group.uuid isEqual:tree.recycleBinUuid]) { [groupItem setState:NSOnState]; } [menu addItem:groupItem]; } NSMenuItem *selectItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"SELECT_RECYCLEBIN", @"Menu item if no reycleBin is selected") action:NULL keyEquivalent:@""]; - [selectItem setAction:@selector(_didSelectTrashFolder:)]; - [selectItem setTarget:self]; + [selectItem setEnabled:YES]; [menu insertItem:selectItem atIndex:0]; return menu; diff --git a/MacPass/MPDocument+Attachments.m b/MacPass/MPDocument+Attachments.m index ff88f55d..71c031a9 100644 --- a/MacPass/MPDocument+Attachments.m +++ b/MacPass/MPDocument+Attachments.m @@ -34,11 +34,10 @@ } if( [anEntry isKindOfClass:[Kdb4Entry class]]) { Kdb4Entry *entry = (Kdb4Entry *)anEntry; - NSStringEncoding encoding; - NSString *fileContents = [NSString stringWithContentsOfURL:location usedEncoding:&encoding error:&error]; - if(!fileContents) { + NSData *fileData = [NSData dataWithContentsOfURL:location options:NSDataReadingMappedIfSafe error:&error]; + if(!fileData) { [NSApp presentError:error]; - fileContents = nil; + fileData = nil; error = nil; return; // failed } @@ -51,7 +50,6 @@ binary.binaryId = nextId; binary.compressed = (self.treeV4.compressionAlgorithm != KPLCompressionNone); NSData *encodedData; - NSData *fileData = [fileContents dataUsingEncoding:encoding]; if(binary.compressed) { switch(self.treeV4.compressionAlgorithm) { case KPLCompressionGzip: { diff --git a/MacPass/MPDocument.h b/MacPass/MPDocument.h index f577bd45..82dd8cdd 100644 --- a/MacPass/MPDocument.h +++ b/MacPass/MPDocument.h @@ -42,7 +42,7 @@ APPKIT_EXTERN NSString *const MPDocumentGroupKey; @property (strong, readonly, nonatomic) KdbTree *tree; @property (weak, readonly, nonatomic) KdbGroup *root; @property (readonly, strong) MPRootAdapter *rootAdapter; -@property (nonatomic, strong) NSString *password; +@property (nonatomic, copy) NSString *password; @property (nonatomic, strong) NSURL *key; @property (assign, readonly) MPDatabaseVersion version; diff --git a/MacPass/MPDocument.m b/MacPass/MPDocument.m index a9ff5e72..ef9e51ae 100644 --- a/MacPass/MPDocument.m +++ b/MacPass/MPDocument.m @@ -56,6 +56,8 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey"; @property (readonly) BOOL useTrash; @property (weak, readonly) KdbGroup *trash; +@property (strong) IBOutlet NSView *warningView; +@property (weak) IBOutlet NSImageView *warningViewImage; @end @@ -175,15 +177,15 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey"; - (void)setPassword:(NSString *)password { if(![_password isEqualToString:password]) { - _password = password; - _secured |= ([_password length] > 0); + _password = [password copy]; + [self _updateIsSecured]; } } - (void)setKey:(NSURL *)key { if(![[_key absoluteString] isEqualToString:[key absoluteString]]) { _key = key; - _secured |= (_key != nil); + [self _updateIsSecured]; } } @@ -197,6 +199,19 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey"; return NO; } +- (BOOL)prepareSavePanel:(NSSavePanel *)savePanel { + if(self.isSecured) { + [savePanel setAccessoryView:nil]; + return YES; + } + if(!self.warningView) { + [[NSBundle mainBundle] loadNibNamed:@"UnprotectedWarningView" owner:self topLevelObjects:nil]; + [self.warningViewImage setImage:[NSImage imageNamed:NSImageNameCaution]]; + } + [savePanel setAccessoryView:self.warningView]; + return YES; +} + #pragma mark Data Accesors - (void)setTree:(KdbTree *)tree { if(_tree != tree) { @@ -454,6 +469,12 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey"; } #pragma mark Private +- (void)_updateIsSecured { + BOOL securePassword = ([self.password length] > 0); + BOOL secureKey = (nil != self.key); + self.secured = (secureKey || securePassword); +} + - (void)_cleanupLock { if(_didLockFile) { [[NSFileManager defaultManager] removeItemAtURL:_lockFileURL error:nil]; diff --git a/MacPass/MPDocumentWindowController.h b/MacPass/MPDocumentWindowController.h index 32e86de2..dd8ef12a 100644 --- a/MacPass/MPDocumentWindowController.h +++ b/MacPass/MPDocumentWindowController.h @@ -11,7 +11,6 @@ @class MPViewController; @class MPEntryViewController; @class MPInspectorViewController; -@class MPPasswordEditViewController; @class MPPasswordInputController; @class MPOutlineViewController; @@ -23,7 +22,6 @@ APPKIT_EXTERN NSString *const MPCurrentItemChangedNotification; @interface MPDocumentWindowController : NSWindowController @property (readonly, strong) MPPasswordInputController *passwordInputController; -@property (readonly, strong) MPPasswordEditViewController *passwordEditController; @property (readonly, strong) MPEntryViewController *entryViewController; @property (readonly, strong) MPOutlineViewController *outlineViewController; @property (readonly, strong) MPInspectorViewController *inspectorViewController; @@ -39,7 +37,7 @@ APPKIT_EXTERN NSString *const MPCurrentItemChangedNotification; - (void)showPasswordInput; - (void)performFindPanelAction:(id)sender; - (IBAction)editPassword:(id)sender; -- (IBAction)showDocumentSettings:(id)sender; +- (IBAction)showDatabaseSettings:(id)sender; - (void)lock:(id)sender; diff --git a/MacPass/MPDocumentWindowController.m b/MacPass/MPDocumentWindowController.m index 6870c26d..f82e7430 100644 --- a/MacPass/MPDocumentWindowController.m +++ b/MacPass/MPDocumentWindowController.m @@ -10,13 +10,12 @@ #import "MPDocument.h" #import "MPPasswordInputController.h" #import "MPEntryViewController.h" -#import "MPPasswordEditViewController.h" #import "MPToolbarDelegate.h" #import "MPOutlineViewController.h" #import "MPInspectorViewController.h" #import "MPAppDelegate.h" #import "MPActionHelper.h" -#import "MPDocumentSettingsWindowController.h" +#import "MPDatabaseSettingsWindowController.h" #import "MPConstants.h" NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCurrentItemChangedNotification"; @@ -34,11 +33,10 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur @property (unsafe_unretained) KdbEntry *currentEntry; @property (strong) MPPasswordInputController *passwordInputController; -@property (strong) MPPasswordEditViewController *passwordEditController; @property (strong) MPEntryViewController *entryViewController; @property (strong) MPOutlineViewController *outlineViewController; @property (strong) MPInspectorViewController *inspectorViewController; -@property (strong) MPDocumentSettingsWindowController *documentSettingsWindowController; +@property (strong) MPDatabaseSettingsWindowController *documentSettingsWindowController; @property (strong) MPToolbarDelegate *toolbarDelegate; @@ -52,7 +50,6 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur _firstResponder = nil; _toolbarDelegate = [[MPToolbarDelegate alloc] init]; _outlineViewController = [[MPOutlineViewController alloc] init]; - _passwordEditController = [[MPPasswordEditViewController alloc] init]; _entryViewController = [[MPEntryViewController alloc] init]; _inspectorViewController = [[MPInspectorViewController alloc] init]; _currentItem = nil; @@ -205,18 +202,11 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur } - (void)editPassword:(id)sender { - if(!self.passwordEditController) { - _passwordEditController = [[MPPasswordEditViewController alloc] init]; - } - [self _setContentViewController:self.passwordEditController]; + [self _showDatabaseSetting:MPDatabaseSettingsTabPassword]; } -- (void)showDocumentSettings:(id)sender { - if(!self.documentSettingsWindowController) { - _documentSettingsWindowController = [[MPDocumentSettingsWindowController alloc] initWithDocument:[self document]]; - } - [_documentSettingsWindowController update]; - [[NSApplication sharedApplication] beginSheet:[_documentSettingsWindowController window] modalForWindow:[self window] modalDelegate:nil didEndSelector:NULL contextInfo:NULL]; +- (void)showDatabaseSettings:(id)sender { + [self _showDatabaseSetting:MPDatabaseSettingsTabGeneral]; } - (void)lock:(id)sender { @@ -335,6 +325,16 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur #pragma mark Helper + +- (void)_showDatabaseSetting:(MPDatabaseSettingsTab)tab { + if(!self.documentSettingsWindowController) { + _documentSettingsWindowController = [[MPDatabaseSettingsWindowController alloc] initWithDocument:[self document]]; + } + [self.documentSettingsWindowController update]; + [self.documentSettingsWindowController showSettingsTab:tab]; + [[NSApplication sharedApplication] beginSheet:[self.documentSettingsWindowController window] modalForWindow:[self window] modalDelegate:nil didEndSelector:NULL contextInfo:NULL]; +} + - (NSSearchField *)locateToolbarSearchField { for(NSToolbarItem *toolbarItem in [[self.window toolbar] items]) { NSView *view = [toolbarItem view]; diff --git a/MacPass/MPEntryViewController.m b/MacPass/MPEntryViewController.m index a3f19638..ae3fd76e 100644 --- a/MacPass/MPEntryViewController.m +++ b/MacPass/MPEntryViewController.m @@ -159,13 +159,14 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername"; [self.entryTable setDataSource:_dataSource]; [parentColumn setHidden:YES]; + } - (void)setupNotifications:(MPDocumentWindowController *)windowController { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_didChangeCurrentItem:) name:MPCurrentItemChangedNotification - object:windowController]; + object:windowController]; } #pragma mark NSTableViewDelgate diff --git a/MacPass/MPIconHelper.h b/MacPass/MPIconHelper.h index 60a8c337..322ffee5 100644 --- a/MacPass/MPIconHelper.h +++ b/MacPass/MPIconHelper.h @@ -27,6 +27,7 @@ typedef NS_ENUM(NSUInteger, MPIconType) { MPIconInfo = 1000, MPIconAddFolder, MPIconHardDisk, + MPIconSaveToDisk, }; @interface MPIconHelper : NSObject diff --git a/MacPass/MPIconHelper.m b/MacPass/MPIconHelper.m index 4a6e1dc8..192b3fc8 100644 --- a/MacPass/MPIconHelper.m +++ b/MacPass/MPIconHelper.m @@ -53,7 +53,8 @@ static NSDictionary *icons; @(MPIconFolder): @"48_FolderTemplate", @(MPIconInfo): @"99_InfoTemplate", @(MPIconAddFolder): @"99_AddFolderTemplate", - @(MPIconHardDisk): @"99_HarddiskTemplate" + @(MPIconHardDisk): @"99_HarddiskTemplate", + @(MPIconSaveToDisk): @"99_SaveToDiskTemplate" }; return imageNames; } diff --git a/MacPass/MPInspectorViewController.m b/MacPass/MPInspectorViewController.m index dff38938..8a88f51c 100644 --- a/MacPass/MPInspectorViewController.m +++ b/MacPass/MPInspectorViewController.m @@ -31,6 +31,7 @@ #import "NSMutableData+Base64.h" #import "HNHGradientView.h" +#import "HNHTableRowView.h" enum { MPGeneralTab, @@ -440,6 +441,15 @@ enum { return view; } +- (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row { + HNHTableRowView *view = nil; + if(tableView == self.attachmentTableView) { + view = [[HNHTableRowView alloc] init]; + view.selectionCornerRadius = 7; + } + return view; +} + - (void)_customFieldFrameChanged:(NSNotification *)notification { // NSView *sender = [notification object]; // NSLog(@"didChangeFrameFor: %@ to: %@", sender, NSStringFromRect([sender frame])); diff --git a/MacPass/MacPass-Info.plist b/MacPass/MacPass-Info.plist index bee4b9a5..70320695 100644 --- a/MacPass/MacPass-Info.plist +++ b/MacPass/MacPass-Info.plist @@ -48,7 +48,7 @@ CFBundleSignature ???? CFBundleVersion - 1960 + 2069 LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} NSHumanReadableCopyright diff --git a/MacPass/de.lproj/MainMenu.strings b/MacPass/de.lproj/MainMenu.strings index f31b45c9..b2869c17 100644 --- a/MacPass/de.lproj/MainMenu.strings +++ b/MacPass/de.lproj/MainMenu.strings @@ -120,22 +120,22 @@ "298.title" = "Customize Toolbar…"; /* Class = "NSMenuItem"; title = "Help"; ObjectID = "490"; */ -"490.title" = "Help"; +"490.title" = "Hilfe"; /* Class = "NSMenu"; title = "Help"; ObjectID = "491"; */ -"491.title" = "Help"; +"491.title" = "Hilfe"; /* Class = "NSMenuItem"; title = "MacPass Help"; ObjectID = "492"; */ -"492.title" = "MacPass Help"; +"492.title" = "MacPass Hilfe"; /* Class = "NSMenuItem"; title = "Toggle Inspector"; ObjectID = "1181"; */ -"1181.title" = "Toggle Inspector"; +"1181.title" = "Inspector umschalten"; /* Class = "NSMenuItem"; title = "Show Password Creator"; ObjectID = "1200"; */ -"1200.title" = "Show Password Creator"; +"1200.title" = "Passwortgenerator"; /* Class = "NSMenuItem"; title = "Change Master Password…"; ObjectID = "1203"; */ -"1203.title" = "Change Master Password…"; +"1203.title" = "Hauptpassword ändern…"; /* Class = "NSMenuItem"; title = "Database Settings…"; ObjectID = "1231"; */ -"1231.title" = "Database Settings…"; +"1231.title" = "Datenbankeinstellungen…";