import java.util.List;\r
import java.util.Locale;\r
\r
-import org.navitproject.navit.NavitMapDownloader;\r
-\r
import android.app.Activity;\r
import android.app.AlertDialog;\r
import android.app.Dialog;\r
import android.app.Notification;\r
import android.app.NotificationManager;\r
import android.app.PendingIntent;\r
-import android.app.ProgressDialog;\r
import android.content.Context;\r
import android.content.DialogInterface;\r
import android.content.Intent;\r
}\r
\r
public Handler handler;\r
+ public NavitDialogs dialogs;\r
private PowerManager.WakeLock wl;\r
private NavitActivityResult ActivityResults[];\r
public static InputMethodManager mgr = null;\r
private static long startup_intent_timestamp = 0L;\r
public static String my_display_density = "mdpi";\r
private boolean searchBoxShown = false;\r
- public static final int MAPDOWNLOAD_DIALOG = 1;\r
- public static final int SEARCHRESULTS_WAIT_DIALOG = 3;\r
public static final int ADDRESS_RESULTS_DIALOG_MAX = 10;\r
- public ProgressDialog mapdownloader_dialog = null;\r
- public ProgressDialog search_results_wait = null;\r
- public static Handler Navit_progress_h = null;\r
- public static NavitMapDownloader mapdownloader = null;\r
public static final int NavitDownloaderPriSelectMap_id = 967;\r
public static final int NavitDownloaderSecSelectMap_id = 968;\r
public static int search_results_towns = 0;\r
public static int search_results_streets = 0;\r
public static int search_results_streets_hn = 0;\r
- SearchResultsThread searchresultsThread = null;\r
- SearchResultsThreadSpinnerThread spinner_thread = null;\r
- public static Boolean NavitAddressSearchSpinnerActive = false;\r
public static final int MAP_NUM_PRIMARY = 11;\r
public static final int NavitAddressSearch_id = 70;\r
public static final int NavitAddressResultList_id = 71;\r
public static List<Navit_Address_Result_Struct> NavitAddressResultList_foundItems = new ArrayList<Navit_Address_Result_Struct>();\r
\r
- public static String Navit_last_address_search_string = "";\r
- public static Boolean Navit_last_address_partial_match = false;\r
\r
public static final int MAP_NUM_SECONDARY = 12;\r
static final String MAP_FILENAME_PATH = "/sdcard/navit/";\r
{\r
super.onCreate(savedInstanceState);\r
\r
+ dialogs = new NavitDialogs(this);\r
+\r
// only take arguments here, onResume gets called all the time (e.g. when screenblanks, etc.)\r
Navit.startup_intent = this.getIntent();\r
// hack! remeber timstamp, and only allow 4 secs. later in onResume to set target!\r
/*\r
* show info box for first time users\r
*/\r
-\r
+ \r
// make handler statically available for use in "msg_to_msg_handler"\r
- Navit_progress_h = this.progress_handler;\r
\r
Display display_ = getWindowManager().getDefaultDisplay();\r
int width_ = display_.getWidth();\r
\r
public void start_targetsearch_from_intent(String target_address)\r
{\r
- Navit_last_address_partial_match = false;\r
- Navit_last_address_search_string = target_address;\r
+ NavitDialogs.Navit_last_address_partial_match = false;\r
+ NavitDialogs.Navit_last_address_search_string = target_address;\r
\r
// clear results\r
Navit.NavitAddressResultList_foundItems.clear();\r
\r
- if (Navit_last_address_search_string.equals(""))\r
+ if (NavitDialogs.Navit_last_address_search_string.equals(""))\r
{\r
// empty search string entered\r
Toast.makeText(getApplicationContext(), Navit.get_text("No address found"),\r
else\r
{\r
// show dialog\r
- Message msg = progress_handler.obtainMessage();\r
- Bundle b = new Bundle();\r
- msg.what = 11;\r
- b.putInt("dialog_num", Navit.SEARCHRESULTS_WAIT_DIALOG);\r
- msg.setData(b);\r
- progress_handler.sendMessage(msg);\r
+ dialogs.obtainMessage(NavitDialogs.MSG_SEARCH).sendToTarget();\r
}\r
}\r
\r
break;\r
case 3 :\r
// map download menu for primary\r
- Intent map_download_list_activity = new Intent(this,\r
- NavitDownloadSelectMapActivity.class);\r
- this.startActivityForResult(map_download_list_activity,\r
- Navit.NavitDownloaderPriSelectMap_id);\r
+ Intent map_download_list_activity = new Intent(this, NavitDownloadSelectMapActivity.class);\r
+ startActivityForResult(map_download_list_activity, Navit.NavitDownloaderPriSelectMap_id);\r
break;\r
case 4 :\r
// map download menu for second map\r
- Intent map_download_list_activity2 = new Intent(this,\r
- NavitDownloadSelectMapActivity.class);\r
- this.startActivityForResult(map_download_list_activity2,\r
- Navit.NavitDownloaderSecSelectMap_id);\r
+ Intent map_download_list_activity2 = new Intent(this, NavitDownloadSelectMapActivity.class);\r
+ startActivityForResult(map_download_list_activity2, Navit.NavitDownloaderSecSelectMap_id);\r
break;\r
case 5 :\r
// toggle the normal POI layers (to avoid double POIs)\r
// ok startup address search activity\r
Intent search_intent = new Intent(this, NavitAddressSearchActivity.class);\r
search_intent.putExtra("title", Navit.get_text("Enter: City and Street")); //TRANS\r
- search_intent.putExtra("address_string", Navit_last_address_search_string);\r
+ search_intent.putExtra("address_string", NavitDialogs.Navit_last_address_search_string);\r
String pm_temp = "0";\r
- if (Navit_last_address_partial_match)\r
+ if ( NavitDialogs.Navit_last_address_partial_match)\r
{\r
pm_temp = "1";\r
}\r
case Navit.NavitDownloaderSecSelectMap_id :\r
if (resultCode == Activity.RESULT_OK)\r
{\r
- try\r
- {\r
- Log.d("Navit", "PRI id=" + data.getIntExtra("selected_id", -1));\r
- // set map id to download\r
-\r
- int download_map_id = NavitMapDownloader.OSM_MAP_NAME_ORIG_ID_LIST[data.getIntExtra("selected_id", -1)];\r
- // show the map download progressbar, and download the map\r
- if (download_map_id > -1)\r
- {\r
- int map_slot = 0;\r
- if (requestCode == Navit.NavitDownloaderSecSelectMap_id)\r
- {\r
- map_slot = 2;\r
- }\r
- \r
- showDialog(Navit.MAPDOWNLOAD_DIALOG);\r
-\r
- mapdownloader = new NavitMapDownloader(this, progress_handler, download_map_id\r
- , Navit.MAPDOWNLOAD_DIALOG, map_slot);\r
- mapdownloader.start();\r
-\r
- }\r
- }\r
- catch (Exception e)\r
- {\r
- Log.d("Navit", "error on onActivityResult");\r
- }\r
+ Message msg = dialogs.obtainMessage(NavitDialogs.MSG_START_MAP_DOWNLOAD\r
+ , data.getIntExtra("selected_id", -1)\r
+ , requestCode == Navit.NavitDownloaderSecSelectMap_id ? 2 : 0);\r
+ msg.sendToTarget();\r
}\r
break;\r
case NavitAddressSearch_id :\r
String addr = data.getStringExtra("address_string");\r
Boolean partial_match = data.getStringExtra("partial_match").equals("1");\r
\r
- Navit_last_address_partial_match = partial_match;\r
- Navit_last_address_search_string = addr;\r
+ NavitDialogs.Navit_last_address_partial_match = partial_match;\r
+ NavitDialogs.Navit_last_address_search_string = addr;\r
\r
// clear results\r
Navit.NavitAddressResultList_foundItems.clear();\r
// show dialog, and start search for the results\r
// make it indirect, to give our activity a chance to startup\r
// (remember we come straight from another activity and ours is still paused!)\r
- Message msg = progress_handler.obtainMessage();\r
- Bundle b = new Bundle();\r
- msg.what = 11;\r
- b.putInt("dialog_num", Navit.SEARCHRESULTS_WAIT_DIALOG);\r
- msg.setData(b);\r
- progress_handler.sendMessage(msg);\r
+ dialogs.obtainMessage(NavitDialogs.MSG_SEARCH).sendToTarget();\r
}\r
}\r
catch (NumberFormatException e)\r
}\r
}\r
\r
- public class SearchResultsThreadSpinnerThread extends Thread\r
- {\r
- int dialog_num;\r
- int spinner_current_value;\r
- private Boolean running;\r
- Handler mHandler;\r
- SearchResultsThreadSpinnerThread(Handler h, int dialog_num)\r
- {\r
- this.dialog_num = dialog_num;\r
- this.mHandler = h;\r
- this.spinner_current_value = 0;\r
- this.running = true;\r
- Log.e("Navit", "SearchResultsThreadSpinnerThread created");\r
- }\r
- public void run()\r
- {\r
- Log.e("Navit", "SearchResultsThreadSpinnerThread started");\r
- while (this.running)\r
- {\r
- if (Navit.NavitAddressSearchSpinnerActive == false)\r
- {\r
- this.running = false;\r
- }\r
- else\r
- {\r
- Message msg = mHandler.obtainMessage();\r
- Bundle b = new Bundle();\r
- msg.what = 10;\r
- b.putInt("dialog_num", this.dialog_num);\r
- b.putInt("max", Navit.ADDRESS_RESULTS_DIALOG_MAX);\r
- b.putInt("cur", this.spinner_current_value % (Navit.ADDRESS_RESULTS_DIALOG_MAX + 1));\r
- b.putString("title", Navit.get_text("getting search results")); //TRANS\r
- b.putString("text", Navit.get_text("searching ...")); //TRANS\r
- msg.setData(b);\r
- mHandler.sendMessage(msg);\r
- try\r
- {\r
- Thread.sleep(700);\r
- }\r
- catch (InterruptedException e)\r
- {\r
- // e.printStackTrace();\r
- }\r
- this.spinner_current_value++;\r
- }\r
- }\r
- Log.e("Navit", "SearchResultsThreadSpinnerThread ended");\r
- }\r
- }\r
-\r
-\r
- public class SearchResultsThread extends Thread\r
- {\r
- Handler mHandler;\r
- int my_dialog_num;\r
-\r
- SearchResultsThread(Handler h, int dialog_num)\r
- {\r
- this.mHandler = h;\r
- this.my_dialog_num = dialog_num;\r
- Log.e("Navit", "SearchResultsThread created");\r
- }\r
-\r
- public void run()\r
- {\r
- Log.e("Navit", "SearchResultsThread started");\r
-\r
- // initialize the dialog with sane values\r
- Message msg = mHandler.obtainMessage();\r
- Bundle b = new Bundle();\r
- msg.what = 10;\r
- b.putInt("dialog_num", this.my_dialog_num);\r
- b.putInt("max", Navit.ADDRESS_RESULTS_DIALOG_MAX);\r
- b.putInt("cur", 0);\r
- b.putString("title", Navit.get_text("getting search results")); //TRANS\r
- b.putString("text", Navit.get_text("searching ...")); //TRANS\r
- msg.setData(b);\r
- mHandler.sendMessage(msg);\r
-\r
- int partial_match_i = 0;\r
- if (Navit_last_address_partial_match)\r
- {\r
- partial_match_i = 1;\r
- }\r
-\r
- // start the search, this could take a long time!!\r
- Log.e("Navit", "SearchResultsThread run1");\r
- Navit_last_address_search_string = filter_bad_chars(Navit_last_address_search_string);\r
- N_NavitGraphics.CallbackSearchResultList(partial_match_i, Navit_last_address_search_string);\r
- Log.e("Navit", "SearchResultsThread run2");\r
-\r
- Navit.NavitAddressSearchSpinnerActive = false;\r
-\r
- if (Navit.NavitAddressResultList_foundItems.size() > 0)\r
- {\r
- open_search_result_list();\r
- }\r
- else\r
- {\r
- // not results found, show toast\r
- msg = mHandler.obtainMessage();\r
- b = new Bundle();\r
- msg.what = 3;\r
- b.putString("text", Navit.get_text("No Results found!")); //TRANS\r
- msg.setData(b);\r
- mHandler.sendMessage(msg);\r
- }\r
-\r
- // ok, remove dialog\r
- msg = mHandler.obtainMessage();\r
- b = new Bundle();\r
- msg.what = 99;\r
- b.putInt("dialog_num", this.my_dialog_num);\r
- msg.setData(b);\r
- mHandler.sendMessage(msg);\r
-\r
- Log.e("Navit", "SearchResultsThread ended");\r
- }\r
- }\r
-\r
- public static String filter_bad_chars(String in)\r
- {\r
- String out = in;\r
- out = out.replaceAll("\\n", " "); // newline -> space\r
- out = out.replaceAll("\\r", " "); // return -> space\r
- out = out.replaceAll("\\t", " "); // tab -> space\r
- return out;\r
- }\r
-\r
- public static void msg_to_msg_handler(Bundle b, int id)\r
- {\r
- Message msg = Navit_progress_h.obtainMessage();\r
- msg.what = id;\r
- msg.setData(b);\r
- Navit_progress_h.sendMessage(msg);\r
- }\r
-\r
- public void open_search_result_list()\r
- {\r
- // open result list\r
- Intent address_result_list_activity = new Intent(this, NavitAddressResultListActivity.class);\r
- this.startActivityForResult(address_result_list_activity, Navit.NavitAddressResultList_id);\r
- }\r
-\r
-\r
- public Handler progress_handler = new Handler()\r
- {\r
-\r
- public void handleMessage(Message msg)\r
- {\r
- switch (msg.what)\r
- {\r
- case NavitMessages.DIALOG_REMOVE_PROGRESS_BAR :\r
- // dismiss dialog, remove dialog\r
- dismissDialog(Navit.MAPDOWNLOAD_DIALOG);\r
- removeDialog(Navit.MAPDOWNLOAD_DIALOG);\r
-\r
- // exit_code=0 -> OK, map was downloaded fine\r
- if (msg.getData().getInt("value1") == 0)\r
- {\r
- // try to use the new downloaded map (works fine now!)\r
- Log.d("Navit", "instance count=" + Navit.getInstanceCount());\r
- onStop();\r
- onCreate(getIntent().getExtras());\r
- }\r
- break;\r
- case NavitMessages.DIALOG_PROGRESS_BAR :\r
- // change progressbar values\r
- mapdownloader_dialog.setMax(msg.getData().getInt("value1"));\r
- mapdownloader_dialog.setProgress(msg.getData().getInt("value2"));\r
- mapdownloader_dialog.setTitle(msg.getData().getString("title"));\r
- mapdownloader_dialog.setMessage(msg.getData().getString("text"));\r
- break;\r
- case NavitMessages.DIALOG_TOAST :\r
- Toast.makeText(getApplicationContext(),\r
- msg.getData().getString("text"), Toast.LENGTH_SHORT).show();\r
- break;\r
- case 3 :\r
- Toast.makeText(getApplicationContext(), msg.getData().getString("text"), Toast.LENGTH_LONG).show();\r
- break;\r
- case 10 :\r
- // change values - generic\r
- int what_dialog_generic = msg.getData().getInt("dialog_num");\r
- if (what_dialog_generic == SEARCHRESULTS_WAIT_DIALOG)\r
- {\r
- search_results_wait.setMax(msg.getData().getInt("value1"));\r
- search_results_wait.setProgress(msg.getData().getInt("value2"));\r
- search_results_wait.setTitle(msg.getData().getString("title"));\r
- search_results_wait.setMessage(msg.getData().getString("text"));\r
- }\r
- break;\r
- case 11 :\r
- // show dialog - generic\r
- showDialog(msg.getData().getInt("dialog_num"));\r
- break;\r
- case 99 :\r
- // dismiss dialog, remove dialog - generic\r
- dismissDialog(msg.getData().getInt("dialog_num"));\r
- removeDialog(msg.getData().getInt("dialog_num"));\r
- break;\r
- }\r
- }\r
- };\r
-\r
protected Dialog onCreateDialog(int id)\r
{\r
- switch (id)\r
- {\r
- case Navit.SEARCHRESULTS_WAIT_DIALOG :\r
- search_results_wait = new ProgressDialog(this);\r
- search_results_wait.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);\r
- search_results_wait.setTitle("--");\r
- search_results_wait.setMessage("--");\r
- search_results_wait.setCancelable(false);\r
- search_results_wait.setProgress(0);\r
- search_results_wait.setMax(10);\r
- DialogInterface.OnDismissListener mOnDismissListener3 = new DialogInterface.OnDismissListener()\r
- {\r
- public void onDismiss(DialogInterface dialog)\r
- {\r
- Log.e("Navit", "onDismiss: search_results_wait");\r
- dialog.dismiss();\r
- dialog.cancel();\r
- }\r
- };\r
- search_results_wait.setOnDismissListener(mOnDismissListener3);\r
- searchresultsThread = new SearchResultsThread(progress_handler, Navit.SEARCHRESULTS_WAIT_DIALOG);\r
- searchresultsThread.start();\r
-\r
- NavitAddressSearchSpinnerActive = true;\r
- spinner_thread = new SearchResultsThreadSpinnerThread(progress_handler, Navit.SEARCHRESULTS_WAIT_DIALOG);\r
- spinner_thread.start();\r
-\r
- return search_results_wait;\r
- case Navit.MAPDOWNLOAD_DIALOG :\r
- mapdownloader_dialog = new ProgressDialog(this);\r
- mapdownloader_dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);\r
- mapdownloader_dialog.setTitle("--");\r
- mapdownloader_dialog.setMessage("--");\r
- mapdownloader_dialog.setCancelable(true);\r
- mapdownloader_dialog.setProgress(0);\r
- mapdownloader_dialog.setMax(200);\r
- DialogInterface.OnDismissListener mOnDismissListener1 = new DialogInterface.OnDismissListener()\r
- {\r
- public void onDismiss(DialogInterface dialog)\r
- {\r
- Log.e("Navit", "onDismiss: mapdownloader_dialog");\r
- dialog.dismiss();\r
- dialog.cancel();\r
- mapdownloader.stop_thread();\r
- }\r
- };\r
- mapdownloader_dialog.setOnDismissListener(mOnDismissListener1);\r
- // show license for OSM maps\r
- Toast.makeText(getApplicationContext(),\r
- Navit.get_text("Map data (c) OpenStreetMap contributors, CC-BY-SA"),\r
- Toast.LENGTH_LONG).show(); //TRANS\r
- return mapdownloader_dialog;\r
-// case Navit.MAPDOWNLOAD_SEC_DIALOG :\r
-// mapdownloader_dialog_sec = new ProgressDialog(this);\r
-// mapdownloader_dialog_sec.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);\r
-// mapdownloader_dialog_sec.setTitle("--");\r
-// mapdownloader_dialog_sec.setMessage("--");\r
-// mapdownloader_dialog_sec.setCancelable(true);\r
-// mapdownloader_dialog_sec.setProgress(0);\r
-// mapdownloader_dialog_sec.setMax(200);\r
-// DialogInterface.OnDismissListener mOnDismissListener2 = new DialogInterface.OnDismissListener()\r
-// {\r
-// public void onDismiss(DialogInterface dialog)\r
-// {\r
-// Log.e("Navit", "onDismiss: mapdownloader_dialog sec");\r
-// dialog.dismiss();\r
-// dialog.cancel();\r
-// progressThread_sec.stop_thread();\r
-// }\r
-// };\r
-// mapdownloader_dialog_sec.setOnDismissListener(mOnDismissListener2);\r
-// mapdownloader_sec = new NavitMapDownloader(this);\r
-// progressThread_sec = mapdownloader_sec.new ProgressThread(progress_handler,\r
-// NavitMapDownloader.osm_maps[Navit.download_map_id], MAP_NUM_SECONDARY);\r
-// progressThread_sec.start();\r
-// // show license for OSM maps\r
-// Toast.makeText(getApplicationContext(),\r
-// Navit.get_text("Map data (c) OpenStreetMap contributors, CC-BY-SA"),\r
-// Toast.LENGTH_LONG).show(); //TRANS\r
-// return mapdownloader_dialog_sec;\r
- }\r
- // should never get here!!\r
- return null;\r
+ return dialogs.createDialog(id);\r
}\r
\r
public void disableSuspend()\r
search_intent.putExtra("title", Navit.get_text("Enter: City and Street")); //TRANS\r
search_intent.putExtra("address_string", search);\r
String pm_temp = "0";\r
- if (Navit_last_address_partial_match)\r
+ if (NavitDialogs.Navit_last_address_partial_match)\r
{\r
pm_temp = "1";\r
}\r
--- /dev/null
+package org.navitproject.navit;
+
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.app.ProgressDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.widget.Toast;
+
+public class NavitDialogs extends Handler{
+
+ public static Boolean NavitAddressSearchSpinnerActive = false;
+ public static String Navit_last_address_search_string = "";
+ public static Boolean Navit_last_address_partial_match = false;
+
+ // Dialogs
+ public static final int DIALOG_MAPDOWNLOAD = 1;
+ public static final int DIALOG_SEARCHRESULTS_WAIT = 3;
+
+ // dialog messages
+ static final int MSG_REMOVE_PROGRESS_BAR = 0;
+ static final int MSG_PROGRESS_BAR = 1;
+ static final int MSG_TOAST = 2;
+ static final int MSG_TOAST_LONG = 3;
+ static final int MSG_SEARCH = 11;
+ static final int MSG_PROGRESS_BAR_SEARCH = 21;
+ static final int MSG_POSITION_MENU = 22;
+ static final int MSG_START_MAP_DOWNLOAD =23;
+ static Handler mHandler;
+
+ private ProgressDialog mapdownloader_dialog = null;
+ private ProgressDialog search_results_wait = null;
+ private SearchResultsThread searchresultsThread = null;
+ private SearchResultsThreadSpinnerThread spinner_thread = null;
+ private NavitMapDownloader mapdownloader = null;
+
+ private Activity mActivity;
+
+ public NavitDialogs(Activity activity) {
+ super();
+ mActivity = activity;
+ mHandler = this;
+ }
+
+ static public void sendDialogMessage(int what, String title, String text, int dialog_num, int value1, int value2)
+ {
+ Message msg = mHandler.obtainMessage(what);
+ Bundle data = new Bundle();
+
+ data.putString("title", title);
+ data.putString("text", text);
+ data.putInt("value1", value1);
+ data.putInt("value2", value2);
+ data.putInt("dialog_num", dialog_num);
+ msg.setData(data);
+
+ mHandler.sendMessage(msg);
+ }
+
+
+ @Override
+ public void handleMessage(Message msg)
+ {
+ switch (msg.what)
+ {
+ case MSG_REMOVE_PROGRESS_BAR :
+ // dismiss dialog, remove dialog
+ mActivity.dismissDialog(DIALOG_MAPDOWNLOAD);
+ mActivity.removeDialog(DIALOG_MAPDOWNLOAD);
+
+ // exit_code=0 -> OK, map was downloaded fine
+ if (msg.getData().getInt("value1") == 0)
+ {
+ // try to use the new downloaded map (works fine now!)
+ Log.d("Navit", "instance count=" + Navit.getInstanceCount());
+ //mActivity.onStop();
+ //mActivity.onCreate(mActivity.getIntent().getExtras());
+ }
+ break;
+ case MSG_PROGRESS_BAR :
+ // change progressbar values
+ mapdownloader_dialog.setMax(msg.getData().getInt("value1"));
+ mapdownloader_dialog.setProgress(msg.getData().getInt("value2"));
+ mapdownloader_dialog.setTitle(msg.getData().getString("title"));
+ mapdownloader_dialog.setMessage(msg.getData().getString("text"));
+ break;
+ case MSG_TOAST :
+ Toast.makeText(mActivity, msg.getData().getString("text"), Toast.LENGTH_SHORT).show();
+ break;
+ case MSG_TOAST_LONG :
+ Toast.makeText(mActivity, msg.getData().getString("text"), Toast.LENGTH_LONG).show();
+ break;
+ case MSG_PROGRESS_BAR_SEARCH :
+ // change values - generic
+ int what_dialog_generic = msg.getData().getInt("dialog_num");
+ if (what_dialog_generic == DIALOG_SEARCHRESULTS_WAIT)
+ {
+ search_results_wait.setMax(msg.getData().getInt("value1"));
+ search_results_wait.setProgress(msg.getData().getInt("value2"));
+ search_results_wait.setTitle(msg.getData().getString("title"));
+ search_results_wait.setMessage(msg.getData().getString("text"));
+ }
+ break;
+ case MSG_SEARCH :
+ // show dialog - generic
+ mActivity.showDialog(DIALOG_SEARCHRESULTS_WAIT);
+ break;
+ case MSG_START_MAP_DOWNLOAD:
+ {
+ int map_selected = msg.arg1;
+ int map_slot = msg.arg2;
+ Log.d("Navit", "PRI id=" + map_selected);
+ // set map id to download
+
+ int download_map_id = NavitMapDownloader.OSM_MAP_NAME_ORIG_ID_LIST[map_selected];
+ // show the map download progressbar, and download the map
+ if (download_map_id > -1)
+ {
+ mActivity.showDialog(NavitDialogs.DIALOG_MAPDOWNLOAD);
+
+ mapdownloader = new NavitMapDownloader(download_map_id
+ , NavitDialogs.DIALOG_MAPDOWNLOAD, map_slot);
+ mapdownloader.start();
+
+ }
+ }
+ break;
+
+ case 99 :
+ // dismiss dialog, remove dialog - generic
+ mActivity.dismissDialog(msg.getData().getInt("dialog_num"));
+ mActivity.removeDialog(msg.getData().getInt("dialog_num"));
+ break;
+ }
+ }
+
+ Dialog createDialog(int id)
+ {
+ switch (id)
+ {
+ case DIALOG_SEARCHRESULTS_WAIT :
+ search_results_wait = new ProgressDialog(mActivity);
+ search_results_wait.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+ search_results_wait.setTitle("--");
+ search_results_wait.setMessage("--");
+ search_results_wait.setCancelable(false);
+ search_results_wait.setProgress(0);
+ search_results_wait.setMax(10);
+ DialogInterface.OnDismissListener mOnDismissListener3 = new DialogInterface.OnDismissListener()
+ {
+ public void onDismiss(DialogInterface dialog)
+ {
+ Log.e("Navit", "onDismiss: search_results_wait");
+ dialog.dismiss();
+ dialog.cancel();
+ }
+ };
+ search_results_wait.setOnDismissListener(mOnDismissListener3);
+ searchresultsThread = new SearchResultsThread(this, DIALOG_SEARCHRESULTS_WAIT);
+ searchresultsThread.start();
+
+ NavitAddressSearchSpinnerActive = true;
+ spinner_thread = new SearchResultsThreadSpinnerThread(this, DIALOG_SEARCHRESULTS_WAIT);
+ spinner_thread.start();
+
+ return search_results_wait;
+ case DIALOG_MAPDOWNLOAD :
+ mapdownloader_dialog = new ProgressDialog(mActivity);
+ mapdownloader_dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+ mapdownloader_dialog.setTitle("--");
+ mapdownloader_dialog.setMessage("--");
+ mapdownloader_dialog.setCancelable(true);
+ mapdownloader_dialog.setProgress(0);
+ mapdownloader_dialog.setMax(200);
+ DialogInterface.OnDismissListener mOnDismissListener1 = new DialogInterface.OnDismissListener()
+ {
+ public void onDismiss(DialogInterface dialog)
+ {
+ Log.e("Navit", "onDismiss: mapdownloader_dialog");
+ dialog.dismiss();
+ dialog.cancel();
+ // todo: do better
+ mapdownloader.stop_thread();
+ }
+ };
+ mapdownloader_dialog.setOnDismissListener(mOnDismissListener1);
+ // show license for OSM maps
+ Toast.makeText(mActivity.getApplicationContext(),
+ Navit.get_text("Map data (c) OpenStreetMap contributors, CC-BY-SA"),
+ Toast.LENGTH_LONG).show(); //TRANS
+ return mapdownloader_dialog;
+ }
+ // should never get here!!
+ return null;
+ }
+
+ public class SearchResultsThreadSpinnerThread extends Thread
+ {
+ int dialog_num;
+ int spinner_current_value;
+ private Boolean running;
+ Handler mHandler;
+
+ SearchResultsThreadSpinnerThread(Handler h, int dialog_num)
+ {
+ this.dialog_num = dialog_num;
+ this.mHandler = h;
+ this.spinner_current_value = 0;
+ this.running = true;
+ Log.e("Navit", "SearchResultsThreadSpinnerThread created");
+ }
+ public void run()
+ {
+ Log.e("Navit", "SearchResultsThreadSpinnerThread started");
+ while (this.running)
+ {
+ if (NavitAddressSearchSpinnerActive == false)
+ {
+ this.running = false;
+ }
+ else
+ {
+ Message msg = mHandler.obtainMessage();
+ Bundle b = new Bundle();
+ msg.what = 10;
+ b.putInt("dialog_num", this.dialog_num);
+ b.putInt("max", Navit.ADDRESS_RESULTS_DIALOG_MAX);
+ b.putInt("cur", this.spinner_current_value % (Navit.ADDRESS_RESULTS_DIALOG_MAX + 1));
+ b.putString("title", Navit.get_text("getting search results")); //TRANS
+ b.putString("text", Navit.get_text("searching ...")); //TRANS
+ msg.setData(b);
+ mHandler.sendMessage(msg);
+ try
+ {
+ Thread.sleep(700);
+ }
+ catch (InterruptedException e)
+ {
+ // e.printStackTrace();
+ }
+ this.spinner_current_value++;
+ }
+ }
+ Log.e("Navit", "SearchResultsThreadSpinnerThread ended");
+ }
+ }
+
+
+ public class SearchResultsThread extends Thread
+ {
+ Handler mHandler;
+ int my_dialog_num;
+
+ SearchResultsThread(Handler h, int dialog_num)
+ {
+ this.mHandler = h;
+ this.my_dialog_num = dialog_num;
+ Log.e("Navit", "SearchResultsThread created");
+ }
+
+ public void run()
+ {
+ Log.e("Navit", "SearchResultsThread started");
+
+ // initialize the dialog with sane values
+ Message msg = mHandler.obtainMessage();
+ Bundle b = new Bundle();
+ msg.what = 10;
+ b.putInt("dialog_num", this.my_dialog_num);
+ b.putInt("max", Navit.ADDRESS_RESULTS_DIALOG_MAX);
+ b.putInt("cur", 0);
+ b.putString("title", Navit.get_text("getting search results")); //TRANS
+ b.putString("text", Navit.get_text("searching ...")); //TRANS
+ msg.setData(b);
+ mHandler.sendMessage(msg);
+
+ int partial_match_i = 0;
+ if (Navit_last_address_partial_match)
+ {
+ partial_match_i = 1;
+ }
+
+ // start the search, this could take a long time!!
+ Log.e("Navit", "SearchResultsThread run1");
+ Navit_last_address_search_string = filter_bad_chars(Navit_last_address_search_string);
+ Navit.N_NavitGraphics.CallbackSearchResultList(partial_match_i, Navit_last_address_search_string);
+ Log.e("Navit", "SearchResultsThread run2");
+
+ NavitAddressSearchSpinnerActive = false;
+
+ if (Navit.NavitAddressResultList_foundItems.size() > 0)
+ {
+ open_search_result_list();
+ }
+ else
+ {
+ // not results found, show toast
+ msg = mHandler.obtainMessage();
+ b = new Bundle();
+ msg.what = 3;
+ b.putString("text", Navit.get_text("No Results found!")); //TRANS
+ msg.setData(b);
+ mHandler.sendMessage(msg);
+ }
+
+ // ok, remove dialog
+ msg = mHandler.obtainMessage();
+ b = new Bundle();
+ msg.what = 99;
+ b.putInt("dialog_num", this.my_dialog_num);
+ msg.setData(b);
+ mHandler.sendMessage(msg);
+
+ Log.e("Navit", "SearchResultsThread ended");
+ }
+
+ public String filter_bad_chars(String in)
+ {
+ String out = in;
+ out = out.replaceAll("\\n", " "); // newline -> space
+ out = out.replaceAll("\\r", " "); // return -> space
+ out = out.replaceAll("\\t", " "); // tab -> space
+ return out;
+ }
+ }
+
+ public void open_search_result_list()
+ {
+ // open result list
+ Intent address_result_list_activity = new Intent(mActivity, NavitAddressResultListActivity.class);
+ mActivity.startActivityForResult(address_result_list_activity, Navit.NavitAddressResultList_id);
+ }
+}
{
// Log.e("NavitGraphics", "**** fillStringArray s=" + s);
// deactivate the spinner
- Navit.NavitAddressSearchSpinnerActive = false;
+ NavitDialogs.NavitAddressSearchSpinnerActive = false;
Navit.Navit_Address_Result_Struct tmp_addr = new Navit_Address_Result_Struct();
String[] tmp_s = s.split(":");
{
Navit.search_results_streets_hn++;
}
-
+
// make the dialog move its bar ...
- Bundle b = new Bundle();
- b.putInt("dialog_num", Navit.SEARCHRESULTS_WAIT_DIALOG);
- b.putInt("max", Navit.ADDRESS_RESULTS_DIALOG_MAX);
- b.putInt("cur", Navit.NavitAddressResultList_foundItems.size()
- % (Navit.ADDRESS_RESULTS_DIALOG_MAX + 1));
- b.putString("title", Navit.get_text("loading search results")); //TRANS
- b.putString("text", Navit.get_text("towns") + ":" + Navit.search_results_towns + " "
- + Navit.get_text("Streets") + ":" + Navit.search_results_streets + "/"
- + Navit.search_results_streets_hn);
- Navit.msg_to_msg_handler(b, 10); //TRANS
+ NavitDialogs.sendDialogMessage( NavitDialogs.MSG_PROGRESS_BAR_SEARCH
+ , Navit.get_text("loading search results")
+ , Navit.get_text("towns") + ":" + Navit.search_results_towns + " "
+ + Navit.get_text("Streets") + ":" + Navit.search_results_streets + "/"
+ + Navit.search_results_streets_hn
+ , NavitDialogs.DIALOG_SEARCHRESULTS_WAIT
+ , Navit.ADDRESS_RESULTS_DIALOG_MAX
+ , Navit.NavitAddressResultList_foundItems.size() % (Navit.ADDRESS_RESULTS_DIALOG_MAX + 1));
}
public native void CallbackSearchResultList(int partial_match, String s);
import java.net.HttpURLConnection;\r
import java.net.URL;\r
\r
-import android.os.Handler;\r
import android.os.StatFs;\r
import android.util.Log;\r
\r
private static final String MAP_FILENAME_PATH = Navit.MAP_FILENAME_PATH;\r
private static final String TAG = "NavitMapDownloader";\r
\r
- private Handler mHandler;\r
private osm_map_values map_values;\r
private int map_slot;\r
private int dialog_num;\r
\r
Log.v(TAG, "map_num3=" + this.map_slot);\r
\r
- NavitMessages.sendDialogMessage( mHandler, NavitMessages.DIALOG_PROGRESS_BAR\r
+ NavitDialogs.sendDialogMessage( NavitDialogs.MSG_PROGRESS_BAR\r
, Navit.get_text("Mapdownload"), Navit.get_text("downloading") + ": " + map_values.map_name\r
- , Navit.MAPDOWNLOAD_DIALOG, 20 , 0);\r
+ , NavitDialogs.DIALOG_MAPDOWNLOAD, 20 , 0);\r
\r
do\r
{\r
{\r
Thread.sleep(10 + retry_counter * 1000);\r
} catch (InterruptedException e1) {}\r
- } while ( ( exit_code = download_osm_map(mHandler, map_values, map_slot)) == EXIT_RECOVERABLE_ERROR\r
+ } while ( ( exit_code = download_osm_map(map_values, map_slot)) == EXIT_RECOVERABLE_ERROR\r
&& retry_counter++ < MAX_RETRIES\r
&& !stop_me);\r
\r
if (exit_code == EXIT_SUCCESS)\r
{\r
- NavitMessages.sendDialogMessage( mHandler, NavitMessages.DIALOG_TOAST\r
+ NavitDialogs.sendDialogMessage( NavitDialogs.MSG_TOAST\r
, null, map_values.map_name + " " + Navit.get_text("ready")\r
, dialog_num , 0 , 0);\r
\r
\r
if (exit_code == EXIT_SUCCESS || stop_me )\r
{\r
- NavitMessages.sendDialogMessage( mHandler , NavitMessages.DIALOG_REMOVE_PROGRESS_BAR, null, null, dialog_num \r
+ NavitDialogs.sendDialogMessage( NavitDialogs.MSG_REMOVE_PROGRESS_BAR, null, null, dialog_num \r
, exit_code , 0 );\r
}\r
}\r
Log.d(TAG, "stop_me -> true");\r
}\r
\r
- public NavitMapDownloader(Navit main, Handler h, int map_id, int dialog_num, int map_slot)\r
+ public NavitMapDownloader(int map_id, int dialog_num, int map_slot)\r
{\r
- this.mHandler = h;\r
this.map_values = osm_maps[map_id];\r
this.map_slot = map_slot;\r
}\r
return OSM_MAP_NAME_LIST_inkl_SIZE_ESTIMATE;\r
}\r
\r
- public int download_osm_map(Handler handler, osm_map_values map_values, int map_number)\r
+ public int download_osm_map(osm_map_values map_values, int map_number)\r
{\r
int exit_code = EXIT_SUCCESS;\r
boolean resume = false;\r
{\r
ObjectInputStream infoStream = new ObjectInputStream(new FileInputStream(MAP_FILENAME_PATH + fileName + ".info"));\r
String resume_proto = infoStream.readUTF();\r
- String resume_host = infoStream.readUTF();\r
+ infoStream.readUTF(); // read the host name (unused for now)\r
String resume_file = infoStream.readUTF();\r
infoStream.close();\r
// looks like the same file, try to resume\r
}\r
Log.e(TAG, "info: " + info);\r
\r
- NavitMessages.sendDialogMessage( handler, NavitMessages.DIALOG_PROGRESS_BAR\r
+ NavitDialogs.sendDialogMessage( NavitDialogs.MSG_PROGRESS_BAR\r
, Navit.get_text("Mapdownload"), info\r
, dialog_num, (int) (real_size_bytes / 1024), (int) (already_read / 1024));\r
}\r
\r
if (stop_me)\r
{\r
- NavitMessages.sendDialogMessage( handler, NavitMessages.DIALOG_TOAST\r
+ NavitDialogs.sendDialogMessage( NavitDialogs.MSG_TOAST\r
, null, Navit.get_text("Map download aborted!")\r
, dialog_num , 0 , 0);\r
\r
}\r
else\r
{\r
- NavitMessages.sendDialogMessage( mHandler, NavitMessages.DIALOG_PROGRESS_BAR\r
+ NavitDialogs.sendDialogMessage( NavitDialogs.MSG_PROGRESS_BAR\r
, Navit.get_text("Mapdownload")\r
, Navit.get_text("Error downloading map!")\r
, dialog_num, (int) (real_size_bytes / 1024), (int) (already_read / 1024));\r
}\r
catch (Exception e)\r
{\r
- NavitMessages.sendDialogMessage( mHandler, NavitMessages.DIALOG_PROGRESS_BAR\r
+ NavitDialogs.sendDialogMessage( NavitDialogs.MSG_PROGRESS_BAR\r
, Navit.get_text("Mapdownload")\r
, Navit.get_text("Error downloading map!")\r
, dialog_num, (int) (real_size_bytes / 1024), (int) (already_read / 1024));\r
{\r
Log.e(TAG, "Not enough free space. Please free at least " + needed_bytes / 1024 /1024 + "Mb.");\r
\r
- NavitMessages.sendDialogMessage( mHandler, NavitMessages.DIALOG_PROGRESS_BAR\r
+ NavitDialogs.sendDialogMessage( NavitDialogs.MSG_PROGRESS_BAR\r
, Navit.get_text("Mapdownload")\r
, Navit.get_text("Error downloading map!") + "\n" + Navit.get_text("Not enough free space")\r
, dialog_num, (int)(needed_bytes / 1024), (int)(free_space / 1024));\r
+++ /dev/null
-package org.navitproject.navit;\r
-\r
-import android.os.Bundle;\r
-import android.os.Handler;\r
-import android.os.Message;\r
-\r
-public class NavitMessages {\r
-\r
- static final int DIALOG_REMOVE_PROGRESS_BAR = 0;\r
- static final int DIALOG_PROGRESS_BAR = 1;\r
- static final int DIALOG_TOAST = 2;\r
- \r
- static public void sendDialogMessage(Handler msgHandler, int what, String title, String text, int dialog_num, int value1, int value2)\r
- {\r
- Message msg = msgHandler.obtainMessage(what);\r
- Bundle data = new Bundle();\r
- \r
- data.putString("title", title);\r
- data.putString("text", text); \r
- data.putInt("value1", value1); \r
- data.putInt("value2", value2);\r
- data.putInt("dialog_num", dialog_num);\r
- msg.setData(data);\r
- \r
- msgHandler.sendMessage(msg);\r
- }\r
- \r
-}\r