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:
@@ -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:
|
||||||
|
Reference in New Issue
Block a user