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