2
0

Artwork + copying of password.

This commit is contained in:
Maarten Billemont 2012-01-12 17:28:20 +01:00
parent cab35df79b
commit 7ea4758590
20 changed files with 1350 additions and 23 deletions

BIN
Default.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
Default@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

View File

@ -27,6 +27,8 @@
DA5BFA61147E415C00F98B1E /* MainStoryboard_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA5BFA5F147E415C00F98B1E /* MainStoryboard_iPad.storyboard */; }; DA5BFA61147E415C00F98B1E /* MainStoryboard_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA5BFA5F147E415C00F98B1E /* MainStoryboard_iPad.storyboard */; };
DA5BFA64147E415C00F98B1E /* OnePassword.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DA5BFA62147E415C00F98B1E /* OnePassword.xcdatamodeld */; }; DA5BFA64147E415C00F98B1E /* OnePassword.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DA5BFA62147E415C00F98B1E /* OnePassword.xcdatamodeld */; };
DA5BFA67147E415C00F98B1E /* OPMainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5BFA66147E415C00F98B1E /* OPMainViewController.m */; }; DA5BFA67147E415C00F98B1E /* OPMainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5BFA66147E415C00F98B1E /* OPMainViewController.m */; };
DA5DB7A614BE4B19002DD256 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5DB7A514BE4B19002DD256 /* Default.png */; };
DA5DB7A814BE4B4B002DD256 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5DB7A714BE4B4B002DD256 /* Default@2x.png */; };
DA7C28C414AF078900491972 /* Bold_Lines.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7C28A514AF078900491972 /* Bold_Lines.png */; }; DA7C28C414AF078900491972 /* Bold_Lines.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7C28A514AF078900491972 /* Bold_Lines.png */; };
DA7C28C514AF078900491972 /* Box.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7C28A614AF078900491972 /* Box.png */; }; DA7C28C514AF078900491972 /* Box.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7C28A614AF078900491972 /* Box.png */; };
DA7C28C614AF078900491972 /* Dashed_Divider.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7C28A714AF078900491972 /* Dashed_Divider.png */; }; DA7C28C614AF078900491972 /* Dashed_Divider.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7C28A714AF078900491972 /* Dashed_Divider.png */; };
@ -58,6 +60,12 @@
DA7C28E014AF078900491972 /* Smooth_Divider.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7C28C114AF078900491972 /* Smooth_Divider.png */; }; DA7C28E014AF078900491972 /* Smooth_Divider.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7C28C114AF078900491972 /* Smooth_Divider.png */; };
DA7C28E114AF078900491972 /* Square.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7C28C214AF078900491972 /* Square.png */; }; DA7C28E114AF078900491972 /* Square.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7C28C214AF078900491972 /* Square.png */; };
DA7C28E214AF078900491972 /* White_Rectangular.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7C28C314AF078900491972 /* White_Rectangular.png */; }; DA7C28E214AF078900491972 /* White_Rectangular.png in Resources */ = {isa = PBXBuildFile; fileRef = DA7C28C314AF078900491972 /* White_Rectangular.png */; };
DAAF5C2214BF308400A0F1F0 /* Background.png in Resources */ = {isa = PBXBuildFile; fileRef = DAAF5C2014BF308400A0F1F0 /* Background.png */; };
DAAF5C2314BF308400A0F1F0 /* Background@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAAF5C2114BF308400A0F1F0 /* Background@2x.png */; };
DABF7DA514BE54E4007F3557 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = DABF7DA414BE54E4007F3557 /* Default.png */; };
DABF7DAA14BE561C007F3557 /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = DABF7DA714BE561C007F3557 /* Icon-72.png */; };
DABF7DAB14BE561C007F3557 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = DABF7DA814BE561C007F3557 /* Icon.png */; };
DABF7DAC14BE561C007F3557 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABF7DA914BE561C007F3557 /* Icon@2x.png */; };
DAC6325E1486805C0075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; }; DAC6325E1486805C0075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
DAC6326D148680650075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; }; DAC6326D148680650075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
DAC63277148680700075AEA5 /* libuicolor-utilities.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6325D1486805C0075AEA5 /* libuicolor-utilities.a */; }; DAC63277148680700075AEA5 /* libuicolor-utilities.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6325D1486805C0075AEA5 /* libuicolor-utilities.a */; };
@ -195,6 +203,8 @@
DA5BFA63147E415C00F98B1E /* OnePassword.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = OnePassword.xcdatamodel; sourceTree = "<group>"; }; DA5BFA63147E415C00F98B1E /* OnePassword.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = OnePassword.xcdatamodel; sourceTree = "<group>"; };
DA5BFA65147E415C00F98B1E /* OPMainViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OPMainViewController.h; sourceTree = "<group>"; }; DA5BFA65147E415C00F98B1E /* OPMainViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OPMainViewController.h; sourceTree = "<group>"; };
DA5BFA66147E415C00F98B1E /* OPMainViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OPMainViewController.m; sourceTree = "<group>"; }; DA5BFA66147E415C00F98B1E /* OPMainViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OPMainViewController.m; sourceTree = "<group>"; };
DA5DB7A514BE4B19002DD256 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = ../Default.png; sourceTree = "<group>"; };
DA5DB7A714BE4B4B002DD256 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@2x.png"; path = "../Default@2x.png"; sourceTree = "<group>"; };
DA7C28A514AF078900491972 /* Bold_Lines.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bold_Lines.png; sourceTree = "<group>"; }; DA7C28A514AF078900491972 /* Bold_Lines.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bold_Lines.png; sourceTree = "<group>"; };
DA7C28A614AF078900491972 /* Box.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Box.png; sourceTree = "<group>"; }; DA7C28A614AF078900491972 /* Box.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Box.png; sourceTree = "<group>"; };
DA7C28A714AF078900491972 /* Dashed_Divider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Dashed_Divider.png; sourceTree = "<group>"; }; DA7C28A714AF078900491972 /* Dashed_Divider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Dashed_Divider.png; sourceTree = "<group>"; };
@ -226,6 +236,12 @@
DA7C28C114AF078900491972 /* Smooth_Divider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Smooth_Divider.png; sourceTree = "<group>"; }; DA7C28C114AF078900491972 /* Smooth_Divider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Smooth_Divider.png; sourceTree = "<group>"; };
DA7C28C214AF078900491972 /* Square.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Square.png; sourceTree = "<group>"; }; DA7C28C214AF078900491972 /* Square.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Square.png; sourceTree = "<group>"; };
DA7C28C314AF078900491972 /* White_Rectangular.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = White_Rectangular.png; sourceTree = "<group>"; }; DA7C28C314AF078900491972 /* White_Rectangular.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = White_Rectangular.png; sourceTree = "<group>"; };
DAAF5C2014BF308400A0F1F0 /* Background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Background.png; sourceTree = "<group>"; };
DAAF5C2114BF308400A0F1F0 /* Background@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Background@2x.png"; sourceTree = "<group>"; };
DABF7DA414BE54E4007F3557 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = SOURCE_ROOT; };
DABF7DA714BE561C007F3557 /* Icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-72.png"; sourceTree = "<group>"; };
DABF7DA814BE561C007F3557 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; };
DABF7DA914BE561C007F3557 /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon@2x.png"; sourceTree = "<group>"; };
DAC6325D1486805C0075AEA5 /* libuicolor-utilities.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libuicolor-utilities.a"; sourceTree = BUILT_PRODUCTS_DIR; }; DAC6325D1486805C0075AEA5 /* libuicolor-utilities.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libuicolor-utilities.a"; sourceTree = BUILT_PRODUCTS_DIR; };
DAC6326C148680650075AEA5 /* libjrswizzle.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libjrswizzle.a; sourceTree = BUILT_PRODUCTS_DIR; }; DAC6326C148680650075AEA5 /* libjrswizzle.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libjrswizzle.a; sourceTree = BUILT_PRODUCTS_DIR; };
DAC632791486809A0075AEA5 /* JRSwizzle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JRSwizzle.h; path = External/Pearl/External/jrswizzle/JRSwizzle.h; sourceTree = SOURCE_ROOT; }; DAC632791486809A0075AEA5 /* JRSwizzle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JRSwizzle.h; path = External/Pearl/External/jrswizzle/JRSwizzle.h; sourceTree = SOURCE_ROOT; };
@ -1421,6 +1437,13 @@
DA5BFA51147E415C00F98B1E /* Supporting Files */ = { DA5BFA51147E415C00F98B1E /* Supporting Files */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
DAAF5C2014BF308400A0F1F0 /* Background.png */,
DAAF5C2114BF308400A0F1F0 /* Background@2x.png */,
DABF7DA714BE561C007F3557 /* Icon-72.png */,
DABF7DA814BE561C007F3557 /* Icon.png */,
DABF7DA914BE561C007F3557 /* Icon@2x.png */,
DA5DB7A714BE4B4B002DD256 /* Default@2x.png */,
DA5DB7A514BE4B19002DD256 /* Default.png */,
DA7C28A414AF078900491972 /* divider */, DA7C28A414AF078900491972 /* divider */,
DA5BFA52147E415C00F98B1E /* OnePassword-Info.plist */, DA5BFA52147E415C00F98B1E /* OnePassword-Info.plist */,
DA5BFA53147E415C00F98B1E /* InfoPlist.strings */, DA5BFA53147E415C00F98B1E /* InfoPlist.strings */,
@ -1569,6 +1592,7 @@
DAC77CD31482AAD600BCF976 /* Resources */ = { DAC77CD31482AAD600BCF976 /* Resources */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
DABF7DA414BE54E4007F3557 /* Default.png */,
DAC77CD41482AAD600BCF976 /* Pearl.strings */, DAC77CD41482AAD600BCF976 /* Pearl.strings */,
); );
path = Resources; path = Resources;
@ -2861,6 +2885,14 @@
DA7C28E214AF078900491972 /* White_Rectangular.png in Resources */, DA7C28E214AF078900491972 /* White_Rectangular.png in Resources */,
DA007F5514B25EE100251337 /* ciphers.plist in Resources */, DA007F5514B25EE100251337 /* ciphers.plist in Resources */,
DA007F5614B26EFA00251337 /* Pearl.strings in Resources */, DA007F5614B26EFA00251337 /* Pearl.strings in Resources */,
DA5DB7A614BE4B19002DD256 /* Default.png in Resources */,
DA5DB7A814BE4B4B002DD256 /* Default@2x.png in Resources */,
DABF7DA514BE54E4007F3557 /* Default.png in Resources */,
DABF7DAA14BE561C007F3557 /* Icon-72.png in Resources */,
DABF7DAB14BE561C007F3557 /* Icon.png in Resources */,
DABF7DAC14BE561C007F3557 /* Icon@2x.png in Resources */,
DAAF5C2214BF308400A0F1F0 /* Background.png in Resources */,
DAAF5C2314BF308400A0F1F0 /* Background@2x.png in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };

BIN
OnePassword/Background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

BIN
OnePassword/Icon-72.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
OnePassword/Icon-Small.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
OnePassword/Icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
OnePassword/Icon@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -20,5 +20,6 @@
@property (weak, nonatomic) IBOutlet UISegmentedControl *contentType; @property (weak, nonatomic) IBOutlet UISegmentedControl *contentType;
- (IBAction)didChangeContentType:(UISegmentedControl *)sender; - (IBAction)didChangeContentType:(UISegmentedControl *)sender;
- (IBAction)didTriggerContent:(id)sender;
@end @end

View File

@ -55,6 +55,7 @@
// Because IB's edit button doesn't auto-toggle self.editable like editButtonItem does. // Because IB's edit button doesn't auto-toggle self.editable like editButtonItem does.
self.navigationItem.rightBarButtonItem = self.editButtonItem; self.navigationItem.rightBarButtonItem = self.editButtonItem;
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];
[super viewDidLoad]; [super viewDidLoad];
} }
@ -91,7 +92,9 @@
- (void)updateWasAnimated:(BOOL)animated { - (void)updateWasAnimated:(BOOL)animated {
self.typeLabel.text = self.activeElement? NSStringFromOPElementType(self.activeElement.type): @"moo"; self.searchDisplayController.searchBar.placeholder = self.activeElement.name;
self.typeLabel.text = self.activeElement? NSStringFromOPElementType(self.activeElement.type): @"";
self.contentTextView.alpha = self.contentType.selectedSegmentIndex == OPElementContentTypeNote? 1: 0; self.contentTextView.alpha = self.contentType.selectedSegmentIndex == OPElementContentTypeNote? 1: 0;
self.contentTextView.editable = self.editing && self.activeElement.type & OPElementTypeStored; self.contentTextView.editable = self.editing && self.activeElement.type & OPElementTypeStored;
@ -106,9 +109,6 @@
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSString *contentDescription = self.activeElement.contentDescription; NSString *contentDescription = self.activeElement.contentDescription;
if (contentDescription)
[self.activeElement use];
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
self.contentField.text = contentDescription; self.contentField.text = contentDescription;
}); });
@ -123,6 +123,12 @@
[self updateAnimated:YES]; [self updateAnimated:YES];
} }
- (IBAction)didTriggerContent:(id)sender {
[[UIPasteboard generalPasteboard] setValue:self.activeElement.content
forPasteboardType:self.activeElement.contentUTI];
}
- (void)didSelectType:(OPElementType)type { - (void)didSelectType:(OPElementType)type {
self.activeElement.type = type; self.activeElement.type = type;
@ -132,10 +138,11 @@
- (void)didSelectElement:(OPElementEntity *)element { - (void)didSelectElement:(OPElementEntity *)element {
self.activeElement = element; self.activeElement = element;
[self.activeElement use];
[self updateAnimated:YES]; [self updateAnimated:YES];
self.searchDisplayController.searchBar.text = @"";
[self.searchDisplayController setActive:NO animated:YES]; [self.searchDisplayController setActive:NO animated:YES];
self.searchDisplayController.searchBar.text = self.activeElement.name;
} }
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
@ -143,4 +150,9 @@
[self updateAnimated:YES]; [self updateAnimated:YES];
} }
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return NO;
}
@end @end

View File

@ -9,7 +9,25 @@
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string> <string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFiles</key> <key>CFBundleIconFiles</key>
<array/> <array>
<string>Icon.png</string>
<string>Icon@2x.png</string>
<string>Icon-72.png</string>
</array>
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Icon.png</string>
<string>Icon@2x.png</string>
<string>Icon-72.png</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
</dict>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>com.lyndir.lhunath.${PRODUCT_NAME:rfc1034identifier}</string> <string>com.lyndir.lhunath.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
@ -32,12 +50,12 @@
<string>MainStoryboard_iPhone</string> <string>MainStoryboard_iPhone</string>
<key>UIMainStoryboardFile~ipad</key> <key>UIMainStoryboardFile~ipad</key>
<string>MainStoryboard_iPad</string> <string>MainStoryboard_iPad</string>
<key>UIPrerenderedIcon</key>
<true/>
<key>UIRequiredDeviceCapabilities</key> <key>UIRequiredDeviceCapabilities</key>
<array> <array>
<string>armv7</string> <string>armv7</string>
</array> </array>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleBlackOpaque</string>
<key>UISupportedInterfaceOrientations</key> <key>UISupportedInterfaceOrientations</key>
<array> <array>
<string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortrait</string>

View File

@ -218,15 +218,6 @@
</scene> </scene>
<scene sceneID="Rm6-uL-WP4"> <scene sceneID="Rm6-uL-WP4">
<objects> <objects>
<searchDisplayController id="P8c-gf-nN3">
<connections>
<outlet property="delegate" destination="0QO-2P-OhD" id="gst-Hm-5ja"/>
<outlet property="searchBar" destination="qeo-n2-WVh" id="bFO-FC-Xdj"/>
<outlet property="searchContentsController" destination="b9f-OB-AqY" id="xgo-Uj-wpm"/>
<outlet property="searchResultsDataSource" destination="0QO-2P-OhD" id="XJh-rC-kId"/>
<outlet property="searchResultsDelegate" destination="0QO-2P-OhD" id="Bm8-Q3-lLA"/>
</connections>
</searchDisplayController>
<placeholder placeholderIdentifier="IBFirstResponder" id="8LM-KK-u1f" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="8LM-KK-u1f" userLabel="First Responder" sceneMemberID="firstResponder"/>
<tableViewController id="b9f-OB-AqY" customClass="OPMainViewController" sceneMemberID="viewController"> <tableViewController id="b9f-OB-AqY" customClass="OPMainViewController" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="singleLineEtched" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="y6z-21-Ptd"> <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="singleLineEtched" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="y6z-21-Ptd">
@ -252,6 +243,9 @@
<state key="highlighted"> <state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state> </state>
<connections>
<action selector="didTriggerContent:" destination="b9f-OB-AqY" eventType="touchUpInside" id="Ost-qu-K2L"/>
</connections>
</button> </button>
<imageView userInteractionEnabled="NO" contentMode="center" image="Square.png" id="qWn-td-zdb"> <imageView userInteractionEnabled="NO" contentMode="center" image="Square.png" id="qWn-td-zdb">
<rect key="frame" x="0.0" y="0.0" width="320" height="222"/> <rect key="frame" x="0.0" y="0.0" width="320" height="222"/>
@ -269,7 +263,7 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="textColor" red="0.36470589040000001" green="0.40000003579999999" blue="0.47843140360000003" alpha="1" colorSpace="deviceRGB"/> <color key="textColor" red="0.36470589040000001" green="0.40000003579999999" blue="0.47843140360000003" alpha="1" colorSpace="deviceRGB"/>
<fontDescription key="fontDescription" name="AmericanTypewriter-Bold" family="American Typewriter" pointSize="20"/> <fontDescription key="fontDescription" name="AmericanTypewriter-Bold" family="American Typewriter" pointSize="20"/>
<textInputTraits key="textInputTraits"/> <textInputTraits key="textInputTraits" autocorrectionType="no"/>
</textField> </textField>
</subviews> </subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
@ -292,7 +286,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<gestureRecognizers/> <gestureRecognizers/>
<color key="tintColor" red="0.36470589040000001" green="0.40000003579999999" blue="0.47843140360000003" alpha="1" colorSpace="deviceRGB"/> <color key="tintColor" red="0.36470589040000001" green="0.40000003579999999" blue="0.47843140360000003" alpha="1" colorSpace="deviceRGB"/>
<textInputTraits key="textInputTraits"/> <textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="URL"/>
<connections> <connections>
<outlet property="delegate" destination="b9f-OB-AqY" id="8OW-dn-MdW"/> <outlet property="delegate" destination="b9f-OB-AqY" id="8OW-dn-MdW"/>
</connections> </connections>
@ -352,6 +346,15 @@
<outlet property="typeLabel" destination="QgX-q3-JLG" id="tv1-jy-Qbu"/> <outlet property="typeLabel" destination="QgX-q3-JLG" id="tv1-jy-Qbu"/>
</connections> </connections>
</tableViewController> </tableViewController>
<searchDisplayController id="P8c-gf-nN3">
<connections>
<outlet property="delegate" destination="0QO-2P-OhD" id="gst-Hm-5ja"/>
<outlet property="searchBar" destination="qeo-n2-WVh" id="bFO-FC-Xdj"/>
<outlet property="searchContentsController" destination="b9f-OB-AqY" id="xgo-Uj-wpm"/>
<outlet property="searchResultsDataSource" destination="0QO-2P-OhD" id="XJh-rC-kId"/>
<outlet property="searchResultsDelegate" destination="0QO-2P-OhD" id="Bm8-Q3-lLA"/>
</connections>
</searchDisplayController>
<customObject id="0QO-2P-OhD" customClass="OPSearchDelegate"> <customObject id="0QO-2P-OhD" customClass="OPSearchDelegate">
<connections> <connections>
<outlet property="delegate" destination="b9f-OB-AqY" id="y3b-no-DZQ"/> <outlet property="delegate" destination="b9f-OB-AqY" id="y3b-no-DZQ"/>
@ -389,6 +392,7 @@
<source key="sourceIdentifier" type="project" relativePath="./Classes/OPMainViewController.h"/> <source key="sourceIdentifier" type="project" relativePath="./Classes/OPMainViewController.h"/>
<relationships> <relationships>
<relationship kind="action" name="didChangeContentType:" candidateClass="UISegmentedControl"/> <relationship kind="action" name="didChangeContentType:" candidateClass="UISegmentedControl"/>
<relationship kind="action" name="didTriggerContent:"/>
<relationship kind="outlet" name="contentField" candidateClass="UITextField"/> <relationship kind="outlet" name="contentField" candidateClass="UITextField"/>
<relationship kind="outlet" name="contentTextView" candidateClass="UITextView"/> <relationship kind="outlet" name="contentTextView" candidateClass="UITextView"/>
<relationship kind="outlet" name="contentType" candidateClass="UISegmentedControl"/> <relationship kind="outlet" name="contentType" candidateClass="UISegmentedControl"/>
@ -408,7 +412,7 @@
</class> </class>
</classes> </classes>
<simulatedMetricsContainer key="defaultSimulatedMetrics"> <simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/> <simulatedStatusBarMetrics key="statusBar"/>
<simulatedOrientationMetrics key="orientation"/> <simulatedOrientationMetrics key="orientation"/>
<simulatedScreenMetrics key="destination"/> <simulatedScreenMetrics key="destination"/>
</simulatedMetricsContainer> </simulatedMetricsContainer>

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

1168
Scripts/bashlib Normal file

File diff suppressed because it is too large Load Diff

60
Scripts/checkLocalization Executable file
View File

@ -0,0 +1,60 @@
#! /usr/bin/env bash
source bashlib
isIn() {
local key=$1; shift
for value
do [[ $value = "$key" ]] && return; done
}
cd "${0%/*}/../../"
emit "Enumerating localization keys"
code=$(find Classes -type f -exec grep -o 'NSLocalizedString(@"[^"]*"' {} + | sed -n 's/.*\("[^"]*"\).*/\1/p' | sort -bu)
for l in Resources/*.lproj/Localizable.strings; do
k=${l#*/}; k=${k%%/*}
emit " - Found language: ${k%.lproj}"
lang+=( "$k" )
lprojLocal+=( "$(sed -n '/\/\/[^"]*\[REMOTE\][^"]*$/!s/^\("[^"]*"\).*/\1/p' "$l" | sort -bu)" )
lprojAll+=( "$(sed -n 's/^\("[^"]*"\).*/\1/p' "$l" | sort -u)" )
done
allhealthy=1
healthy=1
echo; emit "Looking for unused localization keys"
for l in "${!lang[@]}"; do
while read; do
(( healthy )) && emit -y "Not used in code or marked '// [REMOTE]':"
allhealthy=0
healthy=0
emit -y " ${lang[l]}: ${REPLY##*([[:space:]])} "
done < <(comm -1 -3 <(printf '%s\n' "$code") <(printf '%s\n' "${lprojLocal[l]}"))
done
(( healthy )) && emit "No unused keys."
healthy=1
echo; emit "Looking for missing localization keys"
for l in "${!lang[@]}"; do
chealthy=1
while read; do
(( chealthy )) && emit -y "Used by code:"
allhealthy=0
chealthy=0
healthy=0
emit -r " ${lang[l]}: ${REPLY##*([[:space:]])} "
done < <(comm -2 -3 <(printf '%s\n' "$code") <(printf '%s\n' "${lprojAll[l]}"))
khealthy=1
while read; do
(( khealthy )) && emit -y "Present in other languages:"
allhealthy=0
khealthy=0
healthy=0
emit -r " ${lang[l]}: ${REPLY##*([[:space:]])} "
done < <(for ol in "${!lang[@]}"; do comm -1 -3 <(printf '%s\n' "${lprojAll[l]}") <(printf '%s\n' "${lprojAll[ol]}"); done | sort -bu)
done
(( healthy )) && emit "No missing keys."
echo
(( allhealthy )) && emit "All good." || emit -y "Some issues detected."

32
Scripts/convertImages Executable file
View File

@ -0,0 +1,32 @@
#! /usr/bin/env bash
source bashlib
shopt -s nullglob
emit "Converting iTunesArtwork"
icons=(
[29]="Icon-Small.png"
[50]="Icon-Small-50.png"
[58]="Icon-Small@2x.png"
[57]="Icon.png"
[72]="Icon-72.png"
[114]="Icon@2x.png"
)
cd "${0%/*}/../OnePassword"
for size in "${!icons[@]}"; do
file=${icons[size]}
emit "$file ($size px)" --
convert "iTunesArtwork.png" -resize "${size}x${size}" "$file"
emit -$?
done
echo
emit "Converting @2x artwork"
for file in !(Icon*)@2x.png; do
emit "${file/@2x}" --
convert "$file" -resize 50% "${file/@2x}"
emit -$?
done

View File

@ -4,13 +4,13 @@ cd "${BASH_SOURCE%/*}/.."
shopt -s extglob shopt -s extglob
## Pearl ## LisuUI
# #
## Submodules that need to be checked out. ## Submodules that need to be checked out.
dependencies=( External/Pearl External/Pearl:External/{jrswizzle,uicolor-utilities} ) dependencies=( External/Pearl External/Pearl:External/jrswizzle External/Pearl:External/uicolor-utilities )
## Custom migration. ## Custom migration.
# Nothing yet. # None yet.
################################################################################ ################################################################################