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;
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_EXPORT_BACKUP = "exportBackup";
EditTextPreference exportDir;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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);
importBackup.setOnPreferenceClickListener(new onClickListenerImportBackup());
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 {
importBackup.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
if (PermissionHelper.requestReadPermission(getActivity())) {
importBackup();
}
return true;
}
}
});
private class onClickListenerExportBackup implements Preference.OnPreferenceClickListener {
Preference exportBackup = findPreference(PREFERENCE_KEY_EXPORT_BACKUP);
exportBackup.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
if (PermissionHelper.requestWritePermission(getActivity())) {
exportBackup();
}
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() {
File exportDir = new File(Environment.getExternalStorageDirectory(), PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("exportDir", "openScale Backup"));
String databaseName = "openScale.db";
if (!isExternalStoragePresent())
File exportDir = getExportDir();
if (exportDir == null) {
return false;
}
File exportFile = getActivity().getApplicationContext().getDatabasePath(databaseName);
File importFile = new File(exportDir, databaseName);
File dbFile = getActivity().getDatabasePath(OpenScale.DATABASE_NAME);
File importFile = new File(exportDir, OpenScale.DATABASE_NAME);
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;
}
try {
exportFile.createNewFile();
copyFile(importFile, exportFile);
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.info_data_imported) + " " + exportDir + "/" + databaseName, Toast.LENGTH_SHORT).show();
dbFile.createNewFile();
copyFile(importFile, dbFile);
Toast.makeText(getActivity(), getResources().getString(R.string.info_data_imported)
+ " " + importFile.getPath(), Toast.LENGTH_SHORT).show();
} 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;
}
OpenScale openScale = OpenScale.getInstance(getActivity().getApplicationContext());
OpenScale openScale = OpenScale.getInstance(getActivity());
openScale.reopenDatabase();
List<ScaleUser> scaleUserList = openScale.getScaleUserList();
@@ -171,15 +141,16 @@ public class BackupPreferences extends PreferenceFragment {
}
private boolean exportBackup() {
File exportDir = new File(Environment.getExternalStorageDirectory(), PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("exportDir", "openScale Backup"));
String databaseName = "openScale.db";
if (!isExternalStoragePresent())
File exportDir = getExportDir();
if (exportDir == null) {
return false;
}
File dbFile = getActivity().getApplicationContext().getDatabasePath(databaseName);
File file = new File(exportDir, databaseName);
// Make sure all changes are written to the file before exporting
OpenScale.getInstance(getActivity()).reopenDatabase();
File dbFile = getActivity().getDatabasePath(OpenScale.DATABASE_NAME);
File file = new File(exportDir, OpenScale.DATABASE_NAME);
if (!exportDir.exists()) {
exportDir.mkdirs();
@@ -189,9 +160,11 @@ public class BackupPreferences extends PreferenceFragment {
file.createNewFile();
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) {
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;
}
@@ -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) {
switch (requestCode) {
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_READ_STORAGE: