Added Changelog

Added menu options for translate, rate, suggestions
Improved URL search
Changed Version to 0.6.2
This commit is contained in:
PhilippC 2013-03-23 21:19:37 +01:00
parent 1106f618eb
commit ff5f630c2e
19 changed files with 963 additions and 690 deletions

View File

@ -198,8 +198,8 @@ namespace keepass2android
} }
public PwGroup SearchForHost(String url) { public PwGroup SearchForHost(String url, bool allowSubdomains) {
PwGroup group = searchHelper.searchForHost(this, url); PwGroup group = searchHelper.searchForHost(this, url, allowSubdomains);
return group; return group;

View File

@ -511,12 +511,34 @@ namespace keepass2android
timeoutCopyToClipboard(mEntry.Strings.ReadSafe (PwDefs.UserNameField)); timeoutCopyToClipboard(mEntry.Strings.ReadSafe (PwDefs.UserNameField));
return true; return true;
*/ */
case Resource.Id.menu_rate:
try {
Util.gotoMarket(this);
} catch (ActivityNotFoundException) {
Toast.MakeText(this, Resource.String.no_url_handler, ToastLength.Long).Show();
}
return true;
case Resource.Id.menu_suggest_improvements:
try {
Util.gotoUrl(this, Resource.String.SuggestionsURL);
} catch (ActivityNotFoundException) {
Toast.MakeText(this, Resource.String.no_url_handler, ToastLength.Long).Show();
}
return true;
case Resource.Id.menu_lock: case Resource.Id.menu_lock:
App.setShutdown(); App.setShutdown();
SetResult(KeePass.EXIT_LOCK); SetResult(KeePass.EXIT_LOCK);
Finish(); Finish();
return true; return true;
case Resource.Id.menu_translate:
try {
Util.gotoUrl(this, Resource.String.TranslationURL);
} catch (ActivityNotFoundException) {
Toast.MakeText(this, Resource.String.no_url_handler, ToastLength.Long).Show();
} }
return true;
}
return base.OnOptionsItemSelected(item); return base.OnOptionsItemSelected(item);
} }

View File

@ -611,6 +611,28 @@ namespace keepass2android
case Resource.Id.menu_cancel_edit: case Resource.Id.menu_cancel_edit:
Finish(); Finish();
break; break;
case Resource.Id.menu_rate:
try {
Util.gotoMarket(this);
} catch (ActivityNotFoundException) {
Toast.MakeText(this, Resource.String.no_url_handler, ToastLength.Long).Show();
}
return true;
case Resource.Id.menu_suggest_improvements:
try {
Util.gotoUrl(this, Resource.String.SuggestionsURL);
} catch (ActivityNotFoundException) {
Toast.MakeText(this, Resource.String.no_url_handler, ToastLength.Long).Show();
}
return true;
case Resource.Id.menu_translate:
try {
Util.gotoUrl(this, Resource.String.TranslationURL);
} catch (ActivityNotFoundException) {
Toast.MakeText(this, Resource.String.no_url_handler, ToastLength.Long).Show();
}
return true;
} }

View File

@ -219,7 +219,27 @@ namespace keepass2android
case Resource.Id.menu_sort: case Resource.Id.menu_sort:
toggleSort(); toggleSort();
return true; return true;
case Resource.Id.menu_rate:
try {
Util.gotoMarket(this);
} catch (ActivityNotFoundException) {
Toast.MakeText(this, Resource.String.no_url_handler, ToastLength.Long).Show();
}
return true;
case Resource.Id.menu_suggest_improvements:
try {
Util.gotoUrl(this, Resource.String.SuggestionsURL);
} catch (ActivityNotFoundException) {
Toast.MakeText(this, Resource.String.no_url_handler, ToastLength.Long).Show();
}
return true;
case Resource.Id.menu_translate:
try {
Util.gotoUrl(this, Resource.String.TranslationURL);
} catch (ActivityNotFoundException) {
Toast.MakeText(this, Resource.String.no_url_handler, ToastLength.Long).Show();
}
return true;
} }
return base.OnOptionsItemSelected(item); return base.OnOptionsItemSelected(item);

View File

