2
0

Better password font.

[FIXED]     MP-10: The font used to show didn't make a clear enough
            distinction between certain different characters.
This commit is contained in:
Maarten Billemont 2012-03-04 10:12:32 +01:00
parent d34ec96b94
commit 9899104891
22 changed files with 242 additions and 174 deletions

View File

@ -107,6 +107,15 @@
DA5BFA5B147E415C00F98B1E /* MPAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5BFA5A147E415C00F98B1E /* MPAppDelegate.m */; };
DA5BFA64147E415C00F98B1E /* MasterPassword.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DA5BFA62147E415C00F98B1E /* MasterPassword.xcdatamodeld */; };
DA5BFA67147E415C00F98B1E /* MPMainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5BFA66147E415C00F98B1E /* MPMainViewController.m */; };
DA5BFCD01502CDF5005BFE16 /* Exo-Black.otf in Resources */ = {isa = PBXBuildFile; fileRef = DA5BFCBE1502CDF5005BFE16 /* Exo-Black.otf */; };
DA5BFCD21502CDF5005BFE16 /* Exo-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = DA5BFCC01502CDF5005BFE16 /* Exo-Bold.otf */; };
DA5BFCD41502CDF5005BFE16 /* Exo-DemiBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = DA5BFCC21502CDF5005BFE16 /* Exo-DemiBold.otf */; };
DA5BFCD61502CDF5005BFE16 /* Exo-ExtraBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = DA5BFCC41502CDF5005BFE16 /* Exo-ExtraBold.otf */; };
DA5BFCD81502CDF5005BFE16 /* Exo-ExtraLight.otf in Resources */ = {isa = PBXBuildFile; fileRef = DA5BFCC61502CDF5005BFE16 /* Exo-ExtraLight.otf */; };
DA5BFCDA1502CDF5005BFE16 /* Exo-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = DA5BFCC81502CDF5005BFE16 /* Exo-Light.otf */; };
DA5BFCDC1502CDF5005BFE16 /* Exo-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = DA5BFCCA1502CDF5005BFE16 /* Exo-Medium.otf */; };
DA5BFCDE1502CDF5005BFE16 /* Exo-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = DA5BFCCC1502CDF5005BFE16 /* Exo-Regular.otf */; };
DA5BFCE01502CDF5005BFE16 /* Exo-Thin.otf in Resources */ = {isa = PBXBuildFile; fileRef = DA5BFCCE1502CDF5005BFE16 /* Exo-Thin.otf */; };
DA5DB7A614BE4B19002DD256 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5DB7A514BE4B19002DD256 /* Default.png */; };
DA5DB7A814BE4B4B002DD256 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5DB7A714BE4B4B002DD256 /* Default@2x.png */; };
DA6556FE14D730B700841C99 /* guide_page_1.png in Resources */ = {isa = PBXBuildFile; fileRef = DA6556F814D730B700841C99 /* guide_page_1.png */; };
@ -935,6 +944,15 @@
DA5BFA63147E415C00F98B1E /* MasterPassword.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = MasterPassword.xcdatamodel; sourceTree = "<group>"; };
DA5BFA65147E415C00F98B1E /* MPMainViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPMainViewController.h; sourceTree = "<group>"; };
DA5BFA66147E415C00F98B1E /* MPMainViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPMainViewController.m; sourceTree = "<group>"; };
DA5BFCBE1502CDF5005BFE16 /* Exo-Black.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Exo-Black.otf"; sourceTree = "<group>"; };
DA5BFCC01502CDF5005BFE16 /* Exo-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Exo-Bold.otf"; sourceTree = "<group>"; };
DA5BFCC21502CDF5005BFE16 /* Exo-DemiBold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Exo-DemiBold.otf"; sourceTree = "<group>"; };
DA5BFCC41502CDF5005BFE16 /* Exo-ExtraBold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Exo-ExtraBold.otf"; sourceTree = "<group>"; };
DA5BFCC61502CDF5005BFE16 /* Exo-ExtraLight.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Exo-ExtraLight.otf"; sourceTree = "<group>"; };
DA5BFCC81502CDF5005BFE16 /* Exo-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Exo-Light.otf"; sourceTree = "<group>"; };
DA5BFCCA1502CDF5005BFE16 /* Exo-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Exo-Medium.otf"; sourceTree = "<group>"; };
DA5BFCCC1502CDF5005BFE16 /* Exo-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Exo-Regular.otf"; sourceTree = "<group>"; };
DA5BFCCE1502CDF5005BFE16 /* Exo-Thin.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Exo-Thin.otf"; 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>"; };
DA6556F814D730B700841C99 /* guide_page_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = guide_page_1.png; sourceTree = "<group>"; };
@ -2304,6 +2322,7 @@
DA5BFA51147E415C00F98B1E /* Supporting Files */ = {
isa = PBXGroup;
children = (
DA5BFCBC1502CDF5005BFE16 /* Fonts */,
DA566D3114F8EB0700A6EB2E /* Background */,
DA566D1E14F8EAF200A6EB2E /* Lock */,
DA8E8E4514DD7C1D0044257E /* logo-bare.png */,
@ -2332,6 +2351,23 @@
name = "Supporting Files";
sourceTree = "<group>";
};
DA5BFCBC1502CDF5005BFE16 /* Fonts */ = {
isa = PBXGroup;
children = (
DA5BFCBE1502CDF5005BFE16 /* Exo-Black.otf */,
DA5BFCC41502CDF5005BFE16 /* Exo-ExtraBold.otf */,
DA5BFCC01502CDF5005BFE16 /* Exo-Bold.otf */,
DA5BFCC21502CDF5005BFE16 /* Exo-DemiBold.otf */,
DA5BFCCA1502CDF5005BFE16 /* Exo-Medium.otf */,
DA5BFCCC1502CDF5005BFE16 /* Exo-Regular.otf */,
DA5BFCC81502CDF5005BFE16 /* Exo-Light.otf */,
DA5BFCC61502CDF5005BFE16 /* Exo-ExtraLight.otf */,
DA5BFCCE1502CDF5005BFE16 /* Exo-Thin.otf */,
);
name = Fonts;
path = Resources/Fonts;
sourceTree = "<group>";
};
DA6556F714D730B700841C99 /* Guide */ = {
isa = PBXGroup;
children = (
@ -3591,6 +3627,15 @@
DA67305314F98B6F004A189C /* icon_wrench.png in Resources */,
DA67305414F98B6F004A189C /* icon_wrench@2x.png in Resources */,
DADC288814FDAC0C00047FEB /* Pearl.strings in Resources */,
DA5BFCD01502CDF5005BFE16 /* Exo-Black.otf in Resources */,
DA5BFCD21502CDF5005BFE16 /* Exo-Bold.otf in Resources */,
DA5BFCD41502CDF5005BFE16 /* Exo-DemiBold.otf in Resources */,
DA5BFCD61502CDF5005BFE16 /* Exo-ExtraBold.otf in Resources */,
DA5BFCD81502CDF5005BFE16 /* Exo-ExtraLight.otf in Resources */,
DA5BFCDA1502CDF5005BFE16 /* Exo-Light.otf in Resources */,
DA5BFCDC1502CDF5005BFE16 /* Exo-Medium.otf in Resources */,
DA5BFCDE1502CDF5005BFE16 /* Exo-Regular.otf in Resources */,
DA5BFCE01502CDF5005BFE16 /* Exo-Thin.otf in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@ -1,10 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
version = "1.3">
<BuildAction>
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForRunning = "YES">
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
@ -15,11 +21,23 @@
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Production">
buildConfiguration = "Production"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
@ -29,5 +47,21 @@
ReferencedContainer = "container:MasterPassword.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,10 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
version = "1.3">
<BuildAction>
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForRunning = "YES">
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
@ -15,11 +21,23 @@
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug">
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
@ -29,5 +47,21 @@
ReferencedContainer = "container:MasterPassword.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

Binary file not shown.

Binary file not shown.

View File

@ -95,6 +95,8 @@
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"ui_background"]];
self.contentField.font = [UIFont fontWithName:@"Exo-Black" size:self.contentField.font.pointSize];
// Put the search tip on the window so it's above the nav bar.
if (![self.searchTipContainer.superview isEqual:self.navigationController.navigationBar.superview]) {
CGRect frameInWindow = [self.searchTipContainer.window convertRect:self.searchTipContainer.frame
@ -367,14 +369,13 @@
case 4:
[TestFlight openFeedbackView];
break;
case 5: {
case 5:
#else
case 4: {
case 4:
#endif
[[MPAppDelegate get] signOut];
break;
}
}
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointAction];
@ -387,14 +388,14 @@
#endif
@"Sign Out",
nil];
}
}
- (MPElementType)selectedType {
- (MPElementType)selectedType {
return self.activeElement.type;
}
}
- (void)didSelectType:(MPElementType)type {
- (void)didSelectType:(MPElementType)type {
[self updateElement:^{
// Update password type.
@ -421,9 +422,9 @@
if (type & MPElementTypeClassStored && ![self.activeElement.description length])
[self showContentTip:@"Tap to set a password." withIcon:self.contentTipEditIcon];
}];
}
}
- (void)didSelectElement:(MPElementEntity *)element {
- (void)didSelectElement:(MPElementEntity *)element {
if (element) {
self.activeElement = element;
@ -438,17 +439,17 @@
}
[self updateAnimated:YES];
}
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if (textField == self.contentField)
[self.contentField resignFirstResponder];
return YES;
}
}
- (void)textFieldDidEndEditing:(UITextField *)textField {
- (void)textFieldDidEndEditing:(UITextField *)textField {
if (textField == self.contentField) {
self.contentField.enabled = NO;
@ -464,9 +465,9 @@
((MPElementStoredEntity *) self.activeElement).content = self.contentField.text;
}];
}
}
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
@ -479,12 +480,12 @@
}
return YES;
}
}
- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender {
- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender {
while ([self.navigationController.viewControllers containsObject:sender])
[self.navigationController popViewControllerAnimated:YES];
}
}
@end
@end

View File

@ -811,64 +811,6 @@ L4m3P4sSw0rD</string>
<image name="ui_spinner.png" width="75" height="75"/>
<image name="ui_textfield.png" width="158" height="34"/>
</resources>
<classes>
<class className="MPGuideViewController" superclassName="UIViewController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/MPGuideViewController.h"/>
<relationships>
<relationship kind="action" name="close"/>
<relationship kind="outlet" name="scrollView" candidateClass="UIScrollView"/>
</relationships>
</class>
<class className="MPMainViewController" superclassName="UIViewController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/MPMainViewController.h"/>
<relationships>
<relationship kind="action" name="action:" candidateClass="UIBarButtonItem"/>
<relationship kind="action" name="closeAlert"/>
<relationship kind="action" name="copyContent"/>
<relationship kind="action" name="editPassword"/>
<relationship kind="action" name="incrementPasswordCounter"/>
<relationship kind="outlet" name="alertBody" candidateClass="UITextView"/>
<relationship kind="outlet" name="alertContainer" candidateClass="UIView"/>
<relationship kind="outlet" name="alertTitle" candidateClass="UILabel"/>
<relationship kind="outlet" name="contentContainer" candidateClass="UIView"/>
<relationship kind="outlet" name="contentField" candidateClass="UITextField"/>
<relationship kind="outlet" name="contentTipBody" candidateClass="UILabel"/>
<relationship kind="outlet" name="contentTipContainer" candidateClass="UIView"/>
<relationship kind="outlet" name="contentTipEditIcon" candidateClass="UIImageView"/>
<relationship kind="outlet" name="helpContainer" candidateClass="UIView"/>
<relationship kind="outlet" name="helpView" candidateClass="UIWebView"/>
<relationship kind="outlet" name="passwordCounter" candidateClass="UILabel"/>
<relationship kind="outlet" name="passwordEdit" candidateClass="UIButton"/>
<relationship kind="outlet" name="passwordIncrementer" candidateClass="UIButton"/>
<relationship kind="outlet" name="searchResultsController" candidateClass="MPSearchDelegate"/>
<relationship kind="outlet" name="searchTipContainer" candidateClass="UIView"/>
<relationship kind="outlet" name="siteName" candidateClass="UILabel"/>
<relationship kind="outlet" name="typeButton" candidateClass="UIButton"/>
</relationships>
</class>
<class className="MPSearchDelegate" superclassName="NSObject">
<source key="sourceIdentifier" type="project" relativePath="./Classes/MPSearchDelegate.h"/>
<relationships>
<relationship kind="outlet" name="delegate"/>
<relationship kind="outlet" name="searchDisplayController" candidateClass="UISearchDisplayController"/>
<relationship kind="outlet" name="searchTipContainer" candidateClass="UIView"/>
</relationships>
</class>
<class className="MPTypeViewController" superclassName="UITableViewController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/MPTypeViewController.h"/>
</class>
<class className="MPUnlockViewController" superclassName="UIViewController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/MPUnlockViewController.h"/>
<relationships>
<relationship kind="action" name="changeMP"/>
<relationship kind="outlet" name="changeMPView" candidateClass="UIView"/>
<relationship kind="outlet" name="field" candidateClass="UITextField"/>
<relationship kind="outlet" name="lock" candidateClass="UIImageView"/>
<relationship kind="outlet" name="messageLabel" candidateClass="UILabel"/>
<relationship kind="outlet" name="spinner" candidateClass="UIImageView"/>
</relationships>
</class>
</classes>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<nil key="statusBar"/>
<simulatedOrientationMetrics key="orientation"/>

View File

@ -46,6 +46,18 @@
<true/>
<key>NSHumanReadableCopyright</key>
<string>© 2011-2012, Lyndir</string>
<key>UIAppFonts</key>
<array>
<string>Exo-Black.otf</string>
<string>Exo-ExtraBold.otf</string>
<string>Exo-Bold.otf</string>
<string>Exo-DemiBold.otf</string>
<string>Exo-Medium.otf</string>
<string>Exo-Regular.otf</string>
<string>Exo-Light.otf</string>
<string>Exo-ExtraLight.otf</string>
<string>Exo-Thin.otf</string>
</array>
<key>UIMainStoryboardFile</key>
<string>MainStoryboard_iPhone</string>
<key>UIMainStoryboardFile~ipad</key>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.