diff --git a/app/src/main/java/com/kunzisoft/keepass/database/Database.java b/app/src/main/java/com/kunzisoft/keepass/database/Database.java index 74d24aabf..c1d28a2b7 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/Database.java +++ b/app/src/main/java/com/kunzisoft/keepass/database/Database.java @@ -218,11 +218,11 @@ public class Database { return null; } - public void SaveData(Context ctx) throws IOException, PwDbOutputException { - SaveData(ctx, mUri); + public void saveData(Context ctx) throws IOException, PwDbOutputException { + saveData(ctx, mUri); } - public void SaveData(Context ctx, Uri uri) throws IOException, PwDbOutputException { + public void saveData(Context ctx, Uri uri) throws IOException, PwDbOutputException { if (uri.getScheme().equals("file")) { String filename = uri.getPath(); File tempFile = new File(filename + ".tmp"); @@ -281,6 +281,16 @@ public class Database { return getPwDatabase().getName(); } + public void assignName(String name) { + getPwDatabase().setName(name); + switch (getPwDatabase().getVersion()) { + case V4: + ((PwDatabaseV4) getPwDatabase()).setNameChanged(new PwDate()); + break; + } + + } + public boolean containsDescription() { switch (getPwDatabase().getVersion()) { default: @@ -299,6 +309,31 @@ public class Database { } } + public void assignDescription(String description) { + switch (getPwDatabase().getVersion()) { + case V4: + ((PwDatabaseV4) getPwDatabase()).setDescription(description); + ((PwDatabaseV4) getPwDatabase()).setDescriptionChanged(new PwDate()); + } + } + + public String getDefaultUsername() { + switch (getPwDatabase().getVersion()) { + default: + return ""; + case V4: + return ((PwDatabaseV4) getPwDatabase()).getDefaultUserName(); + } + } + + public void setDefaultUsername(String username) { + switch (getPwDatabase().getVersion()) { + case V4: + ((PwDatabaseV4) getPwDatabase()).setDefaultUserName(username); + ((PwDatabaseV4) getPwDatabase()).setDefaultUserNameChanged(new PwDate()); + } + } + public String getEncryptionAlgorithmName(Resources resources) { return getPwDatabase().getEncryptionAlgorithm().getName(resources); } @@ -307,10 +342,18 @@ public class Database { return getPwDatabase().getKeyDerivationName(); } - public String getNumberKeyEncryptionRounds() { + public String getNumberKeyEncryptionRoundsAsString() { return Long.toString(getPwDatabase().getNumberKeyEncryptionRounds()); } + public long getNumberKeyEncryptionRounds() { + return getPwDatabase().getNumberKeyEncryptionRounds(); + } + + public void setNumberKeyEncryptionRounds(long numberRounds) throws NumberFormatException { + getPwDatabase().setNumberKeyEncryptionRounds(numberRounds); + } + public void addEntryTo(PwEntry entry, PwGroup parent) { try { switch (getPwDatabase().getVersion()) { diff --git a/app/src/main/java/com/kunzisoft/keepass/database/PwDatabaseV4.java b/app/src/main/java/com/kunzisoft/keepass/database/PwDatabaseV4.java index 0a40250b1..625302021 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/PwDatabaseV4.java +++ b/app/src/main/java/com/kunzisoft/keepass/database/PwDatabaseV4.java @@ -147,12 +147,11 @@ public class PwDatabaseV4 extends PwDatabase { numKeyEncRounds = rounds; } - public PwDate getNameChanged() { + public PwDate getNameChanged() { return nameChanged; } public void setNameChanged(PwDate nameChanged) { - // TODO change name date this.nameChanged = nameChanged; } @@ -170,7 +169,6 @@ public class PwDatabaseV4 extends PwDatabase { } public void setDescription(String description) { - // TODO change description date this.description = description; } @@ -187,7 +185,6 @@ public class PwDatabaseV4 extends PwDatabase { } public void setDefaultUserName(String defaultUserName) { - // TODO change default user name date this.defaultUserName = defaultUserName; } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/edit/SaveDB.java b/app/src/main/java/com/kunzisoft/keepass/database/edit/SaveDB.java index a60b89068..636e022ba 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/edit/SaveDB.java +++ b/app/src/main/java/com/kunzisoft/keepass/database/edit/SaveDB.java @@ -52,7 +52,7 @@ public class SaveDB extends RunnableOnFinish { if ( ! mDontSave ) { try { - mDb.SaveData(mCtx); + mDb.saveData(mCtx); } catch (IOException e) { finish(false, e.getMessage()); return; diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/MainPreferenceFragment.java b/app/src/main/java/com/kunzisoft/keepass/settings/MainPreferenceFragment.java index 45824bfb8..8f541ee81 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/MainPreferenceFragment.java +++ b/app/src/main/java/com/kunzisoft/keepass/settings/MainPreferenceFragment.java @@ -28,6 +28,8 @@ import android.support.v7.preference.PreferenceFragmentCompat; import com.kunzisoft.keepass.R; import com.kunzisoft.keepass.app.App; import com.kunzisoft.keepass.database.Database; +import com.kunzisoft.keepass.settings.preferenceDialogFragment.RoundsFixPreferenceDialogFragmentCompat; +import com.kunzisoft.keepass.settings.preference.RoundsPreference; public class MainPreferenceFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceClickListener { diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/NestedSettingsFragment.java b/app/src/main/java/com/kunzisoft/keepass/settings/NestedSettingsFragment.java index 148c08e06..0b39355b2 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/NestedSettingsFragment.java +++ b/app/src/main/java/com/kunzisoft/keepass/settings/NestedSettingsFragment.java @@ -46,6 +46,9 @@ import com.kunzisoft.keepass.database.Database; import com.kunzisoft.keepass.dialogs.StorageAccessFrameworkDialog; import com.kunzisoft.keepass.dialogs.UnavailableFeatureDialogFragment; import com.kunzisoft.keepass.fingerprint.FingerPrintHelper; +import com.kunzisoft.keepass.settings.preferenceDialogFragment.DatabaseDescriptionPreferenceDialogFragmentCompat; +import com.kunzisoft.keepass.settings.preferenceDialogFragment.DatabaseNamePreferenceDialogFragmentCompat; +import com.kunzisoft.keepass.settings.preferenceDialogFragment.RoundsPreferenceDialogFragmentCompat; import com.kunzisoft.keepass.stylish.Stylish; public class NestedSettingsFragment extends PreferenceFragmentCompat @@ -286,8 +289,10 @@ public class NestedSettingsFragment extends PreferenceFragmentCompat // Recycle bin SwitchPreference recycleBinPref = (SwitchPreference) findPreference(getString(R.string.recycle_bin_key)); + // TODO Recycle + dbGeneralPrefCategory.removePreference(recycleBinPref); // To delete if (db.isRecycleBinAvailable()) { - // TODO Recycle + recycleBinPref.setChecked(db.isRecycleBinEnabled()); recycleBinPref.setEnabled(false); } else { @@ -308,7 +313,7 @@ public class NestedSettingsFragment extends PreferenceFragmentCompat // Round encryption Preference roundPref = findPreference(getString(R.string.transform_rounds_key)); - roundPref.setSummary(db.getNumberKeyEncryptionRounds()); + roundPref.setSummary(db.getNumberKeyEncryptionRoundsAsString()); } else { Log.e(getClass().getName(), "Database isn't ready"); @@ -323,13 +328,26 @@ public class NestedSettingsFragment extends PreferenceFragmentCompat @Override public void onDisplayPreferenceDialog(Preference preference) { - // Try if the preference is one of our custom Preferences - if (preference instanceof RoundsPreference) { - assert getFragmentManager() != null; - DialogFragment dialogFragment = RoundsPreferenceDialogFragmentCompat.newInstance(preference.getKey()); + + assert getFragmentManager() != null; + + DialogFragment dialogFragment = null; + + if (preference.getKey().equals(getString(R.string.database_name_key))) { + dialogFragment = DatabaseNamePreferenceDialogFragmentCompat.newInstance(preference.getKey()); + } + if (preference.getKey().equals(getString(R.string.database_description_key))) { + dialogFragment = DatabaseDescriptionPreferenceDialogFragmentCompat.newInstance(preference.getKey()); + } + if (preference.getKey().equals(getString(R.string.transform_rounds_key))) { + dialogFragment = RoundsPreferenceDialogFragmentCompat.newInstance(preference.getKey()); + } + + if (dialogFragment != null) { dialogFragment.setTargetFragment(this, 0); dialogFragment.show(getFragmentManager(), null); } + // Could not be handled here. Try with the super method. else { super.onDisplayPreferenceDialog(preference); diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextExplanationPreference.java b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextExplanationPreference.java new file mode 100644 index 000000000..eaafca812 --- /dev/null +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextExplanationPreference.java @@ -0,0 +1,51 @@ +package com.kunzisoft.keepass.settings.preference; + +import android.content.Context; +import android.content.res.TypedArray; +import android.support.v7.preference.DialogPreference; +import android.util.AttributeSet; + +import com.kunzisoft.keepass.R; + +public class InputTextExplanationPreference extends DialogPreference { + + protected String explanation; + + public InputTextExplanationPreference(Context context) { + this(context, null); + } + + public InputTextExplanationPreference(Context context, AttributeSet attrs) { + this(context, attrs, R.attr.dialogPreferenceStyle); + } + + public InputTextExplanationPreference(Context context, AttributeSet attrs, int defStyleAttr) { + this(context, attrs, defStyleAttr, defStyleAttr); + } + + public InputTextExplanationPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + TypedArray a = context.getTheme().obtainStyledAttributes( + attrs, + R.styleable.explanationDialog, + 0, 0); + try { + setExplanation(a.getString(R.styleable.explanationDialog_explanations)); + } finally { + a.recycle(); + } + } + + @Override + public int getDialogLayoutResource() { + return R.layout.pref_dialog_input_text_explanation; + } + + public String getExplanation() { + return explanation; + } + + public void setExplanation(String explanation) { + this.explanation = explanation; + } +} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextPreference.java b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextPreference.java new file mode 100644 index 000000000..8e9bbaa46 --- /dev/null +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextPreference.java @@ -0,0 +1,31 @@ +package com.kunzisoft.keepass.settings.preference; + +import android.content.Context; +import android.support.v7.preference.DialogPreference; +import android.util.AttributeSet; + +import com.kunzisoft.keepass.R; + +public class InputTextPreference extends DialogPreference { + + public InputTextPreference(Context context) { + this(context, null); + } + + public InputTextPreference(Context context, AttributeSet attrs) { + this(context, attrs, R.attr.dialogPreferenceStyle); + } + + public InputTextPreference(Context context, AttributeSet attrs, int defStyleAttr) { + this(context, attrs, defStyleAttr, defStyleAttr); + } + + public InputTextPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @Override + public int getDialogLayoutResource() { + return R.layout.pref_dialog_input_text; + } +} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/RoundsPreference.java b/app/src/main/java/com/kunzisoft/keepass/settings/preference/RoundsPreference.java similarity index 80% rename from app/src/main/java/com/kunzisoft/keepass/settings/RoundsPreference.java rename to app/src/main/java/com/kunzisoft/keepass/settings/preference/RoundsPreference.java index 5f5cbb5bf..5a744443c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/RoundsPreference.java +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preference/RoundsPreference.java @@ -17,19 +17,17 @@ * along with KeePass DX. If not, see . * */ -package com.kunzisoft.keepass.settings; +package com.kunzisoft.keepass.settings.preference; import android.content.Context; import android.content.res.TypedArray; -import android.support.v7.preference.DialogPreference; import android.util.AttributeSet; import com.kunzisoft.keepass.R; -public class RoundsPreference extends DialogPreference { +public class RoundsPreference extends InputTextExplanationPreference { private long mRounds; - private String explanations; public RoundsPreference(Context context) { this(context, null); @@ -45,15 +43,6 @@ public class RoundsPreference extends DialogPreference { public RoundsPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); - TypedArray a = context.getTheme().obtainStyledAttributes( - attrs, - R.styleable.RoundsDialog, - 0, 0); - try { - setExplanations(a.getString(R.styleable.RoundsDialog_explanations)); - } finally { - a.recycle(); - } } @Override @@ -61,14 +50,6 @@ public class RoundsPreference extends DialogPreference { return R.layout.pref_dialog_rounds; } - public String getExplanations() { - return explanations; - } - - public void setExplanations(String explanations) { - this.explanations = explanations; - } - public long getRounds() { return mRounds; } diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/DatabaseDescriptionPreferenceDialogFragmentCompat.java b/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/DatabaseDescriptionPreferenceDialogFragmentCompat.java new file mode 100644 index 000000000..f72d500f8 --- /dev/null +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/DatabaseDescriptionPreferenceDialogFragmentCompat.java @@ -0,0 +1,75 @@ +package com.kunzisoft.keepass.settings.preferenceDialogFragment; + +import android.content.Context; +import android.os.Bundle; +import android.os.Handler; +import android.view.View; + +import com.kunzisoft.keepass.database.edit.OnFinish; + +public class DatabaseDescriptionPreferenceDialogFragmentCompat extends DatabaseSavePreferenceDialogFragmentCompat { + + public static DatabaseDescriptionPreferenceDialogFragmentCompat newInstance( + String key) { + final DatabaseDescriptionPreferenceDialogFragmentCompat + fragment = new DatabaseDescriptionPreferenceDialogFragmentCompat(); + final Bundle b = new Bundle(1); + b.putString(ARG_KEY, key); + fragment.setArguments(b); + + return fragment; + } + + @Override + protected void onBindDialogView(View view) { + super.onBindDialogView(view); + + setInputText(database.getDescription()); + } + + @Override + public void onDialogClosed(boolean positiveResult) { + if ( positiveResult ) { + assert getContext() != null; + + String dbDescription = getInputText(); + String oldDescription = database.getDescription(); + database.assignDescription(dbDescription); + + Handler handler = new Handler(); + setAfterSaveDatabase(new AfterDescriptionSave(getContext(), handler, dbDescription, oldDescription)); + } + + super.onDialogClosed(positiveResult); + } + + private class AfterDescriptionSave extends OnFinish { + + private String mNewDescription; + private String mOldDescription; + private Context mCtx; + + AfterDescriptionSave(Context ctx, Handler handler, String newDescription, String oldDescription) { + super(handler); + + mCtx = ctx; + mNewDescription = newDescription; + mOldDescription = oldDescription; + } + + @Override + public void run() { + String descriptionToShow = mNewDescription; + + if (!mSuccess) { + displayMessage(mCtx); + database.assignDescription(mOldDescription); + database.assignDescription(mOldDescription); + } + + getPreference().setSummary(descriptionToShow); + + super.run(); + } + } +} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/DatabaseNamePreferenceDialogFragmentCompat.java b/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/DatabaseNamePreferenceDialogFragmentCompat.java new file mode 100644 index 000000000..59efc8350 --- /dev/null +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/DatabaseNamePreferenceDialogFragmentCompat.java @@ -0,0 +1,74 @@ +package com.kunzisoft.keepass.settings.preferenceDialogFragment; + +import android.content.Context; +import android.os.Bundle; +import android.os.Handler; +import android.view.View; + +import com.kunzisoft.keepass.database.edit.OnFinish; + +public class DatabaseNamePreferenceDialogFragmentCompat extends DatabaseSavePreferenceDialogFragmentCompat { + + public static DatabaseNamePreferenceDialogFragmentCompat newInstance( + String key) { + final DatabaseNamePreferenceDialogFragmentCompat + fragment = new DatabaseNamePreferenceDialogFragmentCompat(); + final Bundle b = new Bundle(1); + b.putString(ARG_KEY, key); + fragment.setArguments(b); + + return fragment; + } + + @Override + protected void onBindDialogView(View view) { + super.onBindDialogView(view); + + setInputText(database.getName()); + } + + @Override + public void onDialogClosed(boolean positiveResult) { + if ( positiveResult ) { + assert getContext() != null; + + String dbName = getInputText(); + String oldName = database.getName(); + database.assignName(dbName); + + Handler handler = new Handler(); + setAfterSaveDatabase(new AfterNameSave(getContext(), handler, dbName, oldName)); + } + + super.onDialogClosed(positiveResult); + } + + private class AfterNameSave extends OnFinish { + + private String mNewName; + private String mOldName; + private Context mCtx; + + AfterNameSave(Context ctx, Handler handler, String newName, String oldName) { + super(handler); + + mCtx = ctx; + mNewName = newName; + mOldName = oldName; + } + + @Override + public void run() { + String nameToShow = mNewName; + + if (!mSuccess) { + displayMessage(mCtx); + database.assignName(mOldName); + } + + getPreference().setSummary(nameToShow); + + super.run(); + } + } +} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/DatabaseSavePreferenceDialogFragmentCompat.java b/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/DatabaseSavePreferenceDialogFragmentCompat.java new file mode 100644 index 000000000..950c2dd9f --- /dev/null +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/DatabaseSavePreferenceDialogFragmentCompat.java @@ -0,0 +1,41 @@ +package com.kunzisoft.keepass.settings.preferenceDialogFragment; + +import android.view.View; + +import com.kunzisoft.keepass.R; +import com.kunzisoft.keepass.app.App; +import com.kunzisoft.keepass.database.Database; +import com.kunzisoft.keepass.database.edit.OnFinish; +import com.kunzisoft.keepass.database.edit.SaveDB; +import com.kunzisoft.keepass.tasks.ProgressTask; + +public abstract class DatabaseSavePreferenceDialogFragmentCompat extends InputPreferenceDialogFragmentCompat { + + protected Database database; + + private OnFinish afterSaveDatabase; + + @Override + protected void onBindDialogView(View view) { + super.onBindDialogView(view); + + database = App.getDB(); + } + + @Override + public void onDialogClosed(boolean positiveResult) { + if ( positiveResult ) { + assert getContext() != null; + + if (database != null && afterSaveDatabase != null) { + SaveDB save = new SaveDB(getContext(), database, afterSaveDatabase); + ProgressTask pt = new ProgressTask(getContext(), save, R.string.saving_database); + pt.run(); + } + } + } + + public void setAfterSaveDatabase(OnFinish afterSaveDatabase) { + this.afterSaveDatabase = afterSaveDatabase; + } +} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/InputPreferenceDialogFragmentCompat.java b/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/InputPreferenceDialogFragmentCompat.java new file mode 100644 index 000000000..cfa326485 --- /dev/null +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/InputPreferenceDialogFragmentCompat.java @@ -0,0 +1,43 @@ +package com.kunzisoft.keepass.settings.preferenceDialogFragment; + +import android.support.v7.preference.PreferenceDialogFragmentCompat; +import android.view.View; +import android.widget.EditText; +import android.widget.TextView; + +import com.kunzisoft.keepass.R; + +public abstract class InputPreferenceDialogFragmentCompat extends PreferenceDialogFragmentCompat { + + private EditText inputTextView; + private TextView textExplanationView; + + @Override + protected void onBindDialogView(View view) { + super.onBindDialogView(view); + + inputTextView = view.findViewById(R.id.input_text); + textExplanationView = view.findViewById(R.id.explanation_text); + } + + public String getInputText() { + return this.inputTextView.getText().toString(); + } + + public void setInputText(String inputText) { + this.inputTextView.setText(inputText); + this.inputTextView.setSelection(this.inputTextView.getText().length()); + } + + public String getExplanationText() { + if (textExplanationView != null) + return textExplanationView.getText().toString(); + else + return ""; + } + + public void setExplanationText(String explanationText) { + if (textExplanationView != null) + this.textExplanationView.setText(explanationText); + } +} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/RoundsFixPreferenceDialogFragmentCompat.java b/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/RoundsFixPreferenceDialogFragmentCompat.java similarity index 79% rename from app/src/main/java/com/kunzisoft/keepass/settings/RoundsFixPreferenceDialogFragmentCompat.java rename to app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/RoundsFixPreferenceDialogFragmentCompat.java index 4b0a4677c..d5e71a943 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/RoundsFixPreferenceDialogFragmentCompat.java +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/RoundsFixPreferenceDialogFragmentCompat.java @@ -17,20 +17,17 @@ * along with KeePass DX. If not, see . * */ -package com.kunzisoft.keepass.settings; +package com.kunzisoft.keepass.settings.preferenceDialogFragment; import android.os.Bundle; import android.support.v7.preference.DialogPreference; -import android.support.v7.preference.PreferenceDialogFragmentCompat; import android.view.View; -import android.widget.TextView; import android.widget.Toast; import com.kunzisoft.keepass.R; +import com.kunzisoft.keepass.settings.preference.RoundsPreference; -public class RoundsFixPreferenceDialogFragmentCompat extends PreferenceDialogFragmentCompat { - - private TextView mRoundsView; +public class RoundsFixPreferenceDialogFragmentCompat extends InputPreferenceDialogFragmentCompat { public static RoundsFixPreferenceDialogFragmentCompat newInstance( String key) { @@ -47,14 +44,11 @@ public class RoundsFixPreferenceDialogFragmentCompat extends PreferenceDialogFra protected void onBindDialogView(View view) { super.onBindDialogView(view); - TextView textDescriptionView = view.findViewById(R.id.rounds_explanation); - mRoundsView = view.findViewById(R.id.rounds); - DialogPreference preference = getPreference(); if (preference instanceof RoundsPreference) { - textDescriptionView.setText(((RoundsPreference) preference).getExplanations()); + setExplanationText(((RoundsPreference) preference).getExplanation()); long numRounds = ((RoundsPreference) preference).getRounds(); - mRoundsView.setText(String.valueOf(numRounds)); + setInputText(String.valueOf(numRounds)); } } @@ -63,7 +57,7 @@ public class RoundsFixPreferenceDialogFragmentCompat extends PreferenceDialogFra if ( positiveResult ) { long rounds; try { - String strRounds = mRoundsView.getText().toString(); + String strRounds = getInputText(); rounds = Long.valueOf(strRounds); } catch (NumberFormatException e) { Toast.makeText(getContext(), R.string.error_rounds_not_number, Toast.LENGTH_LONG).show(); diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/RoundsPreferenceDialogFragmentCompat.java b/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/RoundsPreferenceDialogFragmentCompat.java similarity index 65% rename from app/src/main/java/com/kunzisoft/keepass/settings/RoundsPreferenceDialogFragmentCompat.java rename to app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/RoundsPreferenceDialogFragmentCompat.java index 58ad00074..afc861034 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/RoundsPreferenceDialogFragmentCompat.java +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preferenceDialogFragment/RoundsPreferenceDialogFragmentCompat.java @@ -17,27 +17,18 @@ * along with KeePass DX. If not, see . * */ -package com.kunzisoft.keepass.settings; +package com.kunzisoft.keepass.settings.preferenceDialogFragment; import android.content.Context; import android.os.Bundle; import android.os.Handler; -import android.support.v7.preference.PreferenceDialogFragmentCompat; import android.view.View; -import android.widget.TextView; import android.widget.Toast; import com.kunzisoft.keepass.R; -import com.kunzisoft.keepass.app.App; -import com.kunzisoft.keepass.database.PwDatabase; import com.kunzisoft.keepass.database.edit.OnFinish; -import com.kunzisoft.keepass.database.edit.SaveDB; -import com.kunzisoft.keepass.tasks.ProgressTask; -public class RoundsPreferenceDialogFragmentCompat extends PreferenceDialogFragmentCompat { - - private PwDatabase mPM; - private TextView mRoundsView; +public class RoundsPreferenceDialogFragmentCompat extends DatabaseSavePreferenceDialogFragmentCompat { public static RoundsPreferenceDialogFragmentCompat newInstance( String key) { @@ -54,13 +45,8 @@ public class RoundsPreferenceDialogFragmentCompat extends PreferenceDialogFragme protected void onBindDialogView(View view) { super.onBindDialogView(view); - mRoundsView = view.findViewById(R.id.rounds); - - // Get the number or rounds from the related Preference - mPM = App.getDB().getPwDatabase(); - long numRounds = mPM.getNumberKeyEncryptionRounds(); - - mRoundsView.setText(String.valueOf(numRounds)); + setExplanationText(getString(R.string.rounds_explanation)); + setInputText(database.getNumberKeyEncryptionRoundsAsString()); } @Override @@ -70,7 +56,7 @@ public class RoundsPreferenceDialogFragmentCompat extends PreferenceDialogFragme long rounds; try { - String strRounds = mRoundsView.getText().toString(); + String strRounds = getInputText(); rounds = Long.parseLong(strRounds); } catch (NumberFormatException e) { Toast.makeText(getContext(), R.string.error_rounds_not_number, Toast.LENGTH_LONG).show(); @@ -81,28 +67,28 @@ public class RoundsPreferenceDialogFragmentCompat extends PreferenceDialogFragme rounds = 1; } - long oldRounds = mPM.getNumberKeyEncryptionRounds(); + long oldRounds = database.getNumberKeyEncryptionRounds(); try { - mPM.setNumberKeyEncryptionRounds(rounds); + database.setNumberKeyEncryptionRounds(rounds); } catch (NumberFormatException e) { Toast.makeText(getContext(), R.string.error_rounds_too_large, Toast.LENGTH_LONG).show(); - mPM.setNumberKeyEncryptionRounds(Integer.MAX_VALUE); + database.setNumberKeyEncryptionRounds(Integer.MAX_VALUE); } Handler handler = new Handler(); - SaveDB save = new SaveDB(getContext(), App.getDB(), new AfterSave(getContext(), handler, rounds, oldRounds)); - ProgressTask pt = new ProgressTask(getContext(), save, R.string.saving_database); - pt.run(); + setAfterSaveDatabase(new AfterRoundSave(getContext(), handler, rounds, oldRounds)); } + + super.onDialogClosed(positiveResult); } - private class AfterSave extends OnFinish { + private class AfterRoundSave extends OnFinish { private long mNewRounds; private long mOldRounds; private Context mCtx; - public AfterSave(Context ctx, Handler handler, long newRounds, long oldRounds) { + AfterRoundSave(Context ctx, Handler handler, long newRounds, long oldRounds) { super(handler); mCtx = ctx; @@ -116,7 +102,7 @@ public class RoundsPreferenceDialogFragmentCompat extends PreferenceDialogFragme if (!mSuccess) { displayMessage(mCtx); - mPM.setNumberKeyEncryptionRounds(mOldRounds); + database.setNumberKeyEncryptionRounds(mOldRounds); } getPreference().setSummary(String.valueOf(roundsToShow)); diff --git a/app/src/main/res/layout/pref_dialog_input_text.xml b/app/src/main/res/layout/pref_dialog_input_text.xml new file mode 100644 index 000000000..6c7be512d --- /dev/null +++ b/app/src/main/res/layout/pref_dialog_input_text.xml @@ -0,0 +1,33 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/pref_dialog_input_text_explanation.xml b/app/src/main/res/layout/pref_dialog_input_text_explanation.xml new file mode 100644 index 000000000..e89af7974 --- /dev/null +++ b/app/src/main/res/layout/pref_dialog_input_text_explanation.xml @@ -0,0 +1,40 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/pref_dialog_rounds.xml b/app/src/main/res/layout/pref_dialog_rounds.xml index 562c089de..7c91ecc46 100644 --- a/app/src/main/res/layout/pref_dialog_rounds.xml +++ b/app/src/main/res/layout/pref_dialog_rounds.xml @@ -27,15 +27,14 @@ android:importantForAutofill="noExcludeDescendants" tools:targetApi="o"> + style="@style/KeepassDXStyle.TextAppearance.SmallTitle"/> Rijndael (AES) Arrel Passades d\'encriptació - Més passades d\'encriptació dónen protecció adicional contra atacs de força bruta, però poden alentir molt carregar i guardar la base de dades. + Més passades d\'encriptació dónen protecció adicional contra atacs de força bruta, però poden alentir molt carregar i guardar la base de dades. passades Guardant la base de dades… Espai diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 6f006a700..762e9f76d 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -143,7 +143,7 @@ Rijndael (AES) Kořen Počet zašifrování - Vyšší počet opakování šifrování zvýší bezpečnost proti hrubému útoku, ale může výrazně zpomalit načítání a ukládání. + Vyšší počet opakování šifrování zvýší bezpečnost proti hrubému útoku, ale může výrazně zpomalit načítání a ukládání. opakování Ukládám databázi… Místo diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index ad04fce9b..dd8ce758d 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -142,7 +142,7 @@ Rijndael (AES) Root Krypterings-gentagelser - Højere krypterings-gentagelser giver øget beskyttelse imod brute-force angreb, men kan påvirke læsnings- og skrivehastigheden betydentligt. + Højere krypterings-gentagelser giver øget beskyttelse imod brute-force angreb, men kan påvirke læsnings- og skrivehastigheden betydentligt. gentagelser Gemmer database… Mellemrum diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index e107b8afb..170ce17df 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -148,7 +148,7 @@ Rijndael (AES) Start Schlüsseltransformationen - Je höher die Anzahl der Schlüsseltransformationen, desto besser ist der Schutz gegen Wörterbuch- oder Brute-Force-Angriffe. Allerdings dauert dann auch das Laden und Speichern der Datenbank entsprechend länger. + Je höher die Anzahl der Schlüsseltransformationen, desto besser ist der Schutz gegen Wörterbuch- oder Brute-Force-Angriffe. Allerdings dauert dann auch das Laden und Speichern der Datenbank entsprechend länger. Schlüsseltransformationen Datenbank reparieren Schlüsseltransformationen vor Datenbankkorruption diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 100a79446..727dd23f9 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -140,7 +140,7 @@ Rijndael (AES) Ριζικός Κατάλογος Κύκλοι Κρυπτογράφησης - Μεγαλύτεροι κύκλοι κρυπτογράφησης παρέχουν πρόσθετη προστασία ενάντια σε επιθέσεις brute force, αλλά μπορεί να επιβραδύνει πολύ την φόρτωση και την αποθήκευση. + Μεγαλύτεροι κύκλοι κρυπτογράφησης παρέχουν πρόσθετη προστασία ενάντια σε επιθέσεις brute force, αλλά μπορεί να επιβραδύνει πολύ την φόρτωση και την αποθήκευση. κύκλοι Αποθήκευση βάσης… Κενό diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 68f258e93..3aefebc14 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -128,7 +128,7 @@ Spanish translation by José I. Paños. Updated by David García-Abad (23-09-201 Rijndael (AES) Raíz Pasadas de Cifrado - Un alto número de pasadas de cifrado proporciona protección adicional contra ataques de fuerza bruta, pero puede ralentizar mucho el cargado y el guardado. + Un alto número de pasadas de cifrado proporciona protección adicional contra ataques de fuerza bruta, pero puede ralentizar mucho el cargado y el guardado. pasadas Guardando base de datos… Espacio diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index c29fb45fd..fc95d1051 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -140,7 +140,7 @@ Rijndael (AES) Root Enkriptatzeko Rondak - Enkriptatzeko ronda gehiago indar gordineko atakeen kontrako babes gehiago ematen dute, baina kargatzea eta gordetzea moteldu dezakete modu nabarmenean. + Enkriptatzeko ronda gehiago indar gordineko atakeen kontrako babes gehiago ematen dute, baina kargatzea eta gordetzea moteldu dezakete modu nabarmenean. rondak Datubasea gordetzen… Lekua diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index c0d945f08..a92f81e85 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -138,7 +138,7 @@ Rijndael (AES) Juuri Salauskierroksia - Suurempi kierrosten määrä parantaa suojausta raa\'alla voimalla tehdyiltä murtoyrityksiltä, mutta voi todella hidastaa lataamista ja tallentamista. + Suurempi kierrosten määrä parantaa suojausta raa\'alla voimalla tehdyiltä murtoyrityksiltä, mutta voi todella hidastaa lataamista ja tallentamista. kierroksia Tallennetaan tietokantaa… Tila diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index f7fd26190..1d7e832d6 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -152,7 +152,7 @@ Rijndael (AES) Racine Tours de transformation - Un niveau de chiffrement supérieur assure une protection supplémentaire contre les attaques de force brute, mais peut considérablement ralentir l\'ouverture et l\'enregistrement. + Un niveau de chiffrement supérieur assure une protection supplémentaire contre les attaques de force brute, mais peut considérablement ralentir l\'ouverture et l\'enregistrement. niveaux Résolution de la base de données Clé de niveau de chiffrement avant corruption diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 469f346fa..5b66b3774 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -138,7 +138,7 @@ Rijndael (AES) Gyökérkönyvár Titkosítási menetek száma - A titkosítási menetek számának növelésével extra védelemet kaphat a brute force támadások ellen, ugyanakkor jelentősen lassíthatja az adatbázis betöltését vagy mentését. + A titkosítási menetek számának növelésével extra védelemet kaphat a brute force támadások ellen, ugyanakkor jelentősen lassíthatja az adatbázis betöltését vagy mentését. Menetek száma Adatbázis mentése… Szóköz diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 1bf46c072..1dc798446 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -127,7 +127,7 @@ Rijndael (AES) Principale Livello cifratura - Un livello di cifratura elevato fornisce una protezione maggiore contro attacchi di tipo "forza brutta", ma può veramente rallentare il caricamento e il salvataggio. + Un livello di cifratura elevato fornisce una protezione maggiore contro attacchi di tipo "forza brutta", ma può veramente rallentare il caricamento e il salvataggio. livello Salvataggio database… Spazio diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 4bc875604..af39f32bf 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -137,7 +137,7 @@ שמור קובץ מפתח הסר סיבובי הצפנה - מספר סיבובי הצפנה גבוה יותר מספר הגה טובה יותר נגד התקפות, אבל יכול להעלות בהרבה את זמן הטעינה והשמירה. + מספר סיבובי הצפנה גבוה יותר מספר הגה טובה יותר נגד התקפות, אבל יכול להעלות בהרבה את זמן הטעינה והשמירה. סיבובים שומר מסד נתונים… גודל diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 835017a37..693227788 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -124,7 +124,7 @@ Rijndael (AES) Root 暗号化レベル - 暗号化レベルを高く設定するとブルートフォース(総当り)攻撃に強くなりますが、保存や読込に時間が掛かります。 + 暗号化レベルを高く設定するとブルートフォース(総当り)攻撃に強くなりますが、保存や読込に時間が掛かります。 レベル データベースを保存中… 半角スペース diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 0872f6176..050bcf6ba 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -118,7 +118,7 @@ Rijndael (AES) Root Šifrēšanas līmeņi - Augstākā līmeņa šifrēšana sniedz lielāku aizsardzību, bet palēnina darbības ar datu bāzēm. + Augstākā līmeņa šifrēšana sniedz lielāku aizsardzību, bet palēnina darbības ar datu bāzēm. līmeņi Datu bāzes saglabāšana… Atstarpe diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index e7c0944ec..80b4b3eea 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -126,7 +126,7 @@ Rijndael (AES) Top Encryptie-cycli - Een hoger aantal encryptie-cycli geeft bijkomende bescherming tegen brute-force aanvallen, maar kan het laden en opslaan sterk vertragen. + Een hoger aantal encryptie-cycli geeft bijkomende bescherming tegen brute-force aanvallen, maar kan het laden en opslaan sterk vertragen. cycli Database wordt opgeslagen… Ruimte diff --git a/app/src/main/res/values-nn/strings.xml b/app/src/main/res/values-nn/strings.xml index 7a2010a94..a133c8d6b 100644 --- a/app/src/main/res/values-nn/strings.xml +++ b/app/src/main/res/values-nn/strings.xml @@ -124,7 +124,7 @@ Rijndael (AES) Rot Krypteringsomgangar - Fleire krypteringsomgangar gjev tilleggsvern mot rå makt-åtak, men kan òg gjera lasting og lagring mykje tregare. + Fleire krypteringsomgangar gjev tilleggsvern mot rå makt-åtak, men kan òg gjera lasting og lagring mykje tregare. omgangar Lagrar databasen … Mellomrom diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 945ed802c..4a4cbebf7 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -124,7 +124,7 @@ along with KeePass DX. If not, see . Rijndael (AES) Root Złożoność szyfrowania - Większa złożoność szyfrowania zapewnia dodatkowe zabezpieczenie przed atakiem brute force, ale może spowolnić wczytywanie i zapisywanie bazy danych. + Większa złożoność szyfrowania zapewnia dodatkowe zabezpieczenie przed atakiem brute force, ale może spowolnić wczytywanie i zapisywanie bazy danych. Kluczowe rundy szyfrowania przed zniszczeniem Jeśli twoja baza danych została uszkodzona przez KeePassDroid w wersji 2.2.0.0 do 2.2.0.6, wprowadź liczbę rund użytych poprzednio, a to pozwoli ci otworzyć twoją bazę danych. złożoność diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 629d005ab..fae44c5c1 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -127,7 +127,7 @@ Rijndael (AES) Raiz Rodadas de criptografia - Maior número de rodadas de criptografia adiciona mais proteção contra ataques de força bruta, porém pode tornar o processo de carregar e salvar mais lentos. + Maior número de rodadas de criptografia adiciona mais proteção contra ataques de força bruta, porém pode tornar o processo de carregar e salvar mais lentos. rodadas Salvando banco de dados… Spaço diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 987d15dcc..a96c93592 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -145,7 +145,7 @@ Rijndael (AES) Raiz Rondas de encriptação - Rondas de encriptação altas providenciam proteção adicional contra ataques de força bruta, mas podem atrasar o tempo de carregamento e armazenamento. + Rondas de encriptação altas providenciam proteção adicional contra ataques de força bruta, mas podem atrasar o tempo de carregamento e armazenamento. rondas A guardar base de dados… Espaço diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 245cdc9f5..ad664e56b 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -140,7 +140,7 @@ Rijndael (AES) База Проходы шифрования - Больше проходов – выше стойкость базы к подбору пароля, но медленнее открытие и сохранение + Больше проходов – выше стойкость базы к подбору пароля, но медленнее открытие и сохранение Проходы до поломки базы Если база была повреждена в KeePassDroid 2.2.0.0–2.2.0.6, введите ранее используемое количество проходов шифрования, чтобы открыть её проходы diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 2afc818d4..cdf0f3f43 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -124,7 +124,7 @@ Rijndael (AES) Root Šifrovacie opakovania - Vyššie opakovania šifrovania dávajú vyššiu ochranu proti útokom hrubou silou, ale môžu spomaliť načítavanie a ukladanie. + Vyššie opakovania šifrovania dávajú vyššiu ochranu proti útokom hrubou silou, ale môžu spomaliť načítavanie a ukladanie. opakovania Ukladám databázu… Miesto diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 89914789a..f281a0ec1 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -137,7 +137,7 @@ Rijndael (AES) Root Krypteringsrundor - Högre antal krypteringsrundor ger ytterligare skydd mot "brute force"-attacker, men kan göra att ladda och spara går betydligt långsammare. + Högre antal krypteringsrundor ger ytterligare skydd mot "brute force"-attacker, men kan göra att ladda och spara går betydligt långsammare. rundor Sparar databas… Mellanslag diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 1bbb01d23..5269b2417 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -124,7 +124,7 @@ Rijndael (AES) Корінь Циклів шифрування - Велика кількість циклів шифрування забезпечує додатковий захист від грубих атак, але може дійсно уповільнити завантаження та захист. + Велика кількість циклів шифрування забезпечує додатковий захист від грубих атак, але може дійсно уповільнити завантаження та захист. цикли Збереження бази даних… Пропуск diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index cfbf8a3f3..307298680 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -121,7 +121,7 @@ Rijndael加密(AES) Root 加密次数 - 更高级的加密次数对暴力攻击能提供额外保护,但也会增加加载和保存的时间。 + 更高级的加密次数对暴力攻击能提供额外保护,但也会增加加载和保存的时间。 次数 正在保存数据库… 空格 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 927b58975..c45afa716 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -121,7 +121,7 @@ Rijndael加密(AES) Root 加密次數 - 更高級的加密次數對暴力攻擊能提供額外保護,但也會增加載入和保存的時間。 + 更高級的加密次數對暴力攻擊能提供額外保護,但也會增加載入和保存的時間。 次數 正在保存資料庫… 空格 diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 2ce70803a..bd93afdab 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -29,7 +29,7 @@ - + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bfb9c97ca..1f15bedf7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -154,7 +154,7 @@ Rijndael (AES) Root Transform Rounds - Higher encryption rounds provide additional protection against brute force attacks, but can really slow down loading and saving. + Higher encryption rounds provide additional protection against brute force attacks, but can really slow down loading and saving. Fix of database Key encryption rounds before corruption If your database was corrupted, enter the number of rounds used previously to try to open your database. diff --git a/app/src/main/res/xml/db_preferences.xml b/app/src/main/res/xml/db_preferences.xml index 2b773be5d..8fc725e6b 100644 --- a/app/src/main/res/xml/db_preferences.xml +++ b/app/src/main/res/xml/db_preferences.xml @@ -17,31 +17,35 @@ You should have received a copy of the GNU General Public License along with KeePass DX. If not, see . --> - + - - + - + android:title="@string/database_description_title" + android:positiveButtonText="@string/entry_save" + android:negativeButtonText="@string/entry_cancel"/> + @@ -56,10 +60,11 @@ android:key="@string/key_derivation_function_key" android:persistent="false" android:title="@string/key_derivation_function"/> - diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 7c9a19f49..08b0cb2a9 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -41,7 +41,7 @@ android:title="@string/menu_db_settings" android:icon="@drawable/ic_data_usage_prefs_24dp" android:persistent="false" /> -