diff --git a/Yeeemp/app/src/main/java/art/pegasko/yeeemp/impl/DataUtils.java b/Yeeemp/app/src/main/java/art/pegasko/yeeemp/impl/DataUtils.java index 4d403e7..95b0e86 100644 --- a/Yeeemp/app/src/main/java/art/pegasko/yeeemp/impl/DataUtils.java +++ b/Yeeemp/app/src/main/java/art/pegasko/yeeemp/impl/DataUtils.java @@ -30,8 +30,10 @@ import java.io.InputStream; import java.io.OutputStream; import java.text.SimpleDateFormat; +import art.pegasko.yeeemp.base.Wrapper; import art.pegasko.yeeemp.ui.activity.Utils; +// TODO: Better data management API public class DataUtils { public static final String DATE_FORMAT = "yyyy-MM-dd-HH-mm-ss"; @@ -118,4 +120,16 @@ public class DataUtils { File backupFile = new File(context.getFilesDir(), "backup.db"); backupFile.delete(); } + + public static void closeDatabase() { + // Drop current database + ((DBWrapper) DBWrapper.instance()).db.close(); + Wrapper.setInstance(null); + } + + public static void deleteDatabase(Context context) throws IOException { + + File internalFile = DBWrapper.getDBPath(context); + internalFile.delete(); + } } diff --git a/Yeeemp/app/src/main/java/art/pegasko/yeeemp/ui/activity/QueueListActivity.java b/Yeeemp/app/src/main/java/art/pegasko/yeeemp/ui/activity/QueueListActivity.java index b0115c0..d96ee66 100644 --- a/Yeeemp/app/src/main/java/art/pegasko/yeeemp/ui/activity/QueueListActivity.java +++ b/Yeeemp/app/src/main/java/art/pegasko/yeeemp/ui/activity/QueueListActivity.java @@ -86,6 +86,7 @@ public class QueueListActivity extends AppCompatActivity { /* Toolbar menu */ binding.toolbar.inflateMenu(R.menu.queue_list_toolbar_menu); + // TODO: Better import / export / delete logic binding.toolbar.setOnMenuItemClickListener((MenuItem item) -> { if (item.getItemId() == R.id.queue_list_toolbar_menu_export) { Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); @@ -99,6 +100,41 @@ public class QueueListActivity extends AppCompatActivity { intent.setType("*/*"); startActivityForResult(intent, REQUEST_CODE_OPEN_FILE); + return true; + } else if (item.getItemId() == R.id.queue_list_toolbar_menu_delete) { + + new AlertDialog + .Builder(QueueListActivity.this) + .setTitle("Confirm action") + .setMessage("Delete everything?") + .setCancelable(true) + .setPositiveButton("Yes", (DialogInterface dialog, int id) -> { + try { + Log.i(TAG, "Close before delete"); + DataUtils.closeDatabase(); + + Log.i(TAG, "Deleting database"); + DataUtils.deleteDatabase(getApplicationContext()); + + Log.i(TAG, "Reloading database"); + Init.reinitDB(getApplicationContext()); + updateList(); + } catch (Exception e) { + Log.e(TAG, "Delete failed"); + Log.wtf(TAG, e); + + new AlertDialog + .Builder(QueueListActivity.this) + .setTitle("Delete failed") + .setMessage(e.getMessage()) + .setCancelable(true) + .setNegativeButton("OK", (DialogInterface dialog2, int id2) -> { dialog2.cancel(); }) + .show(); + } + }) + .setNegativeButton("Cancel", (DialogInterface dialog, int id) -> { dialog.cancel(); }) + .show(); + return true; } return false; @@ -167,6 +203,9 @@ public class QueueListActivity extends AppCompatActivity { Log.i(TAG, "Importing file from " + uri.toString()); try { + Log.i(TAG, "Close before restore"); + DataUtils.closeDatabase(); + Log.i(TAG, "Backup before restore"); DataUtils.backupDatabase(getApplicationContext()); diff --git a/Yeeemp/app/src/main/res/menu/queue_list_toolbar_menu.xml b/Yeeemp/app/src/main/res/menu/queue_list_toolbar_menu.xml index 261d8f1..d6daecc 100644 --- a/Yeeemp/app/src/main/res/menu/queue_list_toolbar_menu.xml +++ b/Yeeemp/app/src/main/res/menu/queue_list_toolbar_menu.xml @@ -7,4 +7,8 @@ + + \ No newline at end of file