1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-21 07:51:46 +02:00

Refactor backup preference slightly

Removed some code and fixed updating of exportDir summary after change.
This commit is contained in:
Erik Johansson
2018-04-14 22:57:25 +02:00
parent 8969166150
commit b3f7fbd61e

View File

@@ -42,122 +42,92 @@ import java.util.List;
import java.util.Set; import java.util.Set;
public class BackupPreferences extends PreferenceFragment { public class BackupPreferences extends PreferenceFragment {
private static final String PREFERENCE_KEY_EXPORT_DIR = "exportDir";
private static final String PREFERENCE_KEY_IMPORT_BACKUP = "importBackup"; private static final String PREFERENCE_KEY_IMPORT_BACKUP = "importBackup";
private static final String PREFERENCE_KEY_EXPORT_BACKUP = "exportBackup"; private static final String PREFERENCE_KEY_EXPORT_BACKUP = "exportBackup";
EditTextPreference exportDir;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.backup_preferences); addPreferencesFromResource(R.xml.backup_preferences);
exportDir = (EditTextPreference) findPreference(PREFERENCE_KEY_EXPORT_DIR);
exportDir.setSummary(exportDir.getText());
exportDir.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
preference.setSummary((String) newValue);
return true;
}
});
Preference importBackup = findPreference(PREFERENCE_KEY_IMPORT_BACKUP); Preference importBackup = findPreference(PREFERENCE_KEY_IMPORT_BACKUP);
importBackup.setOnPreferenceClickListener(new onClickListenerImportBackup()); importBackup.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
Preference exportBackup = findPreference(PREFERENCE_KEY_EXPORT_BACKUP);
exportBackup.setOnPreferenceClickListener(new onClickListenerExportBackup());
initSummary(getPreferenceScreen());
}
private void initSummary(Preference p) {
if (p instanceof PreferenceGroup) {
PreferenceGroup pGrp = (PreferenceGroup) p;
for (int i = 0; i < pGrp.getPreferenceCount(); i++) {
initSummary(pGrp.getPreference(i));
}
} else {
updatePrefSummary(p);
}
}
private void updatePrefSummary(Preference p)
{
if (p instanceof ListPreference)
{
ListPreference listPref = (ListPreference) p;
p.setSummary(listPref.getEntry());
}
if (p instanceof EditTextPreference)
{
EditTextPreference editTextPref = (EditTextPreference) p;
if (p.getTitle().toString().contains("assword"))
{
p.setSummary("******");
}
else
{
p.setSummary(editTextPref.getText());
}
}
if (p instanceof MultiSelectListPreference)
{
MultiSelectListPreference editMultiListPref = (MultiSelectListPreference) p;
CharSequence[] entries = editMultiListPref.getEntries();
CharSequence[] entryValues = editMultiListPref.getEntryValues();
List<String> currentEntries = new ArrayList<>();
Set<String> currentEntryValues = editMultiListPref.getValues();
for (int i = 0; i < entries.length; i++)
{
if (currentEntryValues.contains(entryValues[i].toString())) currentEntries.add(entries[i].toString());
}
p.setSummary(currentEntries.toString());
}
}
private class onClickListenerImportBackup implements Preference.OnPreferenceClickListener {
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
if (PermissionHelper.requestReadPermission(getActivity())) { if (PermissionHelper.requestReadPermission(getActivity())) {
importBackup(); importBackup();
} }
return true; return true;
} }
} });
private class onClickListenerExportBackup implements Preference.OnPreferenceClickListener { Preference exportBackup = findPreference(PREFERENCE_KEY_EXPORT_BACKUP);
exportBackup.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
if (PermissionHelper.requestWritePermission(getActivity())) { if (PermissionHelper.requestWritePermission(getActivity())) {
exportBackup(); exportBackup();
} }
return true; return true;
} }
});
}
private boolean isExternalStoragePresent() {
return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
}
private File getExportDir() {
if (!isExternalStoragePresent()) {
return null;
}
return new File(Environment.getExternalStorageDirectory(), exportDir.getText());
} }
private boolean importBackup() { private boolean importBackup() {
File exportDir = new File(Environment.getExternalStorageDirectory(), PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("exportDir", "openScale Backup")); File exportDir = getExportDir();
if (exportDir == null) {
String databaseName = "openScale.db";
if (!isExternalStoragePresent())
return false; return false;
}
File exportFile = getActivity().getApplicationContext().getDatabasePath(databaseName); File dbFile = getActivity().getDatabasePath(OpenScale.DATABASE_NAME);
File importFile = new File(exportDir, databaseName); File importFile = new File(exportDir, OpenScale.DATABASE_NAME);
if (!importFile.exists()) { if (!importFile.exists()) {
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.error_importing) + " " + exportDir + "/" + databaseName + " " + getResources().getString(R.string.label_not_found), Toast.LENGTH_SHORT).show(); Toast.makeText(getActivity(), getResources().getString(R.string.error_importing)
+ " " + importFile.getPath() + " "
+ getResources().getString(R.string.label_not_found), Toast.LENGTH_SHORT).show();
return false; return false;
} }
try { try {
exportFile.createNewFile(); dbFile.createNewFile();
copyFile(importFile, exportFile); copyFile(importFile, dbFile);
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.info_data_imported) + " " + exportDir + "/" + databaseName, Toast.LENGTH_SHORT).show();
Toast.makeText(getActivity(), getResources().getString(R.string.info_data_imported)
+ " " + importFile.getPath(), Toast.LENGTH_SHORT).show();
} catch (IOException e) { } catch (IOException e) {
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.error_importing) + " " + e.getMessage(), Toast.LENGTH_SHORT).show(); Toast.makeText(getActivity(), getResources().getString(R.string.error_importing)
+ " " + e.getMessage(), Toast.LENGTH_SHORT).show();
return false; return false;
} }
OpenScale openScale = OpenScale.getInstance(getActivity().getApplicationContext()); OpenScale openScale = OpenScale.getInstance(getActivity());
openScale.reopenDatabase(); openScale.reopenDatabase();
List<ScaleUser> scaleUserList = openScale.getScaleUserList(); List<ScaleUser> scaleUserList = openScale.getScaleUserList();
@@ -171,15 +141,16 @@ public class BackupPreferences extends PreferenceFragment {
} }
private boolean exportBackup() { private boolean exportBackup() {
File exportDir = new File(Environment.getExternalStorageDirectory(), PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("exportDir", "openScale Backup")); File exportDir = getExportDir();
if (exportDir == null) {
String databaseName = "openScale.db";
if (!isExternalStoragePresent())
return false; return false;
}
File dbFile = getActivity().getApplicationContext().getDatabasePath(databaseName); // Make sure all changes are written to the file before exporting
File file = new File(exportDir, databaseName); OpenScale.getInstance(getActivity()).reopenDatabase();
File dbFile = getActivity().getDatabasePath(OpenScale.DATABASE_NAME);
File file = new File(exportDir, OpenScale.DATABASE_NAME);
if (!exportDir.exists()) { if (!exportDir.exists()) {
exportDir.mkdirs(); exportDir.mkdirs();
@@ -189,9 +160,11 @@ public class BackupPreferences extends PreferenceFragment {
file.createNewFile(); file.createNewFile();
copyFile(dbFile, file); copyFile(dbFile, file);
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.info_data_exported) + " " + exportDir + "/" + databaseName, Toast.LENGTH_SHORT).show(); Toast.makeText(getActivity(), getResources().getString(R.string.info_data_exported)
+ " " + file.getPath(), Toast.LENGTH_SHORT).show();
} catch (IOException e) { } catch (IOException e) {
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.error_exporting) + " " + e.getMessage(), Toast.LENGTH_SHORT).show(); Toast.makeText(getActivity(), getResources().getString(R.string.error_exporting)
+ " " + e.getMessage(), Toast.LENGTH_SHORT).show();
return false; return false;
} }
@@ -211,10 +184,6 @@ public class BackupPreferences extends PreferenceFragment {
} }
} }
private boolean isExternalStoragePresent() {
return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
}
public void onMyOwnRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { public void onMyOwnRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) { switch (requestCode) {
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_READ_STORAGE: case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_READ_STORAGE: