diff options
Diffstat (limited to 'main/src/cgeo/geocaching/cgeoapplication.java')
| -rw-r--r-- | main/src/cgeo/geocaching/cgeoapplication.java | 31 |
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(); } |
