Add option to auto backup on any edits to entries
This commit is contained in:
parent
4f76f6a01d
commit
70a194ca5c
7 changed files with 48 additions and 18 deletions
|
@ -148,7 +148,7 @@ public class SettingsActivity extends BaseActivity
|
||||||
if (fragment.useAutoBackup != null) {
|
if (fragment.useAutoBackup != null) {
|
||||||
fragment.useAutoBackup.setEnabled(BackupHelper.autoBackupType(this) == Constants.BackupType.ENCRYPTED);
|
fragment.useAutoBackup.setEnabled(BackupHelper.autoBackupType(this) == Constants.BackupType.ENCRYPTED);
|
||||||
if (!fragment.useAutoBackup.isEnabled())
|
if (!fragment.useAutoBackup.isEnabled())
|
||||||
fragment.useAutoBackup.setChecked(false);
|
fragment.useAutoBackup.setValue(Constants.AutoBackup.OFF.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,7 +243,7 @@ public class SettingsActivity extends BaseActivity
|
||||||
|
|
||||||
Settings settings;
|
Settings settings;
|
||||||
ListPreference encryption;
|
ListPreference encryption;
|
||||||
CheckBoxPreference useAutoBackup;
|
ListPreference useAutoBackup;
|
||||||
CheckBoxPreference useAndroidSync;
|
CheckBoxPreference useAndroidSync;
|
||||||
|
|
||||||
OpenPgpAppPreference pgpProvider;
|
OpenPgpAppPreference pgpProvider;
|
||||||
|
@ -352,10 +352,10 @@ public class SettingsActivity extends BaseActivity
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
useAutoBackup = (CheckBoxPreference) findPreference(getString(R.string.settings_key_auto_backup_password_enc));
|
useAutoBackup = (ListPreference)findPreference(getString(R.string.settings_key_auto_backup_password_enc));
|
||||||
useAutoBackup.setEnabled(BackupHelper.autoBackupType(getActivity()) == Constants.BackupType.ENCRYPTED);
|
useAutoBackup.setEnabled(BackupHelper.autoBackupType(getActivity()) == Constants.BackupType.ENCRYPTED);
|
||||||
if(!useAutoBackup.isEnabled())
|
if(!useAutoBackup.isEnabled())
|
||||||
useAutoBackup.setChecked(false);
|
useAutoBackup.setValue(Constants.AutoBackup.OFF.toString());
|
||||||
|
|
||||||
useAndroidSync = (CheckBoxPreference) findPreference(getString(R.string.settings_key_enable_android_backup_service));
|
useAndroidSync = (CheckBoxPreference) findPreference(getString(R.string.settings_key_enable_android_backup_service));
|
||||||
useAndroidSync.setEnabled(settings.getEncryption() == EncryptionType.PASSWORD);
|
useAndroidSync.setEnabled(settings.getEncryption() == EncryptionType.PASSWORD);
|
||||||
|
|
|
@ -60,6 +60,10 @@ public class Constants {
|
||||||
DEFAULT, FULL
|
DEFAULT, FULL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum AutoBackup {
|
||||||
|
OFF, NEW_ENTRIES, ALL_EDITS
|
||||||
|
}
|
||||||
|
|
||||||
// Intents (Format: A0x with A = parent Activity, x = number of the intent)
|
// Intents (Format: A0x with A = parent Activity, x = number of the intent)
|
||||||
public final static int INTENT_MAIN_AUTHENTICATE = 100;
|
public final static int INTENT_MAIN_AUTHENTICATE = 100;
|
||||||
public final static int INTENT_MAIN_SETTINGS = 101;
|
public final static int INTENT_MAIN_SETTINGS = 101;
|
||||||
|
|
|
@ -543,8 +543,17 @@ public class Settings {
|
||||||
return getBoolean(R.string.settings_key_backup_append_date_time, false);
|
return getBoolean(R.string.settings_key_backup_append_date_time, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Constants.AutoBackup getAutoBackupEncryptedSetting() {
|
||||||
|
String stringValue = getString(R.string.settings_key_auto_backup_password_enc, R.string.settings_default_auto_backup_password_enc);
|
||||||
|
return Constants.AutoBackup.valueOf(stringValue.toUpperCase(Locale.ENGLISH));
|
||||||
|
}
|
||||||
|
|
||||||
public boolean getAutoBackupEncryptedPasswordsEnabled() {
|
public boolean getAutoBackupEncryptedPasswordsEnabled() {
|
||||||
return getBoolean(R.string.settings_key_auto_backup_password_enc, false);
|
return getAutoBackupEncryptedSetting() != Constants.AutoBackup.OFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getAutoBackupEncryptedFullEnabled() {
|
||||||
|
return getAutoBackupEncryptedSetting() == Constants.AutoBackup.ALL_EDITS;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isHighlightTokenOptionEnabled() {
|
public boolean isHighlightTokenOptionEnabled() {
|
||||||
|
|
|
@ -119,7 +119,7 @@ public class EntriesCardAdapter extends RecyclerView.Adapter<EntryViewHolder>
|
||||||
if (! entries.contains(e)) {
|
if (! entries.contains(e)) {
|
||||||
entries.add(e);
|
entries.add(e);
|
||||||
entriesChanged();
|
entriesChanged();
|
||||||
saveEntries(true);
|
saveEntries(settings.getAutoBackupEncryptedPasswordsEnabled() || settings.getAutoBackupEncryptedFullEnabled());
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(context, R.string.toast_entry_exists, Toast.LENGTH_LONG).show();
|
Toast.makeText(context, R.string.toast_entry_exists, Toast.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
|
@ -138,7 +138,7 @@ public class EntriesCardAdapter extends RecyclerView.Adapter<EntryViewHolder>
|
||||||
public void saveEntries(boolean auto_backup) {
|
public void saveEntries(boolean auto_backup) {
|
||||||
DatabaseHelper.saveDatabase(context, entries, encryptionKey);
|
DatabaseHelper.saveDatabase(context, entries, encryptionKey);
|
||||||
|
|
||||||
if(auto_backup && settings.getAutoBackupEncryptedPasswordsEnabled()) {
|
if(auto_backup) {
|
||||||
Constants.BackupType backupType = BackupHelper.autoBackupType(context);
|
Constants.BackupType backupType = BackupHelper.autoBackupType(context);
|
||||||
if (backupType == Constants.BackupType.ENCRYPTED) {
|
if (backupType == Constants.BackupType.ENCRYPTED) {
|
||||||
Uri backupFilename = Tools.buildUri(settings.getBackupDir(), BackupHelper.backupFilename(context, Constants.BackupType.ENCRYPTED));
|
Uri backupFilename = Tools.buildUri(settings.getBackupDir(), BackupHelper.backupFilename(context, Constants.BackupType.ENCRYPTED));
|
||||||
|
@ -321,7 +321,7 @@ public class EntriesCardAdapter extends RecyclerView.Adapter<EntryViewHolder>
|
||||||
realEntry.setCounter(counter);
|
realEntry.setCounter(counter);
|
||||||
realEntry.updateOTP();
|
realEntry.updateOTP();
|
||||||
|
|
||||||
saveEntries(false);
|
saveEntries(settings.getAutoBackupEncryptedFullEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void hideEntry(Entry entry) {
|
private void hideEntry(Entry entry) {
|
||||||
|
@ -374,7 +374,7 @@ public class EntriesCardAdapter extends RecyclerView.Adapter<EntryViewHolder>
|
||||||
Entry e = entries.get(realIndex);
|
Entry e = entries.get(realIndex);
|
||||||
e.setCounter(newCounter);
|
e.setCounter(newCounter);
|
||||||
|
|
||||||
saveEntries(false);
|
saveEntries(settings.getAutoBackupEncryptedFullEnabled());
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
|
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
|
||||||
|
@ -392,7 +392,7 @@ public class EntriesCardAdapter extends RecyclerView.Adapter<EntryViewHolder>
|
||||||
displayedEntries.get(position).setLastUsed(timeStamp);
|
displayedEntries.get(position).setLastUsed(timeStamp);
|
||||||
|
|
||||||
entries.get(realIndex).setLastUsed(timeStamp);
|
entries.get(realIndex).setLastUsed(timeStamp);
|
||||||
saveEntries(false);
|
saveEntries(settings.getAutoBackupEncryptedFullEnabled());
|
||||||
|
|
||||||
if (sortMode == SortMode.LAST_USED) {
|
if (sortMode == SortMode.LAST_USED) {
|
||||||
displayedEntries = sortEntries(displayedEntries);
|
displayedEntries = sortEntries(displayedEntries);
|
||||||
|
@ -411,7 +411,7 @@ public class EntriesCardAdapter extends RecyclerView.Adapter<EntryViewHolder>
|
||||||
displayedEntries = new ArrayList<>(entries);
|
displayedEntries = new ArrayList<>(entries);
|
||||||
notifyItemMoved(fromPosition, toPosition);
|
notifyItemMoved(fromPosition, toPosition);
|
||||||
|
|
||||||
saveEntries(false);
|
saveEntries(settings.getAutoBackupEncryptedFullEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -496,7 +496,7 @@ public class EntriesCardAdapter extends RecyclerView.Adapter<EntryViewHolder>
|
||||||
Entry e = entries.get(realIndex);
|
Entry e = entries.get(realIndex);
|
||||||
e.setLabel(newLabel);
|
e.setLabel(newLabel);
|
||||||
|
|
||||||
saveEntries(false);
|
saveEntries(settings.getAutoBackupEncryptedFullEnabled());
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
|
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
|
||||||
|
@ -582,7 +582,7 @@ public class EntriesCardAdapter extends RecyclerView.Adapter<EntryViewHolder>
|
||||||
Entry e = entries.get(realIndex);
|
Entry e = entries.get(realIndex);
|
||||||
e.setThumbnail(thumbnail);
|
e.setThumbnail(thumbnail);
|
||||||
|
|
||||||
saveEntries(false);
|
saveEntries(settings.getAutoBackupEncryptedFullEnabled());
|
||||||
notifyItemChanged(pos);
|
notifyItemChanged(pos);
|
||||||
alert.cancel();
|
alert.cancel();
|
||||||
}
|
}
|
||||||
|
@ -610,7 +610,7 @@ public class EntriesCardAdapter extends RecyclerView.Adapter<EntryViewHolder>
|
||||||
@Override
|
@Override
|
||||||
public Object call() throws Exception {
|
public Object call() throws Exception {
|
||||||
entries.get(realPos).setTags(tagsAdapter.getActiveTags());
|
entries.get(realPos).setTags(tagsAdapter.getActiveTags());
|
||||||
saveEntries(false);
|
saveEntries(settings.getAutoBackupEncryptedFullEnabled());
|
||||||
|
|
||||||
List<String> inUseTags = getTags();
|
List<String> inUseTags = getTags();
|
||||||
|
|
||||||
|
@ -655,7 +655,7 @@ public class EntriesCardAdapter extends RecyclerView.Adapter<EntryViewHolder>
|
||||||
notifyItemRemoved(pos);
|
notifyItemRemoved(pos);
|
||||||
|
|
||||||
entries.remove(realIndex);
|
entries.remove(realIndex);
|
||||||
saveEntries(false);
|
saveEntries(settings.getAutoBackupEncryptedFullEnabled());
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
|
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
<string name="settings_default_thumbnail_size" translatable="false">46dp</string>
|
<string name="settings_default_thumbnail_size" translatable="false">46dp</string>
|
||||||
<string name="settings_default_split_group_size" translatable="false">3</string>
|
<string name="settings_default_split_group_size" translatable="false">3</string>
|
||||||
<string name="settings_default_tag_functionality" translatable="false">or</string>
|
<string name="settings_default_tag_functionality" translatable="false">or</string>
|
||||||
|
<string name="settings_default_auto_backup_password_enc" translatable="false">off</string>
|
||||||
|
|
||||||
<string-array name="settings_defaults_search_includes">
|
<string-array name="settings_defaults_search_includes">
|
||||||
<item>label</item>
|
<item>label</item>
|
||||||
|
@ -105,6 +106,14 @@
|
||||||
<item>tags</item>
|
<item>tags</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="settings_values_auto_backup_password_enc" translatable="false">
|
||||||
|
<item>OFF</item>
|
||||||
|
<item>NEW_ENTRIES</item>
|
||||||
|
<item>ALL_EDITS</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<string-array name="settings_values_locale" translatable="false">
|
<string-array name="settings_values_locale" translatable="false">
|
||||||
<item>system</item>
|
<item>system</item>
|
||||||
<item>ca_ES</item>
|
<item>ca_ES</item>
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
backups</string>
|
backups</string>
|
||||||
|
|
||||||
<string name="settings_desc_auto_backup_password_enc">Creates a new encrypted backup when new
|
<string name="settings_desc_auto_backup_password_enc">Creates a new encrypted backup when new
|
||||||
entries are added if settings conditions are met</string>
|
entries are added, or edited, if settings conditions are met</string>
|
||||||
|
|
||||||
<string name="settings_desc_backup_broadcasts">Select which backup types can be triggered by
|
<string name="settings_desc_backup_broadcasts">Select which backup types can be triggered by
|
||||||
3rd-party apps using Broadcasts</string>
|
3rd-party apps using Broadcasts</string>
|
||||||
|
@ -167,6 +167,12 @@
|
||||||
<item>Tags</item>
|
<item>Tags</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="settings_entries_auto_backup_password_enc">
|
||||||
|
<item>Off</item>
|
||||||
|
<item>New Entries</item>
|
||||||
|
<item>Any Edits</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
<string-array name="settings_entries_theme">
|
<string-array name="settings_entries_theme">
|
||||||
<item>Light theme</item>
|
<item>Light theme</item>
|
||||||
<item>Dark theme</item>
|
<item>Dark theme</item>
|
||||||
|
|
|
@ -163,11 +163,13 @@
|
||||||
android:title="@string/settings_title_backup_password"
|
android:title="@string/settings_title_backup_password"
|
||||||
android:summary="@string/settings_desc_backup_password" />
|
android:summary="@string/settings_desc_backup_password" />
|
||||||
|
|
||||||
<CheckBoxPreference
|
<ListPreference
|
||||||
android:key="@string/settings_key_auto_backup_password_enc"
|
android:key="@string/settings_key_auto_backup_password_enc"
|
||||||
android:title="@string/settings_title_auto_backup_password_enc"
|
android:title="@string/settings_title_auto_backup_password_enc"
|
||||||
android:summary="@string/settings_desc_auto_backup_password_enc"
|
android:summary="@string/settings_desc_auto_backup_password_enc"
|
||||||
android:defaultValue="false" />
|
android:entries="@array/settings_entries_auto_backup_password_enc"
|
||||||
|
android:entryValues="@array/settings_values_auto_backup_password_enc"
|
||||||
|
android:defaultValue="@string/settings_default_auto_backup_password_enc" />
|
||||||
|
|
||||||
<MultiSelectListPreference
|
<MultiSelectListPreference
|
||||||
android:key="@string/settings_key_backup_broadcasts"
|
android:key="@string/settings_key_backup_broadcasts"
|
||||||
|
|
Loading…
Reference in a new issue