added contributions

improved changelog
This commit is contained in:
Philipp Crocoll 2014-12-30 06:20:16 +01:00
parent 8816954ef6
commit db5357ce84
7 changed files with 2183 additions and 2061 deletions

View File

@ -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

View File

@ -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() {

View File

@ -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();
} }

File diff suppressed because it is too large Load Diff

View File

@ -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"

View File

@ -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>

View File

@ -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,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="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 <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
* Fixed issue with loading .kdb files (Keepass 1) on Nexus 5 with Android Lollipop\n * Fixed issue with loading .kdb files (Keepass 1) on Nexus 5 with Android Lollipop\n