mirror of
https://github.com/MacPass/MacPass.git
synced 2026-01-30 16:48:17 +00:00
Compare commits
4 Commits
0.2.1-alph
...
0.3-alpha
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
628fbbfeda | ||
|
|
9c3a62bef6 | ||
|
|
7feb2517dd | ||
|
|
59db224a35 |
File diff suppressed because one or more lines are too long
@@ -52,6 +52,8 @@
|
||||
4C2E381F16D11FF900037A9D /* 05_LanguagesTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381C16D11FF900037A9D /* 05_LanguagesTemplate.pdf */; };
|
||||
4C2E382316D1421B00037A9D /* MPIconHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2E382216D1421B00037A9D /* MPIconHelper.m */; };
|
||||
4C2E382616D1470200037A9D /* MPViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2E382516D1470200037A9D /* MPViewController.m */; };
|
||||
4C3666411787327E00B249F1 /* MPDocument+Attachments.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3666401787327E00B249F1 /* MPDocument+Attachments.m */; };
|
||||
4C366643178748F500B249F1 /* 99_HarddiskTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C366642178748F500B249F1 /* 99_HarddiskTemplate.pdf */; };
|
||||
4C36E5B4177CD4FB00152132 /* Kdb4Tree+KVOAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C36E5B3177CD4FB00152132 /* Kdb4Tree+KVOAdditions.m */; };
|
||||
4C37A6731769393300AD0A40 /* HNHTableHeaderCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C37A6721769393300AD0A40 /* HNHTableHeaderCell.m */; };
|
||||
4C37A84015B8B474005EF8EE /* MPOutlineDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C37A83F15B8B474005EF8EE /* MPOutlineDataSource.m */; };
|
||||
@@ -185,6 +187,7 @@
|
||||
4CE5B54B173AFBA700207B39 /* MPDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE5B549173AFBA700207B39 /* MPDocument.m */; };
|
||||
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 */; };
|
||||
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 */; };
|
||||
@@ -283,6 +286,8 @@
|
||||
4C2E382216D1421B00037A9D /* MPIconHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPIconHelper.m; sourceTree = "<group>"; };
|
||||
4C2E382416D1470200037A9D /* MPViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPViewController.h; sourceTree = "<group>"; };
|
||||
4C2E382516D1470200037A9D /* MPViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPViewController.m; sourceTree = "<group>"; };
|
||||
4C3666401787327E00B249F1 /* MPDocument+Attachments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MPDocument+Attachments.m"; sourceTree = "<group>"; };
|
||||
4C366642178748F500B249F1 /* 99_HarddiskTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 99_HarddiskTemplate.pdf; sourceTree = "<group>"; };
|
||||
4C36E5B2177CD4FB00152132 /* Kdb4Tree+KVOAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Kdb4Tree+KVOAdditions.h"; sourceTree = "<group>"; };
|
||||
4C36E5B3177CD4FB00152132 /* Kdb4Tree+KVOAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Kdb4Tree+KVOAdditions.m"; sourceTree = "<group>"; };
|
||||
4C37A6711769393300AD0A40 /* HNHTableHeaderCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHTableHeaderCell.h; sourceTree = "<group>"; };
|
||||
@@ -541,6 +546,8 @@
|
||||
4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayWindowController.m; sourceTree = "<group>"; };
|
||||
4CE8247316E2F2B900573141 /* MPOverlayView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPOverlayView.h; sourceTree = "<group>"; };
|
||||
4CE8247416E2F2B900573141 /* MPOverlayView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayView.m; sourceTree = "<group>"; };
|
||||
4CF1F0C81786B37900CD920E /* NSData+Gzip.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Gzip.m"; sourceTree = "<group>"; };
|
||||
4CF1F0C91786B37900CD920E /* NSData+Gzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Gzip.h"; sourceTree = "<group>"; };
|
||||
4CF6C70F176F4533007A811D /* MPStringLengthValueTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPStringLengthValueTransformer.h; sourceTree = "<group>"; };
|
||||
4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPStringLengthValueTransformer.m; sourceTree = "<group>"; };
|
||||
4CF6C715176F5183007A811D /* MPServerRequestHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPServerRequestHandler.h; sourceTree = "<group>"; };
|
||||
@@ -757,6 +764,8 @@
|
||||
4C2724D01778EFE300FD8456 /* NSString+Empty.m */,
|
||||
4C2724D21778FA0700FD8456 /* NSDate+Packed.h */,
|
||||
4C2724D31778FA0700FD8456 /* NSDate+Packed.m */,
|
||||
4CF1F0C81786B37900CD920E /* NSData+Gzip.m */,
|
||||
4CF1F0C91786B37900CD920E /* NSData+Gzip.h */,
|
||||
4C2724D51778FF1A00FD8456 /* NSUUID+KeePassLib.h */,
|
||||
4C2724D61778FF1A00FD8456 /* NSUUID+KeePassLib.m */,
|
||||
4C2724D817790E7C00FD8456 /* NSMutableData+Base64.h */,
|
||||
@@ -846,6 +855,7 @@
|
||||
4CE5B549173AFBA700207B39 /* MPDocument.m */,
|
||||
4C5EC300177B700D00DA955B /* MPRootAdapter.h */,
|
||||
4C5EC301177B700D00DA955B /* MPRootAdapter.m */,
|
||||
4C3666401787327E00B249F1 /* MPDocument+Attachments.m */,
|
||||
);
|
||||
name = Model;
|
||||
sourceTree = "<group>";
|
||||
@@ -879,6 +889,7 @@
|
||||
4C7714A9176C998F00549F2A /* 43_TrashTemplate.pdf */,
|
||||
4C6D1D24178579570014C5A5 /* 48_FolderTemplate.pdf */,
|
||||
4C7714AB176C9D4600549F2A /* 99_InfoTemplate.pdf */,
|
||||
4C366642178748F500B249F1 /* 99_HarddiskTemplate.pdf */,
|
||||
4C6D1D26178586CA0014C5A5 /* 99_AddFolderTemplate.pdf */,
|
||||
);
|
||||
path = Icons;
|
||||
@@ -1343,6 +1354,7 @@
|
||||
4C6D1D27178586CA0014C5A5 /* 99_AddFolderTemplate.pdf in Resources */,
|
||||
4C6D1D2B17858A250014C5A5 /* MacPass.icns in Resources */,
|
||||
4C701CBC178618A000581B88 /* 12_RemoteTemplate.pdf in Resources */,
|
||||
4C366643178748F500B249F1 /* 99_HarddiskTemplate.pdf in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -1514,6 +1526,8 @@
|
||||
4CC672791781D0C0006DEDCF /* KdbGroup+MPAdditions.m in Sources */,
|
||||
4CC6727C1781D0D2006DEDCF /* KdbEntry+MPAdditions.m in Sources */,
|
||||
4C5FE9AE17843CE20001D5A8 /* MPSelectedAttachmentTableCellView.m in Sources */,
|
||||
4CF1F0CA1786B37900CD920E /* NSData+Gzip.m in Sources */,
|
||||
4C3666411787327E00B249F1 /* MPDocument+Attachments.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
@@ -137,7 +137,6 @@
|
||||
<string key="NSFrameSize">{293, 30}</string>
|
||||
<reference key="NSSuperview" ref="87082330"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<string key="NSClassName">HNHGradientView</string>
|
||||
</object>
|
||||
@@ -499,7 +498,6 @@
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{17, 16}, {259, 11}}</string>
|
||||
<reference key="NSSuperview" ref="726109125"/>
|
||||
<reference key="NSNextKeyView" ref="894571713"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1535</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="72260846">
|
||||
@@ -634,7 +632,6 @@
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrame">{{236, 1}, {16, 332}}</string>
|
||||
<reference key="NSSuperview" ref="850153963"/>
|
||||
<reference key="NSNextKeyView" ref="894571713"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:83</string>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
<reference key="NSTarget" ref="850153963"/>
|
||||
@@ -1269,6 +1266,14 @@
|
||||
</object>
|
||||
<int key="connectionID">2068</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">addAttachment:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="394980328"/>
|
||||
</object>
|
||||
<int key="connectionID">2244</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">imageView</string>
|
||||
@@ -1413,7 +1418,7 @@
|
||||
<reference key="NSControlView" ref="966655738"/>
|
||||
<int key="NSButtonFlags">-2033434624</int>
|
||||
<int key="NSButtonFlags2">164</int>
|
||||
<object class="NSCustomResource" key="NSNormalImage">
|
||||
<object class="NSCustomResource" key="NSNormalImage" id="222943187">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSRemoveTemplate</string>
|
||||
</object>
|
||||
@@ -1487,9 +1492,9 @@
|
||||
<object class="NSTextField" id="388876279">
|
||||
<reference key="NSNextResponder" ref="421971283"/>
|
||||
<int key="NSvFlags">266</int>
|
||||
<string key="NSFrame">{{40, 10}, {157, 17}}</string>
|
||||
<string key="NSFrame">{{40, 10}, {128, 17}}</string>
|
||||
<reference key="NSSuperview" ref="421971283"/>
|
||||
<reference key="NSNextKeyView" ref="121170874"/>
|
||||
<reference key="NSNextKeyView" ref="877766676"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:20</string>
|
||||
<string key="NSAntiCompressionPriority">{250, 750}</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@@ -1508,7 +1513,7 @@
|
||||
<object class="NSButton" id="121170874">
|
||||
<reference key="NSNextResponder" ref="421971283"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{202, 8}, {43, 19}}</string>
|
||||
<string key="NSFrame">{{213, 8}, {32, 19}}</string>
|
||||
<reference key="NSSuperview" ref="421971283"/>
|
||||
<reference key="NSNextKeyView" ref="360758282"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
@@ -1516,12 +1521,41 @@
|
||||
<object class="NSButtonCell" key="NSCell" id="535600323">
|
||||
<int key="NSCellFlags">-2080374784</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Save</string>
|
||||
<string key="NSContents"/>
|
||||
<reference key="NSSupport" ref="323604925"/>
|
||||
<string key="NSCellIdentifier">_NS:9</string>
|
||||
<reference key="NSControlView" ref="121170874"/>
|
||||
<int key="NSButtonFlags">-2038153216</int>
|
||||
<int key="NSButtonFlags">-2033434624</int>
|
||||
<int key="NSButtonFlags2">164</int>
|
||||
<reference key="NSNormalImage" ref="222943187"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">400</int>
|
||||
<int key="NSPeriodicInterval">75</int>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSButton" id="877766676">
|
||||
<reference key="NSNextResponder" ref="421971283"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{173, 8}, {32, 19}}</string>
|
||||
<reference key="NSSuperview" ref="421971283"/>
|
||||
<reference key="NSNextKeyView" ref="121170874"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="500217449">
|
||||
<int key="NSCellFlags">-2080374784</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents"/>
|
||||
<reference key="NSSupport" ref="323604925"/>
|
||||
<string key="NSCellIdentifier">_NS:9</string>
|
||||
<reference key="NSControlView" ref="877766676"/>
|
||||
<int key="NSButtonFlags">-2033958912</int>
|
||||
<int key="NSButtonFlags2">164</int>
|
||||
<object class="NSCustomResource" key="NSNormalImage">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">99_HarddiskTemplate</string>
|
||||
</object>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">400</int>
|
||||
@@ -1546,6 +1580,22 @@
|
||||
</object>
|
||||
<int key="connectionID">2215</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">saveButton</string>
|
||||
<reference key="source" ref="421971283"/>
|
||||
<reference key="destination" ref="877766676"/>
|
||||
</object>
|
||||
<int key="connectionID">2259</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">removeButton</string>
|
||||
<reference key="source" ref="421971283"/>
|
||||
<reference key="destination" ref="121170874"/>
|
||||
</object>
|
||||
<int key="connectionID">2260</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
@@ -4262,7 +4312,7 @@
|
||||
<reference key="firstItem" ref="121170874"/>
|
||||
<int key="firstAttribute">5</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="388876279"/>
|
||||
<reference key="secondItem" ref="877766676"/>
|
||||
<int key="secondAttribute">6</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBNSLayoutSymbolicConstant" key="constant">
|
||||
@@ -4290,8 +4340,24 @@
|
||||
<float key="scoringTypeFloat">29</float>
|
||||
<int key="contentType">3</int>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="334071022">
|
||||
<reference key="firstItem" ref="877766676"/>
|
||||
<int key="firstAttribute">5</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="388876279"/>
|
||||
<int key="secondAttribute">6</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBNSLayoutSymbolicConstant" key="constant">
|
||||
<double key="value">8</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<reference key="containingView" ref="421971283"/>
|
||||
<int key="scoringType">6</int>
|
||||
<float key="scoringTypeFloat">24</float>
|
||||
<int key="contentType">3</int>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="555758646">
|
||||
<reference key="firstItem" ref="121170874"/>
|
||||
<reference key="firstItem" ref="877766676"/>
|
||||
<int key="firstAttribute">3</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="388876279"/>
|
||||
@@ -4306,20 +4372,20 @@
|
||||
<float key="scoringTypeFloat">24</float>
|
||||
<int key="contentType">2</int>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="924075646">
|
||||
<reference key="firstItem" ref="388876279"/>
|
||||
<int key="firstAttribute">10</int>
|
||||
<object class="IBNSLayoutConstraint" id="972049638">
|
||||
<reference key="firstItem" ref="877766676"/>
|
||||
<int key="firstAttribute">11</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="421971283"/>
|
||||
<int key="secondAttribute">10</int>
|
||||
<reference key="secondItem" ref="121170874"/>
|
||||
<int key="secondAttribute">11</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBLayoutConstant" key="constant">
|
||||
<double key="value">0.0</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<reference key="containingView" ref="421971283"/>
|
||||
<int key="scoringType">5</int>
|
||||
<float key="scoringTypeFloat">22</float>
|
||||
<int key="scoringType">6</int>
|
||||
<float key="scoringTypeFloat">24</float>
|
||||
<int key="contentType">2</int>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="526596272">
|
||||
@@ -4338,6 +4404,22 @@
|
||||
<float key="scoringTypeFloat">24</float>
|
||||
<int key="contentType">3</int>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="924075646">
|
||||
<reference key="firstItem" ref="667286275"/>
|
||||
<int key="firstAttribute">10</int>
|
||||
<int key="relation">0</int>
|
||||
<reference key="secondItem" ref="421971283"/>
|
||||
<int key="secondAttribute">10</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBLayoutConstant" key="constant">
|
||||
<double key="value">0.0</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<reference key="containingView" ref="421971283"/>
|
||||
<int key="scoringType">5</int>
|
||||
<float key="scoringTypeFloat">22</float>
|
||||
<int key="contentType">2</int>
|
||||
</object>
|
||||
<object class="IBNSLayoutConstraint" id="6696189">
|
||||
<reference key="firstItem" ref="667286275"/>
|
||||
<int key="firstAttribute">10</int>
|
||||
@@ -4371,6 +4453,7 @@
|
||||
<int key="contentType">3</int>
|
||||
</object>
|
||||
<reference ref="121170874"/>
|
||||
<reference ref="877766676"/>
|
||||
</array>
|
||||
<reference key="parent" ref="361499112"/>
|
||||
</object>
|
||||
@@ -4462,7 +4545,7 @@
|
||||
<reference key="object" ref="121170874"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="535600323"/>
|
||||
<object class="IBNSLayoutConstraint" id="507093761">
|
||||
<object class="IBNSLayoutConstraint" id="298252958">
|
||||
<reference key="firstItem" ref="121170874"/>
|
||||
<int key="firstAttribute">7</int>
|
||||
<int key="relation">0</int>
|
||||
@@ -4470,7 +4553,7 @@
|
||||
<int key="secondAttribute">0</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBLayoutConstant" key="constant">
|
||||
<double key="value">43</double>
|
||||
<double key="value">32</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<reference key="containingView" ref="121170874"/>
|
||||
@@ -4486,31 +4569,75 @@
|
||||
<reference key="object" ref="535600323"/>
|
||||
<reference key="parent" ref="121170874"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2236</int>
|
||||
<reference key="object" ref="555758646"/>
|
||||
<reference key="parent" ref="421971283"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2237</int>
|
||||
<reference key="object" ref="25403768"/>
|
||||
<reference key="parent" ref="421971283"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2238</int>
|
||||
<reference key="object" ref="507093761"/>
|
||||
<int key="objectID">2246</int>
|
||||
<reference key="object" ref="298252958"/>
|
||||
<reference key="parent" ref="121170874"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2240</int>
|
||||
<int key="objectID">2249</int>
|
||||
<reference key="object" ref="877766676"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="500217449"/>
|
||||
<object class="IBNSLayoutConstraint" id="220755404">
|
||||
<reference key="firstItem" ref="877766676"/>
|
||||
<int key="firstAttribute">7</int>
|
||||
<int key="relation">0</int>
|
||||
<nil key="secondItem"/>
|
||||
<int key="secondAttribute">0</int>
|
||||
<float key="multiplier">1</float>
|
||||
<object class="IBLayoutConstant" key="constant">
|
||||
<double key="value">32</double>
|
||||
</object>
|
||||
<float key="priority">1000</float>
|
||||
<reference key="containingView" ref="877766676"/>
|
||||
<int key="scoringType">3</int>
|
||||
<float key="scoringTypeFloat">9</float>
|
||||
<int key="contentType">1</int>
|
||||
</object>
|
||||
</array>
|
||||
<reference key="parent" ref="421971283"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2250</int>
|
||||
<reference key="object" ref="500217449"/>
|
||||
<reference key="parent" ref="877766676"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2251</int>
|
||||
<reference key="object" ref="972049638"/>
|
||||
<reference key="parent" ref="421971283"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2252</int>
|
||||
<reference key="object" ref="555758646"/>
|
||||
<reference key="parent" ref="421971283"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2253</int>
|
||||
<reference key="object" ref="344424093"/>
|
||||
<reference key="parent" ref="421971283"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2241</int>
|
||||
<int key="objectID">2255</int>
|
||||
<reference key="object" ref="220755404"/>
|
||||
<reference key="parent" ref="877766676"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2256</int>
|
||||
<reference key="object" ref="924075646"/>
|
||||
<reference key="parent" ref="421971283"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2258</int>
|
||||
<reference key="object" ref="334071022"/>
|
||||
<reference key="parent" ref="421971283"/>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
@@ -4851,12 +4978,14 @@
|
||||
<string key="2200.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2201.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2202.CustomClassName">MPSelectedAttachmentTableCellView</string>
|
||||
<array class="NSMutableArray" key="2202.IBNSViewMetadataConstraints">
|
||||
<array key="2202.IBNSViewMetadataConstraints">
|
||||
<reference ref="424584351"/>
|
||||
<reference ref="6696189"/>
|
||||
<reference ref="526596272"/>
|
||||
<reference ref="924075646"/>
|
||||
<reference ref="526596272"/>
|
||||
<reference ref="972049638"/>
|
||||
<reference ref="555758646"/>
|
||||
<reference ref="334071022"/>
|
||||
<reference ref="25403768"/>
|
||||
<reference ref="344424093"/>
|
||||
</array>
|
||||
@@ -4877,17 +5006,26 @@
|
||||
<string key="2211.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2212.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2213.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<array key="2234.IBNSViewMetadataConstraints">
|
||||
<reference ref="507093761"/>
|
||||
<array class="NSMutableArray" key="2234.IBNSViewMetadataConstraints">
|
||||
<reference ref="298252958"/>
|
||||
</array>
|
||||
<boolean value="NO" key="2234.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
|
||||
<string key="2234.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2235.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2236.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2237.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2238.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2240.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2241.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2246.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<array key="2249.IBNSViewMetadataConstraints">
|
||||
<reference ref="220755404"/>
|
||||
</array>
|
||||
<boolean value="NO" key="2249.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
|
||||
<string key="2249.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2250.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2251.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2252.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2253.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2255.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2256.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="2258.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<array key="455.IBNSViewMetadataConstraints">
|
||||
<reference ref="222939184"/>
|
||||
<reference ref="1058743908"/>
|
||||
@@ -4934,7 +5072,7 @@
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">2241</int>
|
||||
<int key="maxID">2260</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
@@ -5017,18 +5155,33 @@
|
||||
<string key="className">MPInspectorViewController</string>
|
||||
<string key="superclassName">MPViewController</string>
|
||||
<dictionary class="NSMutableDictionary" key="actions">
|
||||
<string key="addAttachment:">id</string>
|
||||
<string key="addCustomField:">id</string>
|
||||
<string key="removeAttachment:">id</string>
|
||||
<string key="removeCustomField:">id</string>
|
||||
<string key="saveAttachment:">id</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
||||
<object class="IBActionInfo" key="addAttachment:">
|
||||
<string key="name">addAttachment:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="addCustomField:">
|
||||
<string key="name">addCustomField:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="removeAttachment:">
|
||||
<string key="name">removeAttachment:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="removeCustomField:">
|
||||
<string key="name">removeCustomField:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="saveAttachment:">
|
||||
<string key="name">saveAttachment:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="URLTextField">NSTextField</string>
|
||||
@@ -5135,17 +5288,20 @@
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">MPSelectedAttachmentTableCellView</string>
|
||||
<string key="superclassName">NSTableCellView</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">saveButton</string>
|
||||
<string key="NS.object.0">NSButton</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<string key="NS.key.0">saveButton</string>
|
||||
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="removeButton">NSButton</string>
|
||||
<string key="saveButton">NSButton</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<object class="IBToOneOutletInfo" key="removeButton">
|
||||
<string key="name">removeButton</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="saveButton">
|
||||
<string key="name">saveButton</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
</object>
|
||||
</dictionary>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/MPSelectedAttachmentTableCellView.h</string>
|
||||
@@ -5177,6 +5333,7 @@
|
||||
<string key="00_PasswordTemplate">{128, 128}</string>
|
||||
<string key="04_KlipperTemplate">{128, 128}</string>
|
||||
<string key="07_NotepadTemplate">{128, 128}</string>
|
||||
<string key="99_HarddiskTemplate">{128, 128}</string>
|
||||
<string key="NSActionTemplate">{15, 15}</string>
|
||||
<string key="NSAddTemplate">{8, 8}</string>
|
||||
<string key="NSApplicationIcon">{128, 128}</string>
|
||||
|
||||
BIN
MacPass/Icons/99_HarddiskTemplate.pdf
Normal file
BIN
MacPass/Icons/99_HarddiskTemplate.pdf
Normal file
Binary file not shown.
@@ -15,5 +15,9 @@
|
||||
- (void)removeObjectFromStringFieldsAtIndex:(NSUInteger)anIndex;
|
||||
- (void)insertObject:(StringField *)stringfield inStringFieldsAtIndex:(NSUInteger)anIndex;
|
||||
|
||||
- (NSUInteger)countOfBinaries;
|
||||
- (BinaryRef *)objectInBinariesAtIndex:(NSUInteger)index;
|
||||
- (void)removeObjectFromBinariesAtIndex:(NSUInteger)index;
|
||||
- (void)insertObject:(BinaryRef *)binary inBinariesAtIndex:(NSUInteger)index;
|
||||
|
||||
@end
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
@implementation Kdb4Entry (KVOAdditions)
|
||||
|
||||
/* Entries */
|
||||
- (NSUInteger)countOfStringFields {
|
||||
return [self.stringFields count];
|
||||
}
|
||||
@@ -26,4 +27,21 @@
|
||||
[self.stringFields removeObjectAtIndex:anIndex];
|
||||
}
|
||||
|
||||
/* Binaries */
|
||||
- (NSUInteger)countOfBinaries {
|
||||
return [self.binaries count];
|
||||
}
|
||||
|
||||
- (BinaryRef *)objectInBinariesAtIndex:(NSUInteger)index {
|
||||
return (self.binaries)[index];
|
||||
}
|
||||
|
||||
- (void)insertObject:(BinaryRef *)binary inBinariesAtIndex:(NSUInteger)index {
|
||||
[self.binaries insertObject:binary atIndex:index];
|
||||
}
|
||||
|
||||
- (void)removeObjectFromBinariesAtIndex:(NSUInteger)index {
|
||||
[self.binaries removeObjectAtIndex:index];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
Kdb4Tree *tree = [[Kdb4Tree alloc] init];
|
||||
tree.generator = @"MacPass";
|
||||
tree.databaseName = @"";
|
||||
tree.databaseName = NSLocalizedString(@"NEW_DATABASE", "Name for a newly created Database");
|
||||
tree.databaseNameChanged = currentTime;
|
||||
tree.databaseDescription = @"";
|
||||
tree.databaseDescriptionChanged = currentTime;
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
//
|
||||
|
||||
#import "KdbEntry+MPAdditions.h"
|
||||
#import "Kdb3Node.h"
|
||||
#import "Kdb4Node.h"
|
||||
|
||||
#import "MPIconHelper.h"
|
||||
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
return NSNotFound;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
|
||||
#import "Kdb.h"
|
||||
|
||||
@class BinaryRef;
|
||||
@class Binary;
|
||||
|
||||
@interface KdbTree (MPAdditions)
|
||||
|
||||
- (NSArray *)allEntries;
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
#import "KdbTree+MPAdditions.h"
|
||||
#import "KdbGroup+MPTreeTools.h"
|
||||
|
||||
#import "NSMutableData+Base64.h"
|
||||
#import "Kdb3Node.h"
|
||||
#import "Kdb4Node.h"
|
||||
|
||||
@implementation KdbTree (MPAdditions)
|
||||
|
||||
- (NSArray *)allGroups {
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
|
||||
@interface MPCustomFieldTableCellView : NSTableCellView
|
||||
|
||||
@property (weak) IBOutlet NSTextField *labelTextField;
|
||||
@property (weak) IBOutlet NSTextField *valueTextField;
|
||||
@property (weak) IBOutlet NSButton *removeButton;
|
||||
@property (nonatomic, weak) IBOutlet NSTextField *labelTextField;
|
||||
@property (nonatomic, weak) IBOutlet NSTextField *valueTextField;
|
||||
@property (nonatomic, weak) IBOutlet NSButton *removeButton;
|
||||
|
||||
@end
|
||||
|
||||
149
MacPass/MPDocument+Attachments.m
Normal file
149
MacPass/MPDocument+Attachments.m
Normal file
@@ -0,0 +1,149 @@
|
||||
//
|
||||
// MPDocument+Attachments.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 05.07.13.
|
||||
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPDocument.h"
|
||||
|
||||
#import "NSMutableData+Base64.h"
|
||||
#import "NSData+Gzip.h"
|
||||
|
||||
#import "Kdb3Node.h"
|
||||
#import "Kdb4Node.h"
|
||||
#import "Kdb4Entry+KVOAdditions.h"
|
||||
|
||||
@implementation MPDocument (Attachments)
|
||||
|
||||
- (void)addAttachment:(NSURL *)location toEntry:(KdbEntry *)anEntry {
|
||||
NSError *error = nil;
|
||||
NSString *fileName = [location lastPathComponent];
|
||||
if([anEntry isKindOfClass:[Kdb3Entry class]]) {
|
||||
Kdb3Entry *entry = (Kdb3Entry *)anEntry;
|
||||
NSData *binaryData = [NSData dataWithContentsOfURL:location options:NSDataReadingUncached error:&error];
|
||||
if(!binaryData) {
|
||||
[NSApp presentError:error];
|
||||
binaryData = nil;
|
||||
error = nil;
|
||||
return; // failed
|
||||
}
|
||||
entry.binary = binaryData;
|
||||
entry.binaryDesc = fileName;
|
||||
}
|
||||
if( [anEntry isKindOfClass:[Kdb4Entry class]]) {
|
||||
Kdb4Entry *entry = (Kdb4Entry *)anEntry;
|
||||
NSStringEncoding encoding;
|
||||
NSString *fileContents = [NSString stringWithContentsOfURL:location usedEncoding:&encoding error:&error];
|
||||
if(!fileContents) {
|
||||
[NSApp presentError:error];
|
||||
fileContents = nil;
|
||||
error = nil;
|
||||
return; // failed
|
||||
}
|
||||
Binary *binary = [[Binary alloc] init];
|
||||
NSUInteger nextId = [self nextBinaryId];
|
||||
if(nextId == NSNotFound) {
|
||||
binary = nil;
|
||||
return; // No id found. Something went wrong
|
||||
}
|
||||
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: {
|
||||
NSData *compressedData = [fileData gzipDeflate];
|
||||
encodedData = [NSMutableData mutableDataWithBase64EncodedData:compressedData];
|
||||
break;
|
||||
}
|
||||
default:
|
||||
NSAssert(NO, @"Unsupported Compression Algorithm");
|
||||
binary = nil;
|
||||
encodedData = nil;
|
||||
fileData = nil;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
encodedData = fileData;
|
||||
}
|
||||
binary.data = [[NSString alloc] initWithData:encodedData encoding:NSASCIIStringEncoding];
|
||||
|
||||
[self.treeV4.binaries addObject:binary];
|
||||
BinaryRef *ref = [[BinaryRef alloc] init];
|
||||
ref.key = fileName;
|
||||
ref.ref = binary.binaryId;
|
||||
[entry insertObject:ref inBinariesAtIndex:[entry.binaries count]];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)saveAttachmentFromEntry:(KdbEntry *)anEntry toLocation:(NSURL *)location {
|
||||
if([anEntry isKindOfClass:[Kdb3Entry class]]) {
|
||||
Kdb3Entry *entry = (Kdb3Entry *)anEntry;
|
||||
NSError *error = nil;
|
||||
if(! [entry.binary writeToURL:location options:NSDataWritingWithoutOverwriting error:&error] ) {
|
||||
[NSApp presentError:error];
|
||||
}
|
||||
}
|
||||
return; //
|
||||
}
|
||||
|
||||
- (void)removeAttachment:(BinaryRef *)reference fromEntry:(KdbEntry *)anEntry {
|
||||
if(self.version != MPDatabaseVersion4) {
|
||||
return; // Wrong Database version;
|
||||
}
|
||||
Binary *binary = [self findBinary:reference];
|
||||
Kdb4Entry *entry = (Kdb4Entry *)anEntry;
|
||||
NSUInteger index = [entry.binaries indexOfObject:reference];
|
||||
if(index == NSNotFound) {
|
||||
return; // No Reference for this entry found
|
||||
}
|
||||
[entry removeObjectFromBinariesAtIndex:index];
|
||||
[self.treeV4.binaries removeObject:binary];
|
||||
}
|
||||
|
||||
- (Binary *)findBinary:(BinaryRef *)reference {
|
||||
if(self.version != MPDatabaseVersion4) {
|
||||
return nil;
|
||||
}
|
||||
NSPredicate *filterPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
|
||||
Binary *binaryFile = evaluatedObject;
|
||||
return (binaryFile.binaryId == reference.ref);
|
||||
}];
|
||||
NSArray *filteredBinary = [self.treeV4.binaries filteredArrayUsingPredicate:filterPredicate];
|
||||
return [filteredBinary lastObject];
|
||||
}
|
||||
|
||||
- (void)saveAttachment:(BinaryRef *)reference toLocation:(NSURL *)location {
|
||||
Binary *binary = [self findBinary:reference];
|
||||
NSData *rawData = nil;
|
||||
if(binary) {
|
||||
if(binary.compressed) {
|
||||
rawData = [NSMutableData mutableDataWithBase64DecodedData:[binary.data dataUsingEncoding:NSASCIIStringEncoding]];
|
||||
rawData = [rawData gzipInflate];
|
||||
}
|
||||
else {
|
||||
rawData = [NSMutableData mutableDataWithBase64DecodedData:[binary.data dataUsingEncoding:NSASCIIStringEncoding]];
|
||||
}
|
||||
NSError *error = nil;
|
||||
if( ![rawData writeToURL:location options:0 error:&error] ) {
|
||||
[NSApp presentError:error];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (NSUInteger)nextBinaryId {
|
||||
if(self.version != MPDatabaseVersion4) {
|
||||
return NSNotFound;
|
||||
}
|
||||
NSUInteger maxKey = 0;
|
||||
for(Binary *binary in self.treeV4.binaries) {
|
||||
maxKey = MAX(binary.binaryId, maxKey);
|
||||
}
|
||||
return (maxKey + 1);
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -57,10 +57,6 @@ APPKIT_EXTERN NSString *const MPDocumentGroupKey;
|
||||
*/
|
||||
- (KdbEntry *)findEntry:(UUID *)uuid;
|
||||
- (KdbGroup *)findGroup:(UUID *)uuid;
|
||||
/*
|
||||
Return the Binary for the given BinaryRef. nil if none was found
|
||||
*/
|
||||
- (Binary *)binaryForRef:(BinaryRef *)binaryRef;
|
||||
|
||||
- (Kdb4Tree *)treeV4;
|
||||
- (Kdb3Tree *)treeV3;
|
||||
@@ -93,3 +89,14 @@ APPKIT_EXTERN NSString *const MPDocumentGroupKey;
|
||||
- (void)emptyTrash:(id)sender;
|
||||
|
||||
@end
|
||||
|
||||
@interface MPDocument (Attachments)
|
||||
|
||||
- (void)addAttachment:(NSURL *)location toEntry:(KdbEntry *)anEntry;
|
||||
- (void)saveAttachmentFromEntry:(KdbEntry *)anEntry toLocation:(NSURL *)location;
|
||||
- (void)saveAttachment:(BinaryRef *)reference toLocation:(NSURL *)location;
|
||||
- (void)removeAttachment:(BinaryRef *)reference fromEntry:(KdbEntry *)anEntry;
|
||||
- (NSUInteger)nextBinaryId;
|
||||
- (Binary *)findBinary:(BinaryRef *)reference;
|
||||
|
||||
@end
|
||||
@@ -217,19 +217,6 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey";
|
||||
return [self.root groupForUUID:uuid];
|
||||
}
|
||||
|
||||
- (Binary *)binaryForRef:(BinaryRef *)binaryRef {
|
||||
if(self.version != MPDatabaseVersion4) {
|
||||
return nil;
|
||||
}
|
||||
NSPredicate *filterPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
|
||||
Binary *binaryFile = evaluatedObject;
|
||||
return (binaryFile.binaryId == binaryRef.ref);
|
||||
}];
|
||||
Kdb4Tree *tree = (Kdb4Tree *)self.tree;
|
||||
NSArray *filteredBinary = [tree.binaries filteredArrayUsingPredicate:filterPredicate];
|
||||
return [filteredBinary lastObject];
|
||||
}
|
||||
|
||||
- (Kdb3Tree *)treeV3 {
|
||||
switch (_version) {
|
||||
case MPDatabaseVersion3:
|
||||
|
||||
@@ -25,7 +25,8 @@ typedef NS_ENUM(NSUInteger, MPIconType) {
|
||||
MPIconFolder = 48,
|
||||
/* Custom Icons not used in Database */
|
||||
MPIconInfo = 1000,
|
||||
MPIconAddFolder
|
||||
MPIconAddFolder,
|
||||
MPIconHardDisk,
|
||||
};
|
||||
|
||||
@interface MPIconHelper : NSObject
|
||||
|
||||
@@ -52,7 +52,8 @@ static NSDictionary *icons;
|
||||
@(MPIconTrash): @"43_TrashTemplate",
|
||||
@(MPIconFolder): @"48_FolderTemplate",
|
||||
@(MPIconInfo): @"99_InfoTemplate",
|
||||
@(MPIconAddFolder): @"99_AddFolderTemplate"
|
||||
@(MPIconAddFolder): @"99_AddFolderTemplate",
|
||||
@(MPIconHardDisk): @"99_HarddiskTemplate"
|
||||
};
|
||||
return imageNames;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#import "MPCustomFieldView.h"
|
||||
#import "MPDatabaseVersion.h"
|
||||
#import "MPCustomFieldTableCellView.h"
|
||||
#import "MPSelectedAttachmentTableCellView.h"
|
||||
|
||||
#import "KdbLib.h"
|
||||
#import "Kdb4Node.h"
|
||||
@@ -58,6 +59,9 @@ enum {
|
||||
|
||||
- (IBAction)addCustomField:(id)sender;
|
||||
- (IBAction)removeCustomField:(id)sender;
|
||||
- (IBAction)saveAttachment:(id)sender;
|
||||
- (IBAction)addAttachment:(id)sender;
|
||||
- (IBAction)removeAttachment:(id)sender;
|
||||
|
||||
@end
|
||||
|
||||
@@ -91,8 +95,8 @@ enum {
|
||||
|
||||
[_infoTabControl bind:NSSelectedIndexBinding toObject:self withKeyPath:@"activeTab" options:nil];
|
||||
[_tabView bind:NSSelectedIndexBinding toObject:self withKeyPath:@"activeTab" options:nil];
|
||||
|
||||
/* Set background to clearcolor so we can draw in the scrollview */
|
||||
|
||||
/* Set background to clearcolor so we can draw in the scrollview */
|
||||
[_attachmentTableView setBackgroundColor:[NSColor clearColor]];
|
||||
[_attachmentTableView bind:NSContentBinding toObject:self.attachmentsController withKeyPath:@"arrangedObjects" options:nil];
|
||||
[_attachmentTableView setDelegate:self];
|
||||
@@ -256,7 +260,7 @@ enum {
|
||||
|
||||
[self.infoTabControl setEnabled:enabled forSegment:MPNotesTab];
|
||||
[self.infoTabControl setEnabled:enabled forSegment:MPAttachmentsTab];
|
||||
|
||||
|
||||
enabled &= [self.selectedEntry isKindOfClass:[Kdb4Entry class]];
|
||||
[self.infoTabControl setEnabled:enabled forSegment:MPCustomFieldsTab];
|
||||
}
|
||||
@@ -313,6 +317,50 @@ enum {
|
||||
[document entry:entry removeStringField:(entry.stringFields)[index]];
|
||||
}
|
||||
|
||||
- (IBAction)saveAttachment:(id)sender {
|
||||
Kdb4Entry *entry = (Kdb4Entry *)self.selectedEntry;
|
||||
BinaryRef *reference = entry.binaries[[sender tag]];
|
||||
|
||||
|
||||
NSSavePanel *savePanel = [NSSavePanel savePanel];
|
||||
[savePanel setCanCreateDirectories:YES];
|
||||
[savePanel setNameFieldStringValue:reference.key];
|
||||
|
||||
[savePanel beginSheetModalForWindow:[[self windowController] window] completionHandler:^(NSInteger result) {
|
||||
if(result == NSFileHandlingPanelOKButton) {
|
||||
MPDocument *document = [[self windowController] document];
|
||||
[document saveAttachment:reference toLocation:[savePanel URL]];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
- (IBAction)addAttachment:(id)sender {
|
||||
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
|
||||
[openPanel setCanChooseDirectories:NO];
|
||||
[openPanel setCanChooseFiles:YES];
|
||||
[openPanel setAllowsMultipleSelection:YES];
|
||||
[openPanel beginSheetModalForWindow:[[self windowController] window] completionHandler:^(NSInteger result) {
|
||||
if(result == NSFileHandlingPanelOKButton) {
|
||||
MPDocument *document = [[self windowController] document];
|
||||
for (NSURL *attachmentURL in [openPanel URLs]) {
|
||||
[document addAttachment:attachmentURL toEntry:self.selectedEntry];
|
||||
}
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
- (IBAction)removeAttachment:(id)sender {
|
||||
MPDocument *document = [[self windowController] document];
|
||||
if(document.version == MPDatabaseVersion3) {
|
||||
// Uhhhh :D
|
||||
}
|
||||
if(document.version == MPDatabaseVersion4) {
|
||||
Kdb4Entry *entry = (Kdb4Entry *)self.selectedEntry;
|
||||
BinaryRef *reference = entry.binaries[[sender tag]];
|
||||
[document removeAttachment:reference fromEntry:self.selectedEntry];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark Notificiations
|
||||
- (void)_didChangeCurrentItem:(NSNotification *)notification {
|
||||
MPDocumentWindowController *sender = [notification object];
|
||||
@@ -354,8 +402,20 @@ enum {
|
||||
- (NSView *)_viewForAttachmentTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||
/* Decide what view to use */
|
||||
NSIndexSet *selectedIndexes = [self.attachmentTableView selectedRowIndexes];
|
||||
NSString *viewIdentifyer = [selectedIndexes containsIndex:row] ? @"SelectedCell" : @"NormalCell";
|
||||
NSTableCellView *view = [_attachmentTableView makeViewWithIdentifier:viewIdentifyer owner:_attachmentTableView];
|
||||
NSTableCellView *view;
|
||||
if([selectedIndexes containsIndex:row]) {
|
||||
MPSelectedAttachmentTableCellView *cellView = [_attachmentTableView makeViewWithIdentifier:@"SelectedCell" owner:_attachmentTableView];
|
||||
[cellView.saveButton setTag:row];
|
||||
[cellView.saveButton setAction:@selector(saveAttachment:)];
|
||||
[cellView.saveButton setTarget:self];
|
||||
[cellView.removeButton setTag:row];
|
||||
[cellView.removeButton setAction:@selector(removeAttachment:)];
|
||||
[cellView.removeButton setTarget:self];
|
||||
view = cellView;
|
||||
}
|
||||
else {
|
||||
view = [_attachmentTableView makeViewWithIdentifier:@"NormalCell" owner:_attachmentTableView];
|
||||
}
|
||||
/* Bind view */
|
||||
if([self.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
|
||||
Kdb4Entry *entry = (Kdb4Entry *)self.selectedEntry;
|
||||
|
||||
@@ -141,14 +141,20 @@ NSString *const _MPOutlinveViewHeaderViewIdentifier = @"HeaderCell";
|
||||
if( [self _itemIsRootNodeAdapter:item] ) {
|
||||
//NSDictionary *options = @{ NSValueTransformerBindingOption : [NSValueTransformer valueTransformerForName:MPUppsercaseStringValueTransformerName] };
|
||||
view = [outlineView makeViewWithIdentifier:_MPOutlinveViewHeaderViewIdentifier owner:self];
|
||||
[view.textField setStringValue:NSLocalizedString(@"GROUPS", @"")];
|
||||
MPRootAdapter *rootNode = [item representedObject];
|
||||
if([rootNode.tree respondsToSelector:@selector(databaseName)]) {
|
||||
[view.textField bind:NSValueBinding toObject:rootNode.tree withKeyPath:@"databaseName" options:nil];
|
||||
}
|
||||
else {
|
||||
[view.textField setStringValue:NSLocalizedString(@"GROUPS", @"")];
|
||||
}
|
||||
}
|
||||
else {
|
||||
KdbGroup *group = [item representedObject];
|
||||
view = [outlineView makeViewWithIdentifier:_MPOutlineViewDataViewIdentifier owner:self];
|
||||
NSImage *icon = [MPIconHelper icon:(MPIconType)[group image]];
|
||||
[view.imageView setImage:icon];
|
||||
[view.textField bind:NSValueBinding toObject:group withKeyPath:@"name" options:nil];
|
||||
[view.textField bind:NSValueBinding toObject:group withKeyPath:MPGroupNameUndoableKey options:nil];
|
||||
[view.textField bind:@"count" toObject:group withKeyPath:@"entries.@count" options:nil];
|
||||
}
|
||||
|
||||
|
||||
@@ -12,5 +12,6 @@
|
||||
@interface MPSelectedAttachmentTableCellView : NSTableCellView
|
||||
|
||||
@property (nonatomic, weak) IBOutlet NSButton *saveButton;
|
||||
@property (nonatomic, weak) IBOutlet NSButton *removeButton;
|
||||
|
||||
@end
|
||||
|
||||
@@ -44,11 +44,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.2.1</string>
|
||||
<string>0.3</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1906</string>
|
||||
<string>1960</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
|
||||
@@ -31,6 +31,7 @@ You should have received a copy of the GNU General Public License along with thi
|
||||
\b0 MacPass Icon von {\field{\*\fldinst{HYPERLINK "http://iiro.jappinen.me"}}{\fldrslt Iiro J\'e4ppinen}}
|
||||
\b \
|
||||
\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
|
||||
{\field{\*\fldinst{HYPERLINK "https://github.com/robbiehanson/KissXML"}}{\fldrslt
|
||||
\b0 \cf2 KissXML}}
|
||||
\b0 \cf3 \
|
||||
@@ -49,4 +50,9 @@ Copyright \'a9 2011, Alex Rozanski. Alle Rechte vorbehalten.\
|
||||
\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
|
||||
{\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/questions/11386876/how-to-encode-and-decode-files-as-base64-in-cocoa-objective-c"}}{\fldrslt \cf3 Base64 Encoding Category}}\
|
||||
Copyright @2013, {\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/users/200321/denis2342"}}{\fldrslt denis2342}}}
|
||||
Copyright @2013, {\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/users/200321/denis2342"}}{\fldrslt denis2342}}\
|
||||
\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
|
||||
{\field{\*\fldinst{HYPERLINK "http://www.cocoadev.com/index.pl?NSDataCategory"}}{\fldrslt \cf3 NSData+Gzip}}\
|
||||
Basierend auf dem Code im CocoaDev Wiki\
|
||||
}
|
||||
@@ -36,6 +36,7 @@ You should have received a copy of the GNU General Public License along with thi
|
||||
\cf0 MacPass\kerning1\expnd0\expndtw3
|
||||
\kerning1\expnd0\expndtw0 Icon by {\field{\*\fldinst{HYPERLINK "http://iiro.jappinen.me"}}{\fldrslt Iiro J\'e4ppinen}}\cf2 \
|
||||
\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
|
||||
{\field{\*\fldinst{HYPERLINK "https://github.com/robbiehanson/KissXML"}}{\fldrslt \cf2 KissXML}}\cf3 \
|
||||
Copyright \'a9 2012 Robbie Hanson. All rights reserved.\
|
||||
\
|
||||
@@ -51,5 +52,10 @@ Copyright \'a9 2010 Qiang Yu. All rights reserved.\
|
||||
Copyright \'a9 2011, Alex Rozanski. All rights reserved.\
|
||||
\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
|
||||
{\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/questions/11386876/how-to-encode-and-decode-files-as-base64-in-cocoa-objective-c"}}{\fldrslt \cf3 Base64 Encoding Category}}\
|
||||
Copyright @2013, {\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/users/200321/denis2342"}}{\fldrslt denis2342}}}
|
||||
{\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/questions/11386876/how-to-encode-and-decode-files-as-base64-in-cocoa-objective-c"}}{\fldrslt \cf3 NSData+Base64}}\
|
||||
Copyright @2013, {\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/users/200321/denis2342"}}{\fldrslt denis2342}}\
|
||||
\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
|
||||
{\field{\*\fldinst{HYPERLINK "http://www.cocoadev.com/index.pl?NSDataCategory"}}{\fldrslt \cf3 NSData+Gzip}}\
|
||||
Extracted from code on the CocoaDev Wiki\
|
||||
}
|
||||
Binary file not shown.
Submodule MiniKeePassLib updated: ff201bb5a1...ee4352c9c5
Reference in New Issue
Block a user