mirror of
https://github.com/moparisthebest/keepass2android
synced 2024-11-22 09:12:17 -05:00
added contributions
improved changelog
This commit is contained in:
parent
8816954ef6
commit
db5357ce84
@ -25,8 +25,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArtTestApp", "ArtTestApp\Ar
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginSdkBinding", "PluginSdkBinding\PluginSdkBinding.csproj", "{3DA3911E-36DE-465E-8F15-F1991B6437E5}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginSdkBinding", "PluginSdkBinding\PluginSdkBinding.csproj", "{3DA3911E-36DE-465E-8F15-F1991B6437E5}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginHostTest", "PluginHostTest\PluginHostTest.csproj", "{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MasterKee", "MasterKee", "{CAC7DBC4-E21F-41E1-B33A-E3A04585F6A3}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MasterKee", "MasterKee", "{CAC7DBC4-E21F-41E1-B33A-E3A04585F6A3}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MasterPassword", "MasterPassword\MasterPassword.csproj", "{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MasterPassword", "MasterPassword\MasterPassword.csproj", "{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}"
|
||||||
@ -296,30 +294,6 @@ Global
|
|||||||
{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
|
{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
|
||||||
{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
|
{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
|
||||||
{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
|
{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Debug|Win32.ActiveCfg = Debug|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Release|Mixed Platforms.Deploy.0 = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Release|Win32.ActiveCfg = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Release|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.ReleaseNoNet|Any CPU.Deploy.0 = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.ReleaseNoNet|Mixed Platforms.Deploy.0 = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
|
|
||||||
{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
|
@ -20,6 +20,7 @@ using Android.App;
|
|||||||
using Android.Content;
|
using Android.Content;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
|
using Android.Text.Method;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
using Android.Content.PM;
|
using Android.Content.PM;
|
||||||
|
|
||||||
@ -92,6 +93,9 @@ namespace keepass2android
|
|||||||
{
|
{
|
||||||
TextView tv = (TextView)FindViewById(Resource.Id.further_authors);
|
TextView tv = (TextView)FindViewById(Resource.Id.further_authors);
|
||||||
tv.Text = Context.GetString(Resource.String.further_authors, new Java.Lang.Object[] { Context.GetString(Resource.String.further_author_names) });
|
tv.Text = Context.GetString(Resource.String.further_authors, new Java.Lang.Object[] { Context.GetString(Resource.String.further_author_names) });
|
||||||
|
|
||||||
|
TextView tvdesigners = (TextView)FindViewById(Resource.Id.designers);
|
||||||
|
tvdesigners.Text = Context.GetString(Resource.String.designers, new Java.Lang.Object[] { Context.GetString(Resource.String.designer_names) });
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetVersion() {
|
private void SetVersion() {
|
||||||
|
@ -5,12 +5,16 @@ using System.Text;
|
|||||||
|
|
||||||
using Android.App;
|
using Android.App;
|
||||||
using Android.Content;
|
using Android.Content;
|
||||||
|
using Android.Content.PM;
|
||||||
using Android.Content.Res;
|
using Android.Content.Res;
|
||||||
|
using Android.Graphics;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Text;
|
using Android.Text;
|
||||||
using Android.Text.Method;
|
using Android.Text.Method;
|
||||||
|
using Android.Text.Util;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
|
using Android.Webkit;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
|
|
||||||
namespace keepass2android
|
namespace keepass2android
|
||||||
@ -19,10 +23,11 @@ namespace keepass2android
|
|||||||
{
|
{
|
||||||
public static void ShowChangeLog(Context ctx, Action onDismiss)
|
public static void ShowChangeLog(Context ctx, Action onDismiss)
|
||||||
{
|
{
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
|
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(ctx, Android.Resource.Style.ThemeHoloLightDialog));
|
||||||
builder.SetTitle(ctx.GetString(Resource.String.ChangeLog_title));
|
builder.SetTitle(ctx.GetString(Resource.String.ChangeLog_title));
|
||||||
String[] changeLog = {
|
List<string> changeLog = new List<string>{
|
||||||
//ctx.GetString(Resource.String.PreviewWarning),
|
|
||||||
|
ctx.GetString(Resource.String.ChangeLog_0_9_6),
|
||||||
ctx.GetString(Resource.String.ChangeLog_0_9_5),
|
ctx.GetString(Resource.String.ChangeLog_0_9_5),
|
||||||
ctx.GetString(Resource.String.ChangeLog_0_9_4),
|
ctx.GetString(Resource.String.ChangeLog_0_9_4),
|
||||||
ctx.GetString(Resource.String.ChangeLog_0_9_3_r5),
|
ctx.GetString(Resource.String.ChangeLog_0_9_3_r5),
|
||||||
@ -41,22 +46,125 @@ namespace keepass2android
|
|||||||
ctx.GetString(Resource.String.ChangeLog)
|
ctx.GetString(Resource.String.ChangeLog)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
String version;
|
||||||
|
try {
|
||||||
|
PackageInfo packageInfo = ctx.PackageManager.GetPackageInfo(ctx.PackageName, 0);
|
||||||
|
version = packageInfo.VersionName;
|
||||||
|
|
||||||
|
} catch (PackageManager.NameNotFoundException) {
|
||||||
|
version = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
string warning = "";
|
||||||
|
if (version.Contains("pre"))
|
||||||
|
{
|
||||||
|
warning = ctx.GetString(Resource.String.PreviewWarning);
|
||||||
|
}
|
||||||
|
|
||||||
builder.SetPositiveButton(Android.Resource.String.Ok, (dlgSender, dlgEvt) => {((AlertDialog)dlgSender).Dismiss(); });
|
builder.SetPositiveButton(Android.Resource.String.Ok, (dlgSender, dlgEvt) => {((AlertDialog)dlgSender).Dismiss(); });
|
||||||
builder.SetCancelable(false);
|
builder.SetCancelable(false);
|
||||||
|
|
||||||
builder.SetMessage("temp");
|
WebView wv = new WebView(ctx);
|
||||||
|
|
||||||
|
wv.SetBackgroundColor(Color.White);
|
||||||
|
wv.LoadDataWithBaseURL(null, GetLog(changeLog, warning), "text/html", "UTF-8", null);
|
||||||
|
|
||||||
|
|
||||||
|
//builder.SetMessage("");
|
||||||
|
builder.SetView(wv);
|
||||||
Dialog dialog = builder.Create();
|
Dialog dialog = builder.Create();
|
||||||
dialog.DismissEvent += (sender, e) =>
|
dialog.DismissEvent += (sender, e) =>
|
||||||
{
|
{
|
||||||
onDismiss();
|
onDismiss();
|
||||||
};
|
};
|
||||||
dialog.Show();
|
dialog.Show();
|
||||||
TextView message = (TextView)dialog.FindViewById(Android.Resource.Id.Message);
|
/*TextView message = (TextView)dialog.FindViewById(Android.Resource.Id.Message);
|
||||||
|
|
||||||
message.MovementMethod = LinkMovementMethod.Instance;
|
|
||||||
message.TextFormatted = Html.FromHtml(ConcatChangeLog(ctx, changeLog));
|
|
||||||
message.LinksClickable = true;
|
|
||||||
|
|
||||||
|
message.TextFormatted = Html.FromHtml(ConcatChangeLog(ctx, changeLog.ToArray()));
|
||||||
|
message.AutoLinkMask=MatchOptions.WebUrls;*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private const string HtmlStart = @"<html>
|
||||||
|
<head>
|
||||||
|
<style type='text/css'>
|
||||||
|
a { color:#000000 }
|
||||||
|
div.title {
|
||||||
|
color:287AA9;
|
||||||
|
font-size:1.2em;
|
||||||
|
font-weight:bold;
|
||||||
|
margin-top:1em;
|
||||||
|
margin-bottom:0.5em;
|
||||||
|
text-align:center }
|
||||||
|
div.subtitle {
|
||||||
|
color:287AA9;
|
||||||
|
font-size:0.8em;
|
||||||
|
margin-bottom:1em;
|
||||||
|
text-align:center }
|
||||||
|
div.freetext { color:#000000 }
|
||||||
|
div.list { color:#000000 }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>";
|
||||||
|
private const string HtmlEnd = @"</body>
|
||||||
|
</html>";
|
||||||
|
private static string GetLog(List<string> changeLog, string warning)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder(HtmlStart);
|
||||||
|
if (!string.IsNullOrEmpty(warning))
|
||||||
|
{
|
||||||
|
sb.Append(warning);
|
||||||
|
}
|
||||||
|
bool inList = false;
|
||||||
|
foreach (string versionLog in changeLog)
|
||||||
|
{
|
||||||
|
bool title = true;
|
||||||
|
foreach (string line in versionLog.Split('\n'))
|
||||||
|
{
|
||||||
|
string w = line.Trim();
|
||||||
|
if (title)
|
||||||
|
{
|
||||||
|
if (inList)
|
||||||
|
{
|
||||||
|
sb.Append("</ul></div>\n");
|
||||||
|
inList = false;
|
||||||
|
}
|
||||||
|
w = w.Replace("<b>","");
|
||||||
|
w = w.Replace("</b>", "");
|
||||||
|
w = w.Replace("\\n", "");
|
||||||
|
sb.Append("<div class='title'>"
|
||||||
|
+ w.Trim() + "</div>\n");
|
||||||
|
title = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
w = w.Replace("\\n", "<br />");
|
||||||
|
if (w.StartsWith("*"))
|
||||||
|
{
|
||||||
|
if (!inList)
|
||||||
|
{
|
||||||
|
sb.Append("<div class='list'><ul>\n");
|
||||||
|
inList = true;
|
||||||
|
}
|
||||||
|
sb.Append("<li>");
|
||||||
|
sb.Append(w.Substring(1).Trim());
|
||||||
|
sb.Append("</li>\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (inList)
|
||||||
|
{
|
||||||
|
sb.Append("</ul></div>\n");
|
||||||
|
inList = false;
|
||||||
|
}
|
||||||
|
sb.Append(w);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sb.Append(HtmlEnd);
|
||||||
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
4060
src/keepass2android/Resources/Resource.designer.cs
generated
4060
src/keepass2android/Resources/Resource.designer.cs
generated
File diff suppressed because it is too large
Load Diff
@ -137,12 +137,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/author"
|
android:layout_below="@id/author"
|
||||||
/>
|
/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/designers"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@id/further_authors"
|
||||||
|
android:autoLink="web"
|
||||||
|
/>
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/plugin1"
|
android:id="@+id/plugin1"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/further_authors"
|
android:layout_below="@id/designers"
|
||||||
android:text="@string/credit_plugin1" />
|
android:text="@string/credit_plugin1" />
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/android_filechooser_contrib"
|
android:id="@+id/android_filechooser_contrib"
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
<string name="homepage">http://keepass2android.codeplex.com</string>
|
<string name="homepage">http://keepass2android.codeplex.com</string>
|
||||||
<string name="homepage_short">keepass2android.codeplex.com</string>
|
<string name="homepage_short">keepass2android.codeplex.com</string>
|
||||||
<string name="further_author_names">Alex Vallat, Ben Rush, Matthieu, Wiktor Ławski</string>
|
<string name="further_author_names">Alex Vallat, Ben Rush, Matthieu, Wiktor Ławski</string>
|
||||||
|
<string name="designer_names">Niki Hüttner (http://www.close-cut.de), Stefano Pignataro (http://www.spstudio.at)</string>
|
||||||
<string name="issues">http://keepass2android.codeplex.com</string>
|
<string name="issues">http://keepass2android.codeplex.com</string>
|
||||||
<string name="oi_filemanager_market">market://details?id=org.openintents.filemanager</string>
|
<string name="oi_filemanager_market">market://details?id=org.openintents.filemanager</string>
|
||||||
<string name="oi_filemanager_web">https://openintents.googlecode.com/files/FileManager-2.0.2.apk</string>
|
<string name="oi_filemanager_web">https://openintents.googlecode.com/files/FileManager-2.0.2.apk</string>
|
||||||
|
@ -215,6 +215,7 @@
|
|||||||
<string name="version_history">Version history</string>
|
<string name="version_history">Version history</string>
|
||||||
<string name="author">Keepass2Android is developed by Philipp Crocoll.</string>
|
<string name="author">Keepass2Android is developed by Philipp Crocoll.</string>
|
||||||
<string name="further_authors">Thanks to code contributions by %1$s.</string>
|
<string name="further_authors">Thanks to code contributions by %1$s.</string>
|
||||||
|
<string name="designers">Thanks to icon and layout design contributions by %1$s.</string>
|
||||||
<string name="credit_plugin1">The Twofish Cipher Plugin for Keepass was developed by Scott Greenberg and is included in KP2A.</string>
|
<string name="credit_plugin1">The Twofish Cipher Plugin for Keepass was developed by Scott Greenberg and is included in KP2A.</string>
|
||||||
<string name="credit_android_filechooser">android-filechooser was developed by Hai Bison</string>
|
<string name="credit_android_filechooser">android-filechooser was developed by Hai Bison</string>
|
||||||
<string name="credit_keyboard">The KP2A keyboard is based on the Gingerbread keyboard by the Android Open Source Project and uses the Plugin Manager code from Hacker\'s Keyboard by Klaus Weidner.</string>
|
<string name="credit_keyboard">The KP2A keyboard is based on the Gingerbread keyboard by the Android Open Source Project and uses the Plugin Manager code from Hacker\'s Keyboard by Klaus Weidner.</string>
|
||||||
@ -518,6 +519,22 @@
|
|||||||
|
|
||||||
<string name="PreviewWarning">Please note! This is a preview release and might come with some flaws! If you experience *anything* unexpected, please let me know (on Codeplex or by email).</string>
|
<string name="PreviewWarning">Please note! This is a preview release and might come with some flaws! If you experience *anything* unexpected, please let me know (on Codeplex or by email).</string>
|
||||||
|
|
||||||
|
<string name="ChangeLog_0_9_6">
|
||||||
|
Version 0.9.6\n
|
||||||
|
* allow to import key file and/or local database file to app internal directory (see settings)\n
|
||||||
|
* allow different sorting options\n
|
||||||
|
* improved preferences for automatic keyboard switching\n
|
||||||
|
* updated application logo and notification design, design by Stefano Pignataro (http://www.spstudio.at)\n
|
||||||
|
* password generator remembers last settings\n
|
||||||
|
* set notification visibility for Android 5 lock screen\n
|
||||||
|
* now clearing master password field when leaving the app without clicking OK\n
|
||||||
|
* fixed issue with missing input languages in keyboard setting on some devices\n
|
||||||
|
* fixed issue with automatic keyboard switching on rooted devices\n
|
||||||
|
* added check for corrupt databases (duplicate UUIDs)\n
|
||||||
|
* automatically reload database when change detected, solves security concern about revealing master password\n
|
||||||
|
* improved polish small keyboard layout, fixed keyboard settings theme (thanks to Wiktor Ławski)\n
|
||||||
|
</string>
|
||||||
|
|
||||||
<string name="ChangeLog_0_9_5">
|
<string name="ChangeLog_0_9_5">
|
||||||
<b>Version 0.9.5</b>\n
|
<b>Version 0.9.5</b>\n
|
||||||
* Fixed issues with file browsing (especially on Android 4.4)\n
|
* Fixed issues with file browsing (especially on Android 4.4)\n
|
||||||
|
Loading…
Reference in New Issue
Block a user