diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java index 2064d0a2..984f03ec 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java @@ -295,7 +295,7 @@ public class GBApplication extends Application { } /** - * Deletes the entire Activity database and recreates it with empty tables. + * Deletes both the old Activity database and the new one recreates it with empty tables. * * @return true on successful deletion */ @@ -313,6 +313,20 @@ public class GBApplication extends Application { return result; } + /** + * Deletes the legacy (pre 0.12) Activity database + * + * @return true on successful deletion + */ + public static synchronized boolean deleteOldActivityDatabase(Context context) { + DBHelper dbHelper = new DBHelper(context); + boolean result = true; + if (dbHelper.existsDB(DBConstants.DATABASE_NAME)) { + result = getContext().deleteDatabase(DBConstants.DATABASE_NAME); + } + return result; + } + private int getPrefsFileVersion() { try { return Integer.parseInt(sharedPrefs.getString(PREFS_VERSION, "0")); //0 is legacy diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DbManagementActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DbManagementActivity.java index 6320102f..874af5ba 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DbManagementActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DbManagementActivity.java @@ -11,6 +11,7 @@ import android.support.v4.app.NavUtils; import android.view.MenuItem; import android.view.View; import android.widget.Button; +import android.widget.TextView; import android.widget.Toast; import org.slf4j.Logger; @@ -37,7 +38,9 @@ public class DbManagementActivity extends GBActivity { private Button exportDBButton; private Button importDBButton; private Button importOldActivityDataButton; + private Button deleteOldActivityDBButton; private Button deleteDBButton; + private TextView dbPath; @Override protected void onCreate(Bundle savedInstanceState) { @@ -47,6 +50,9 @@ public class DbManagementActivity extends GBActivity { IntentFilter filter = new IntentFilter(); filter.addAction(GBApplication.ACTION_QUIT); + dbPath = (TextView) findViewById(R.id.activity_db_management_path); + dbPath.setText(getExternalPath()); + exportDBButton = (Button) findViewById(R.id.exportDBButton); exportDBButton.setOnClickListener(new View.OnClickListener() { @Override @@ -70,6 +76,14 @@ public class DbManagementActivity extends GBActivity { } }); + deleteOldActivityDBButton = (Button) findViewById(R.id.deleteOldActivityDB); + deleteOldActivityDBButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + deleteOldActivityDbFile(); + } + }); + deleteDBButton = (Button) findViewById(R.id.emptyDBButton); deleteDBButton.setOnClickListener(new View.OnClickListener() { @Override @@ -79,6 +93,14 @@ public class DbManagementActivity extends GBActivity { }); } + private String getExternalPath() { + try { + return FileUtils.getExternalFilesDir().getAbsolutePath(); + } catch (Exception ex) { + } + return "Cannot access export path. Please contact the developers."; + } + private void exportDB() { try (DBHandler dbHandler = GBApplication.acquireDB()) { DBHelper helper = new DBHelper(this); @@ -203,6 +225,29 @@ public class DbManagementActivity extends GBActivity { .show(); } + private void deleteOldActivityDbFile() { + new AlertDialog.Builder(this) + .setCancelable(true) + .setTitle("Delete old Activity Database?") + .setMessage("Really delete the old activity database? Activity data that were not imported will be lost.") + .setPositiveButton("Delete", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (GBApplication.deleteOldActivityDatabase(DbManagementActivity.this)) { + GB.toast(DbManagementActivity.this, "Old Activity database successfully deleted.", Toast.LENGTH_SHORT, GB.INFO); + } else { + GB.toast(DbManagementActivity.this, "Old Activity database deletion failed.", Toast.LENGTH_SHORT, GB.INFO); + } + } + }) + .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + } + }) + .show(); + } + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { diff --git a/app/src/main/res/layout/activity_db_management.xml b/app/src/main/res/layout/activity_db_management.xml index 22632959..0787c6a6 100644 --- a/app/src/main/res/layout/activity_db_management.xml +++ b/app/src/main/res/layout/activity_db_management.xml @@ -2,68 +2,108 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:paddingBottom="@dimen/activity_vertical_margin" - android:paddingLeft="@dimen/activity_horizontal_margin" - android:paddingRight="@dimen/activity_horizontal_margin" - android:paddingTop="@dimen/activity_vertical_margin" tools:context="nodomain.freeyourgadget.gadgetbridge.activities.ControlCenter"> + android:layout_height="wrap_content"> - + android:paddingBottom="@dimen/activity_vertical_margin" + android:paddingLeft="@dimen/activity_horizontal_margin" + android:paddingRight="@dimen/activity_horizontal_margin" + android:paddingTop="@dimen/activity_vertical_margin"> + + + + + + + +