mirror of
https://github.com/moparisthebest/keepass2android
synced 2024-11-16 06:25:05 -05:00
* show toast for cache messages in the center of the screen to avoid hiding the keyboard when entering passwords
* Bug fix with FTP access * Bug fix with Group editing/adding * Integrated Input Language Selection for keyboard -> 0.9.3-r3
This commit is contained in:
parent
ccde65d233
commit
736bbd5ec3
@ -20,7 +20,7 @@
|
|||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>False</Optimize>
|
<Optimize>False</Optimize>
|
||||||
<OutputPath>bin\Debug</OutputPath>
|
<OutputPath>bin\Debug</OutputPath>
|
||||||
<DefineConstants>DEBUG;INCLUDE_TWOFISH;EXCLUDE_KEYBOARD;EXCLUDE_FILECHOOSER;INCLUDE_JAVAFILESTORAGE;INCLUDE_KEYTRANSFORM</DefineConstants>
|
<DefineConstants>DEBUG;EXCLUDE_TWOFISH;INCLUDE_KEYBOARD;EXCLUDE_FILECHOOSER;INCLUDE_JAVAFILESTORAGE;EXCLUDE_KEYTRANSFORM</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<ConsolePause>False</ConsolePause>
|
<ConsolePause>False</ConsolePause>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// Dieser Code wurde von einem Tool generiert.
|
// Dieser Code wurde von einem Tool generiert.
|
||||||
// Laufzeitversion:4.0.30319.34003
|
// Laufzeitversion:4.0.30319.34011
|
||||||
//
|
//
|
||||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||||
// der Code erneut generiert wird.
|
// der Code erneut generiert wird.
|
||||||
|
@ -362,22 +362,56 @@ namespace KeePassLib.Serialization
|
|||||||
public override void Close()
|
public override void Close()
|
||||||
{
|
{
|
||||||
base.Close();
|
base.Close();
|
||||||
RepeatWithDigestOnFail(ioc, req =>
|
|
||||||
|
WebRequest testReq = WebRequest.Create(ioc.Path);
|
||||||
|
if (testReq is HttpWebRequest)
|
||||||
{
|
{
|
||||||
req.Headers.Add("Translate: f");
|
RepeatWithDigestOnFail(ioc, req =>
|
||||||
|
|
||||||
if (method != null)
|
|
||||||
req.Method = method;
|
|
||||||
var data = this.ToArray();
|
|
||||||
|
|
||||||
using (Stream s = req.GetRequestStream())
|
|
||||||
{
|
{
|
||||||
s.Write(data, 0, data.Length);
|
req.Headers.Add("Translate: f");
|
||||||
req.GetResponse();
|
|
||||||
s.Close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
if (method != null)
|
||||||
|
req.Method = method;
|
||||||
|
var data = this.ToArray();
|
||||||
|
|
||||||
|
using (Stream s = req.GetRequestStream())
|
||||||
|
{
|
||||||
|
s.Write(data, 0, data.Length);
|
||||||
|
req.GetResponse();
|
||||||
|
s.Close();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
uploadData(IOConnection.CreateWebClient(ioc, false));
|
||||||
|
}
|
||||||
|
catch (WebException ex)
|
||||||
|
{
|
||||||
|
//todo: does this make sense for FTP at all? Remove?
|
||||||
|
if ((ex.Response is HttpWebResponse) && (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.Unauthorized))
|
||||||
|
uploadData(IOConnection.CreateWebClient(ioc, true));
|
||||||
|
else
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void uploadData(WebClient webClient)
|
||||||
|
{
|
||||||
|
if (method != null)
|
||||||
|
{
|
||||||
|
webClient.UploadData(destinationFilePath, method, this.ToArray());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
webClient.UploadData(destinationFilePath, this.ToArray());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
<DefineConstants>TRACE;DEBUG;INCLUDE_TWOFISH;EXCLUDE_KEYBOARD;EXCLUDE_FILECHOOSER;INCLUDE_JAVAFILESTORAGE;INCLUDE_KEYTRANSFORM</DefineConstants>
|
<DefineConstants>TRACE;DEBUG;EXCLUDE_TWOFISH;INCLUDE_KEYBOARD;EXCLUDE_FILECHOOSER;INCLUDE_JAVAFILESTORAGE;EXCLUDE_KEYTRANSFORM</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
@ -18,15 +18,15 @@ namespace Kp2aUnitTests
|
|||||||
{
|
{
|
||||||
TestRunner runner = new TestRunner();
|
TestRunner runner = new TestRunner();
|
||||||
// Run all tests from this assembly
|
// Run all tests from this assembly
|
||||||
//runner.AddTests(Assembly.GetExecutingAssembly());
|
runner.AddTests(Assembly.GetExecutingAssembly());
|
||||||
//runner.AddTests(new List<Type> { typeof(TestSynchronizeCachedDatabase)});
|
//runner.AddTests(new List<Type> { typeof(TestSynchronizeCachedDatabase)});
|
||||||
//runner.AddTests(typeof(TestLoadDb).GetMethod("LoadErrorWithCertificateTrustFailure"));
|
//runner.AddTests(typeof(TestLoadDb).GetMethod("LoadErrorWithCertificateTrustFailure"));
|
||||||
//runner.AddTests(typeof(TestLoadDb).GetMethod("LoadWithAcceptedCertificateTrustFailure"));
|
//runner.AddTests(typeof(TestLoadDb).GetMethod("LoadWithAcceptedCertificateTrustFailure"));
|
||||||
|
|
||||||
runner.AddTests(new List<Type> { typeof(TestLoadDb) });
|
//runner.AddTests(new List<Type> { typeof(TestLoadDb) });
|
||||||
//runner.AddTests(new List<Type> { typeof(TestCachingFileStorage) });
|
//runner.AddTests(new List<Type> { typeof(TestCachingFileStorage) });
|
||||||
//runner.AddTests(typeof(TestLoadDb).GetMethod("TestLoadKdb1"));
|
//runner.AddTests(typeof(TestLoadDb).GetMethod("TestLoadKdb1"));
|
||||||
//runner.AddTests(typeof(TestLoadDb).GetMethod("TestLoadWithKeyfileOnly"));
|
//runner.AddTests(typeof(TestLoadDb).GetMethod("LoadAndSaveFromRemote1And1Ftp"));
|
||||||
//runner.AddTests(typeof(TestLoadDb).GetMethod("TestLoadKdbpWithPasswordOnly"));
|
//runner.AddTests(typeof(TestLoadDb).GetMethod("TestLoadKdbpWithPasswordOnly"));
|
||||||
//runner.AddTests(typeof(TestSaveDb).GetMethod("TestLoadKdbxAndSaveKdbp_TestIdenticalFiles"));
|
//runner.AddTests(typeof(TestSaveDb).GetMethod("TestLoadKdbxAndSaveKdbp_TestIdenticalFiles"));
|
||||||
return runner;
|
return runner;
|
||||||
|
2
src/Kp2aUnitTests/Resources/Resource.Designer.cs
generated
2
src/Kp2aUnitTests/Resources/Resource.Designer.cs
generated
@ -2,7 +2,7 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// Dieser Code wurde von einem Tool generiert.
|
// Dieser Code wurde von einem Tool generiert.
|
||||||
// Laufzeitversion:4.0.30319.34003
|
// Laufzeitversion:4.0.30319.34011
|
||||||
//
|
//
|
||||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||||
// der Code erneut generiert wird.
|
// der Code erneut generiert wird.
|
||||||
|
@ -200,6 +200,32 @@ namespace Kp2aUnitTests
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void LoadAndSaveFromRemote1And1Ftp()
|
||||||
|
{
|
||||||
|
var ioc = RemoteIoc1and1Ftp; //note: this property is defined in "TestLoadDbCredentials.cs" which is deliberately excluded from Git because the credentials are not public!
|
||||||
|
var app = new TestKp2aApp();
|
||||||
|
app.CreateNewDatabase();
|
||||||
|
|
||||||
|
bool loadSuccesful = false;
|
||||||
|
LoadDb task = new LoadDb(app, ioc, null, CreateKey("test"), null, new ActionOnFinish((success, message) =>
|
||||||
|
{
|
||||||
|
if (!success)
|
||||||
|
Android.Util.Log.Debug("KP2ATest", "error loading db: " + message);
|
||||||
|
loadSuccesful = success;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
ProgressTask pt = new ProgressTask(app, Application.Context, task);
|
||||||
|
Android.Util.Log.Debug("KP2ATest", "Running ProgressTask");
|
||||||
|
pt.Run();
|
||||||
|
pt.JoinWorkerThread();
|
||||||
|
Android.Util.Log.Debug("KP2ATest", "PT.run finished");
|
||||||
|
Assert.IsTrue(loadSuccesful, "didn't succesfully load database :-(");
|
||||||
|
|
||||||
|
Assert.IsTrue(TrySaveDatabase(app), "didn't successfully save database.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void LoadFromRemote1And1NonExisting()
|
public void LoadFromRemote1And1NonExisting()
|
||||||
|
@ -54,6 +54,13 @@
|
|||||||
android:defaultValue="true"
|
android:defaultValue="true"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<PreferenceScreen
|
||||||
|
android:title="@string/language_selection_title"
|
||||||
|
android:summary="@string/language_selection_summary">
|
||||||
|
<intent
|
||||||
|
android:action="keepass2android.softkeyboard.INPUT_LANGUAGE_SELECTION"/>
|
||||||
|
</PreferenceScreen>
|
||||||
|
|
||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:title="@string/kp2a_prefs"
|
android:title="@string/kp2a_prefs"
|
||||||
|
@ -112,24 +112,20 @@ public class InputLanguageSelection extends PreferenceActivity {
|
|||||||
conf.locale = locale;
|
conf.locale = locale;
|
||||||
res.updateConfiguration(conf, res.getDisplayMetrics());
|
res.updateConfiguration(conf, res.getDisplayMetrics());
|
||||||
|
|
||||||
int[] dictionaries = KP2AKeyboard.getDictionary(res, ctx);
|
//somewhat a hack. But simply querying the dictionary will always return an English
|
||||||
BinaryDictionary bd = new BinaryDictionary(this, dictionaries, Suggest.DIC_MAIN);
|
//dictionary in KP2A so if we get a dict, we wouldn't know if it's language specific
|
||||||
|
if (locale.getLanguage().equals("en"))
|
||||||
// Is the dictionary larger than a placeholder? Arbitrarily chose a lower limit of
|
{
|
||||||
// 4000-5000 words, whereas the LARGE_DICTIONARY is about 20000+ words.
|
haveDictionary = true;
|
||||||
if (bd.getSize() > Suggest.LARGE_DICTIONARY_THRESHOLD / 4) {
|
|
||||||
haveDictionary = true;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BinaryDictionary plug = PluginManager.getDictionary(getApplicationContext(), locale.getLanguage());
|
BinaryDictionary plug = PluginManager.getDictionary(getApplicationContext(), locale.getLanguage());
|
||||||
if (plug != null) {
|
if (plug != null) {
|
||||||
bd.close();
|
plug.close();
|
||||||
bd = plug;
|
haveDictionary = true;
|
||||||
haveDictionary = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bd.close();
|
|
||||||
conf.locale = saveLocale;
|
conf.locale = saveLocale;
|
||||||
res.updateConfiguration(conf, res.getDisplayMetrics());
|
res.updateConfiguration(conf, res.getDisplayMetrics());
|
||||||
return haveDictionary;
|
return haveDictionary;
|
||||||
|
@ -145,7 +145,8 @@ namespace keepass2android
|
|||||||
protected override void OnResume()
|
protected override void OnResume()
|
||||||
{
|
{
|
||||||
base.OnResume();
|
base.OnResume();
|
||||||
_design.ReapplyTheme();
|
//DON'T: _design.ReapplyTheme();
|
||||||
|
// (This causes endless loop creating/recreating. More correct: ReapplyDialogTheme (which doesn't exist) Not required anyways...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="36" android:versionName="0.9.3-pre3" package="keepass2android.keepass2android" android:installLocation="auto">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="39" android:versionName="0.9.3-release-3" package="keepass2android.keepass2android" android:installLocation="auto">
|
||||||
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
|
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
|
||||||
<permission android:description="@string/permission_desc" android:icon="@drawable/ic_launcher" android:label="KP2A internal file browsing" android:name="keepass2android.keepass2android.permission.KP2aInternalFileBrowsing" android:protectionLevel="signature" />
|
<permission android:description="@string/permission_desc" android:icon="@drawable/ic_launcher" android:label="KP2A internal file browsing" android:name="keepass2android.keepass2android.permission.KP2aInternalFileBrowsing" android:protectionLevel="signature" />
|
||||||
<application android:label="keepass2android" android:icon="@drawable/ic_launcher">
|
<application android:label="keepass2android" android:icon="@drawable/ic_launcher">
|
||||||
@ -44,6 +44,15 @@
|
|||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
<activity android:name="keepass2android.softkeyboard.InputLanguageSelection"
|
||||||
|
android:label="@string/language_selection_title">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
|
<action android:name="keepass2android.softkeyboard.INPUT_LANGUAGE_SELECTION"/>
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
|
||||||
<activity android:configChanges="keyboardHidden|orientation" android:label="@string/app_name" android:theme="@style/Base" android:name="keepass2android.PasswordActivity">
|
<activity android:configChanges="keyboardHidden|orientation" android:label="@string/app_name" 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" />
|
||||||
|
13
src/keepass2android/Resources/Resource.designer.cs
generated
13
src/keepass2android/Resources/Resource.designer.cs
generated
@ -2,7 +2,7 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// Dieser Code wurde von einem Tool generiert.
|
// Dieser Code wurde von einem Tool generiert.
|
||||||
// Laufzeitversion:4.0.30319.34003
|
// Laufzeitversion:4.0.30319.34011
|
||||||
//
|
//
|
||||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||||
// der Code erneut generiert wird.
|
// der Code erneut generiert wird.
|
||||||
@ -6384,6 +6384,9 @@ namespace keepass2android
|
|||||||
// aapt resource value: 0x7f0e00c3
|
// aapt resource value: 0x7f0e00c3
|
||||||
public const int BaseLight = 2131624131;
|
public const int BaseLight = 2131624131;
|
||||||
|
|
||||||
|
// aapt resource value: 0x7f0e00c5
|
||||||
|
public const int BaseLight_Dialog = 2131624133;
|
||||||
|
|
||||||
// aapt resource value: 0x7f0e00b5
|
// aapt resource value: 0x7f0e00b5
|
||||||
public const int BottomBarActionButton = 2131624117;
|
public const int BottomBarActionButton = 2131624117;
|
||||||
|
|
||||||
@ -6393,8 +6396,8 @@ namespace keepass2android
|
|||||||
// aapt resource value: 0x7f0e00c1
|
// aapt resource value: 0x7f0e00c1
|
||||||
public const int DialogDark = 2131624129;
|
public const int DialogDark = 2131624129;
|
||||||
|
|
||||||
// aapt resource value: 0x7f0e00c5
|
// aapt resource value: 0x7f0e00c6
|
||||||
public const int DialogLight = 2131624133;
|
public const int DialogLight = 2131624134;
|
||||||
|
|
||||||
// aapt resource value: 0x7f0e00b1
|
// aapt resource value: 0x7f0e00b1
|
||||||
public const int EditEntryButton = 2131624113;
|
public const int EditEntryButton = 2131624113;
|
||||||
@ -6648,8 +6651,8 @@ namespace keepass2android
|
|||||||
// aapt resource value: 0x7f0e00c2
|
// aapt resource value: 0x7f0e00c2
|
||||||
public const int ThemeDark = 2131624130;
|
public const int ThemeDark = 2131624130;
|
||||||
|
|
||||||
// aapt resource value: 0x7f0e00c6
|
// aapt resource value: 0x7f0e00c7
|
||||||
public const int ThemeLight = 2131624134;
|
public const int ThemeLight = 2131624135;
|
||||||
|
|
||||||
// aapt resource value: 0x7f0e00a8
|
// aapt resource value: 0x7f0e00a8
|
||||||
public const int WhiteOnBlack = 2131624104;
|
public const int WhiteOnBlack = 2131624104;
|
||||||
|
@ -35,7 +35,11 @@
|
|||||||
</style>
|
</style>
|
||||||
<style name="NoTitleBarLight" parent="BaseLight">
|
<style name="NoTitleBarLight" parent="BaseLight">
|
||||||
</style>
|
</style>
|
||||||
<style name="DialogLight" parent="BaseLight"></style>
|
|
||||||
|
|
||||||
|
<style name="BaseLight_Dialog" parent="android:Theme.Holo.Light.Dialog" />
|
||||||
|
<style name="DialogLight" parent="BaseLight_Dialog"></style>
|
||||||
|
|
||||||
<style name="ThemeLight" parent="BaseLight"></style>
|
<style name="ThemeLight" parent="BaseLight"></style>
|
||||||
|
|
||||||
<!-- "default" for Preference activity etc.:-->
|
<!-- "default" for Preference activity etc.:-->
|
||||||
|
@ -27,13 +27,17 @@ namespace keepass2android
|
|||||||
|
|
||||||
public void ReapplyTheme()
|
public void ReapplyTheme()
|
||||||
{
|
{
|
||||||
int newTheme = UseDarkTheme ? Resource.Style.ThemeDark : Resource.Style.ThemeLight;
|
if (HasThemes())
|
||||||
if (newTheme != _currentThemeId)
|
|
||||||
{
|
{
|
||||||
Kp2aLog.Log("recreating due to theme change.");
|
int newTheme = UseDarkTheme ? Resource.Style.ThemeDark : Resource.Style.ThemeLight;
|
||||||
_activity.Recreate();
|
if (newTheme != _currentThemeId)
|
||||||
|
{
|
||||||
|
Kp2aLog.Log("recreating due to theme change.");
|
||||||
|
_activity.Recreate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool UseDarkTheme
|
private bool UseDarkTheme
|
||||||
|
@ -24,6 +24,7 @@ using Android.Content;
|
|||||||
using Android.Graphics.Drawables;
|
using Android.Graphics.Drawables;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
using KeePassLib;
|
using KeePassLib;
|
||||||
using KeePassLib.Cryptography.Cipher;
|
using KeePassLib.Cryptography.Cipher;
|
||||||
@ -517,7 +518,10 @@ namespace keepass2android
|
|||||||
internal void ShowToast(string message)
|
internal void ShowToast(string message)
|
||||||
{
|
{
|
||||||
var handler = new Handler(Looper.MainLooper);
|
var handler = new Handler(Looper.MainLooper);
|
||||||
handler.Post(() => { Toast.MakeText(Application.Context, message, ToastLength.Long).Show(); });
|
handler.Post(() => { var toast = Toast.MakeText(Application.Context, message, ToastLength.Long);
|
||||||
|
toast.SetGravity(GravityFlags.Center, 0, 0);
|
||||||
|
toast.Show();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CouldntSaveToRemote(IOConnectionInfo ioc, Exception e)
|
public void CouldntSaveToRemote(IOConnectionInfo ioc, Exception e)
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
<OutputPath>bin\Debug</OutputPath>
|
<OutputPath>bin\Debug</OutputPath>
|
||||||
<DefineConstants>DEBUG;EXCLUDE_TWOFISH;EXCLUDE_KEYBOARD;EXCLUDE_FILECHOOSER;EXCLUDE_JAVAFILESTORAGE;EXCLUDE_KEYTRANSFORM</DefineConstants>
|
<DefineConstants>DEBUG;EXCLUDE_TWOFISH;INCLUDE_KEYBOARD;EXCLUDE_FILECHOOSER;INCLUDE_JAVAFILESTORAGE;EXCLUDE_KEYTRANSFORM</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<ConsolePause>False</ConsolePause>
|
<ConsolePause>False</ConsolePause>
|
||||||
@ -576,8 +576,6 @@
|
|||||||
<AndroidResource Include="Resources\values-ko\strings.xml" />
|
<AndroidResource Include="Resources\values-ko\strings.xml" />
|
||||||
<AndroidResource Include="Resources\values-no\strings.xml" />
|
<AndroidResource Include="Resources\values-no\strings.xml" />
|
||||||
<AndroidResource Include="Resources\values-pt-rPT\strings.xml" />
|
<AndroidResource Include="Resources\values-pt-rPT\strings.xml" />
|
||||||
<AndroidResource Include="Resources\values-iw\strings.xml" />
|
|
||||||
<AndroidResource Include="Resources\values-ko\strings.xml" />
|
|
||||||
<AndroidResource Include="Resources\values-ro\strings.xml" />
|
<AndroidResource Include="Resources\values-ro\strings.xml" />
|
||||||
<AndroidResource Include="Resources\values-sl\strings.xml" />
|
<AndroidResource Include="Resources\values-sl\strings.xml" />
|
||||||
<AndroidResource Include="Resources\values-sr\strings.xml" />
|
<AndroidResource Include="Resources\values-sr\strings.xml" />
|
||||||
|
Loading…
Reference in New Issue
Block a user