Delete action

This commit is contained in:
pegasko 2024-06-12 05:08:42 +03:00
parent 4dee17b7de
commit 09b2e6fc21
3 changed files with 57 additions and 0 deletions

View file

@ -30,8 +30,10 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import art.pegasko.yeeemp.base.Wrapper;
import art.pegasko.yeeemp.ui.activity.Utils; import art.pegasko.yeeemp.ui.activity.Utils;
// TODO: Better data management API
public class DataUtils { public class DataUtils {
public static final String DATE_FORMAT = "yyyy-MM-dd-HH-mm-ss"; 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"); File backupFile = new File(context.getFilesDir(), "backup.db");
backupFile.delete(); 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();
}
} }

View file

@ -86,6 +86,7 @@ public class QueueListActivity extends AppCompatActivity {
/* Toolbar menu */ /* Toolbar menu */
binding.toolbar.inflateMenu(R.menu.queue_list_toolbar_menu); binding.toolbar.inflateMenu(R.menu.queue_list_toolbar_menu);
// TODO: Better import / export / delete logic
binding.toolbar.setOnMenuItemClickListener((MenuItem item) -> { binding.toolbar.setOnMenuItemClickListener((MenuItem item) -> {
if (item.getItemId() == R.id.queue_list_toolbar_menu_export) { if (item.getItemId() == R.id.queue_list_toolbar_menu_export) {
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
@ -99,6 +100,41 @@ public class QueueListActivity extends AppCompatActivity {
intent.setType("*/*"); intent.setType("*/*");
startActivityForResult(intent, REQUEST_CODE_OPEN_FILE); 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 true;
} }
return false; return false;
@ -167,6 +203,9 @@ public class QueueListActivity extends AppCompatActivity {
Log.i(TAG, "Importing file from " + uri.toString()); Log.i(TAG, "Importing file from " + uri.toString());
try { try {
Log.i(TAG, "Close before restore");
DataUtils.closeDatabase();
Log.i(TAG, "Backup before restore"); Log.i(TAG, "Backup before restore");
DataUtils.backupDatabase(getApplicationContext()); DataUtils.backupDatabase(getApplicationContext());

View file

@ -7,4 +7,8 @@
<item <item
android:id="@+id/queue_list_toolbar_menu_import" android:id="@+id/queue_list_toolbar_menu_import"
android:title="Import" /> android:title="Import" />
<item
android:id="@+id/queue_list_toolbar_menu_delete"
android:title="Delete all" />
</menu> </menu>