avoid showing infotexts after showing android 8 specific texts, update changelog, change version number for actual 1.05-pre3 release
This commit is contained in:
@@ -54,7 +54,7 @@ namespace keepass2android
|
||||
{ Resource.Id.insert_element, 20 },
|
||||
{ Resource.Id.autofill_infotext, 10 },
|
||||
{ Resource.Id.notification_info_android8_infotext, 10 },
|
||||
{ Resource.Id.infotext, 11 },
|
||||
{ Resource.Id.infotext, 9 },
|
||||
{ Resource.Id.select_other_entry, 20},
|
||||
{ Resource.Id.add_url_entry, 20},
|
||||
};
|
||||
@@ -239,14 +239,113 @@ namespace keepass2android
|
||||
AppTask.SetupGroupBaseActivityButtons(this);
|
||||
|
||||
UpdateAutofillInfo();
|
||||
|
||||
UpdateAndroid8NotificationInfo();
|
||||
UpdateInfotexts();
|
||||
|
||||
RefreshIfDirty();
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void UpdateInfotexts()
|
||||
{
|
||||
|
||||
string lastInfoText;
|
||||
if (IsTimeForInfotext(out lastInfoText) && (FindViewById<TextView>(Resource.Id.info_head) != null))
|
||||
{
|
||||
|
||||
FingerprintUnlockMode um;
|
||||
Enum.TryParse(_prefs.GetString(Database.GetFingerprintModePrefKey(App.Kp2a.GetDb().Ioc), ""), out um);
|
||||
bool isFingerprintEnabled = (um == FingerprintUnlockMode.FullUnlock);
|
||||
|
||||
string masterKeyKey = "MasterKey" + isFingerprintEnabled;
|
||||
string emergencyKey = "Emergency";
|
||||
string backupKey = "Backup";
|
||||
|
||||
List<string> applicableInfoTextKeys = new List<string> { masterKeyKey };
|
||||
|
||||
if (App.Kp2a.GetFileStorage(App.Kp2a.GetDb().Ioc).UserShouldBackup)
|
||||
{
|
||||
applicableInfoTextKeys.Add(backupKey);
|
||||
}
|
||||
if (App.Kp2a.GetDb().Entries.Count > 15)
|
||||
{
|
||||
applicableInfoTextKeys.Add(emergencyKey);
|
||||
}
|
||||
|
||||
List<string> enabledInfoTextKeys = new List<string>();
|
||||
foreach (string key in applicableInfoTextKeys)
|
||||
{
|
||||
if (!InfoTextWasDisabled(key))
|
||||
enabledInfoTextKeys.Add(key);
|
||||
}
|
||||
|
||||
if (enabledInfoTextKeys.Any())
|
||||
{
|
||||
string infoTextKey = "", infoHead = "", infoMain = "", infoNote = "";
|
||||
|
||||
if (enabledInfoTextKeys.Count > 1)
|
||||
{
|
||||
foreach (string key in enabledInfoTextKeys)
|
||||
if (key == lastInfoText)
|
||||
{
|
||||
enabledInfoTextKeys.Remove(key);
|
||||
break;
|
||||
}
|
||||
infoTextKey = enabledInfoTextKeys[new Random().Next(enabledInfoTextKeys.Count)];
|
||||
}
|
||||
|
||||
if (infoTextKey == masterKeyKey)
|
||||
{
|
||||
infoHead = GetString(Resource.String.masterkey_infotext_head);
|
||||
infoMain = GetString(Resource.String.masterkey_infotext_main);
|
||||
if (isFingerprintEnabled)
|
||||
infoNote = GetString(Resource.String.masterkey_infotext_fingerprint_note);
|
||||
}
|
||||
else if (infoTextKey == emergencyKey)
|
||||
{
|
||||
infoHead = GetString(Resource.String.emergency_infotext_head);
|
||||
infoMain = GetString(Resource.String.emergency_infotext_main);
|
||||
}
|
||||
else if (infoTextKey == backupKey)
|
||||
{
|
||||
infoHead = GetString(Resource.String.backup_infotext_head);
|
||||
infoMain = GetString(Resource.String.backup_infotext_main);
|
||||
infoNote = GetString(Resource.String.backup_infotext_note, GetString(Resource.String.menu_app_settings), GetString(Resource.String.menu_db_settings), GetString(Resource.String.export_prefs));
|
||||
}
|
||||
|
||||
|
||||
|
||||
FindViewById<TextView>(Resource.Id.info_head).Text = infoHead;
|
||||
FindViewById<TextView>(Resource.Id.info_main).Text = infoMain;
|
||||
var additionalInfoText = FindViewById<TextView>(Resource.Id.info_additional);
|
||||
additionalInfoText.Text = infoNote;
|
||||
additionalInfoText.Visibility = string.IsNullOrEmpty(infoNote) ? ViewStates.Gone : ViewStates.Visible;
|
||||
|
||||
if (infoTextKey != "")
|
||||
{
|
||||
|
||||
RegisterInfoTextDisplay(infoTextKey);
|
||||
FindViewById(Resource.Id.info_ok).Click += (sender, args) =>
|
||||
{
|
||||
UpdateBottomBarElementVisibility(Resource.Id.infotext, false);
|
||||
};
|
||||
FindViewById(Resource.Id.info_dont_show_again).Click += (sender, args) =>
|
||||
{
|
||||
UpdateBottomBarElementVisibility(Resource.Id.infotext, false);
|
||||
DisableInfoTextDisplay(infoTextKey);
|
||||
};
|
||||
|
||||
UpdateBottomBarElementVisibility(Resource.Id.infotext, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateAndroid8NotificationInfo(bool hideForever = false)
|
||||
{
|
||||
const string prefsKey = "DidShowAndroid8NotificationInfo";
|
||||
@@ -257,6 +356,10 @@ namespace keepass2android
|
||||
_prefs.Edit().PutBoolean(prefsKey, true).Commit();
|
||||
canShowNotificationInfo = false;
|
||||
}
|
||||
if (canShowNotificationInfo)
|
||||
{
|
||||
RegisterInfoTextDisplay("Android8Notification"); //this ensures that we don't show the general info texts too soon
|
||||
}
|
||||
UpdateBottomBarElementVisibility(Resource.Id.notification_info_android8_infotext, canShowNotificationInfo);
|
||||
|
||||
|
||||
@@ -413,100 +516,6 @@ namespace keepass2android
|
||||
|
||||
|
||||
|
||||
string lastInfoText;
|
||||
if (IsTimeForInfotext(out lastInfoText) && (FindViewById<TextView>(Resource.Id.info_head) != null))
|
||||
{
|
||||
|
||||
FingerprintUnlockMode um;
|
||||
Enum.TryParse(_prefs.GetString(Database.GetFingerprintModePrefKey(App.Kp2a.GetDb().Ioc), ""), out um);
|
||||
bool isFingerprintEnabled = (um == FingerprintUnlockMode.FullUnlock);
|
||||
|
||||
string masterKeyKey = "MasterKey" + isFingerprintEnabled;
|
||||
string emergencyKey = "Emergency";
|
||||
string backupKey = "Backup";
|
||||
|
||||
List<string> applicableInfoTextKeys = new List<string> {masterKeyKey};
|
||||
|
||||
if (App.Kp2a.GetFileStorage(App.Kp2a.GetDb().Ioc).UserShouldBackup)
|
||||
{
|
||||
applicableInfoTextKeys.Add(backupKey);
|
||||
}
|
||||
if (App.Kp2a.GetDb().Entries.Count > 15)
|
||||
{
|
||||
applicableInfoTextKeys.Add(emergencyKey);
|
||||
}
|
||||
|
||||
List<string> enabledInfoTextKeys = new List<string>();
|
||||
foreach (string key in applicableInfoTextKeys)
|
||||
{
|
||||
if (!InfoTextWasDisabled(key))
|
||||
enabledInfoTextKeys.Add(key);
|
||||
}
|
||||
|
||||
if (enabledInfoTextKeys.Any())
|
||||
{
|
||||
string infoTextKey = "", infoHead = "", infoMain = "", infoNote = "";
|
||||
|
||||
if (enabledInfoTextKeys.Count > 1)
|
||||
{
|
||||
foreach (string key in enabledInfoTextKeys)
|
||||
if (key == lastInfoText)
|
||||
{
|
||||
enabledInfoTextKeys.Remove(key);
|
||||
break;
|
||||
}
|
||||
infoTextKey = enabledInfoTextKeys[new Random().Next(enabledInfoTextKeys.Count)];
|
||||
}
|
||||
|
||||
if (infoTextKey == masterKeyKey)
|
||||
{
|
||||
infoHead = GetString(Resource.String.masterkey_infotext_head);
|
||||
infoMain = GetString(Resource.String.masterkey_infotext_main);
|
||||
if (isFingerprintEnabled)
|
||||
infoNote = GetString(Resource.String.masterkey_infotext_fingerprint_note);
|
||||
}
|
||||
else if (infoTextKey == emergencyKey)
|
||||
{
|
||||
infoHead = GetString(Resource.String.emergency_infotext_head);
|
||||
infoMain = GetString(Resource.String.emergency_infotext_main);
|
||||
}
|
||||
else if (infoTextKey == backupKey)
|
||||
{
|
||||
infoHead = GetString(Resource.String.backup_infotext_head);
|
||||
infoMain = GetString(Resource.String.backup_infotext_main);
|
||||
infoNote = GetString(Resource.String.backup_infotext_note, GetString(Resource.String.menu_app_settings), GetString(Resource.String.menu_db_settings), GetString(Resource.String.export_prefs));
|
||||
}
|
||||
|
||||
|
||||
|
||||
FindViewById<TextView>(Resource.Id.info_head).Text = infoHead;
|
||||
FindViewById<TextView>(Resource.Id.info_main).Text = infoMain;
|
||||
var additionalInfoText = FindViewById<TextView>(Resource.Id.info_additional);
|
||||
additionalInfoText.Text = infoNote;
|
||||
additionalInfoText.Visibility = string.IsNullOrEmpty(infoNote) ? ViewStates.Gone : ViewStates.Visible;
|
||||
|
||||
if (infoTextKey != "")
|
||||
{
|
||||
|
||||
RegisterInfoTextDisplay(infoTextKey);
|
||||
FindViewById(Resource.Id.info_ok).Click += (sender, args) =>
|
||||
{
|
||||
UpdateBottomBarElementVisibility(Resource.Id.infotext, false);
|
||||
};
|
||||
FindViewById(Resource.Id.info_dont_show_again).Click += (sender, args) =>
|
||||
{
|
||||
UpdateBottomBarElementVisibility(Resource.Id.infotext, false);
|
||||
DisableInfoTextDisplay(infoTextKey);
|
||||
};
|
||||
|
||||
UpdateBottomBarElementVisibility(Resource.Id.infotext, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -576,6 +585,11 @@ namespace keepass2android
|
||||
|
||||
}
|
||||
}
|
||||
if (canShowAutofillInfo)
|
||||
{
|
||||
RegisterInfoTextDisplay("AutofillSuggestion"); //this ensures that we don't show the general info texts too soon
|
||||
|
||||
}
|
||||
UpdateBottomBarElementVisibility(Resource.Id.autofill_infotext, canShowAutofillInfo);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:versionCode="113"
|
||||
android:versionCode="114"
|
||||
android:versionName="1.05-pre3"
|
||||
package="keepass2android.keepass2android"
|
||||
android:installLocation="auto">
|
||||
|
||||
@@ -864,7 +864,6 @@ Erstes öffentliches Release</string>
|
||||
<item>Kennwort + OTP Secret (Recovery-Modus)</item>
|
||||
<item>Passwort + Challenge-Response</item>
|
||||
<item>Passwort + Challenge-Response-Secret (Recovery-Modus)</item>
|
||||
<item>Password + Challenge-Response for KeepassXC database</item>
|
||||
</string-array>
|
||||
<string-array name="AcceptAllServerCertificates_options">
|
||||
<item>Fehler bei Zertifikatsvalidierung ignorieren</item>
|
||||
|
||||
@@ -733,13 +733,19 @@
|
||||
|
||||
<string name="ShowKeyboardDuringFingerprintAuth">Show soft keyboard for password input when fingerprint scan is active.</string>
|
||||
<string name="ChangeLog_1_05">
|
||||
Version 1.05-pre1\n
|
||||
Version 1.05\n
|
||||
* Use notification channels for Android 8, allowing configuration through system settings\n
|
||||
* Show entry icon in notication\n
|
||||
* Use Adaptive Icons for Android 8, use round launcher icon for Android 7\n
|
||||
* Allow to activate search upon unlock (see settings)\n
|
||||
* Change the way files are written through Storage Access Framework, fixes issues with updating files on Google Drive opened through System file picker\n
|
||||
* add some info texts to avoid some common misunderstandings\n
|
||||
* Changed the way files are written through Storage Access Framework, fixes issues with updating files on Google Drive opened through System file picker\n
|
||||
* Added some info texts to avoid some common misunderstandings\n
|
||||
* Create local backups of successfully opened databases to reduce risk of data loss\n
|
||||
* Updated JSch to support more recent SSH ciphers\n
|
||||
* Allow to edit connection settings, e.g. when WebDav password changed\n
|
||||
* Added support for Yubikey Neo\'s static password mode\n
|
||||
* Allow to disable Autofill suggestion\n
|
||||
* Fixed data leakage to logcat\n
|
||||
* bug fixes\n
|
||||
</string>
|
||||
|
||||
@@ -1086,7 +1092,6 @@ Initial public release
|
||||
<item>Password + OTP secret (recovery mode)</item>
|
||||
<item>Password + Challenge-Response</item>
|
||||
<item>Password + Challenge-Response secret (recovery mode)</item>
|
||||
<item>Password + Challenge-Response for KeepassXC database</item>
|
||||
</string-array>
|
||||
<string-array name="AcceptAllServerCertificates_options">
|
||||
<item>Ignore certificate validation failures</item>
|
||||
|
||||
Reference in New Issue
Block a user