@ -24,6 +24,8 @@ using Android.Widget;
using Android.OS; using Android.OS;
using keepass2android.view; using keepass2android.view;
using Android.Preferences;
using Android.Content.PM;
namespace keepass2android namespace keepass2android
{ {
@ -54,10 +56,59 @@ namespace keepass2android
} }
protected override void OnStart() { protected override void OnStart()
{
base.OnStart(); base.OnStart();
Android.Util.Log.Debug("DEBUG", "KeePass.OnStart"); Android.Util.Log.Debug("DEBUG", "KeePass.OnStart");
ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this);
bool showChangeLog = false;
try
{
PackageInfo packageInfo = PackageManager.GetPackageInfo(PackageName, 0);
int lastInfoVersionCode = prefs.GetInt(GetString(Resource.String.LastInfoVersionCode_key), 0);
if (packageInfo.VersionCode > lastInfoVersionCode)
{
showChangeLog = true;
ISharedPreferencesEditor edit = prefs.Edit();
edit.PutInt(GetString(Resource.String.LastInfoVersionCode_key), packageInfo.VersionCode);
EditorCompat.apply(edit);
}
} catch (PackageManager.NameNotFoundException)
{
}
if (showChangeLog)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.SetTitle(GetString(Resource.String.ChangeLog_title));
builder.SetMessage(GetString(Resource.String.ChangeLog));
builder.SetPositiveButton(Android.Resource.String.Ok,new EventHandler<DialogClickEventArgs>((dlgSender, dlgEvt)=>{}));
Dialog dialog = builder.Create();
dialog.DismissEvent += (object sender, EventArgs e) =>
{
startFileSelect(); startFileSelect();
};
dialog.Show();
} else
{
startFileSelect();
}
} }
private void startFileSelect() { private void startFileSelect() {
@ -72,7 +123,7 @@ namespace keepass2android
protected override void OnDestroy() { protected override void OnDestroy() {
Android.Util.Log.Debug("DEBUG","KeePass.OnDestry"+IsFinishing.ToString()); Android.Util.Log.Debug("DEBUG","KeePass.OnDestroy"+IsFinishing.ToString());
base.OnDestroy(); base.OnDestroy();
} }

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="5" android:versionCode="6"
android:versionName="0.6.1 beta" android:versionName="0.6.2 beta"
package="keepass2android.keepass2android" android:installLocation="preferExternal"> package="keepass2android.keepass2android" android:installLocation="preferExternal">
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="14" /> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="14" />
<application android:label="keepass2android" android:icon="@drawable/ic_launcher"> <application android:label="keepass2android" android:icon="@drawable/ic_launcher">

View File

@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="5" android:versionCode="6"
android:versionName="0.6.1 beta" android:versionName="0.6.2 beta"
package="keepass2android.keepass2android_nonet"> package="keepass2android.keepass2android_nonet">
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="14" /> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="14" />
<application android:label="keepass2android" android:icon="@drawable/ic_launcher"> <application android:label="keepass2android" android:icon="@drawable/ic_launcher">
<activity android:configChanges="keyboardHidden|orientation" android:label="@string/app_name_nonet" android:theme="@style/Base" android:name="keepass2android.PasswordActivity" > <activity android:configChanges="keyboardHidden|orientation" android:label="@string/app_name_nonet" android:theme="@style/Base" android:name="keepass2android.PasswordActivity" >
<intent-filter android:label="@string/app_name"> <intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />

File diff suppressed because it is too large Load Diff

View File

@ -42,4 +42,18 @@
android:title="@string/menu_copy_pass" android:title="@string/menu_copy_pass"
android:showAsAction="ifRoom" android:showAsAction="ifRoom"
/--> /-->
<item android:id="@+id/menu_suggest_improvements"
android:icon="@android:drawable/ic_menu_directions"
android:title="@string/suggest_improvements"
android:showAsAction="never"
/>
<item android:id="@+id/menu_rate"
android:icon="@android:drawable/star_off"
android:title="@string/rate_app"
android:showAsAction="never"
/>
<item android:id="@+id/menu_translate"
android:title="@string/translate_app"
android:showAsAction="never"
/>
</menu> </menu>

View File

@ -25,4 +25,18 @@
android:title="@string/menu_donate" android:title="@string/menu_donate"
android:showAsAction="ifRoom" android:showAsAction="ifRoom"
/--> /-->
<item android:id="@+id/menu_suggest_improvements"
android:icon="@android:drawable/ic_menu_directions"
android:title="@string/suggest_improvements"
android:showAsAction="never"
/>
<item android:id="@+id/menu_rate"
android:icon="@android:drawable/star_off"
android:title="@string/rate_app"
android:showAsAction="never"
/>
<item android:id="@+id/menu_translate"
android:title="@string/translate_app"
android:showAsAction="never"
/>
</menu> </menu>

View File

@ -44,4 +44,19 @@
android:title="@string/sort_name" android:title="@string/sort_name"
android:showAsAction="never" android:showAsAction="never"
/> />
<item android:id="@+id/menu_suggest_improvements"
android:icon="@android:drawable/ic_menu_directions"
android:title="@string/suggest_improvements"
android:showAsAction="never"
/>
<item android:id="@+id/menu_rate"
android:icon="@android:drawable/star_off"
android:title="@string/rate_app"
android:showAsAction="never"
/>
<item android:id="@+id/menu_translate"
android:title="@string/translate_app"
android:showAsAction="never"
/>
</menu> </menu>

View File

@ -40,4 +40,15 @@
android:icon="@android:drawable/ic_lock_lock" android:icon="@android:drawable/ic_lock_lock"
android:title="@string/menu_lock" android:title="@string/menu_lock"
/> />
<item android:id="@+id/menu_suggest_improvements"
android:icon="@android:drawable/ic_menu_directions"
android:title="@string/suggest_improvements"
/>
<item android:id="@+id/menu_rate"
android:icon="@android:drawable/star_off"
android:title="@string/rate_app"
/>
<item android:id="@+id/menu_translate"
android:title="@string/translate_app"
/>
</menu> </menu>

View File

@ -28,5 +28,16 @@
android:icon="@android:drawable/ic_menu_share" android:icon="@android:drawable/ic_menu_share"
android:title="@string/menu_donate" android:title="@string/menu_donate"
/--> /-->
<item android:id="@+id/menu_suggest_improvements"
android:icon="@android:drawable/ic_menu_directions"
android:title="@string/suggest_improvements"
/>
<item android:id="@+id/menu_rate"
android:icon="@android:drawable/star_off"
android:title="@string/rate_app"
/>
<item android:id="@+id/menu_translate"
android:title="@string/translate_app"
/>
</menu> </menu>

View File

@ -40,4 +40,16 @@
android:icon="@android:drawable/ic_menu_sort_by_size" android:icon="@android:drawable/ic_menu_sort_by_size"
android:title="@string/sort_name" android:title="@string/sort_name"
/> />
<item android:id="@+id/menu_suggest_improvements"
android:icon="@android:drawable/ic_menu_directions"
android:title="@string/suggest_improvements"
/>
<item android:id="@+id/menu_rate"
android:icon="@android:drawable/star_off"
android:title="@string/rate_app"
/>
<item android:id="@+id/menu_translate"
android:title="@string/translate_app"
/>
</menu> </menu>

View File

@ -18,6 +18,7 @@
along with Keepass2Android. If not, see <http://www.gnu.org/licenses/>. along with Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
--> -->
<resources> <resources>
<string name="library_name"></string>
<string name="default_file_path">/keepass/keepass.kdbx</string> <string name="default_file_path">/keepass/keepass.kdbx</string>
<string name="donate_url"><![CDATA[https://www.paypal.com/TODO]]></string> <string name="donate_url"><![CDATA[https://www.paypal.com/TODO]]></string>
<string name="homepage">http://keepass2android.codeplex.com</string> <string name="homepage">http://keepass2android.codeplex.com</string>
@ -53,9 +54,13 @@
<string name="QuickUnlockLength_key">QuickUnlockLength</string> <string name="QuickUnlockLength_key">QuickUnlockLength</string>
<string name="QuickUnlockLength_default">3</string> <string name="QuickUnlockLength_default">3</string>
<string name="UsageCount_key"></string> <string name="UsageCount_key">UsageCount</string>
<string name="LastInfoVersionCode_key">LastInfoVersion</string>
<string name="UseFileTransactions_key">UseFileTransactions</string> <string name="UseFileTransactions_key">UseFileTransactions</string>
<string name="MarketURL">market://details?id=</string>
<string name="SuggestionsURL">https://keepass2android.codeplex.com/workitem/list/basic</string>
<string name="TranslationURL">http://crowdin.net/project/keepass2android</string>
<string name="clipboard_timeout_default">300000</string> <string name="clipboard_timeout_default">300000</string>
<string-array name="clipboard_timeout_values"> <string-array name="clipboard_timeout_values">

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net--> <!--Generated by crowdin.net-->
<resources> <resources>
<string name="library_name"></string>
<string name="about_feedback">Feedback</string> <string name="about_feedback">Feedback</string>
<string name="about_homepage">Homepage</string> <string name="about_homepage">Homepage</string>
<string name="AboutText">Keepass2Android is a password manager providing read/write access to KeePass 2.x databases on Android.</string> <string name="AboutText">Keepass2Android is a password manager providing read/write access to KeePass 2.x databases on Android.</string>
@ -217,6 +216,24 @@
<string name="AskReloadFile">The file which is currently open was changed by another program. Do you want to reload it?</string> <string name="AskReloadFile">The file which is currently open was changed by another program. Do you want to reload it?</string>
<string name="AskDiscardChanges">Do you really want to discard the changes made? (The Save button is at the top of the form.)</string> <string name="AskDiscardChanges">Do you really want to discard the changes made? (The Save button is at the top of the form.)</string>
<string name="AskDiscardChanges_title">Discard changes?</string> <string name="AskDiscardChanges_title">Discard changes?</string>
<string name="suggest_improvements">Suggest or vote for improvements</string>
<string name="rate_app">Rate this app</string>
<string name="translate_app">Translate KP2A</string>
<string name="ChangeLog_title">Change log</string>
<string name="ChangeLog"><b>Version 0.6.2</b>\n
* Google Drive/Dropbox/... integration: Use the official Google Drive or Dropbox App and open any .kdbx-file. This will now bring up KP2A.\n
* Improved Search Dialog \n
* Improved search results for Share URL with subdomains\n
* Added options to give feedback, and rate and translate the app in the menu\n
\n
<b>Version 0.6.1</b>\n
* Detect when database changes in the background (i.e. due to activity of a sync app)\n
* Improved searching for URLs from the browser\n
* Confirm dialog when discarding changes\n
\n
<b>Version 0.6</b>\n
Initial public release
</string>
<string-array name="clipboard_timeout_options"> <string-array name="clipboard_timeout_options">
<item>30 seconds</item> <item>30 seconds</item>
<item>1 minute</item> <item>1 minute</item>

View File

@ -95,6 +95,7 @@ namespace keepass2android
private void query(String url) private void query(String url)
{ {
//first: search for exact url
try try
{ {
mGroup = mDb.SearchForExactUrl(url); mGroup = mDb.SearchForExactUrl(url);
@ -104,11 +105,25 @@ namespace keepass2android
Finish(); Finish();
return; return;
} }
//if no results, search for host (e.g. "accounts.google.com")
if (mGroup.Entries.Count() == 0) if (mGroup.Entries.Count() == 0)
{ {
try try
{ {
mGroup = mDb.SearchForHost(url); mGroup = mDb.SearchForHost(url, false);
} catch (Exception e)
{
Toast.MakeText(this, e.Message, ToastLength.Long).Show();
Finish();
return;
}
}
//if still no results, search for host, allowing subdomains ("www.google.com" in entry is ok for "accounts.google.com" in search (but not the other way around)
if (mGroup.Entries.Count() == 0)
{
try
{
mGroup = mDb.SearchForHost(url, true);
} catch (Exception e) } catch (Exception e)
{ {
Toast.MakeText(this, e.Message, ToastLength.Long).Show(); Toast.MakeText(this, e.Message, ToastLength.Long).Show();

View File

@ -26,6 +26,7 @@ using Android.OS;
using Android.Runtime; using Android.Runtime;
using Android.Views; using Android.Views;
using Android.Widget; using Android.Widget;
using Android.Content.PM;
namespace keepass2android namespace keepass2android
{ {
@ -52,6 +53,11 @@ namespace keepass2android
gotoUrl(context, context.GetString(resId)); gotoUrl(context, context.GetString(resId));
} }
public static void gotoMarket(Context context)
{
gotoUrl(context, context.GetString(Resource.String.MarketURL)+context.PackageName);
}
public static String getEditText(Activity act, int resId) { public static String getEditText(Activity act, int resId) {
TextView te = (TextView) act.FindViewById(resId); TextView te = (TextView) act.FindViewById(resId);
System.Diagnostics.Debug.Assert(te != null); System.Diagnostics.Debug.Assert(te != null);

View File

@ -31,6 +31,7 @@ using System.Text.RegularExpressions;
using KeePassLib.Collections; using KeePassLib.Collections;
using KeePassLib.Interfaces; using KeePassLib.Interfaces;
using KeePassLib.Utility; using KeePassLib.Utility;
using Android.Util;
namespace keepass2android namespace keepass2android
{ {
@ -105,7 +106,7 @@ namespace keepass2android
return UrlUtil.GetHost(url.Trim()); return UrlUtil.GetHost(url.Trim());
} }
public PwGroup searchForHost(Database database, String url) public PwGroup searchForHost(Database database, String url, bool allowSubdomains)
{ {
String host = extractHost(url); String host = extractHost(url);
string strGroupName = mCtx.GetString(Resource.String.search_results) + " (\"" + host + "\")"; string strGroupName = mCtx.GetString(Resource.String.search_results) + " (\"" + host + "\")";
@ -116,6 +117,8 @@ namespace keepass2android
foreach (PwEntry entry in database.entries.Values) foreach (PwEntry entry in database.entries.Values)
{ {
String otherHost = extractHost(entry.Strings.ReadSafe(PwDefs.UrlField)); String otherHost = extractHost(entry.Strings.ReadSafe(PwDefs.UrlField));
if ((allowSubdomains) && (otherHost.StartsWith("www.")))
otherHost = otherHost.Substring(4); //remove "www."
if (String.IsNullOrWhiteSpace(otherHost)) if (String.IsNullOrWhiteSpace(otherHost))
{ {
continue; continue;