Ticket #1148: android_backup_restore.diff

File android_backup_restore.diff, 27.5 KB (added by kamikaaze, 8 years ago)
  • navit/android/res/values/strings.xml

     
    2828        <string name="optionsmenu_toggle_poi">Toggle POIs</string>
    2929        <string name="optionsmenu_address_search">@string/address_search_title</string>
    3030        <string name="optionsmenu_exit_navit">Exit Navit</string>
     31    <string name="optionsmenu_backup_restore">Backup / Restore</string>
    3132
    3233        <!-- POSITION POP-UP -->
    3334        <string name="position_popup_title">Position</string>
     
    5960        <string name="address_search_set_destination">Setting destination to:</string>
    6061        <string name="address_search_towns">Towns</string>
    6162        <string name="address_search_streets">Streets</string>
     63   
     64    <!--  Backup Restore -->
     65    <string name="choose_an_action">Choose an Action</string>
     66    <string name="please_insert_an_sd_card">Please insert an SD Card</string>
     67    <string name="backing_up">Backing up...</string>
     68    <string name="failed_to_create_backup_directory">Failed to create backup directory</string>
     69    <string name="backup_failed">Backup Failed</string>
     70    <string name="no_backup_found">No Backup found</string>
     71    <string name="failed_to_restore">Failed to restore</string>
     72    <string name="backup_successful">Backup Successful</string>
     73    <string name="restore_successful_please_restart_navit">Restore Successful\nPlease restart Navit</string>
     74    <string-array name="dialog_backup_restore_items">
     75                <item >Backup</item>
     76        <item >Restore</item>
     77        </string-array>
    6278
    6379</resources>
    6480
  • navit/android/res/values-de/strings.xml

     
    2424        <string name="optionsmenu_toggle_poi">POI ein/aus</string>
    2525        <string name="optionsmenu_address_search">@string/address_search_title</string>
    2626        <string name="optionsmenu_exit_navit">Navit beenden</string>
    27 
     27    <string name="optionsmenu_backup_restore">Sichern / Wiederherstellen</string>
     28   
    2829        <!-- POSITION POP-UP -->
    2930        <string name="position_popup_title">Position</string>
    3031        <string name="position_popup_drive_here">Ziel setzen</string>
     
    5556        <string name="address_search_set_destination">Neues Fahrziel:</string>
    5657        <string name="address_search_towns">StÀdte</string>
    5758        <string name="address_search_streets">Straßen</string>
     59   
     60    <!--  Backup Restore -->
     61    <string name="choose_an_action">Bitte auswÀhlen</string>
     62    <string name="please_insert_an_sd_card">Bitte eine SD Karte einlegen</string>
     63    <string name="backing_up">Sichern...</string>
     64    <string name="failed_to_create_backup_directory">Sicherungsverzeichnis konnte nicht erstellt werden</string>
     65    <string name="backup_failed">Sicherung Fehlgeschlagen</string>
     66    <string name="no_backup_found">Keine Sicherung gefunden</string>
     67    <string name="failed_to_restore">Fehler beim Wiederherstellen</string>
     68    <string name="backup_successful">Sicherung erfolgreich</string>
     69    <string name="restore_successful_please_restart_navit">Sicherung Erfolgreich\nNavit bitte neustarten</string>
     70    <string-array name="dialog_backup_restore_items">
     71                <item >Sichern</item>
     72        <item >Wiederherstellen</item>
     73        </string-array>
     74   
    5875</resources>
    5976
  • navit/android/res/values-fr/strings.xml

     
    2424        <string name="optionsmenu_toggle_poi">POI on/off</string>
    2525        <string name="optionsmenu_address_search">@string/address_search_title</string>
    2626        <string name="optionsmenu_exit_navit">Quitter Navit</string>
    27 
     27    <string name="optionsmenu_backup_restore">Backup / Restore</string>
     28   
    2829        <!-- POSITION POP-UP -->
    2930        <string name="position_popup_title">Position</string>
    3031        <string name="position_popup_drive_here">Conduire ici</string>
     
    5354        <string name="address_search_set_destination">Destination fixée à:</string>
    5455        <string name="address_search_towns">Villes</string>
    5556        <string name="address_search_streets">Rues</string>
     57   
     58    <!--  Backup Restore -->
     59    <string name="choose_an_action">Choose an Action</string>
     60    <string name="please_insert_an_sd_card">Please insert an SD Card</string>
     61    <string name="backing_up">Backing up...</string>
     62    <string name="failed_to_create_backup_directory">Failed to create backup directory</string>
     63    <string name="backup_failed">Backup Failed</string>
     64    <string name="no_backup_found">No Backup found</string>
     65    <string name="failed_to_restore">Failed to restore</string>
     66    <string name="backup_successful">Backup Successful</string>
     67    <string name="restore_successful_please_restart_navit">Restore Successful\nPlease restart Navit</string>
     68    <string-array name="dialog_backup_restore_items">
     69                <item >Backup</item>
     70        <item >Restore</item>
     71        </string-array>
     72   
    5673</resources>
    5774
  • navit/android/res/values-nl/strings.xml

     
    2424        <string name="optionsmenu_toggle_poi">Schakel POIs</string>
    2525        <string name="optionsmenu_address_search">@string/address_search_title</string>
    2626        <string name="optionsmenu_exit_navit">Verlaat Navit</string>
     27        <string name="optionsmenu_backup_restore">Backup / Restore</string>
    2728
    2829        <!-- POSITION POP-UP -->
    2930        <string name="position_popup_title">Position</string>
     
    5354        <string name="address_search_set_destination">Bestemming ingesteld:</string>
    5455        <string name="address_search_towns">Steden</string>
    5556        <string name="address_search_streets">Straten</string>
     57   
     58    <!--  Backup Restore -->
     59    <string name="choose_an_action">Choose an Action</string>
     60    <string name="please_insert_an_sd_card">Please insert an SD Card</string>
     61    <string name="backing_up">Backing up...</string>
     62    <string name="failed_to_create_backup_directory">Failed to create backup directory</string>
     63    <string name="backup_failed">Backup Failed</string>
     64    <string name="no_backup_found">No Backup found</string>
     65    <string name="failed_to_restore">Failed to restore</string>
     66    <string name="backup_successful">Backup Successful</string>
     67    <string name="restore_successful_please_restart_navit">Restore Successful\nPlease restart Navit</string>
     68    <string-array name="dialog_backup_restore_items">
     69                <item >Backup</item>
     70        <item >Restore</item>
     71        </string-array>
     72   
    5673</resources>
    5774
  • navit/android/src/org/navitproject/navit/Navit.java

     
    1919
    2020package org.navitproject.navit;
    2121
    22 import java.io.File;
    23 import java.io.FileOutputStream;
    24 import java.io.InputStream;
    25 import java.util.HashMap;
    26 import java.util.Locale;
    27 import java.util.Map;
    28 import java.util.regex.Matcher;
    29 import java.util.regex.Pattern;
    30 
    3122import android.app.Activity;
    3223import android.app.AlertDialog;
    3324import android.app.Dialog;
     
    6152import android.widget.TextView;
    6253import android.widget.Toast;
    6354
     55import java.io.File;
     56import java.io.FileOutputStream;
     57import java.io.InputStream;
     58import java.util.HashMap;
     59import java.util.Locale;
     60import java.util.Map;
     61import java.util.regex.Matcher;
     62import java.util.regex.Pattern;
    6463
     64
    6565public class Navit extends Activity
    6666{
    6767
     
    160160                        message.setVerticalFadingEdgeEnabled(true);
    161161                        // message.setVerticalScrollBarEnabled(true);
    162162                        RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
    163        
     163
    164164                        message.setLayoutParams(rlp);
    165165                        final SpannableString s = new SpannableString(getString(R.string.initial_info_box_message)); // TRANS
    166166                        Linkify.addLinks(s, Linkify.WEB_URLS);
    167167                        message.setText(s);
    168168                        message.setMovementMethod(LinkMovementMethod.getInstance());
    169169                        infobox.setView(message);
    170        
     170
    171171                        // TRANS
    172172                        infobox.setPositiveButton(getString(R.string.initial_info_box_OK), new DialogInterface.OnClickListener() {
     173                                @Override
    173174                                public void onClick(DialogInterface arg0, int arg1) {
    174175                                        Log.e("Navit", "Ok, user saw the infobox");
    175176                                }
     
    177178
    178179                        // TRANS
    179180                        infobox.setNeutralButton(getString(R.string.initial_info_box_more_info), new DialogInterface.OnClickListener() {
     181                                @Override
    180182                                public void onClick(DialogInterface arg0, int arg1) {
    181183                                        Log.e("Navit", "user wants more info, show the website");
    182184                                        String url = "http://wiki.navit-project.org/index.php/Navit_on_Android";
     
    211213
    212214                // init translated text
    213215                NavitTextTranslations.init();
    214                
     216
    215217                // NOTIFICATION
    216                 // Setup the status bar notification           
     218                // Setup the status bar notification
    217219                // This notification is removed in the exit() function
    218220                NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);  // Grab a handle to the NotificationManager
    219221                Notification NavitNotification = new Notification(R.drawable.icon,"Navit started",System.currentTimeMillis());  // Create a new notification, with the text string to show when the notification first appears
     
    221223                NavitNotification.setLatestEventInfo(getApplicationContext(), "Navit", "Navit running", appIntent);     // Set the text in the notification
    222224                NavitNotification.flags|=Notification.FLAG_ONGOING_EVENT;       // Ensure that the notification appears in Ongoing
    223225                nm.notify(R.string.app_name, NavitNotification);        // Set the notification
    224                
     226
    225227                // get the local language -------------
    226228                Locale locale = java.util.Locale.getDefault();
    227229                String lang = locale.getLanguage();
     
    346348                Map<String,String> params = new HashMap<String,String>();
    347349                for (int count=0; count < naviData.length; count++) {
    348350                        Matcher m = p.matcher(naviData[count]);
    349                        
     351
    350352                        if (m.matches()) {
    351353                                params.put(m.group(1), m.group(2));
    352354                        }
    353355                }
    354                
     356
    355357                // d: google.navigation:q=blabla-strasse # (this happens when you are offline, or from contacts)
    356358                // a: google.navigation:ll=48.25676,16.643&q=blabla-strasse
    357359                // c: google.navigation:ll=48.25676,16.643
    358360                // b: google.navigation:q=48.25676,16.643
    359                
     361
    360362                Float lat;
    361363                Float lon;
    362364                Bundle b = new Bundle();
    363                
     365
    364366                String geoString = params.get("ll");
    365367                if (geoString != null) {
    366368                        String address = params.get("q");
     
    369371                else {
    370372                        geoString = params.get("q");
    371373                }
    372                
     374
    373375                if ( geoString != null) {
    374376                        if (geoString.matches("^[+-]{0,1}\\d+(|\\.\\d*),[+-]{0,1}\\d+(|\\.\\d*)$")) {
    375377                                String geo[] = geoString.split(",");
     
    417419
    418420                menu.add(1, 6, 500, getString(R.string.optionsmenu_address_search)); //TRANS
    419421
     422                /* Only show the Backup to SD-Card Option if we really have one */
     423                if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
     424                        menu.add(1, 7, 700, getString(R.string.optionsmenu_backup_restore)); //TRANS
     425
    420426                menu.add(1, 99, 900, getString(R.string.optionsmenu_exit_navit)); //TRANS
    421427                return true;
    422428        }
     
    500506                                Intent search_intent = new Intent(this, NavitAddressSearchActivity.class);
    501507                                this.startActivityForResult(search_intent, NavitAddressSearch_id);
    502508                                break;
     509
     510                        case 7:
     511                                /* Backup / Restore */
     512                                showDialog(NavitDialogs.DIALOG_BACKUP_RESTORE);
     513                                break;
    503514                        case 99 :
    504515                                // exit
    505516                                this.onStop();
     
    521532                msg.sendToTarget();
    522533        }
    523534
     535        @Override
    524536        protected void onActivityResult(int requestCode, int resultCode, Intent data)
    525537        {
    526538                switch (requestCode)
    527539                {
    528                 case Navit.NavitDownloaderSelectMap_id :
    529                         if (resultCode == Activity.RESULT_OK)
    530                         {
    531                                 Message msg = dialogs.obtainMessage(NavitDialogs.MSG_START_MAP_DOWNLOAD
    532                                                 , data.getIntExtra("map_index", -1), 0);
    533                                 msg.sendToTarget();
    534                         }
    535                         break;
    536                 case NavitAddressSearch_id :
    537                         if (resultCode == Activity.RESULT_OK) {
    538                                 Bundle destination = data.getExtras();
    539                                 Toast.makeText( getApplicationContext(),getString(R.string.address_search_set_destination) + "\n" + destination.getString("q"), Toast.LENGTH_LONG).show(); //TRANS
     540                        case Navit.NavitDownloaderSelectMap_id :
     541                                if (resultCode == Activity.RESULT_OK)
     542                                {
     543                                        Message msg = dialogs.obtainMessage(NavitDialogs.MSG_START_MAP_DOWNLOAD
     544                                                        , data.getIntExtra("map_index", -1), 0);
     545                                        msg.sendToTarget();
     546                                }
     547                                break;
     548                        case NavitAddressSearch_id :
     549                                if (resultCode == Activity.RESULT_OK) {
     550                                        Bundle destination = data.getExtras();
     551                                        Toast.makeText( getApplicationContext(),getString(R.string.address_search_set_destination) + "\n" + destination.getString("q"), Toast.LENGTH_LONG).show(); //TRANS
    540552
    541                                 Message msg = Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_SET_DESTINATION.ordinal());
    542                                 msg.setData(destination);
    543                                 msg.sendToTarget();
    544                         }
    545                         break;
    546                 default :
    547                         //Log.e("Navit", "onActivityResult " + requestCode + " " + resultCode);
    548                         ActivityResults[requestCode].onActivityResult(requestCode, resultCode, data);
    549                         break;
     553                                        Message msg = Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_SET_DESTINATION.ordinal());
     554                                        msg.setData(destination);
     555                                        msg.sendToTarget();
     556                                }
     557                                break;
     558                        default :
     559                                //Log.e("Navit", "onActivityResult " + requestCode + " " + resultCode);
     560                                ActivityResults[requestCode].onActivityResult(requestCode, resultCode, data);
     561                                break;
    550562                }
    551563        }
    552564
     565        @Override
    553566        protected Dialog onCreateDialog(int id)
    554567        {
    555568                return dialogs.createDialog(id);
     
    561574                super.onDestroy();
    562575                Log.e("Navit", "OnDestroy");
    563576                // TODO next call will kill our app the hard way. This should not be necessary, but ensures navit is
    564                 // properly restarted and no resources are wasted with navit in background. Remove this call after 
     577                // properly restarted and no resources are wasted with navit in background. Remove this call after
    565578                // code review
    566579                NavitDestroy();
    567580        }
  • navit/android/src/org/navitproject/navit/NavitBackupRestoreTask.java

     
     1package org.navitproject.navit;
     2
     3import android.app.Activity;
     4import android.app.NotificationManager;
     5import android.app.ProgressDialog;
     6import android.content.Context;
     7import android.content.SharedPreferences.Editor;
     8import android.os.AsyncTask;
     9import android.os.Environment;
     10import android.widget.Toast;
     11
     12import java.io.File;
     13import java.io.FileInputStream;
     14import java.io.FileOutputStream;
     15import java.io.IOException;
     16import java.io.ObjectInputStream;
     17import java.io.ObjectOutputStream;
     18import java.util.Map;
     19import java.util.Map.Entry;
     20
     21public class NavitBackupRestoreTask extends AsyncTask<Void, Void, String> {
     22
     23        public static final int BACKUP = 1;
     24        public static final int RESTORE = 2;
     25
     26        private Activity mActivity;
     27        private ProgressDialog mDialog;
     28        private int mRequest;
     29
     30        public NavitBackupRestoreTask (Activity context, int request) {
     31                mActivity = context;
     32                mRequest = request;
     33        }
     34
     35        @Override
     36        protected void onPreExecute() {
     37                super.onPreExecute();
     38
     39                mDialog = new ProgressDialog(mActivity);
     40                mDialog.setIndeterminate(true);
     41                mDialog.setMessage(mActivity.getString(R.string.backing_up));
     42                mDialog.show();
     43        }
     44
     45        @SuppressWarnings("unchecked")
     46        @Override
     47        protected String doInBackground(Void... v) {
     48                File backupDir = new File(Environment.getExternalStorageDirectory().getPath() + "/navit/backup");
     49
     50                switch (mRequest) {
     51                        case BACKUP:
     52
     53                                /* Check if the Backup Directory exists and create it if not */
     54                                if(!backupDir.isDirectory()){
     55                                        if(!backupDir.mkdirs())
     56                                                return mActivity.getString(R.string.failed_to_create_backup_directory);
     57                                }
     58
     59                                ObjectOutputStream preferencesOOs = null;
     60                                try{
     61                                        /* Backup Files in home */
     62                                        copyFileIfExists(Navit.NAVIT_DATA_DIR + "/home/bookmark.txt", backupDir.getPath() + "/bookmark.txt");
     63                                        copyFileIfExists(Navit.NAVIT_DATA_DIR + "/home/destination.txt", backupDir.getPath() + "/destination.txt");
     64                                        copyFileIfExists(Navit.NAVIT_DATA_DIR + "/home/gui_internal.txt", backupDir.getPath() + "/gui_internal.txt");
     65
     66                                        /* Backup Shared Preferences */
     67                                        preferencesOOs = new ObjectOutputStream(new FileOutputStream(backupDir.getPath() + "/preferences.bak"));
     68                                        preferencesOOs.writeObject(mActivity.getSharedPreferences(Navit.NAVIT_PREFS, Context.MODE_PRIVATE).getAll());
     69
     70                                } catch (IOException e) {
     71                                        e.printStackTrace();
     72                                        return mActivity.getString(R.string.backup_failed);
     73                                } finally {
     74                                        /* Close Stream to prevent Resource Leaks */
     75                                        try {
     76                                                if(preferencesOOs != null)
     77                                                        preferencesOOs.close();
     78                                        } catch (IOException e) {
     79                                                e.printStackTrace();
     80                                                return mActivity.getString(R.string.backup_failed);
     81                                        }
     82                                }
     83
     84                                return null;
     85                        case RESTORE:
     86
     87                                /* Check if there is a Backup Directory */
     88                                if(!backupDir.isDirectory())
     89                                        return mActivity.getString(R.string.no_backup_found);
     90
     91                                ObjectInputStream preferenceOIS = null;
     92                                try {
     93                                        /* Restore Files in home */
     94                                        copyFileIfExists(backupDir.getPath() + "/bookmark.txt", Navit.NAVIT_DATA_DIR + "/home/bookmark.txt");
     95                                        copyFileIfExists(backupDir.getPath() + "/destination.txt", Navit.NAVIT_DATA_DIR + "/home/destination.txt");
     96                                        copyFileIfExists(backupDir.getPath() + "/gui_internal.txt", Navit.NAVIT_DATA_DIR + "/home/gui_internal.txt");
     97
     98                                        /* Restore Shared Preferences */
     99                                        preferenceOIS = new ObjectInputStream(new FileInputStream(backupDir.getPath() + "/preferences.bak"));
     100                                        Map<String, ?> entries = (Map<String, ?>) preferenceOIS.readObject();
     101
     102                                        Editor prefEditor = mActivity.getSharedPreferences(Navit.NAVIT_PREFS, Context.MODE_PRIVATE).edit();
     103
     104                                        /* Remove all old Preferences */
     105                                        prefEditor.clear();
     106
     107                                        /* Iterate through all Entries and add them to our Preferences */
     108                                        for(Entry<String, ?> entry : entries.entrySet()) {
     109                                                Object value = entry.getValue();
     110                                                String key = entry.getKey();
     111
     112                                                if(value instanceof Boolean)
     113                                                        prefEditor.putBoolean(key, ((Boolean) value).booleanValue());
     114                                                else if(value instanceof Float)
     115                                                        prefEditor.putFloat(key, ((Float) value).floatValue());
     116                                                else if(value instanceof Integer)
     117                                                        prefEditor.putInt(key, ((Integer) value).intValue());
     118                                                else if(value instanceof Long)
     119                                                        prefEditor.putLong(key, ((Long) value).longValue());
     120                                                else if(value instanceof String)
     121                                                        prefEditor.putString(key, (String) value);
     122                                        }
     123
     124                                        if(!prefEditor.commit())
     125                                                return mActivity.getString(R.string.failed_to_restore);
     126
     127                                } catch (Exception e) {
     128                                        e.printStackTrace();
     129                                        return mActivity.getString(R.string.failed_to_restore);
     130                                } finally {
     131                                        try {
     132                                                /* Close Stream to prevent Resource leak */
     133                                                if(preferenceOIS != null)
     134                                                        preferenceOIS.close();
     135                                        } catch (IOException e) {
     136
     137                                        }
     138                                }
     139
     140                                return null;
     141                }
     142
     143                /* We should never end up here */
     144                return mActivity.getString(R.string.backup_failed);
     145        }
     146
     147        private void copyFileIfExists(String source, String destination) throws IOException {
     148                File file = new File(source);
     149
     150                if(!file.exists())
     151                        return;
     152
     153                FileInputStream is = null;
     154                FileOutputStream os = null;
     155
     156                try{
     157                        is = new FileInputStream(source);
     158                        os = new FileOutputStream(destination);
     159
     160                        int len;
     161                        byte buffer[] = new byte[1024];
     162
     163                        while((len = is.read(buffer)) != -1) {
     164                                os.write(buffer, 0, len);
     165                        }
     166
     167                } finally {
     168                        /* Close the FileStreams to prevent Resource leaks */
     169                        if(is != null)
     170                                is.close();
     171
     172                        if(os != null)
     173                                os.close();
     174                }
     175        }
     176
     177        @Override
     178        protected void onPostExecute(String result) {
     179                super.onPostExecute(result);
     180
     181                if(result != null){
     182                        Toast.makeText(mActivity, result, Toast.LENGTH_LONG).show();
     183                        return;
     184                }
     185
     186                if(mRequest == BACKUP){
     187                        Toast.makeText(mActivity, mActivity.getString(R.string.backup_successful), Toast.LENGTH_LONG).show();
     188                }
     189                else if(mRequest == RESTORE) {
     190                        /* If we restored the Settings, then Navit needs to be restarted
     191                         * Currently the User has to restart it by himself */
     192                        Toast.makeText(mActivity, mActivity.getString(R.string.restore_successful_please_restart_navit), Toast.LENGTH_LONG).show();
     193                        NotificationManager nm = (NotificationManager) mActivity.getSystemService(Context.NOTIFICATION_SERVICE);
     194                        nm.cancel(R.string.app_name);
     195                        NavitVehicle.removeListener();
     196                        mActivity.finish();
     197                }
     198
     199                mDialog.dismiss();
     200        }
     201}
  • navit/android/src/org/navitproject/navit/NavitDialogs.java

     
    11package org.navitproject.navit;
    22
    33
     4import android.app.AlertDialog;
    45import android.app.Dialog;
    56import android.app.ProgressDialog;
    67import android.content.DialogInterface;
    78import android.os.Bundle;
     9import android.os.Environment;
    810import android.os.Handler;
    911import android.os.Message;
    1012import android.util.Log;
     
    1315public class NavitDialogs extends Handler{
    1416        // Dialogs
    1517        public static final int           DIALOG_MAPDOWNLOAD               = 1;
     18        public static final int           DIALOG_BACKUP_RESTORE            = 2;
    1619
    1720        // dialog messages
    1821        static final int MSG_MAP_DOWNLOAD_FINISHED   = 0;
     
    2629
    2730        private ProgressDialog                    mapdownloader_dialog     = null;
    2831        private NavitMapDownloader                mapdownloader            = null;
     32        private AlertDialog                       backupRestoreDialog      = null;
    2933
    3034        private Navit mActivity;
    3135
     
    3943        {
    4044                Message msg = mHandler.obtainMessage(what);
    4145                Bundle data = new Bundle();
    42                
     46
    4347                data.putString("title", title);
    44                 data.putString("text", text); 
    45                 data.putInt("value1", value1); 
     48                data.putString("text", text);
     49                data.putInt("value1", value1);
    4650                data.putInt("value2", value2);
    4751                data.putInt("dialog_num", dialog_num);
    4852                msg.setData(data);
    49                
     53
    5054                mHandler.sendMessage(msg);
    5155        }
    5256
     
    5559        {
    5660                switch (msg.what)
    5761                {
    58                 case MSG_MAP_DOWNLOAD_FINISHED :
    59                 {
    60                         // dismiss dialog, remove dialog
    61                         mActivity.dismissDialog(DIALOG_MAPDOWNLOAD);
    62                         mActivity.removeDialog(DIALOG_MAPDOWNLOAD);
    63                         if (msg.getData().getInt("value1") == 1) {
    64                                 Message activate_map_msg =
    65                                         Message.obtain(Navit.N_NavitGraphics.callback_handler,
    66                                                 NavitGraphics.msg_type.CLB_LOAD_MAP.ordinal());
    67                                 activate_map_msg.setData(msg.getData());
    68                                 activate_map_msg.sendToTarget();
     62                        case MSG_MAP_DOWNLOAD_FINISHED :
     63                        {
     64                                // dismiss dialog, remove dialog
     65                                mActivity.dismissDialog(DIALOG_MAPDOWNLOAD);
     66                                mActivity.removeDialog(DIALOG_MAPDOWNLOAD);
     67                                if (msg.getData().getInt("value1") == 1) {
     68                                        Message activate_map_msg =
     69                                                        Message.obtain(Navit.N_NavitGraphics.callback_handler,
     70                                                                        NavitGraphics.msg_type.CLB_LOAD_MAP.ordinal());
     71                                        activate_map_msg.setData(msg.getData());
     72                                        activate_map_msg.sendToTarget();
     73                                }
     74                                break;
    6975                        }
    70                         break;
    71                 }
    72                 case MSG_PROGRESS_BAR :
    73                         // change progressbar values
    74                         mapdownloader_dialog.setMax(msg.getData().getInt("value1"));
    75                         mapdownloader_dialog.setProgress(msg.getData().getInt("value2"));
    76                         mapdownloader_dialog.setTitle(msg.getData().getString("title"));
    77                         mapdownloader_dialog.setMessage(msg.getData().getString("text"));
    78                         break;
    79                 case MSG_TOAST :
    80                         Toast.makeText(mActivity, msg.getData().getString("text"), Toast.LENGTH_SHORT).show();
    81                         break;
    82                 case MSG_TOAST_LONG :
    83                         Toast.makeText(mActivity, msg.getData().getString("text"), Toast.LENGTH_LONG).show();
    84                         break;
    85                 case MSG_START_MAP_DOWNLOAD:
    86                 {
    87                         int download_map_id = msg.arg1;
    88                         Log.d("Navit", "PRI id=" + download_map_id);
    89                         // set map id to download
     76                        case MSG_PROGRESS_BAR :
     77                                // change progressbar values
     78                                mapdownloader_dialog.setMax(msg.getData().getInt("value1"));
     79                                mapdownloader_dialog.setProgress(msg.getData().getInt("value2"));
     80                                mapdownloader_dialog.setTitle(msg.getData().getString("title"));
     81                                mapdownloader_dialog.setMessage(msg.getData().getString("text"));
     82                                break;
     83                        case MSG_TOAST :
     84                                Toast.makeText(mActivity, msg.getData().getString("text"), Toast.LENGTH_SHORT).show();
     85                                break;
     86                        case MSG_TOAST_LONG :
     87                                Toast.makeText(mActivity, msg.getData().getString("text"), Toast.LENGTH_LONG).show();
     88                                break;
     89                        case MSG_START_MAP_DOWNLOAD:
     90                        {
     91                                int download_map_id = msg.arg1;
     92                                Log.d("Navit", "PRI id=" + download_map_id);
     93                                // set map id to download
    9094
    91                         // show the map download progressbar, and download the map
    92                         if (download_map_id > -1)
    93                         {
    94                                 mapdownloader = new NavitMapDownloader(download_map_id);
    95                                 mActivity.showDialog(NavitDialogs.DIALOG_MAPDOWNLOAD);
    96                                 mapdownloader.start();
     95                                // show the map download progressbar, and download the map
     96                                if (download_map_id > -1)
     97                                {
     98                                        mapdownloader = new NavitMapDownloader(download_map_id);
     99                                        mActivity.showDialog(NavitDialogs.DIALOG_MAPDOWNLOAD);
     100                                        mapdownloader.start();
     101                                }
    97102                        }
    98                 }
    99                 break;
    100                 case MSG_REMOVE_DIALOG_GENERIC :
    101                         // dismiss dialog, remove dialog - generic
    102                         mActivity.dismissDialog(msg.getData().getInt("dialog_num"));
    103                         mActivity.removeDialog(msg.getData().getInt("dialog_num"));
    104103                        break;
     104                        case MSG_REMOVE_DIALOG_GENERIC :
     105                                // dismiss dialog, remove dialog - generic
     106                                mActivity.dismissDialog(msg.getData().getInt("dialog_num"));
     107                                mActivity.removeDialog(msg.getData().getInt("dialog_num"));
     108                                break;
    105109                }
    106110        }
    107111
     
    119123                                mapdownloader_dialog.setMax(200);
    120124                                DialogInterface.OnDismissListener onDismissListener = new DialogInterface.OnDismissListener()
    121125                                {
     126                                        @Override
    122127                                        public void onDismiss(DialogInterface dialog)
    123128                                        {
    124129                                                Log.e("Navit", "onDismiss: mapdownloader_dialog");
     
    131136                                                Navit.get_text("Map data (c) OpenStreetMap contributors, CC-BY-SA"),
    132137                                                Toast.LENGTH_LONG).show(); //TRANS
    133138                                return mapdownloader_dialog;
     139
     140                        case DIALOG_BACKUP_RESTORE:
     141                                /* Create a Dialog that Displays Options wether to Backup or Restore */
     142                                AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
     143                                builder.setTitle(mActivity.getString(R.string.choose_an_action)).
     144                                setCancelable(true).
     145                                setItems(R.array.dialog_backup_restore_items,
     146                                                new DialogInterface.OnClickListener() {
     147
     148                                        @Override
     149                                        public void onClick(DialogInterface dialog, int which) {
     150                                                /* Notify User if no SD Card present */
     151                                                if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
     152                                                        Toast.makeText(mActivity, mActivity.getString(R.string.please_insert_an_sd_card), Toast.LENGTH_LONG).show();
     153
     154                                                switch (which) {
     155                                                        case 0:
     156                                                                /* Backup */
     157                                                                new NavitBackupRestoreTask(mActivity, NavitBackupRestoreTask.BACKUP).execute();
     158                                                                break;
     159                                                        case 1:
     160                                                                /* Restore */
     161                                                                new NavitBackupRestoreTask(mActivity, NavitBackupRestoreTask.RESTORE).execute();
     162                                                                break;
     163                                                }
     164                                        }});
     165
     166                                return builder.create();
    134167                }
    135168                // should never get here!!
    136169                return null;