Add dialogs to save Db name and description

This commit is contained in:
J-Jamet
2018-04-06 16:51:25 +02:00
parent b8e97ec53b
commit 60eff63569
46 changed files with 535 additions and 122 deletions

View File

@@ -218,11 +218,11 @@ public class Database {
return null; return null;
} }
public void SaveData(Context ctx) throws IOException, PwDbOutputException { public void saveData(Context ctx) throws IOException, PwDbOutputException {
SaveData(ctx, mUri); 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")) { if (uri.getScheme().equals("file")) {
String filename = uri.getPath(); String filename = uri.getPath();
File tempFile = new File(filename + ".tmp"); File tempFile = new File(filename + ".tmp");
@@ -281,6 +281,16 @@ public class Database {
return getPwDatabase().getName(); 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() { public boolean containsDescription() {
switch (getPwDatabase().getVersion()) { switch (getPwDatabase().getVersion()) {
default: 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) { public String getEncryptionAlgorithmName(Resources resources) {
return getPwDatabase().getEncryptionAlgorithm().getName(resources); return getPwDatabase().getEncryptionAlgorithm().getName(resources);
} }
@@ -307,10 +342,18 @@ public class Database {
return getPwDatabase().getKeyDerivationName(); return getPwDatabase().getKeyDerivationName();
} }
public String getNumberKeyEncryptionRounds() { public String getNumberKeyEncryptionRoundsAsString() {
return Long.toString(getPwDatabase().getNumberKeyEncryptionRounds()); 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) { public void addEntryTo(PwEntry entry, PwGroup parent) {
try { try {
switch (getPwDatabase().getVersion()) { switch (getPwDatabase().getVersion()) {

View File

@@ -147,12 +147,11 @@ public class PwDatabaseV4 extends PwDatabase<PwGroupV4, PwEntryV4> {
numKeyEncRounds = rounds; numKeyEncRounds = rounds;
} }
public PwDate getNameChanged() { public PwDate getNameChanged() {
return nameChanged; return nameChanged;
} }
public void setNameChanged(PwDate nameChanged) { public void setNameChanged(PwDate nameChanged) {
// TODO change name date
this.nameChanged = nameChanged; this.nameChanged = nameChanged;
} }
@@ -170,7 +169,6 @@ public class PwDatabaseV4 extends PwDatabase<PwGroupV4, PwEntryV4> {
} }
public void setDescription(String description) { public void setDescription(String description) {
// TODO change description date
this.description = description; this.description = description;
} }
@@ -187,7 +185,6 @@ public class PwDatabaseV4 extends PwDatabase<PwGroupV4, PwEntryV4> {
} }
public void setDefaultUserName(String defaultUserName) { public void setDefaultUserName(String defaultUserName) {
// TODO change default user name date
this.defaultUserName = defaultUserName; this.defaultUserName = defaultUserName;
} }

View File

@@ -52,7 +52,7 @@ public class SaveDB extends RunnableOnFinish {
if ( ! mDontSave ) { if ( ! mDontSave ) {
try { try {
mDb.SaveData(mCtx); mDb.saveData(mCtx);
} catch (IOException e) { } catch (IOException e) {
finish(false, e.getMessage()); finish(false, e.getMessage());
return; return;

View File

@@ -28,6 +28,8 @@ import android.support.v7.preference.PreferenceFragmentCompat;
import com.kunzisoft.keepass.R; import com.kunzisoft.keepass.R;
import com.kunzisoft.keepass.app.App; import com.kunzisoft.keepass.app.App;
import com.kunzisoft.keepass.database.Database; 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 { public class MainPreferenceFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceClickListener {

View File

@@ -46,6 +46,9 @@ import com.kunzisoft.keepass.database.Database;
import com.kunzisoft.keepass.dialogs.StorageAccessFrameworkDialog; import com.kunzisoft.keepass.dialogs.StorageAccessFrameworkDialog;
import com.kunzisoft.keepass.dialogs.UnavailableFeatureDialogFragment; import com.kunzisoft.keepass.dialogs.UnavailableFeatureDialogFragment;
import com.kunzisoft.keepass.fingerprint.FingerPrintHelper; 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; import com.kunzisoft.keepass.stylish.Stylish;
public class NestedSettingsFragment extends PreferenceFragmentCompat public class NestedSettingsFragment extends PreferenceFragmentCompat
@@ -286,8 +289,10 @@ public class NestedSettingsFragment extends PreferenceFragmentCompat
// Recycle bin // Recycle bin
SwitchPreference recycleBinPref = (SwitchPreference) findPreference(getString(R.string.recycle_bin_key)); SwitchPreference recycleBinPref = (SwitchPreference) findPreference(getString(R.string.recycle_bin_key));
// TODO Recycle
dbGeneralPrefCategory.removePreference(recycleBinPref); // To delete
if (db.isRecycleBinAvailable()) { if (db.isRecycleBinAvailable()) {
// TODO Recycle
recycleBinPref.setChecked(db.isRecycleBinEnabled()); recycleBinPref.setChecked(db.isRecycleBinEnabled());
recycleBinPref.setEnabled(false); recycleBinPref.setEnabled(false);
} else { } else {
@@ -308,7 +313,7 @@ public class NestedSettingsFragment extends PreferenceFragmentCompat
// Round encryption // Round encryption
Preference roundPref = findPreference(getString(R.string.transform_rounds_key)); Preference roundPref = findPreference(getString(R.string.transform_rounds_key));
roundPref.setSummary(db.getNumberKeyEncryptionRounds()); roundPref.setSummary(db.getNumberKeyEncryptionRoundsAsString());
} else { } else {
Log.e(getClass().getName(), "Database isn't ready"); Log.e(getClass().getName(), "Database isn't ready");
@@ -323,13 +328,26 @@ public class NestedSettingsFragment extends PreferenceFragmentCompat
@Override @Override
public void onDisplayPreferenceDialog(Preference preference) { public void onDisplayPreferenceDialog(Preference preference) {
// Try if the preference is one of our custom Preferences
if (preference instanceof RoundsPreference) { assert getFragmentManager() != null;
assert getFragmentManager() != null;
DialogFragment dialogFragment = RoundsPreferenceDialogFragmentCompat.newInstance(preference.getKey()); 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.setTargetFragment(this, 0);
dialogFragment.show(getFragmentManager(), null); dialogFragment.show(getFragmentManager(), null);
} }
// Could not be handled here. Try with the super method. // Could not be handled here. Try with the super method.
else { else {
super.onDisplayPreferenceDialog(preference); super.onDisplayPreferenceDialog(preference);

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -17,19 +17,17 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.settings; package com.kunzisoft.keepass.settings.preference;
import android.content.Context; import android.content.Context;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.support.v7.preference.DialogPreference;
import android.util.AttributeSet; import android.util.AttributeSet;
import com.kunzisoft.keepass.R; import com.kunzisoft.keepass.R;
public class RoundsPreference extends DialogPreference { public class RoundsPreference extends InputTextExplanationPreference {
private long mRounds; private long mRounds;
private String explanations;
public RoundsPreference(Context context) { public RoundsPreference(Context context) {
this(context, null); this(context, null);
@@ -45,15 +43,6 @@ public class RoundsPreference extends DialogPreference {
public RoundsPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { public RoundsPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, 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 @Override
@@ -61,14 +50,6 @@ public class RoundsPreference extends DialogPreference {
return R.layout.pref_dialog_rounds; return R.layout.pref_dialog_rounds;
} }
public String getExplanations() {
return explanations;
}
public void setExplanations(String explanations) {
this.explanations = explanations;
}
public long getRounds() { public long getRounds() {
return mRounds; return mRounds;
} }

View File

@@ -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();
}
}
}

View File

@@ -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();
}
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -17,20 +17,17 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.settings; package com.kunzisoft.keepass.settings.preferenceDialogFragment;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.preference.DialogPreference; import android.support.v7.preference.DialogPreference;
import android.support.v7.preference.PreferenceDialogFragmentCompat;
import android.view.View; import android.view.View;
import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import com.kunzisoft.keepass.R; import com.kunzisoft.keepass.R;
import com.kunzisoft.keepass.settings.preference.RoundsPreference;
public class RoundsFixPreferenceDialogFragmentCompat extends PreferenceDialogFragmentCompat { public class RoundsFixPreferenceDialogFragmentCompat extends InputPreferenceDialogFragmentCompat {
private TextView mRoundsView;
public static RoundsFixPreferenceDialogFragmentCompat newInstance( public static RoundsFixPreferenceDialogFragmentCompat newInstance(
String key) { String key) {
@@ -47,14 +44,11 @@ public class RoundsFixPreferenceDialogFragmentCompat extends PreferenceDialogFra
protected void onBindDialogView(View view) { protected void onBindDialogView(View view) {
super.onBindDialogView(view); super.onBindDialogView(view);
TextView textDescriptionView = view.findViewById(R.id.rounds_explanation);
mRoundsView = view.findViewById(R.id.rounds);
DialogPreference preference = getPreference(); DialogPreference preference = getPreference();
if (preference instanceof RoundsPreference) { if (preference instanceof RoundsPreference) {
textDescriptionView.setText(((RoundsPreference) preference).getExplanations()); setExplanationText(((RoundsPreference) preference).getExplanation());
long numRounds = ((RoundsPreference) preference).getRounds(); 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 ) { if ( positiveResult ) {
long rounds; long rounds;
try { try {
String strRounds = mRoundsView.getText().toString(); String strRounds = getInputText();
rounds = Long.valueOf(strRounds); rounds = Long.valueOf(strRounds);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
Toast.makeText(getContext(), R.string.error_rounds_not_number, Toast.LENGTH_LONG).show(); Toast.makeText(getContext(), R.string.error_rounds_not_number, Toast.LENGTH_LONG).show();

View File

@@ -17,27 +17,18 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.settings; package com.kunzisoft.keepass.settings.preferenceDialogFragment;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.v7.preference.PreferenceDialogFragmentCompat;
import android.view.View; import android.view.View;
import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import com.kunzisoft.keepass.R; 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.OnFinish;
import com.kunzisoft.keepass.database.edit.SaveDB;
import com.kunzisoft.keepass.tasks.ProgressTask;
public class RoundsPreferenceDialogFragmentCompat extends PreferenceDialogFragmentCompat { public class RoundsPreferenceDialogFragmentCompat extends DatabaseSavePreferenceDialogFragmentCompat {
private PwDatabase mPM;
private TextView mRoundsView;
public static RoundsPreferenceDialogFragmentCompat newInstance( public static RoundsPreferenceDialogFragmentCompat newInstance(
String key) { String key) {
@@ -54,13 +45,8 @@ public class RoundsPreferenceDialogFragmentCompat extends PreferenceDialogFragme
protected void onBindDialogView(View view) { protected void onBindDialogView(View view) {
super.onBindDialogView(view); super.onBindDialogView(view);
mRoundsView = view.findViewById(R.id.rounds); setExplanationText(getString(R.string.rounds_explanation));
setInputText(database.getNumberKeyEncryptionRoundsAsString());
// Get the number or rounds from the related Preference
mPM = App.getDB().getPwDatabase();
long numRounds = mPM.getNumberKeyEncryptionRounds();
mRoundsView.setText(String.valueOf(numRounds));
} }
@Override @Override
@@ -70,7 +56,7 @@ public class RoundsPreferenceDialogFragmentCompat extends PreferenceDialogFragme
long rounds; long rounds;
try { try {
String strRounds = mRoundsView.getText().toString(); String strRounds = getInputText();
rounds = Long.parseLong(strRounds); rounds = Long.parseLong(strRounds);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
Toast.makeText(getContext(), R.string.error_rounds_not_number, Toast.LENGTH_LONG).show(); Toast.makeText(getContext(), R.string.error_rounds_not_number, Toast.LENGTH_LONG).show();
@@ -81,28 +67,28 @@ public class RoundsPreferenceDialogFragmentCompat extends PreferenceDialogFragme
rounds = 1; rounds = 1;
} }
long oldRounds = mPM.getNumberKeyEncryptionRounds(); long oldRounds = database.getNumberKeyEncryptionRounds();
try { try {
mPM.setNumberKeyEncryptionRounds(rounds); database.setNumberKeyEncryptionRounds(rounds);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
Toast.makeText(getContext(), R.string.error_rounds_too_large, Toast.LENGTH_LONG).show(); 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(); Handler handler = new Handler();
SaveDB save = new SaveDB(getContext(), App.getDB(), new AfterSave(getContext(), handler, rounds, oldRounds)); setAfterSaveDatabase(new AfterRoundSave(getContext(), handler, rounds, oldRounds));
ProgressTask pt = new ProgressTask(getContext(), save, R.string.saving_database);
pt.run();
} }
super.onDialogClosed(positiveResult);
} }
private class AfterSave extends OnFinish { private class AfterRoundSave extends OnFinish {
private long mNewRounds; private long mNewRounds;
private long mOldRounds; private long mOldRounds;
private Context mCtx; private Context mCtx;
public AfterSave(Context ctx, Handler handler, long newRounds, long oldRounds) { AfterRoundSave(Context ctx, Handler handler, long newRounds, long oldRounds) {
super(handler); super(handler);
mCtx = ctx; mCtx = ctx;
@@ -116,7 +102,7 @@ public class RoundsPreferenceDialogFragmentCompat extends PreferenceDialogFragme
if (!mSuccess) { if (!mSuccess) {
displayMessage(mCtx); displayMessage(mCtx);
mPM.setNumberKeyEncryptionRounds(mOldRounds); database.setNumberKeyEncryptionRounds(mOldRounds);
} }
getPreference().setSummary(String.valueOf(roundsToShow)); getPreference().setSummary(String.valueOf(roundsToShow));

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Jeremy Jamet / Kunzisoft.
This file is part of KeePass DX.
KeePass DX is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
KeePass DX is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/edit"
android:padding="20dp"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:importantForAutofill="noExcludeDescendants"
tools:targetApi="o">
<android.support.v7.widget.AppCompatEditText
android:id="@+id/input_text"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
</LinearLayout>

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018 Jeremy Jamet / Kunzisoft.
This file is part of KeePass DX.
KeePass DX is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
KeePass DX is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/edit"
android:padding="20dp"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:importantForAutofill="noExcludeDescendants"
tools:targetApi="o">
<android.support.v7.widget.AppCompatTextView
android:id="@+id/explanation_text"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="center"
android:layout_marginBottom="8dp"
style="@style/KeepassDXStyle.TextAppearance.SmallTitle"/>
<android.support.v7.widget.AppCompatEditText
android:id="@+id/input_text"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
</LinearLayout>

View File

@@ -27,15 +27,14 @@
android:importantForAutofill="noExcludeDescendants" android:importantForAutofill="noExcludeDescendants"
tools:targetApi="o"> tools:targetApi="o">
<android.support.v7.widget.AppCompatTextView <android.support.v7.widget.AppCompatTextView
android:id="@+id/explanation_text"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="center"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:id="@+id/rounds_explanation" style="@style/KeepassDXStyle.TextAppearance.SmallTitle"/>
android:gravity="center"
android:text="@string/rounds_explaination"
style="@style/KeepassDXStyle.TextAppearance.SmallTitle"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
<android.support.v7.widget.AppCompatEditText <android.support.v7.widget.AppCompatEditText
android:id="@+id/rounds" android:id="@+id/input_text"
android:hint="@string/rounds_hint" android:hint="@string/rounds_hint"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -127,7 +127,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Arrel</string> <string name="root">Arrel</string>
<string name="rounds">Passades d\'encriptació</string> <string name="rounds">Passades d\'encriptació</string>
<string name="rounds_explaination">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.</string> <string name="rounds_explanation">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.</string>
<string name="rounds_hint">passades</string> <string name="rounds_hint">passades</string>
<string name="saving_database">Guardant la base de dades&#8230;</string> <string name="saving_database">Guardant la base de dades&#8230;</string>
<string name="space">Espai</string> <string name="space">Espai</string>

View File

@@ -143,7 +143,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Kořen</string> <string name="root">Kořen</string>
<string name="rounds">Počet zašifrování</string> <string name="rounds">Počet zašifrování</string>
<string name="rounds_explaination">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í.</string> <string name="rounds_explanation">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í.</string>
<string name="rounds_hint">opakování</string> <string name="rounds_hint">opakování</string>
<string name="saving_database">Ukládám databázi&#8230;</string> <string name="saving_database">Ukládám databázi&#8230;</string>
<string name="space">Místo</string> <string name="space">Místo</string>

View File

@@ -142,7 +142,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Root</string> <string name="root">Root</string>
<string name="rounds">Krypterings-gentagelser</string> <string name="rounds">Krypterings-gentagelser</string>
<string name="rounds_explaination">Højere krypterings-gentagelser giver øget beskyttelse imod brute-force angreb, men kan påvirke læsnings- og skrivehastigheden betydentligt.</string> <string name="rounds_explanation">Højere krypterings-gentagelser giver øget beskyttelse imod brute-force angreb, men kan påvirke læsnings- og skrivehastigheden betydentligt.</string>
<string name="rounds_hint">gentagelser</string> <string name="rounds_hint">gentagelser</string>
<string name="saving_database">Gemmer database&#8230;</string> <string name="saving_database">Gemmer database&#8230;</string>
<string name="space">Mellemrum</string> <string name="space">Mellemrum</string>

View File

@@ -148,7 +148,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Start</string> <string name="root">Start</string>
<string name="rounds">Schlüsseltransformationen</string> <string name="rounds">Schlüsseltransformationen</string>
<string name="rounds_explaination">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.</string> <string name="rounds_explanation">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.</string>
<string name="rounds_hint">Schlüsseltransformationen</string> <string name="rounds_hint">Schlüsseltransformationen</string>
<string name="rounds_fix_title">Datenbank reparieren</string> <string name="rounds_fix_title">Datenbank reparieren</string>
<string name="rounds_fix">Schlüsseltransformationen vor Datenbankkorruption</string> <string name="rounds_fix">Schlüsseltransformationen vor Datenbankkorruption</string>

View File

@@ -140,7 +140,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Ριζικός Κατάλογος</string> <string name="root">Ριζικός Κατάλογος</string>
<string name="rounds">Κύκλοι Κρυπτογράφησης</string> <string name="rounds">Κύκλοι Κρυπτογράφησης</string>
<string name="rounds_explaination">Μεγαλύτεροι κύκλοι κρυπτογράφησης παρέχουν πρόσθετη προστασία ενάντια σε επιθέσεις brute force, αλλά μπορεί να επιβραδύνει πολύ την φόρτωση και την αποθήκευση.</string> <string name="rounds_explanation">Μεγαλύτεροι κύκλοι κρυπτογράφησης παρέχουν πρόσθετη προστασία ενάντια σε επιθέσεις brute force, αλλά μπορεί να επιβραδύνει πολύ την φόρτωση και την αποθήκευση.</string>
<string name="rounds_hint">κύκλοι</string> <string name="rounds_hint">κύκλοι</string>
<string name="saving_database">Αποθήκευση βάσης&#8230;</string> <string name="saving_database">Αποθήκευση βάσης&#8230;</string>
<string name="space">Κενό</string> <string name="space">Κενό</string>

View File

@@ -128,7 +128,7 @@ Spanish translation by José I. Paños. Updated by David García-Abad (23-09-201
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Raíz</string> <string name="root">Raíz</string>
<string name="rounds">Pasadas de Cifrado</string> <string name="rounds">Pasadas de Cifrado</string>
<string name="rounds_explaination">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.</string> <string name="rounds_explanation">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.</string>
<string name="rounds_hint">pasadas</string> <string name="rounds_hint">pasadas</string>
<string name="saving_database">Guardando base de datos&#8230;</string> <string name="saving_database">Guardando base de datos&#8230;</string>
<string name="space">Espacio</string> <string name="space">Espacio</string>

View File

@@ -140,7 +140,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Root</string> <string name="root">Root</string>
<string name="rounds">Enkriptatzeko Rondak</string> <string name="rounds">Enkriptatzeko Rondak</string>
<string name="rounds_explaination">Enkriptatzeko ronda gehiago indar gordineko atakeen kontrako babes gehiago ematen dute, baina kargatzea eta gordetzea moteldu dezakete modu nabarmenean.</string> <string name="rounds_explanation">Enkriptatzeko ronda gehiago indar gordineko atakeen kontrako babes gehiago ematen dute, baina kargatzea eta gordetzea moteldu dezakete modu nabarmenean.</string>
<string name="rounds_hint">rondak</string> <string name="rounds_hint">rondak</string>
<string name="saving_database">Datubasea gordetzen&#8230;</string> <string name="saving_database">Datubasea gordetzen&#8230;</string>
<string name="space">Lekua</string> <string name="space">Lekua</string>

View File

@@ -138,7 +138,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Juuri</string> <string name="root">Juuri</string>
<string name="rounds">Salauskierroksia</string> <string name="rounds">Salauskierroksia</string>
<string name="rounds_explaination">Suurempi kierrosten määrä parantaa suojausta raa\'alla voimalla tehdyiltä murtoyrityksiltä, mutta voi todella hidastaa lataamista ja tallentamista.</string> <string name="rounds_explanation">Suurempi kierrosten määrä parantaa suojausta raa\'alla voimalla tehdyiltä murtoyrityksiltä, mutta voi todella hidastaa lataamista ja tallentamista.</string>
<string name="rounds_hint">kierroksia</string> <string name="rounds_hint">kierroksia</string>
<string name="saving_database">Tallennetaan tietokantaa&#8230;</string> <string name="saving_database">Tallennetaan tietokantaa&#8230;</string>
<string name="space">Tila</string> <string name="space">Tila</string>

View File

@@ -152,7 +152,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Racine</string> <string name="root">Racine</string>
<string name="rounds">Tours de transformation</string> <string name="rounds">Tours de transformation</string>
<string name="rounds_explaination">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.</string> <string name="rounds_explanation">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.</string>
<string name="rounds_hint">niveaux</string> <string name="rounds_hint">niveaux</string>
<string name="rounds_fix_title">Résolution de la base de données</string> <string name="rounds_fix_title">Résolution de la base de données</string>
<string name="rounds_fix">Clé de niveau de chiffrement avant corruption</string> <string name="rounds_fix">Clé de niveau de chiffrement avant corruption</string>

View File

@@ -138,7 +138,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Gyökérkönyvár</string> <string name="root">Gyökérkönyvár</string>
<string name="rounds">Titkosítási menetek száma</string> <string name="rounds">Titkosítási menetek száma</string>
<string name="rounds_explaination">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.</string> <string name="rounds_explanation">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.</string>
<string name="rounds_hint">Menetek száma</string> <string name="rounds_hint">Menetek száma</string>
<string name="saving_database">Adatbázis mentése…</string> <string name="saving_database">Adatbázis mentése…</string>
<string name="space">Szóköz</string> <string name="space">Szóköz</string>

View File

@@ -127,7 +127,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Principale</string> <string name="root">Principale</string>
<string name="rounds">Livello cifratura</string> <string name="rounds">Livello cifratura</string>
<string name="rounds_explaination">Un livello di cifratura elevato fornisce una protezione maggiore contro attacchi di tipo "forza brutta", ma può veramente rallentare il caricamento e il salvataggio.</string> <string name="rounds_explanation">Un livello di cifratura elevato fornisce una protezione maggiore contro attacchi di tipo "forza brutta", ma può veramente rallentare il caricamento e il salvataggio.</string>
<string name="rounds_hint">livello</string> <string name="rounds_hint">livello</string>
<string name="saving_database">Salvataggio database&#8230;</string> <string name="saving_database">Salvataggio database&#8230;</string>
<string name="space">Spazio</string> <string name="space">Spazio</string>

View File

@@ -137,7 +137,7 @@
<string name="remember_keyfile_title">שמור קובץ מפתח</string> <string name="remember_keyfile_title">שמור קובץ מפתח</string>
<string name="remove_from_filelist">הסר</string> <string name="remove_from_filelist">הסר</string>
<string name="rounds">סיבובי הצפנה</string> <string name="rounds">סיבובי הצפנה</string>
<string name="rounds_explaination">מספר סיבובי הצפנה גבוה יותר מספר הגה טובה יותר נגד התקפות, אבל יכול להעלות בהרבה את זמן הטעינה והשמירה.</string> <string name="rounds_explanation">מספר סיבובי הצפנה גבוה יותר מספר הגה טובה יותר נגד התקפות, אבל יכול להעלות בהרבה את זמן הטעינה והשמירה.</string>
<string name="rounds_hint">סיבובים</string> <string name="rounds_hint">סיבובים</string>
<string name="saving_database">שומר מסד נתונים&#8230;</string> <string name="saving_database">שומר מסד נתונים&#8230;</string>
<string name="space">גודל</string> <string name="space">גודל</string>

View File

@@ -124,7 +124,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Root</string> <string name="root">Root</string>
<string name="rounds">暗号化レベル</string> <string name="rounds">暗号化レベル</string>
<string name="rounds_explaination">暗号化レベルを高く設定するとブルートフォース(総当り)攻撃に強くなりますが、保存や読込に時間が掛かります。</string> <string name="rounds_explanation">暗号化レベルを高く設定するとブルートフォース(総当り)攻撃に強くなりますが、保存や読込に時間が掛かります。</string>
<string name="rounds_hint">レベル</string> <string name="rounds_hint">レベル</string>
<string name="saving_database">データベースを保存中&#8230;</string> <string name="saving_database">データベースを保存中&#8230;</string>
<string name="space">半角スペース</string> <string name="space">半角スペース</string>

View File

@@ -118,7 +118,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Root</string> <string name="root">Root</string>
<string name="rounds">Šifrēšanas līmeņi</string> <string name="rounds">Šifrēšanas līmeņi</string>
<string name="rounds_explaination">Augstākā līmeņa šifrēšana sniedz lielāku aizsardzību, bet palēnina darbības ar datu bāzēm.</string> <string name="rounds_explanation">Augstākā līmeņa šifrēšana sniedz lielāku aizsardzību, bet palēnina darbības ar datu bāzēm.</string>
<string name="rounds_hint">līmeņi</string> <string name="rounds_hint">līmeņi</string>
<string name="saving_database">Datu bāzes saglabāšana…</string> <string name="saving_database">Datu bāzes saglabāšana…</string>
<string name="space">Atstarpe</string> <string name="space">Atstarpe</string>

View File

@@ -126,7 +126,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Top</string> <string name="root">Top</string>
<string name="rounds">Encryptie-cycli</string> <string name="rounds">Encryptie-cycli</string>
<string name="rounds_explaination">Een hoger aantal encryptie-cycli geeft bijkomende bescherming tegen brute-force aanvallen, maar kan het laden en opslaan sterk vertragen.</string> <string name="rounds_explanation">Een hoger aantal encryptie-cycli geeft bijkomende bescherming tegen brute-force aanvallen, maar kan het laden en opslaan sterk vertragen.</string>
<string name="rounds_hint">cycli</string> <string name="rounds_hint">cycli</string>
<string name="saving_database">Database wordt opgeslagen&#8230;</string> <string name="saving_database">Database wordt opgeslagen&#8230;</string>
<string name="space">Ruimte</string> <string name="space">Ruimte</string>

View File

@@ -124,7 +124,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Rot</string> <string name="root">Rot</string>
<string name="rounds">Krypteringsomgangar</string> <string name="rounds">Krypteringsomgangar</string>
<string name="rounds_explaination">Fleire krypteringsomgangar gjev tilleggsvern mot rå makt-åtak, men kan òg gjera lasting og lagring mykje tregare.</string> <string name="rounds_explanation">Fleire krypteringsomgangar gjev tilleggsvern mot rå makt-åtak, men kan òg gjera lasting og lagring mykje tregare.</string>
<string name="rounds_hint">omgangar</string> <string name="rounds_hint">omgangar</string>
<string name="saving_database">Lagrar databasen …</string> <string name="saving_database">Lagrar databasen …</string>
<string name="space">Mellomrom</string> <string name="space">Mellomrom</string>

View File

@@ -124,7 +124,7 @@ along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Root</string> <string name="root">Root</string>
<string name="rounds">Złożoność szyfrowania</string> <string name="rounds">Złożoność szyfrowania</string>
<string name="rounds_explaination">Większa złożoność szyfrowania zapewnia dodatkowe zabezpieczenie przed atakiem brute force, ale może spowolnić wczytywanie i zapisywanie bazy danych.</string> <string name="rounds_explanation">Większa złożoność szyfrowania zapewnia dodatkowe zabezpieczenie przed atakiem brute force, ale może spowolnić wczytywanie i zapisywanie bazy danych.</string>
<string name="rounds_fix">Kluczowe rundy szyfrowania przed zniszczeniem</string> <string name="rounds_fix">Kluczowe rundy szyfrowania przed zniszczeniem</string>
<string name="rounds_fix_explanation">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.</string> <string name="rounds_fix_explanation">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.</string>
<string name="rounds_hint">złożoność</string> <string name="rounds_hint">złożoność</string>

View File

@@ -127,7 +127,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Raiz</string> <string name="root">Raiz</string>
<string name="rounds">Rodadas de criptografia</string> <string name="rounds">Rodadas de criptografia</string>
<string name="rounds_explaination">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.</string> <string name="rounds_explanation">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.</string>
<string name="rounds_hint">rodadas</string> <string name="rounds_hint">rodadas</string>
<string name="saving_database">Salvando banco de dados&#8230;</string> <string name="saving_database">Salvando banco de dados&#8230;</string>
<string name="space">Spaço</string> <string name="space">Spaço</string>

View File

@@ -145,7 +145,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Raiz</string> <string name="root">Raiz</string>
<string name="rounds">Rondas de encriptação</string> <string name="rounds">Rondas de encriptação</string>
<string name="rounds_explaination">Rondas de encriptação altas providenciam proteção adicional contra ataques de força bruta, mas podem atrasar o tempo de carregamento e armazenamento.</string> <string name="rounds_explanation">Rondas de encriptação altas providenciam proteção adicional contra ataques de força bruta, mas podem atrasar o tempo de carregamento e armazenamento.</string>
<string name="rounds_hint">rondas</string> <string name="rounds_hint">rondas</string>
<string name="saving_database">A guardar base de dados&#8230;</string> <string name="saving_database">A guardar base de dados&#8230;</string>
<string name="space">Espaço</string> <string name="space">Espaço</string>

View File

@@ -140,7 +140,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">База</string> <string name="root">База</string>
<string name="rounds">Проходы шифрования</string> <string name="rounds">Проходы шифрования</string>
<string name="rounds_explaination">Больше проходов – выше стойкость базы к подбору пароля, но медленнее открытие и сохранение</string> <string name="rounds_explanation">Больше проходов – выше стойкость базы к подбору пароля, но медленнее открытие и сохранение</string>
<string name="rounds_fix">Проходы до поломки базы</string> <string name="rounds_fix">Проходы до поломки базы</string>
<string name="rounds_fix_explanation">Если база была повреждена в KeePassDroid 2.2.0.02.2.0.6, введите ранее используемое количество проходов шифрования, чтобы открыть её</string> <string name="rounds_fix_explanation">Если база была повреждена в KeePassDroid 2.2.0.02.2.0.6, введите ранее используемое количество проходов шифрования, чтобы открыть её</string>
<string name="rounds_hint">проходы</string> <string name="rounds_hint">проходы</string>

View File

@@ -124,7 +124,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Root</string> <string name="root">Root</string>
<string name="rounds">Šifrovacie opakovania</string> <string name="rounds">Šifrovacie opakovania</string>
<string name="rounds_explaination">Vyššie opakovania šifrovania dávajú vyššiu ochranu proti útokom hrubou silou, ale môžu spomaliť načítavanie a ukladanie.</string> <string name="rounds_explanation">Vyššie opakovania šifrovania dávajú vyššiu ochranu proti útokom hrubou silou, ale môžu spomaliť načítavanie a ukladanie.</string>
<string name="rounds_hint">opakovania</string> <string name="rounds_hint">opakovania</string>
<string name="saving_database">Ukladám databázu&#8230;</string> <string name="saving_database">Ukladám databázu&#8230;</string>
<string name="space">Miesto</string> <string name="space">Miesto</string>

View File

@@ -137,7 +137,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Root</string> <string name="root">Root</string>
<string name="rounds">Krypteringsrundor</string> <string name="rounds">Krypteringsrundor</string>
<string name="rounds_explaination">Högre antal krypteringsrundor ger ytterligare skydd mot "brute force"-attacker, men kan göra att ladda och spara går betydligt långsammare.</string> <string name="rounds_explanation">Högre antal krypteringsrundor ger ytterligare skydd mot "brute force"-attacker, men kan göra att ladda och spara går betydligt långsammare.</string>
<string name="rounds_hint">rundor</string> <string name="rounds_hint">rundor</string>
<string name="saving_database">Sparar databas&#8230;</string> <string name="saving_database">Sparar databas&#8230;</string>
<string name="space">Mellanslag</string> <string name="space">Mellanslag</string>

View File

@@ -124,7 +124,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Корінь</string> <string name="root">Корінь</string>
<string name="rounds">Циклів шифрування</string> <string name="rounds">Циклів шифрування</string>
<string name="rounds_explaination">Велика кількість циклів шифрування забезпечує додатковий захист від грубих атак, але може дійсно уповільнити завантаження та захист.</string> <string name="rounds_explanation">Велика кількість циклів шифрування забезпечує додатковий захист від грубих атак, але може дійсно уповільнити завантаження та захист.</string>
<string name="rounds_hint">цикли</string> <string name="rounds_hint">цикли</string>
<string name="saving_database">Збереження бази даних&#8230;</string> <string name="saving_database">Збереження бази даних&#8230;</string>
<string name="space">Пропуск</string> <string name="space">Пропуск</string>

View File

@@ -121,7 +121,7 @@
<string name="rijndael">Rijndael加密(AES)</string> <string name="rijndael">Rijndael加密(AES)</string>
<string name="root">Root</string> <string name="root">Root</string>
<string name="rounds">加密次数</string> <string name="rounds">加密次数</string>
<string name="rounds_explaination">更高级的加密次数对暴力攻击能提供额外保护,但也会增加加载和保存的时间。</string> <string name="rounds_explanation">更高级的加密次数对暴力攻击能提供额外保护,但也会增加加载和保存的时间。</string>
<string name="rounds_hint">次数</string> <string name="rounds_hint">次数</string>
<string name="saving_database">正在保存数据库&#8230;</string> <string name="saving_database">正在保存数据库&#8230;</string>
<string name="space">空格</string> <string name="space">空格</string>

View File

@@ -121,7 +121,7 @@
<string name="rijndael">Rijndael加密(AES)</string> <string name="rijndael">Rijndael加密(AES)</string>
<string name="root">Root</string> <string name="root">Root</string>
<string name="rounds">加密次數</string> <string name="rounds">加密次數</string>
<string name="rounds_explaination">更高級的加密次數對暴力攻擊能提供額外保護,但也會增加載入和保存的時間。</string> <string name="rounds_explanation">更高級的加密次數對暴力攻擊能提供額外保護,但也會增加載入和保存的時間。</string>
<string name="rounds_hint">次數</string> <string name="rounds_hint">次數</string>
<string name="saving_database">正在保存資料庫&#8230;</string> <string name="saving_database">正在保存資料庫&#8230;</string>
<string name="space">空格</string> <string name="space">空格</string>

View File

@@ -29,7 +29,7 @@
<attr name="whiteFab" format="reference" /> <attr name="whiteFab" format="reference" />
<declare-styleable name="RoundsDialog"> <declare-styleable name="explanationDialog">
<attr name="explanations" format="string" /> <attr name="explanations" format="string" />
</declare-styleable> </declare-styleable>
</resources> </resources>

View File

@@ -154,7 +154,7 @@
<string name="rijndael">Rijndael (AES)</string> <string name="rijndael">Rijndael (AES)</string>
<string name="root">Root</string> <string name="root">Root</string>
<string name="rounds">Transform Rounds</string> <string name="rounds">Transform Rounds</string>
<string name="rounds_explaination">Higher encryption rounds provide additional protection against brute force attacks, but can really slow down loading and saving.</string> <string name="rounds_explanation">Higher encryption rounds provide additional protection against brute force attacks, but can really slow down loading and saving.</string>
<string name="rounds_fix_title">Fix of database</string> <string name="rounds_fix_title">Fix of database</string>
<string name="rounds_fix">Key encryption rounds before corruption</string> <string name="rounds_fix">Key encryption rounds before corruption</string>
<string name="rounds_fix_explanation">If your database was corrupted, enter the number of rounds used previously to try to open your database.</string> <string name="rounds_fix_explanation">If your database was corrupted, enter the number of rounds used previously to try to open your database.</string>

View File

@@ -17,31 +17,35 @@
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
--> -->
<PreferenceScreen <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"> xmlns:custom="http://schemas.android.com/apk/res-auto">
<PreferenceCategory <PreferenceCategory
android:key="@string/database_general_key" android:key="@string/database_general_key"
android:title="@string/general"> android:title="@string/general">
<Preference <com.kunzisoft.keepass.settings.preference.InputTextPreference
android:key="@string/database_name_key" android:key="@string/database_name_key"
android:persistent="false" android:persistent="false"
android:title="@string/database_name_title"/> android:title="@string/database_name_title"
<Preference android:positiveButtonText="@string/entry_save"
android:negativeButtonText="@string/entry_cancel"/>
<com.kunzisoft.keepass.settings.preference.InputTextPreference
android:key="@string/database_description_key" android:key="@string/database_description_key"
android:persistent="false" android:persistent="false"
android:title="@string/database_description_title"/> android:title="@string/database_description_title"
<Preference android:positiveButtonText="@string/entry_save"
android:key="@string/database_version_key" android:negativeButtonText="@string/entry_cancel"/>
android:persistent="false"
android:title="@string/database_version_title"/>
<SwitchPreference <SwitchPreference
android:key="@string/recycle_bin_key" android:key="@string/recycle_bin_key"
android:persistent="false" android:persistent="false"
android:title="@string/recycle_bin_title" android:title="@string/recycle_bin_title"
android:summary="@string/recycle_bin_summary" android:summary="@string/recycle_bin_summary"
android:checked="false"/> android:checked="false"/>
<Preference
android:key="@string/database_version_key"
android:persistent="false"
android:title="@string/database_version_title"/>
</PreferenceCategory> </PreferenceCategory>
@@ -56,10 +60,11 @@
android:key="@string/key_derivation_function_key" android:key="@string/key_derivation_function_key"
android:persistent="false" android:persistent="false"
android:title="@string/key_derivation_function"/> android:title="@string/key_derivation_function"/>
<com.kunzisoft.keepass.settings.RoundsPreference <com.kunzisoft.keepass.settings.preference.RoundsPreference
android:key="@string/transform_rounds_key" android:key="@string/transform_rounds_key"
android:persistent="false" android:persistent="false"
android:title="@string/rounds" android:title="@string/rounds"
custom:explanations="@string/rounds_explanation"
android:positiveButtonText="@string/entry_save" android:positiveButtonText="@string/entry_save"
android:negativeButtonText="@string/entry_cancel"/> android:negativeButtonText="@string/entry_cancel"/>

View File

@@ -41,7 +41,7 @@
android:title="@string/menu_db_settings" android:title="@string/menu_db_settings"
android:icon="@drawable/ic_data_usage_prefs_24dp" android:icon="@drawable/ic_data_usage_prefs_24dp"
android:persistent="false" /> android:persistent="false" />
<com.kunzisoft.keepass.settings.RoundsPreference <com.kunzisoft.keepass.settings.preference.RoundsPreference
android:key="@string/roundsFix_key" android:key="@string/roundsFix_key"
android:title="@string/rounds_fix_title" android:title="@string/rounds_fix_title"
android:summary="@string/rounds_fix" android:summary="@string/rounds_fix"