aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/cgeoapplication.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/cgeoapplication.java')
-rw-r--r--main/src/cgeo/geocaching/cgeoapplication.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/cgeoapplication.java b/main/src/cgeo/geocaching/cgeoapplication.java
index 63e34a6..abbd85c 100644
--- a/main/src/cgeo/geocaching/cgeoapplication.java
+++ b/main/src/cgeo/geocaching/cgeoapplication.java
@@ -76,6 +76,37 @@ public class cgeoapplication extends Application {
return storage.backupDatabase();
}
+ /**
+ * Move the database to/from external storage in a new thread,
+ * showing a progress window
+ *
+ * @param fromActivity
+ */
+ public void moveDatabase(final Activity fromActivity) {
+ final Resources res = this.getResources();
+ final ProgressDialog dialog = ProgressDialog.show(fromActivity, res.getString(R.string.init_dbmove_dbmove), res.getString(R.string.init_dbmove_running), true, false);
+ final AtomicBoolean atomic = new AtomicBoolean(false);
+ Thread moveThread = new Thread() {
+ final Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ dialog.dismiss();
+ boolean success = atomic.get();
+ String message = success ? res.getString(R.string.init_dbmove_success) : res.getString(R.string.init_dbmove_failed);
+ ActivityMixin.helpDialog(fromActivity, res.getString(R.string.init_dbmove_dbmove), message);
+ }
+ };
+
+ @Override
+ public void run() {
+ atomic.set(storage.moveDatabase());
+ handler.sendMessage(handler.obtainMessage());
+ }
+ };
+ moveThread.start();
+ }
+
+
public static File isRestoreFile() {
return cgData.isRestoreFile();
}