improve message when file is readonly, closes #521
This commit is contained in:
@@ -251,28 +251,6 @@ namespace keepass2android
|
|||||||
FragmentManager.FindFragmentById<GroupListFragment>(Resource.Id.list_fragment).ListAdapter = new PwGroupListAdapter(this, Group);
|
FragmentManager.FindFragmentById<GroupListFragment>(Resource.Id.list_fragment).ListAdapter = new PwGroupListAdapter(this, Group);
|
||||||
Log.Warn(Tag, "Finished creating group");
|
Log.Warn(Tag, "Finished creating group");
|
||||||
|
|
||||||
var ioc = App.Kp2a.CurrentDb.Ioc;
|
|
||||||
OptionalOut<UiStringKey> reason = new OptionalOut<UiStringKey>();
|
|
||||||
|
|
||||||
if (App.Kp2a.GetFileStorage(ioc).IsReadOnly(ioc, reason))
|
|
||||||
{
|
|
||||||
bool hasShownReadOnlyReason =
|
|
||||||
PreferenceManager.GetDefaultSharedPreferences(this)
|
|
||||||
.GetBoolean(App.Kp2a.CurrentDb.IocAsHexString() + "_readonlyreason", false);
|
|
||||||
if (!hasShownReadOnlyReason)
|
|
||||||
{
|
|
||||||
var b = new AlertDialog.Builder(this);
|
|
||||||
b.SetTitle(Resource.String.FileReadOnlyTitle);
|
|
||||||
b.SetMessage(GetString(Resource.String.FileReadOnlyMessagePre) + " " + App.Kp2a.GetResourceString(reason.Result));
|
|
||||||
b.SetPositiveButton(Android.Resource.String.Ok,
|
|
||||||
(sender, args) =>
|
|
||||||
{
|
|
||||||
PreferenceManager.GetDefaultSharedPreferences(this).
|
|
||||||
Edit().PutBoolean(App.Kp2a.CurrentDb.IocAsHexString() + "_readonlyreason", true).Commit();
|
|
||||||
});
|
|
||||||
b.Show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ namespace keepass2android
|
|||||||
{ Resource.Id.cancel_insert_element, 20 },
|
{ Resource.Id.cancel_insert_element, 20 },
|
||||||
{ Resource.Id.insert_element, 20 },
|
{ Resource.Id.insert_element, 20 },
|
||||||
//only use the same id if elements can be shown simultaneously!
|
//only use the same id if elements can be shown simultaneously!
|
||||||
|
{ Resource.Id.dbreadonly_infotext, 14 },
|
||||||
{ Resource.Id.child_db_infotext, 13 },
|
{ Resource.Id.child_db_infotext, 13 },
|
||||||
{ Resource.Id.fingerprint_infotext, 12 },
|
{ Resource.Id.fingerprint_infotext, 12 },
|
||||||
{ Resource.Id.autofill_infotext, 11 },
|
{ Resource.Id.autofill_infotext, 11 },
|
||||||
@@ -247,6 +248,7 @@ namespace keepass2android
|
|||||||
AppTask.StartInGroupActivity(this);
|
AppTask.StartInGroupActivity(this);
|
||||||
AppTask.SetupGroupBaseActivityButtons(this);
|
AppTask.SetupGroupBaseActivityButtons(this);
|
||||||
|
|
||||||
|
UpdateDbReadOnlyInfo();
|
||||||
UpdateChildDbInfo();
|
UpdateChildDbInfo();
|
||||||
UpdateFingerprintInfo();
|
UpdateFingerprintInfo();
|
||||||
UpdateAutofillInfo();
|
UpdateAutofillInfo();
|
||||||
@@ -504,6 +506,16 @@ namespace keepass2android
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (FindViewById(Resource.Id.info_dont_show_dbreadonly_again) != null)
|
||||||
|
{
|
||||||
|
FindViewById(Resource.Id.info_dont_show_dbreadonly_again).Click += (sender, args) =>
|
||||||
|
{
|
||||||
|
_prefs.Edit().PutBoolean(dbreadonly_ignore_prefskey + App.Kp2a.CurrentDb.CurrentFingerprintPrefKey, true).Commit();
|
||||||
|
UpdateDbReadOnlyInfo();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
if (FindViewById(Resource.Id.fabCancelAddNew) != null)
|
if (FindViewById(Resource.Id.fabCancelAddNew) != null)
|
||||||
{
|
{
|
||||||
FindViewById(Resource.Id.fabAddNew).Click += (sender, args) =>
|
FindViewById(Resource.Id.fabAddNew).Click += (sender, args) =>
|
||||||
@@ -616,6 +628,7 @@ namespace keepass2android
|
|||||||
return _prefs.GetBoolean("InfoTextDisabled_" + infoTextKey, false);
|
return _prefs.GetBoolean("InfoTextDisabled_" + infoTextKey, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const string dbreadonly_ignore_prefskey = "dbreadonly_ignore_prefskey";
|
||||||
const string childdb_ignore_prefskey = "childdb_ignore_prefskey";
|
const string childdb_ignore_prefskey = "childdb_ignore_prefskey";
|
||||||
const string autofillservicewasenabled_prefskey = "AutofillServiceWasEnabled";
|
const string autofillservicewasenabled_prefskey = "AutofillServiceWasEnabled";
|
||||||
const string fingerprintinfohidden_prefskey = "fingerprintinfohidden_prefskey";
|
const string fingerprintinfohidden_prefskey = "fingerprintinfohidden_prefskey";
|
||||||
@@ -695,6 +708,31 @@ namespace keepass2android
|
|||||||
UpdateBottomBarElementVisibility(Resource.Id.child_db_infotext, canShow);
|
UpdateBottomBarElementVisibility(Resource.Id.child_db_infotext, canShow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UpdateDbReadOnlyInfo()
|
||||||
|
{
|
||||||
|
bool disabledForDatabase = _prefs.GetBoolean(dbreadonly_ignore_prefskey + App.Kp2a.CurrentDb.CurrentFingerprintPrefKey, false);
|
||||||
|
|
||||||
|
bool canShow = false;
|
||||||
|
|
||||||
|
if (!disabledForDatabase)
|
||||||
|
{
|
||||||
|
var ioc = App.Kp2a.CurrentDb.Ioc;
|
||||||
|
OptionalOut<UiStringKey> reason = new OptionalOut<UiStringKey>();
|
||||||
|
|
||||||
|
if (App.Kp2a.GetFileStorage(ioc).IsReadOnly(ioc, reason))
|
||||||
|
{
|
||||||
|
canShow = true;
|
||||||
|
RegisterInfoTextDisplay(
|
||||||
|
"DbReadOnly"); //this ensures that we don't show the general info texts too soon
|
||||||
|
|
||||||
|
FindViewById<TextView>(Resource.Id.dbreadonly_infotext_text).Text =
|
||||||
|
(GetString(Resource.String.FileReadOnlyMessagePre) + " " +
|
||||||
|
App.Kp2a.GetResourceString(reason.Result));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
UpdateBottomBarElementVisibility(Resource.Id.dbreadonly_infotext, canShow);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void UpdateBottomBarElementVisibility(int resourceId, bool canShow)
|
protected void UpdateBottomBarElementVisibility(int resourceId, bool canShow)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -136,6 +136,32 @@
|
|||||||
style="@style/BottomBarButton" />
|
style="@style/BottomBarButton" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/dbreadonly_infotext"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
|
||||||
|
<TextView android:id="@+id/dbreadonly_infotext_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:layout_margin="6dp"
|
||||||
|
android:layout_marginBottom="2dp"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/info_dont_show_dbreadonly_again"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="4dp"
|
||||||
|
android:text="@string/dont_show_again"
|
||||||
|
style="@style/BottomBarButton" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/child_db_infotext"
|
android:id="@+id/child_db_infotext"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|||||||
Reference in New Issue
Block a user