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
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginSdkBinding", "PluginSdkBinding\PluginSdkBinding.csproj", "{3DA3911E-36DE-465E-8F15-F1991B6437E5}"
|
||||
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}"
|
||||
EndProject
|
||||
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|Win32.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.Build.0 = 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.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Text.Method;
|
||||
using Android.Widget;
|
||||
using Android.Content.PM;
|
||||
|
||||
@ -92,6 +93,9 @@ namespace keepass2android
|
||||
{
|
||||
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) });
|
||||
|
||||
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() {
|
||||
|
@ -5,12 +5,16 @@ using System.Text;
|
||||
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.Content.PM;
|
||||
using Android.Content.Res;
|
||||
using Android.Graphics;
|
||||
using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Text;
|
||||
using Android.Text.Method;
|
||||
using Android.Text.Util;
|
||||
using Android.Views;
|
||||
using Android.Webkit;
|
||||
using Android.Widget;
|
||||
|
||||
namespace keepass2android
|
||||
@ -19,10 +23,11 @@ namespace keepass2android
|
||||
{
|
||||
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));
|
||||
String[] changeLog = {
|
||||
//ctx.GetString(Resource.String.PreviewWarning),
|
||||
List<string> changeLog = new List<string>{
|
||||
|
||||
ctx.GetString(Resource.String.ChangeLog_0_9_6),
|
||||
ctx.GetString(Resource.String.ChangeLog_0_9_5),
|
||||
ctx.GetString(Resource.String.ChangeLog_0_9_4),
|
||||
ctx.GetString(Resource.String.ChangeLog_0_9_3_r5),
|
||||
@ -41,22 +46,125 @@ namespace keepass2android
|
||||
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.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.DismissEvent += (sender, e) =>
|
||||
{
|
||||
onDismiss();
|
||||
};
|
||||
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_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
|
||||
android:id="@+id/plugin1"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/further_authors"
|
||||
android:layout_below="@id/designers"
|
||||
android:text="@string/credit_plugin1" />
|
||||
<TextView
|
||||
android:id="@+id/android_filechooser_contrib"
|
||||
|
@ -37,6 +37,7 @@
|
||||
<string name="homepage">http://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="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="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>
|
||||
|
@ -215,6 +215,7 @@
|
||||
<string name="version_history">Version history</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="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_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>
|
||||
@ -518,7 +519,23 @@
|
||||
|
||||
<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_5">
|
||||
<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">
|
||||
<b>Version 0.9.5</b>\n
|
||||
* Fixed issues with file browsing (especially on Android 4.4)\n
|
||||
* Fixed issue with loading .kdb files (Keepass 1) on Nexus 5 with Android Lollipop\n
|
||||
|
Loading…
Reference in New Issue
Block a user