From 3de9a0c67ef3c8aa68b63262cbcc4804cb6578c5 Mon Sep 17 00:00:00 2001
From: Maarten Billemont
Date: Sun, 27 May 2012 22:31:22 +0200
Subject: [PATCH] Removed apptentive ratings, added some tool tips, and some
fixes.
[REMOVED] Stop using apptentive for rating questions. Pearl's
built-in functionality seems nicer and more basic.
[ADDED] Some more tool-tips to help the user, to be shown on first
run only.
[FIXED] The site name tip wasn't showing anymore.
[FIXED] Some language and formatting in help.html.
---
External/Pearl | 2 +-
MasterPassword-iOS.xcodeproj/project.pbxproj | 184 +++---------------
MasterPassword/MPTypes.h | 1 +
MasterPassword/iOS/MPAppDelegate.m | 19 +-
MasterPassword/iOS/MPMainViewController.h | 2 +
MasterPassword/iOS/MPMainViewController.m | 102 +++++-----
MasterPassword/iOS/MPTypeViewController.h | 1 +
MasterPassword/iOS/MPTypeViewController.m | 28 +++
.../iOS/MainStoryboard_iPhone.storyboard | 126 +++++++++---
Resources/Tooltips/tip_basic_black_top.png | Bin 0 -> 2006 bytes
Resources/Tooltips/tip_basic_black_top@2x.png | Bin 0 -> 4432 bytes
.../Tooltips/tip_basic_black_top_right.png | Bin 0 -> 2712 bytes
.../Tooltips/tip_basic_black_top_right@2x.png | Bin 0 -> 4801 bytes
Resources/help.html | 14 +-
14 files changed, 225 insertions(+), 254 deletions(-)
create mode 100644 Resources/Tooltips/tip_basic_black_top.png
create mode 100644 Resources/Tooltips/tip_basic_black_top@2x.png
create mode 100644 Resources/Tooltips/tip_basic_black_top_right.png
create mode 100644 Resources/Tooltips/tip_basic_black_top_right@2x.png
diff --git a/External/Pearl b/External/Pearl
index 046dba15..a72579ea 160000
--- a/External/Pearl
+++ b/External/Pearl
@@ -1 +1 @@
-Subproject commit 046dba155843d7a10d5c087e5b1d698ab271df67
+Subproject commit a72579ea27c797698ddd9546a407578fe8b62003
diff --git a/MasterPassword-iOS.xcodeproj/project.pbxproj b/MasterPassword-iOS.xcodeproj/project.pbxproj
index 8733ebb7..8ae4b220 100644
--- a/MasterPassword-iOS.xcodeproj/project.pbxproj
+++ b/MasterPassword-iOS.xcodeproj/project.pbxproj
@@ -10,12 +10,6 @@
DA04E33E14B1E70400ECA4F3 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA04E33D14B1E70400ECA4F3 /* MobileCoreServices.framework */; };
DA0A1D0515690A9A0092735D /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0A1D0315690A9A0092735D /* Default.png */; };
DA0A1D0615690A9A0092735D /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0A1D0415690A9A0092735D /* Default@2x.png */; };
- DA0A1D0D15690AD40092735D /* tip_arrow_banana.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0A1D0715690AD40092735D /* tip_arrow_banana.png */; };
- DA0A1D0E15690AD40092735D /* tip_arrow_black.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0A1D0815690AD40092735D /* tip_arrow_black.png */; };
- DA0A1D0F15690AD40092735D /* tip_arrow_gray.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0A1D0915690AD40092735D /* tip_arrow_gray.png */; };
- DA0A1D1015690AD40092735D /* tip_arrow_mercury.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0A1D0A15690AD40092735D /* tip_arrow_mercury.png */; };
- DA0A1D1115690AD40092735D /* tip_arrow_teal.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0A1D0B15690AD40092735D /* tip_arrow_teal.png */; };
- DA0A1D1215690AD40092735D /* tip_arrow_wood.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0A1D0C15690AD40092735D /* tip_arrow_wood.png */; };
DA0A1D1515690AF40092735D /* Icon-72@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0A1D1315690AF30092735D /* Icon-72@2x.png */; };
DA0A1D1615690AF40092735D /* Icon-Small-50@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0A1D1415690AF40092735D /* Icon-Small-50@2x.png */; };
DA30E9CE15722ECA00A68B4C /* NSBundle_PearlMutableInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DA30E9CB15722ECA00A68B4C /* NSBundle_PearlMutableInfo.h */; };
@@ -82,7 +76,6 @@
DA95D5F714DF0B9F008D1B94 /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA95D5CD14DF0691008D1B94 /* IASKPSToggleSwitchSpecifierViewCell.xib */; };
DA95D5F814DF0B9F008D1B94 /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA95D5CE14DF0691008D1B94 /* IASKSpecifierValuesView.xib */; };
DAAC35DB156BD62F00C5FD93 /* libApptentiveConnect.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAAC35D2156BD51600C5FD93 /* libApptentiveConnect.a */; };
- DAAC35DC156BD66800C5FD93 /* ApptentiveResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = DAAC35D6156BD51600C5FD93 /* ApptentiveResources.bundle */; };
DAAC35DE156BD77D00C5FD93 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAAC35DD156BD77D00C5FD93 /* CoreTelephony.framework */; };
DAAC35E4156BDBA700C5FD93 /* Apptentive.plist in Resources */ = {isa = PBXBuildFile; fileRef = DAAC35E2156BDBA700C5FD93 /* Apptentive.plist */; };
DAB8D45D15036BCF00CED3BC /* MasterPassword.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DAB8D43C15036BCF00CED3BC /* MasterPassword.xcdatamodeld */; };
@@ -672,72 +665,6 @@
DAB8D93715036BF700CED3BC /* lock_red.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6B415036BF600CED3BC /* lock_red.png */; };
DAB8D93815036BF700CED3BC /* lock_red@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6B515036BF600CED3BC /* lock_red@2x.png */; };
DAB8D93915036BF700CED3BC /* logo-bare.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6B615036BF600CED3BC /* logo-bare.png */; };
- DAB8D93A15036BF700CED3BC /* tip_alert_banana.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6B815036BF600CED3BC /* tip_alert_banana.png */; };
- DAB8D93B15036BF700CED3BC /* tip_alert_banana@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6B915036BF600CED3BC /* tip_alert_banana@2x.png */; };
- DAB8D93C15036BF700CED3BC /* tip_alert_black.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6BA15036BF600CED3BC /* tip_alert_black.png */; };
- DAB8D93D15036BF700CED3BC /* tip_alert_black@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6BB15036BF600CED3BC /* tip_alert_black@2x.png */; };
- DAB8D93E15036BF700CED3BC /* tip_alert_gray.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6BC15036BF600CED3BC /* tip_alert_gray.png */; };
- DAB8D93F15036BF700CED3BC /* tip_alert_gray@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6BD15036BF600CED3BC /* tip_alert_gray@2x.png */; };
- DAB8D94015036BF700CED3BC /* tip_alert_mercury.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6BE15036BF600CED3BC /* tip_alert_mercury.png */; };
- DAB8D94115036BF700CED3BC /* tip_alert_mercury@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6BF15036BF600CED3BC /* tip_alert_mercury@2x.png */; };
- DAB8D94215036BF700CED3BC /* tip_alert_teal.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6C015036BF600CED3BC /* tip_alert_teal.png */; };
- DAB8D94315036BF700CED3BC /* tip_alert_teal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6C115036BF600CED3BC /* tip_alert_teal@2x.png */; };
- DAB8D94415036BF700CED3BC /* tip_alert_wood.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6C215036BF600CED3BC /* tip_alert_wood.png */; };
- DAB8D94515036BF700CED3BC /* tip_alert_wood@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6C315036BF600CED3BC /* tip_alert_wood@2x.png */; };
- DAB8D94615036BF700CED3BC /* tip_arrow_banana@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6C415036BF600CED3BC /* tip_arrow_banana@2x.png */; };
- DAB8D94715036BF700CED3BC /* tip_arrow_black@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6C515036BF600CED3BC /* tip_arrow_black@2x.png */; };
- DAB8D94815036BF700CED3BC /* tip_arrow_gray@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6C615036BF600CED3BC /* tip_arrow_gray@2x.png */; };
- DAB8D94915036BF700CED3BC /* tip_arrow_mercury@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6C715036BF600CED3BC /* tip_arrow_mercury@2x.png */; };
- DAB8D94A15036BF700CED3BC /* tip_arrow_teal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6C815036BF600CED3BC /* tip_arrow_teal@2x.png */; };
- DAB8D94B15036BF700CED3BC /* tip_arrow_wood@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6C915036BF600CED3BC /* tip_arrow_wood@2x.png */; };
- DAB8D94C15036BF700CED3BC /* tip_basic_banana.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6CA15036BF600CED3BC /* tip_basic_banana.png */; };
- DAB8D94D15036BF700CED3BC /* tip_basic_banana@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6CB15036BF600CED3BC /* tip_basic_banana@2x.png */; };
- DAB8D94E15036BF700CED3BC /* tip_basic_black.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6CC15036BF600CED3BC /* tip_basic_black.png */; };
- DAB8D94F15036BF700CED3BC /* tip_basic_black@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6CD15036BF600CED3BC /* tip_basic_black@2x.png */; };
- DAB8D95015036BF700CED3BC /* tip_basic_gray.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6CE15036BF600CED3BC /* tip_basic_gray.png */; };
- DAB8D95115036BF700CED3BC /* tip_basic_gray@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6CF15036BF600CED3BC /* tip_basic_gray@2x.png */; };
- DAB8D95215036BF700CED3BC /* tip_basic_mercury.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6D015036BF600CED3BC /* tip_basic_mercury.png */; };
- DAB8D95315036BF700CED3BC /* tip_basic_mercury@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6D115036BF600CED3BC /* tip_basic_mercury@2x.png */; };
- DAB8D95415036BF700CED3BC /* tip_basic_teal.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6D215036BF600CED3BC /* tip_basic_teal.png */; };
- DAB8D95515036BF700CED3BC /* tip_basic_teal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6D315036BF600CED3BC /* tip_basic_teal@2x.png */; };
- DAB8D95615036BF700CED3BC /* tip_basic_wood.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6D415036BF600CED3BC /* tip_basic_wood.png */; };
- DAB8D95715036BF700CED3BC /* tip_basic_wood@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6D515036BF600CED3BC /* tip_basic_wood@2x.png */; };
- DAB8D95815036BF700CED3BC /* tip_download_banana.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6D615036BF600CED3BC /* tip_download_banana.png */; };
- DAB8D95915036BF700CED3BC /* tip_download_banana@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6D715036BF600CED3BC /* tip_download_banana@2x.png */; };
- DAB8D95A15036BF700CED3BC /* tip_download_black.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6D815036BF600CED3BC /* tip_download_black.png */; };
- DAB8D95B15036BF700CED3BC /* tip_download_black@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6D915036BF600CED3BC /* tip_download_black@2x.png */; };
- DAB8D95C15036BF700CED3BC /* tip_download_gray.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6DA15036BF600CED3BC /* tip_download_gray.png */; };
- DAB8D95D15036BF700CED3BC /* tip_download_gray@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6DB15036BF600CED3BC /* tip_download_gray@2x.png */; };
- DAB8D95E15036BF700CED3BC /* tip_download_mercury.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6DC15036BF600CED3BC /* tip_download_mercury.png */; };
- DAB8D95F15036BF700CED3BC /* tip_download_mercury@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6DD15036BF600CED3BC /* tip_download_mercury@2x.png */; };
- DAB8D96015036BF700CED3BC /* tip_download_teal.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6DE15036BF600CED3BC /* tip_download_teal.png */; };
- DAB8D96115036BF700CED3BC /* tip_download_teal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6DF15036BF600CED3BC /* tip_download_teal@2x.png */; };
- DAB8D96215036BF700CED3BC /* tip_download_wood.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6E015036BF600CED3BC /* tip_download_wood.png */; };
- DAB8D96315036BF700CED3BC /* tip_download_wood@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6E115036BF600CED3BC /* tip_download_wood@2x.png */; };
- DAB8D96415036BF700CED3BC /* tip_large_banana.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6E215036BF600CED3BC /* tip_large_banana.png */; };
- DAB8D96515036BF700CED3BC /* tip_large_banana@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6E315036BF600CED3BC /* tip_large_banana@2x.png */; };
- DAB8D96615036BF700CED3BC /* tip_large_black.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6E415036BF600CED3BC /* tip_large_black.png */; };
- DAB8D96715036BF700CED3BC /* tip_large_black@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6E515036BF600CED3BC /* tip_large_black@2x.png */; };
- DAB8D96815036BF700CED3BC /* tip_large_gray.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6E615036BF600CED3BC /* tip_large_gray.png */; };
- DAB8D96915036BF700CED3BC /* tip_large_gray@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6E715036BF600CED3BC /* tip_large_gray@2x.png */; };
- DAB8D96A15036BF700CED3BC /* tip_large_mercury.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6E815036BF600CED3BC /* tip_large_mercury.png */; };
- DAB8D96B15036BF700CED3BC /* tip_large_mercury@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6E915036BF600CED3BC /* tip_large_mercury@2x.png */; };
- DAB8D96C15036BF700CED3BC /* tip_large_teal.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6EA15036BF600CED3BC /* tip_large_teal.png */; };
- DAB8D96D15036BF700CED3BC /* tip_large_teal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6EB15036BF600CED3BC /* tip_large_teal@2x.png */; };
- DAB8D96E15036BF700CED3BC /* tip_large_wood.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6EC15036BF600CED3BC /* tip_large_wood.png */; };
- DAB8D96F15036BF700CED3BC /* tip_large_wood@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6ED15036BF600CED3BC /* tip_large_wood@2x.png */; };
- DAB8D97015036BF700CED3BC /* tip_location_banana.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6EE15036BF600CED3BC /* tip_location_banana.png */; };
- DAB8D97115036BF700CED3BC /* tip_location_banana@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6EF15036BF600CED3BC /* tip_location_banana@2x.png */; };
- DAB8D97215036BF700CED3BC /* tip_location_black.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6F015036BF600CED3BC /* tip_location_black.png */; };
- DAB8D97315036BF700CED3BC /* tip_location_black@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6F115036BF600CED3BC /* tip_location_black@2x.png */; };
- DAB8D97415036BF700CED3BC /* tip_location_gray.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6F215036BF600CED3BC /* tip_location_gray.png */; };
- DAB8D97515036BF700CED3BC /* tip_location_gray@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6F315036BF600CED3BC /* tip_location_gray@2x.png */; };
- DAB8D97615036BF700CED3BC /* tip_location_mercury.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6F415036BF600CED3BC /* tip_location_mercury.png */; };
- DAB8D97715036BF700CED3BC /* tip_location_mercury@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6F515036BF600CED3BC /* tip_location_mercury@2x.png */; };
- DAB8D97815036BF700CED3BC /* tip_location_teal.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6F615036BF600CED3BC /* tip_location_teal.png */; };
- DAB8D97915036BF700CED3BC /* tip_location_teal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6F715036BF600CED3BC /* tip_location_teal@2x.png */; };
- DAB8D97A15036BF700CED3BC /* tip_location_wood.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6F815036BF600CED3BC /* tip_location_wood.png */; };
- DAB8D97B15036BF700CED3BC /* tip_location_wood@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6F915036BF600CED3BC /* tip_location_wood@2x.png */; };
DAB8D97C1503718B00CED3BC /* jquery-1.6.1.min.js in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6AB15036BF600CED3BC /* jquery-1.6.1.min.js */; };
DABB981615100B4000B05417 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DABB981515100B4000B05417 /* SystemConfiguration.framework */; };
DAC6325E1486805C0075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
@@ -746,6 +673,15 @@
DAC6327C1486809A0075AEA5 /* JRSwizzle.m in Sources */ = {isa = PBXBuildFile; fileRef = DAC6327A1486809A0075AEA5 /* JRSwizzle.m */; };
DAC632891486D9690075AEA5 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC632871486D95D0075AEA5 /* Security.framework */; };
DAC77CAE148291A600BCF976 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
+ DACABB8515729E80008BA211 /* ApptentiveResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = DAAC35D6156BD51600C5FD93 /* ApptentiveResources.bundle */; };
+ DACABB861572A2A7008BA211 /* tip_alert_black.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6BA15036BF600CED3BC /* tip_alert_black.png */; };
+ DACABB871572A2A7008BA211 /* tip_alert_black@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6BB15036BF600CED3BC /* tip_alert_black@2x.png */; };
+ DACABB881572A2A7008BA211 /* tip_basic_black.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6CC15036BF600CED3BC /* tip_basic_black.png */; };
+ DACABB891572A2A7008BA211 /* tip_basic_black@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6CD15036BF600CED3BC /* tip_basic_black@2x.png */; };
+ DACABB8C1572A4A5008BA211 /* tip_basic_black_top_right.png in Resources */ = {isa = PBXBuildFile; fileRef = DACABB8A1572A4A4008BA211 /* tip_basic_black_top_right.png */; };
+ DACABB8D1572A4A5008BA211 /* tip_basic_black_top_right@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DACABB8B1572A4A4008BA211 /* tip_basic_black_top_right@2x.png */; };
+ DACABB901572B76A008BA211 /* tip_basic_black_top.png in Resources */ = {isa = PBXBuildFile; fileRef = DACABB8E1572B769008BA211 /* tip_basic_black_top.png */; };
+ DACABB911572B76A008BA211 /* tip_basic_black_top@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DACABB8F1572B769008BA211 /* tip_basic_black_top@2x.png */; };
DAD3126715528C9C00A3F9ED /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD3125F15528C9C00A3F9ED /* Crashlytics.framework */; };
DAD3126815528C9C00A3F9ED /* Crashlytics.plist in Resources */ = {isa = PBXBuildFile; fileRef = DAD3126015528C9C00A3F9ED /* Crashlytics.plist */; };
DAD3126915528C9C00A3F9ED /* libTestFlight.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD3126215528C9C00A3F9ED /* libTestFlight.a */; };
@@ -1679,6 +1615,10 @@
DAC632871486D95D0075AEA5 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
DAC77CAD148291A600BCF976 /* libPearl.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPearl.a; sourceTree = BUILT_PRODUCTS_DIR; };
DAC77CB1148291A600BCF976 /* Pearl-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Pearl-Prefix.pch"; sourceTree = ""; };
+ DACABB8A1572A4A4008BA211 /* tip_basic_black_top_right.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tip_basic_black_top_right.png; sourceTree = ""; };
+ DACABB8B1572A4A4008BA211 /* tip_basic_black_top_right@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "tip_basic_black_top_right@2x.png"; sourceTree = ""; };
+ DACABB8E1572B769008BA211 /* tip_basic_black_top.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tip_basic_black_top.png; sourceTree = ""; };
+ DACABB8F1572B769008BA211 /* tip_basic_black_top@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "tip_basic_black_top@2x.png"; sourceTree = ""; };
DAD3125F15528C9C00A3F9ED /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Crashlytics.framework; sourceTree = ""; };
DAD3126015528C9C00A3F9ED /* Crashlytics.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Crashlytics.plist; sourceTree = ""; };
DAD3126215528C9C00A3F9ED /* libTestFlight.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libTestFlight.a; sourceTree = ""; };
@@ -2720,12 +2660,10 @@
DAB8D6B715036BF600CED3BC /* Tooltips */ = {
isa = PBXGroup;
children = (
- DA0A1D0715690AD40092735D /* tip_arrow_banana.png */,
- DA0A1D0815690AD40092735D /* tip_arrow_black.png */,
- DA0A1D0915690AD40092735D /* tip_arrow_gray.png */,
- DA0A1D0A15690AD40092735D /* tip_arrow_mercury.png */,
- DA0A1D0B15690AD40092735D /* tip_arrow_teal.png */,
- DA0A1D0C15690AD40092735D /* tip_arrow_wood.png */,
+ DACABB8E1572B769008BA211 /* tip_basic_black_top.png */,
+ DACABB8F1572B769008BA211 /* tip_basic_black_top@2x.png */,
+ DACABB8A1572A4A4008BA211 /* tip_basic_black_top_right.png */,
+ DACABB8B1572A4A4008BA211 /* tip_basic_black_top_right@2x.png */,
DAB8D6B815036BF600CED3BC /* tip_alert_banana.png */,
DAB8D6B915036BF600CED3BC /* tip_alert_banana@2x.png */,
DAB8D6BA15036BF600CED3BC /* tip_alert_black.png */,
@@ -2738,11 +2676,17 @@
DAB8D6C115036BF600CED3BC /* tip_alert_teal@2x.png */,
DAB8D6C215036BF600CED3BC /* tip_alert_wood.png */,
DAB8D6C315036BF600CED3BC /* tip_alert_wood@2x.png */,
+ DA0A1D0715690AD40092735D /* tip_arrow_banana.png */,
DAB8D6C415036BF600CED3BC /* tip_arrow_banana@2x.png */,
+ DA0A1D0815690AD40092735D /* tip_arrow_black.png */,
DAB8D6C515036BF600CED3BC /* tip_arrow_black@2x.png */,
+ DA0A1D0915690AD40092735D /* tip_arrow_gray.png */,
DAB8D6C615036BF600CED3BC /* tip_arrow_gray@2x.png */,
+ DA0A1D0A15690AD40092735D /* tip_arrow_mercury.png */,
DAB8D6C715036BF600CED3BC /* tip_arrow_mercury@2x.png */,
+ DA0A1D0B15690AD40092735D /* tip_arrow_teal.png */,
DAB8D6C815036BF600CED3BC /* tip_arrow_teal@2x.png */,
+ DA0A1D0C15690AD40092735D /* tip_arrow_wood.png */,
DAB8D6C915036BF600CED3BC /* tip_arrow_wood@2x.png */,
DAB8D6CA15036BF600CED3BC /* tip_basic_banana.png */,
DAB8D6CB15036BF600CED3BC /* tip_basic_banana@2x.png */,
@@ -3356,7 +3300,6 @@
buildActionMask = 2147483647;
files = (
DAB8D97C1503718B00CED3BC /* jquery-1.6.1.min.js in Resources */,
- DAAC35DC156BD66800C5FD93 /* ApptentiveResources.bundle in Resources */,
DA95D5F314DF0B9B008D1B94 /* IASKAppSettingsView.xib in Resources */,
DA95D5F414DF0B9F008D1B94 /* IASKAppSettingsWebView.xib in Resources */,
DA95D5F514DF0B9F008D1B94 /* IASKPSSliderSpecifierViewCell.xib in Resources */,
@@ -3937,87 +3880,24 @@
DAB8D93715036BF700CED3BC /* lock_red.png in Resources */,
DAB8D93815036BF700CED3BC /* lock_red@2x.png in Resources */,
DAB8D93915036BF700CED3BC /* logo-bare.png in Resources */,
- DAB8D93A15036BF700CED3BC /* tip_alert_banana.png in Resources */,
- DAB8D93B15036BF700CED3BC /* tip_alert_banana@2x.png in Resources */,
- DAB8D93C15036BF700CED3BC /* tip_alert_black.png in Resources */,
- DAB8D93D15036BF700CED3BC /* tip_alert_black@2x.png in Resources */,
- DAB8D93E15036BF700CED3BC /* tip_alert_gray.png in Resources */,
- DAB8D93F15036BF700CED3BC /* tip_alert_gray@2x.png in Resources */,
- DAB8D94015036BF700CED3BC /* tip_alert_mercury.png in Resources */,
- DAB8D94115036BF700CED3BC /* tip_alert_mercury@2x.png in Resources */,
- DAB8D94215036BF700CED3BC /* tip_alert_teal.png in Resources */,
- DAB8D94315036BF700CED3BC /* tip_alert_teal@2x.png in Resources */,
- DAB8D94415036BF700CED3BC /* tip_alert_wood.png in Resources */,
- DAB8D94515036BF700CED3BC /* tip_alert_wood@2x.png in Resources */,
- DAB8D94615036BF700CED3BC /* tip_arrow_banana@2x.png in Resources */,
- DAB8D94715036BF700CED3BC /* tip_arrow_black@2x.png in Resources */,
- DAB8D94815036BF700CED3BC /* tip_arrow_gray@2x.png in Resources */,
- DAB8D94915036BF700CED3BC /* tip_arrow_mercury@2x.png in Resources */,
- DAB8D94A15036BF700CED3BC /* tip_arrow_teal@2x.png in Resources */,
- DAB8D94B15036BF700CED3BC /* tip_arrow_wood@2x.png in Resources */,
- DAB8D94C15036BF700CED3BC /* tip_basic_banana.png in Resources */,
- DAB8D94D15036BF700CED3BC /* tip_basic_banana@2x.png in Resources */,
- DAB8D94E15036BF700CED3BC /* tip_basic_black.png in Resources */,
- DAB8D94F15036BF700CED3BC /* tip_basic_black@2x.png in Resources */,
- DAB8D95015036BF700CED3BC /* tip_basic_gray.png in Resources */,
- DAB8D95115036BF700CED3BC /* tip_basic_gray@2x.png in Resources */,
- DAB8D95215036BF700CED3BC /* tip_basic_mercury.png in Resources */,
- DAB8D95315036BF700CED3BC /* tip_basic_mercury@2x.png in Resources */,
- DAB8D95415036BF700CED3BC /* tip_basic_teal.png in Resources */,
- DAB8D95515036BF700CED3BC /* tip_basic_teal@2x.png in Resources */,
- DAB8D95615036BF700CED3BC /* tip_basic_wood.png in Resources */,
- DAB8D95715036BF700CED3BC /* tip_basic_wood@2x.png in Resources */,
- DAB8D95815036BF700CED3BC /* tip_download_banana.png in Resources */,
- DAB8D95915036BF700CED3BC /* tip_download_banana@2x.png in Resources */,
- DAB8D95A15036BF700CED3BC /* tip_download_black.png in Resources */,
- DAB8D95B15036BF700CED3BC /* tip_download_black@2x.png in Resources */,
- DAB8D95C15036BF700CED3BC /* tip_download_gray.png in Resources */,
- DAB8D95D15036BF700CED3BC /* tip_download_gray@2x.png in Resources */,
- DAB8D95E15036BF700CED3BC /* tip_download_mercury.png in Resources */,
- DAB8D95F15036BF700CED3BC /* tip_download_mercury@2x.png in Resources */,
- DAB8D96015036BF700CED3BC /* tip_download_teal.png in Resources */,
- DAB8D96115036BF700CED3BC /* tip_download_teal@2x.png in Resources */,
- DAB8D96215036BF700CED3BC /* tip_download_wood.png in Resources */,
- DAB8D96315036BF700CED3BC /* tip_download_wood@2x.png in Resources */,
- DAB8D96415036BF700CED3BC /* tip_large_banana.png in Resources */,
- DAB8D96515036BF700CED3BC /* tip_large_banana@2x.png in Resources */,
- DAB8D96615036BF700CED3BC /* tip_large_black.png in Resources */,
- DAB8D96715036BF700CED3BC /* tip_large_black@2x.png in Resources */,
- DAB8D96815036BF700CED3BC /* tip_large_gray.png in Resources */,
- DAB8D96915036BF700CED3BC /* tip_large_gray@2x.png in Resources */,
- DAB8D96A15036BF700CED3BC /* tip_large_mercury.png in Resources */,
- DAB8D96B15036BF700CED3BC /* tip_large_mercury@2x.png in Resources */,
- DAB8D96C15036BF700CED3BC /* tip_large_teal.png in Resources */,
- DAB8D96D15036BF700CED3BC /* tip_large_teal@2x.png in Resources */,
- DAB8D96E15036BF700CED3BC /* tip_large_wood.png in Resources */,
- DAB8D96F15036BF700CED3BC /* tip_large_wood@2x.png in Resources */,
- DAB8D97015036BF700CED3BC /* tip_location_banana.png in Resources */,
- DAB8D97115036BF700CED3BC /* tip_location_banana@2x.png in Resources */,
- DAB8D97215036BF700CED3BC /* tip_location_black.png in Resources */,
- DAB8D97315036BF700CED3BC /* tip_location_black@2x.png in Resources */,
- DAB8D97415036BF700CED3BC /* tip_location_gray.png in Resources */,
- DAB8D97515036BF700CED3BC /* tip_location_gray@2x.png in Resources */,
- DAB8D97615036BF700CED3BC /* tip_location_mercury.png in Resources */,
- DAB8D97715036BF700CED3BC /* tip_location_mercury@2x.png in Resources */,
- DAB8D97815036BF700CED3BC /* tip_location_teal.png in Resources */,
- DAB8D97915036BF700CED3BC /* tip_location_teal@2x.png in Resources */,
- DAB8D97A15036BF700CED3BC /* tip_location_wood.png in Resources */,
- DAB8D97B15036BF700CED3BC /* tip_location_wood@2x.png in Resources */,
DAFE4A5A1503982E003ABA7C /* Pearl.strings in Resources */,
DAD3126815528C9C00A3F9ED /* Crashlytics.plist in Resources */,
DAD3126C15528C9C00A3F9ED /* TestFlight.plist in Resources */,
DAD3129015528D1600A3F9ED /* Localytics.plist in Resources */,
DA0A1D0515690A9A0092735D /* Default.png in Resources */,
DA0A1D0615690A9A0092735D /* Default@2x.png in Resources */,
- DA0A1D0D15690AD40092735D /* tip_arrow_banana.png in Resources */,
- DA0A1D0E15690AD40092735D /* tip_arrow_black.png in Resources */,
- DA0A1D0F15690AD40092735D /* tip_arrow_gray.png in Resources */,
- DA0A1D1015690AD40092735D /* tip_arrow_mercury.png in Resources */,
- DA0A1D1115690AD40092735D /* tip_arrow_teal.png in Resources */,
- DA0A1D1215690AD40092735D /* tip_arrow_wood.png in Resources */,
DA0A1D1515690AF40092735D /* Icon-72@2x.png in Resources */,
DA0A1D1615690AF40092735D /* Icon-Small-50@2x.png in Resources */,
DAAC35E4156BDBA700C5FD93 /* Apptentive.plist in Resources */,
+ DACABB8515729E80008BA211 /* ApptentiveResources.bundle in Resources */,
+ DACABB861572A2A7008BA211 /* tip_alert_black.png in Resources */,
+ DACABB871572A2A7008BA211 /* tip_alert_black@2x.png in Resources */,
+ DACABB881572A2A7008BA211 /* tip_basic_black.png in Resources */,
+ DACABB891572A2A7008BA211 /* tip_basic_black@2x.png in Resources */,
+ DACABB8C1572A4A5008BA211 /* tip_basic_black_top_right.png in Resources */,
+ DACABB8D1572A4A5008BA211 /* tip_basic_black_top_right@2x.png in Resources */,
+ DACABB901572B76A008BA211 /* tip_basic_black_top.png in Resources */,
+ DACABB911572B76A008BA211 /* tip_basic_black_top@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/MasterPassword/MPTypes.h b/MasterPassword/MPTypes.h
index af54ff01..7bbe894f 100644
--- a/MasterPassword/MPTypes.h
+++ b/MasterPassword/MPTypes.h
@@ -75,6 +75,7 @@ typedef enum {
#define MPNotificationKeySet @"MPNotificationKeySet"
#define MPNotificationKeyUnset @"MPNotificationKeyUnset"
#define MPNotificationKeyForgotten @"MPNotificationKeyForgotten"
+#define MPNotificationElementUsed @"MPNotificationElementUsed"
NSData *keyForPassword(NSString *password);
NSData *keyIDForPassword(NSString *password);
diff --git a/MasterPassword/iOS/MPAppDelegate.m b/MasterPassword/iOS/MPAppDelegate.m
index c2dbe87d..feea1bfc 100644
--- a/MasterPassword/iOS/MPAppDelegate.m
+++ b/MasterPassword/iOS/MPAppDelegate.m
@@ -16,7 +16,6 @@
#import "TestFlight.h"
#import
#import "ATConnect.h"
-#import "ATAppRatingFlow.h"
@interface MPAppDelegate ()
@@ -148,6 +147,7 @@
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+ [[[NSBundle mainBundle] mutableInfoDictionary] setObject:@"Master Password" forKey:@"CFBundleDisplayName"];
[[[NSBundle mainBundle] mutableLocalizedInfoDictionary] setObject:@"Master Password" forKey:@"CFBundleDisplayName"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
@@ -219,23 +219,6 @@
[connection setApiKey:apptentiveAPIKey];
[connection setShouldTakeScreenshot:NO];
[connection addAdditionalInfoToFeedback:[PearlInfoPlist get].CFBundleVersion withKey:@"CFBundleVersion"];
-
- ATAppRatingFlow *ratingsFlow = [ATAppRatingFlow sharedRatingFlowWithAppID:[PearlConfig get].iTunesID];
- [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationWillEnterForegroundNotification object:nil queue:nil
- usingBlock:^(NSNotification *note) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [ratingsFlow appDidEnterForeground:YES
- viewController:self.navigationController];
- });
- }];
- [[NSNotificationCenter defaultCenter] addObserverForName:MPNotificationKeySet object:nil queue:nil
- usingBlock:^(NSNotification *note) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [ratingsFlow userDidPerformSignificantEvent:YES
- viewController:self.navigationController];
- });
- }];
- [ratingsFlow appDidLaunch:YES viewController:self.navigationController];
}
}
@catch (NSException *exception) {
diff --git a/MasterPassword/iOS/MPMainViewController.h b/MasterPassword/iOS/MPMainViewController.h
index b7b74fbc..d4480860 100644
--- a/MasterPassword/iOS/MPMainViewController.h
+++ b/MasterPassword/iOS/MPMainViewController.h
@@ -31,6 +31,8 @@
@property (weak, nonatomic) IBOutlet UILabel *contentTipBody;
@property (weak, nonatomic) IBOutlet UIImageView *contentTipEditIcon;
@property (weak, nonatomic) IBOutlet UIView *searchTipContainer;
+@property (weak, nonatomic) IBOutlet UIView *actionsTipContainer;
+@property (weak, nonatomic) IBOutlet UIView *typeTipContainer;
@property (copy) void (^contentTipCleanup)(BOOL finished);
diff --git a/MasterPassword/iOS/MPMainViewController.m b/MasterPassword/iOS/MPMainViewController.m
index 60b969a0..abf3e029 100644
--- a/MasterPassword/iOS/MPMainViewController.m
+++ b/MasterPassword/iOS/MPMainViewController.m
@@ -21,7 +21,6 @@
@interface MPMainViewController (Private)
- (void)updateAnimated:(BOOL)animated;
-- (void)updateWasAnimated:(BOOL)animated;
- (void)showContentTip:(NSString *)message withIcon:(UIImageView *)icon;
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message;
- (void)changeElementWithWarning:(NSString *)warning do:(void (^)(void))task;
@@ -46,7 +45,9 @@
@synthesize alertBody = _alertBody;
@synthesize contentTipBody = _contentTipBody;
@synthesize contentTipEditIcon = _contentTipEditIcon;
-@synthesize searchTipContainer = _searchTip;
+@synthesize searchTipContainer = _searchTipContainer;
+@synthesize actionsTipContainer = _actionsTipContainer;
+@synthesize typeTipContainer = _typeTipContainer;
@synthesize contentField = _contentField;
@synthesize contentTipCleanup;
@@ -73,30 +74,38 @@
[super viewWillAppear:animated];
- self.searchTipContainer.hidden = NO;
-
if (![self.activeElement.keyID isEqualToData:[MPAppDelegate get].keyID])
self.activeElement = nil;
self.searchDisplayController.searchBar.text = nil;
-
- if (!self.activeElement.name)
- [UIView animateWithDuration:animated? 0.2f: 0 animations:^{
- self.searchTipContainer.alpha = 1;
- }];
+
+ self.searchTipContainer.alpha = 0;
+ self.actionsTipContainer.alpha = 0;
+ self.typeTipContainer.alpha = 0;
[self setHelpHidden:[[MPiOSConfig get].helpHidden boolValue] animated:animated];
[self updateAnimated:animated];
}
-- (void)viewWillDisappear:(BOOL)animated {
-
- [super viewWillDisappear:animated];
-
- self.searchTipContainer.hidden = YES;
-}
-
- (void)viewDidAppear:(BOOL)animated {
+ if ([[MPiOSConfig get].firstRun boolValue])
+ [UIView animateWithDuration:animated? 0.3f: 0 animations:^{
+ self.actionsTipContainer.alpha = 1;
+ } completion:^(BOOL finished) {
+ if (finished) {
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+ [UIView animateWithDuration:0.2f animations:^{
+ self.actionsTipContainer.alpha = 0;
+ } completion:^(BOOL finished) {
+ if (![self.activeElement.name length])
+ [UIView animateWithDuration:animated? 0.3f: 0 animations:^{
+ self.searchTipContainer.alpha = 1;
+ }];
+ }];
+ });
+ }
+ }];
+
[super viewDidAppear:animated];
}
@@ -106,16 +115,6 @@
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
- fromView:self.searchTipContainer.superview];
- [self.searchTipContainer removeFromSuperview];
- [self.navigationController.navigationBar.superview addSubview:self.searchTipContainer];
- self.searchTipContainer.frame = [self.searchTipContainer.window convertRect:frameInWindow
- toView:self.searchTipContainer.superview];
- }
-
self.alertBody.text = nil;
self.contentTipEditIcon.hidden = YES;
@@ -141,22 +140,19 @@
[self setContentTipBody:nil];
[self setContentTipEditIcon:nil];
[self setSearchTipContainer:nil];
+ [self setActionsTipContainer:nil];
+ [self setTypeTipContainer:nil];
[super viewDidUnload];
}
- (void)updateAnimated:(BOOL)animated {
- dispatch_async(dispatch_get_main_queue(), ^{
- if (animated)
- [UIView animateWithDuration:0.3f animations:^{
- [self updateWasAnimated:animated];
- }];
- else
- [self updateWasAnimated:animated];
- });
-}
-
-- (void)updateWasAnimated:(BOOL)animated {
+ if (animated) {
+ [UIView animateWithDuration:0.3f animations:^{
+ [self updateAnimated:NO];
+ }];
+ return;
+ }
[self setHelpChapter:self.activeElement? @"2": @"1"];
self.siteName.text = self.activeElement.name;
@@ -245,7 +241,7 @@
};
icon.hidden = NO;
- [UIView animateWithDuration:0.2f animations:^{
+ [UIView animateWithDuration:0.3f animations:^{
self.contentTipContainer.alpha = 1;
} completion:^(BOOL finished) {
if (finished) {
@@ -271,7 +267,7 @@
self.alertBody.text = message;
[self.alertBody scrollRangeToVisible:scrollRange];
- [UIView animateWithDuration:0.2f animations:^{
+ [UIView animateWithDuration:0.3f animations:^{
self.alertContainer.alpha = 1;
}];
});
@@ -421,15 +417,16 @@
[TestFlight openFeedbackView];
break;
}
- case 6: {
+ case 6:
#else
case 5: {
ATConnect *connection = [ATConnect sharedConnection];
[connection presentFeedbackControllerFromViewController:self];
break;
}
- case 6: {
+ case 6:
#endif
+ {
[[MPAppDelegate get] signOut:self];
[[MPAppDelegate get] loadKey:YES];
break;
@@ -437,12 +434,9 @@
}
[TestFlight passCheckpoint:MPTestFlightCheckpointAction];
- } cancelTitle:[PearlStrings get].commonButtonCancel destructiveTitle:nil
- otherTitles:
- [self isHelpVisible]? @"Hide Help": @"Show Help", @"FAQ", @"Tutorial", @"Settings", @"Export",
- @"Feedback",
- @"Sign Out",
- nil];
+ }
+ cancelTitle:[PearlStrings get].commonButtonCancel destructiveTitle:nil otherTitles:
+ [self isHelpVisible]? @"Hide Help": @"Show Help", @"FAQ", @"Tutorial", @"Settings", @"Export", @"Feedback", @"Sign Out", nil];
}
- (MPElementType)selectedType {
@@ -496,10 +490,24 @@
self.activeElement.name, self.activeElement.name)];
[[MPAppDelegate get] saveContext];
+ if ([[MPiOSConfig get].firstRun boolValue])
+ [UIView animateWithDuration:0.5f animations:^{
+ self.typeTipContainer.alpha = 1;
+ } completion:^(BOOL finished) {
+ if (finished) {
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+ [UIView animateWithDuration:0.2f animations:^{
+ self.typeTipContainer.alpha = 0;
+ }];
+ });
+ }
+ }];
+
[self.searchDisplayController setActive:NO animated:YES];
self.searchDisplayController.searchBar.text = self.activeElement.name;
[TestFlight passCheckpoint:MPTestFlightCheckpointSelectElement];
+ [[NSNotificationCenter defaultCenter] postNotificationName:MPNotificationElementUsed object:self.activeElement];
}
[self updateAnimated:YES];
diff --git a/MasterPassword/iOS/MPTypeViewController.h b/MasterPassword/iOS/MPTypeViewController.h
index b053f972..1e3c1371 100644
--- a/MasterPassword/iOS/MPTypeViewController.h
+++ b/MasterPassword/iOS/MPTypeViewController.h
@@ -20,5 +20,6 @@
@interface MPTypeViewController : UITableViewController
@property (nonatomic, weak) id delegate;
+@property (weak, nonatomic) IBOutlet UIView *recommendedTipContainer;
@end
diff --git a/MasterPassword/iOS/MPTypeViewController.m b/MasterPassword/iOS/MPTypeViewController.m
index 353ebd26..5d571a69 100644
--- a/MasterPassword/iOS/MPTypeViewController.m
+++ b/MasterPassword/iOS/MPTypeViewController.m
@@ -17,9 +17,33 @@
@implementation MPTypeViewController
@synthesize delegate;
+@synthesize recommendedTipContainer;
#pragma mark - View lifecycle
+- (void)viewWillAppear:(BOOL)animated {
+
+ self.recommendedTipContainer.alpha = 0;
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+
+ if ([[MPiOSConfig get].firstRun boolValue])
+ [UIView animateWithDuration:animated? 0.3f: 0 animations:^{
+ self.recommendedTipContainer.alpha = 1;
+ } completion:^(BOOL finished) {
+ if (finished) {
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+ [UIView animateWithDuration:0.2f animations:^{
+ self.recommendedTipContainer.alpha = 0;
+ }];
+ });
+ }
+ }];
+
+ [super viewDidAppear:animated];
+}
+
- (void)viewDidLoad {
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"ui_background"]];
@@ -108,4 +132,8 @@
@throw nil;
}
+- (void)viewDidUnload {
+ [self setRecommendedTipContainer:nil];
+ [super viewDidUnload];
+}
@end
diff --git a/MasterPassword/iOS/MainStoryboard_iPhone.storyboard b/MasterPassword/iOS/MainStoryboard_iPhone.storyboard
index 4b7ed447..393eea54 100644
--- a/MasterPassword/iOS/MainStoryboard_iPhone.storyboard
+++ b/MasterPassword/iOS/MainStoryboard_iPhone.storyboard
@@ -1,5 +1,5 @@
-
+
@@ -61,7 +61,7 @@
-
+
These types create a safe password for your site.
The passwords aren't saved anywhere. This is a major advantage: if you lose your device, your passwords cannot be stolen. You can use any other device to get all your passwords back, no need for restoring backups or any other pains.
@@ -71,6 +71,24 @@ The passwords aren't saved anywhere. This is a major advantage: if you lose you
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -306,6 +324,9 @@ The passwords aren't saved anywhere. This is a major advantage: if you lose you
+
+
+
@@ -447,28 +468,6 @@ The passwords aren't saved anywhere. This is a major advantage: if you lose you
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -537,7 +536,7 @@ L4m3P4sSw0rD
-
+
@@ -547,16 +546,16 @@ L4m3P4sSw0rD
-
+
-
+
-
+
@@ -565,6 +564,70 @@ L4m3P4sSw0rD
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -576,6 +639,7 @@ L4m3P4sSw0rD
+
@@ -594,6 +658,7 @@ L4m3P4sSw0rD
+
@@ -731,7 +796,7 @@ L4m3P4sSw0rD
-
+
@@ -803,12 +868,15 @@ L4m3P4sSw0rD
+
+
+
diff --git a/Resources/Tooltips/tip_basic_black_top.png b/Resources/Tooltips/tip_basic_black_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..6fb2842c2eef80d86546f46e5b5f31356a274f54
GIT binary patch
literal 2006
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
B(jou=
literal 0
HcmV?d00001
diff --git a/Resources/Tooltips/tip_basic_black_top_right.png b/Resources/Tooltips/tip_basic_black_top_right.png
new file mode 100644
index 0000000000000000000000000000000000000000..f60737e764731bd0d2086ebfb58a4f7c30af31fc
GIT binary patch
literal 2712
zcmbVOX;c&E8Xg1@#Za^qLPQ%A>Ov*Sgpf@l1dP%fU;BqUawYYRTPUXhPu(4Sn2JLp8mLV&dj&H&-1+7ch02wc)KGO
zp%wuEfbih5e05{D?q!%5>%L~Vmr~tetz-u({Uo8vSe_gLm_i93LVHB<&naZ(8H3n?Vga)GWMq1ZXFE_eSdq&L)gL*Fcibw%MtvLu4&C`hdIU@NyrRzZb^v~AUE&jYbkXUzP$#^0@^1hC)xBn;)hq(-gxX<>$B!k&FDDF#^&6MZmm{3oV8cOMD_|-
zW**!>@$N(2yP0w4xY_q{tB!j9A}Xd2nS@G0(-I5h7gYR!QL}=_%%21UJ4GrP@>-_AFsxaAW
zSePYSMoe<=^hT>kM@Q{7)Ibv;;XqYYRW$FwLAUCE*O)pqvw63NeVSQLJ5#&5M~7bt
zCv8GD7nKwaJ8u2)YNgIfPD<&^i|ndO1ddIjq39#A`DRgG>4wwuLJDTGmQQ8Oi+D8q;pF8@mwrwoh18y>n7I7lLu+*??0Vjr
zk9Qb;>fPnO(u{5Yx~I%7MEQfusuQy-i@SGEwf~R+u9jIW;7xNLk0+wde_LmH7|)2G
zUbFTgx{QhH5v8{66%vCAii;B-JbH9;bZqQ>p4y`AZN9go*)qD!HCdVv)3~ndUHjpa
zWzXb{;!b;Zc`r24YJR|yWSAF{_St*GX$S6-r@60AtZyFlb4+?2Nwx_+#@|>;{&gb0
ze#+D|Z3k`v&!r#zhiZoi$YDX?|({%+6rqnUVrF$x^HcEj_myl
zKt${toesAv^vqc>j%2FWWp3%0c347ZCK`8a$X|N0gm1#EU-^X5{X1r1Z)kQUkx|dG
z4zZDK8lfYZJ$b3~@r9#XGa}Vt=Z=^B=evabp?-%DlvgeqA>zZft2!%5mCKq|r+XDN
zSRncUF7~?tEaGe`sqyODg^w4h4Z3lN{E!^`+uWP3E)|4`K51Hp)#Jk;GxwTipK*Q0
zhz)FuVuvPq{R*kQ;Y#4fpI@a4uZEmjw9FxNu^O
zUA%^@F$iG&QrJ8k7))GQdhvo044ipl(B}ZungcDkbw({HAiM@fBLK(BFkLT}Hl_gT
zFyP1ICA=#@%Pu3}Rq_C7X*dd~j^D#IZ1HBHsD{9X2S(qtpUd9T3-|;>hjrU`SSTEL
zvlc>&Cb?7LaAd;yjSJg;@f8Lg1C^yi=2JVjSWx1Q#M~Y{jy+WQ;pOZ2r0VJ>aKHX&
z_m|ztlRw?9QHQ;anRm8rIQnKq((dNwLzxO5l39;_@_oS!f7bLf+k*^Biuuu9yS>|o
z(^%@7wwVKWpDxP@Ie+SE@2bX!03!X&qm*@dA#rp%om;4V=!%;WOg~Dle5TAU8btIw
zKtx@)DlOgy^Wb(dpA?6S`hZByQ3q72h{l42oE5EU%Pm18^sQAD!r5-P~X1)bMTZwnHK;
zDonD%=7^K~KbpnYNaYvyU{8>X(HZXyVAW
z8%fPOHgyVF);*=YoO)r2-Tsbt$w8LRi9mE7v7%kGH*|;
z4!Y43dC>*cbEa=_{>3kY&wAW=Uibxem|L7W4|XZPN4{rtab{@EAuk&^_tck@dpJkh
qU|DInvpY=AHrW%JTlMYlMo0kHFsORr7>LyWD|)cKS?689`S!ojHgiz`
literal 0
HcmV?d00001
diff --git a/Resources/Tooltips/tip_basic_black_top_right@2x.png b/Resources/Tooltips/tip_basic_black_top_right@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..0daf53ba1055cbbc0d508e18493cb7b91e06c46c
GIT binary patch
literal 4801
zcmbVQc{r5o`+poFg=pH4h@!0SR|^76~mK8b)b4uLi`)4
z2LKTD@^*6JxDc&zWEMl)a}}e_Wt@Vf0XSgHJ>^OErE*kARGK%_Q1wH3m8yz2#ZdJq
zng}PJGN;nL4~7O%9YbxL$f3SueTu5Fk;(xs4pP9Nay(VI3_m6t$2C;_p%(|WSBG^}
zRenG?zJ{uQk#Zs0shG0@s48e}xE2|XfvaE;+6Y~go}Qkj3KEWh>%fsZ2&5K552uU7
z!Qm=@KdO+m0E!pR0Z;hb7SuCTrE@r^a5_4{!NJ5x5~&3twAdj`
zjwe@($yWQR0Z(O<1H4ahyje_@RgIn`Rv^bv6=M3A3yf1l;y;R+?7ssAg-nO*c}fSN
z4cB2XR{i>cW^){<|3~9r(QK!XQ&b%XDw`D;K!(=COYNsH6ubXzXcY*t!Py3QLyO|+
zhi8!k8B`|63U8wHTfve4bQXlI4
zvw5gYXvYLVTjOl%sT2TYX07n1PTcn)`H5*tj+rOW?=H>5oQ7Gb#c?oO5y&STjNqts9%*;$6OA-y-%(#lV&&}WZnABFs
zczK-gn=h<>VtZ;LA1giK|pQIIz7WLSNDT+m3(8v9sseViny{#tf+
zX+B~Ud#5Xe*pd63G28VeOomnUE$G$&fB6wet8A1m8?QW|()eiEUHea=(aQ4YiQGf)
z2izZX+wWeQ$aCMeEt{F4AC^4)3&{3A{wYB}+z2KgSUFlP;+7H@A3HhaWP^R-{%u-!
zxG`%>I}g`R7j?ckzSy3*OaRrc%xWF?PXu-LpO3FcH=m1>Iql^&o{Agp@9#%rj8fxU
zXb$sXYy3+W>l9lRj9+|_Y_T^J1-@?_Ogyf$Ct9W7m3=R1-le9dYiMXFuvVvajlF;W
zJ`wWhOAL)n9+>~!lk3j5#jH6OLXJJp-b(vT{gb3CQBDD5S2esHJvBewcfP^8F|EPgD@gxFLGpBVM(cfH
z)`5Kcg)anOHB#pKdO2q;5YdkxZ{~}b_ZT}5^vBK5TT?pU7hIQ$4mO-BqiAD36;ByW
zRr)9?Dk;t^|M}TD=QW>}I-<7*?EBbi@Ij0)J~!DRn&lmKHHo6Gp<(%9uzW&MzQje-
zixU`Fv}+@8*%vd(`C8tScd|;L6cGS33v=Lp`_hxL?q>K?o;a}EkkEcF)|y#hU*f#b
zI74t0Itb^CY^vGE*mWbdm+rfoo<40*g#dOJgNM)ReY_AJOnEzB^hd*6m&7qmP0c^H
zUCi(7?(Rk!8|O`yeIJD)`J}zQ-5^zRADPQ_5zfqL358b{c-Z!j3eup{l46sh0GA$x
z6)|#9$gpd~)AMM>BIcKEs;}v&7i_m$-gw(ibp_xe@te*`nfMsrtNd)$Rb2V$g2}0M
zDSkGo2jsoK>9K}lwg}9fFJ?uy0h7sw#|tMsC^jLgy7~zFK*}L!t71I1Nm0s^;w-17#h`IT1dP9^_SGJsl8#*
zKxGf|LzVJI{`dL>Z{I?V&Ry)4?*c-d7W*BWMmy~0=Jq0z$6HQ+p(ifEzGSrCp1bzp
z;+Suq{?3zbPkC8Q?lj)~{Bj}56M8}(FYhB!-d-FIvm0%AtC95V*=GG#%89}R$2i{t
ztFN}05~jCC>e=oEVR@kN$V1+^-wjwxf|})Gl_q#S`$R%njF2_FnU7aZ;8WiBV39+O
zS-J*&);2cd8c9#CG>&&2JsEhWvhHAf{YVRVkeVN%>23H2R#mB^O^*S#kG!l`0J(N!I@M9KU
zDR&3y(b3WS%W`Q$o&4e0?mqqBrFvttDvMznHji{HLp5ib`MS=AeHu5<6uc|je>9iA
z+$2J`t5nwN=;;X_Vg>gR@O3$*rG3GA{cUY_ubB^zo(Or?$P}twgp&61&DX}cCwrQf
zvqViYqtwIudj^)U$fbomf|s9Pt(v23lBmQHvM%}y7E@dMBtPU&>O|8ei6iAu3nMYAoa%(+l_SC@EnLr`p_hI2>^73i-E|ye(jDenA1L
zrMX%2?(Gw5qj5w_%S)GuJu8)8o0{v!1&jffjP! RxF4e-*2_n
zlMot1FAJc`i^!?uP3;j6)O>WtVf&I4NV;;lWvJqGFef;;q~%4+%+-Op=J}J%o^Uu8
zHRoTNFDXSdp>&oXJK132weWs$ez~RwkK~`h8XMnK)dmmH@5*v#`iu6flM7Gxw5BjN
zC>wR|kBx2b7b-AJ}1g+rdDpw)dK~y0Of!hwc65GHk8Z|Jpp8
zSs#i@|8~%=;;V3WcDD4(*W)`tb)Ee{XyC)-tjWTABA<+n?TNA?%11}3xZE-+8ENmZ
z1pDYdO4!N4pgYN4>UXld5)%_&PHT%s)O~!{o;mmQ?bF(COA95!kK1=wW<#_xE=h91rO+2B;lHOV-*)
zFq?=*>9dtb3KbO4e5v8b@{5+CQ8*+qbzEZ`k$hbwLVUbG^Y&Md=$c4y`8;gQBjQyP
z(r;kPGzN0{mO`4ZpadoezU;5-e$=-nJbYm4i%hx*FjF(nR18a>Emkw`+w?eIJ8*XeX@0TJOFmitGRj?vPUO|PAvwIu3Vqd;3)tiAMF
z<85j0BGD}m9&I`v^eMie3;>0ERL$q&->a<%cy4W$2G-_#c%u|R(P_t56yd*bLOgdX
zmA!WD8gzi3`+xx`m9B`~*4Bdej#Fy%%ZEjQ#~*vUV%DiE3|WeTkBNl)K^c3GYo&+)
zr#8{T80XJ}YryqEQHUpiNrN<|hT!TYJz?te+e42efyrK13z&3yD*!jpBEZox
zsSVx^!0&Vbl7chRbwR|TP>*hU1pqk5alE+?0Gt1U3gS@IXM0`43jTZ&kzd;2Q
z$Uwi&V?Mos;vjqSVC@qCB9I2PtJ9f0!h``dx;qHs*0i1e1H$n3*`#m?noW~f9?=CR
zA^Z^!089)$d*ngdD}ELx{YUHSjt4?1VCOiE69v}|Iy%)+t1YLOt8ST`wMKEE(rvY2
zaeWeqa1FY+>PUaqj~7I871>#!``8l(?A##66JRe1h?LthmY<
zZBqO?{+{HJjTqwTs2<%XcX#ly7utNGwD}6jjs5v>9D@~K@Af8z$V8xyNit_o%hrYde^7gHz7fGPGvNq7g0T6m{Q$JSZfG&_+7rRz6_C4Q+bJNj%lk!0o{D`Rph=`pC
z8yT8?T2o=rd{!`jycqw{RD}O*F2sbm>ASna0<7U%(pcHe;o&_0Jm^MPJuVeH!;9O!
zya9Z~q`eL;dJ4>OL!4(%gFC{6gEWHG}ja
zck0lyv&N==AT3u-4L>{5Wa=2Zgn9>`IKLS6ZSO>ye}jztwSbje32T#cPey4n04;s!
zI!}GdX;e(JGTxiOB?)Xj@CW@~o#PbID*cvdUXJT{EZ~I92V!+)-^-oX0iLmmTWIsys#&bJSz^*D?PL2fI
z4IhEUzHowJ2I;%iXWtn~7Dak6sUr$>7!LcKsSLd8>2oO$uc#bSDp{pI1+M@Bk|!+@mDem@l`}F?v`G
zhQ>ls=f%U|BUrh-_0p~$bTblc(+)X^Ohk)Zio=}*RYxSsD4&PSk(CF%uK9a6-)J)q
zI)+4T7Q1t`L3S6&K5MeCl=1A`UIWz5Cz9*eh=@eADBa2sQuUJkHe?Vtj$KqYZ2^!Cn^TAb;C?0`?@X523OW>1Gzadq}Rgrq0l!aU}a&0&o%Qn{~t(3
BfENG&
literal 0
HcmV?d00001
diff --git a/Resources/help.html b/Resources/help.html
index 8670670e..3e1d0408 100644
--- a/Resources/help.html
+++ b/Resources/help.html
@@ -210,16 +210,16 @@
It's also important that you've chosen a long master password. Short master passwords, especially 4-digit
PIN codes, are trivial to guess by attackers. Using a 10-character master password provides
sufficient entropy to protect against any modern-day attempt at brute-forcing, assuming the password is not
- based on easily determined facts (names, birth dates, etc.). A better idea yet is to use a pass phrase,
- ideally an absurd sentence. These are usually much easier to remember and much harder to guess by attackers.
- If you're really paranoid, install a keyboard of a non-latin script (russian, chinese, ...) and create a
- master password using these characters or even a mix between scripts.
- Just don't forget it! :-)
+ based on easily determined facts (names, birth dates, etc.).
+
+
+ A better idea yet is to use a pass phrase, ideally an absurd sentence . These are usually
+ much easier to remember and much harder to guess by attackers.
Using the action icon on the top right, select Settings
to find some advanced settings for
the application. Here, you can disable Remember my password
. Doing so will force the
- application to ask for your master password each time you open it. That way, when you show your
+ application to ask for your master password each time you open it. That way, when you show your
phone to somebody else after unlocking it, they can't go through your passwords.
@@ -239,7 +239,7 @@
So how does this thing work internally?
The way Master Password works internally is fully disclosed . The source code for this application
- is also available from GitHub. I invite anyone with a technical background to go through these
+ is also available from GitHub . I invite anyone with a technical background to go through these
resources to make certain of the trustworthyness of Master Password.