From d13f1b43ad2b7ac990fd88b576ecb780a618de84 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Mon, 25 Jun 2012 02:32:21 +0200 Subject: [PATCH] theme changes and making PostGIS the default backend --- AndroidManifest.xml | 6 +- gen/org/mapsforge/tilemap/R.java | 124 +++--- res/drawable-hdpi/bar_globe.png | Bin 0 -> 16333 bytes res/drawable-hdpi/bar_globe2.png | Bin 0 -> 2988 bytes res/drawable-hdpi/globe.png | Bin 6175 -> 0 bytes res/drawable-hdpi/ic_menu_archive.png | Bin 2003 -> 1449 bytes res/drawable-hdpi/ic_menu_mylocation.png | Bin 3948 -> 1784 bytes res/drawable-hdpi/ic_menu_options.png | Bin 0 -> 1540 bytes res/drawable-mdpi/bar_globe2.png | Bin 0 -> 2988 bytes res/drawable-mdpi/globe.png | Bin 3444 -> 4460 bytes res/drawable-mdpi/ic_menu_archive.png | Bin 1354 -> 1312 bytes res/drawable-mdpi/ic_menu_mylocation.png | Bin 5307 -> 1409 bytes res/drawable-mdpi/ic_menu_options.png | Bin 0 -> 1339 bytes res/drawable/action_bar.xml | 6 + res/drawable/globe2.png | Bin 0 -> 2988 bytes res/layout/activity_advanced_map_viewer.xml | 4 +- res/menu/options_menu.xml | 90 +++-- res/values-de/strings.xml | 2 +- res/values-fi/strings.xml | 2 +- res/values-it/strings.xml | 2 +- res/values/arrays.xml | 9 +- res/values/strings.xml | 3 +- res/values/styles.xml | 27 ++ src/org/mapsforge/android/MapActivity.java | 14 +- src/org/mapsforge/android/MapView.java | 98 +++-- src/org/mapsforge/tilemap/TileMap.java | 375 +++++++++++------- .../tilemap/filepicker/FilePicker.java | 34 +- .../tilemap/preferences/EditPreferences.java | 8 +- 28 files changed, 521 insertions(+), 283 deletions(-) create mode 100644 res/drawable-hdpi/bar_globe.png create mode 100644 res/drawable-hdpi/bar_globe2.png delete mode 100644 res/drawable-hdpi/globe.png create mode 100644 res/drawable-hdpi/ic_menu_options.png create mode 100644 res/drawable-mdpi/bar_globe2.png mode change 100755 => 100644 res/drawable-mdpi/ic_menu_archive.png mode change 100755 => 100644 res/drawable-mdpi/ic_menu_mylocation.png create mode 100644 res/drawable-mdpi/ic_menu_options.png create mode 100644 res/drawable/action_bar.xml create mode 100644 res/drawable/globe2.png create mode 100644 res/values/styles.xml diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 5ee5fba8..b79068c4 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -15,8 +15,10 @@ android:targetSdkVersion="15" /> + android:icon="@drawable/globe2" + android:label="@string/application_name" + android:theme="@style/Theme.TileMap" > + diff --git a/gen/org/mapsforge/tilemap/R.java b/gen/org/mapsforge/tilemap/R.java index cf3b7be3..8d334d34 100644 --- a/gen/org/mapsforge/tilemap/R.java +++ b/gen/org/mapsforge/tilemap/R.java @@ -10,64 +10,69 @@ package org.mapsforge.tilemap; public final class R { public static final class array { public static final int preferences_map_database_keys=0x7f050000; - public static final int preferences_map_generator_values=0x7f050003; + public static final int preferences_map_generator_values=0x7f050004; public static final int preferences_scale_bar_unit_keys=0x7f050001; - public static final int preferences_scale_bar_unit_values=0x7f050004; + public static final int preferences_scale_bar_unit_values=0x7f050005; public static final int preferences_text_scale_keys=0x7f050002; - public static final int preferences_text_scale_values=0x7f050005; + public static final int preferences_text_scale_values=0x7f050006; + public static final int view_sections=0x7f050003; } public static final class attr { } public static final class drawable { - public static final int btn_snap_normal=0x7f020000; - public static final int btn_snap_pressed=0x7f020001; - public static final int btn_snap_selected=0x7f020002; - public static final int file_picker_back=0x7f020003; - public static final int file_picker_file=0x7f020004; - public static final int file_picker_folder=0x7f020005; - public static final int globe=0x7f020006; - public static final int ic_menu_archive=0x7f020007; - public static final int ic_menu_camera=0x7f020008; - public static final int ic_menu_info_details=0x7f020009; - public static final int ic_menu_mapmode=0x7f02000a; - public static final int ic_menu_mylocation=0x7f02000b; - public static final int ic_menu_preferences=0x7f02000c; - public static final int my_location=0x7f02000d; - public static final int snap_to_position=0x7f02000e; + public static final int action_bar=0x7f020000; + public static final int bar_globe=0x7f020001; + public static final int bar_globe2=0x7f020002; + public static final int btn_snap_normal=0x7f020003; + public static final int btn_snap_pressed=0x7f020004; + public static final int btn_snap_selected=0x7f020005; + public static final int file_picker_back=0x7f020006; + public static final int file_picker_file=0x7f020007; + public static final int file_picker_folder=0x7f020008; + public static final int globe=0x7f020009; + public static final int globe2=0x7f02000a; + public static final int ic_menu_archive=0x7f02000b; + public static final int ic_menu_camera=0x7f02000c; + public static final int ic_menu_info_details=0x7f02000d; + public static final int ic_menu_mapmode=0x7f02000e; + public static final int ic_menu_mylocation=0x7f02000f; + public static final int ic_menu_options=0x7f020010; + public static final int ic_menu_preferences=0x7f020011; + public static final int my_location=0x7f020012; + public static final int snap_to_position=0x7f020013; } public static final class id { - public static final int filePickerView=0x7f080003; - public static final int infoMapFileViewArea=0x7f08000d; - public static final int infoMapFileViewComment=0x7f080011; - public static final int infoMapFileViewCreatedBy=0x7f080012; - public static final int infoMapFileViewDate=0x7f08000c; - public static final int infoMapFileViewDebug=0x7f08000b; - public static final int infoMapFileViewLanguagePreference=0x7f080010; - public static final int infoMapFileViewName=0x7f080008; - public static final int infoMapFileViewSize=0x7f080009; - public static final int infoMapFileViewStartPosition=0x7f08000e; - public static final int infoMapFileViewStartZoomLevel=0x7f08000f; - public static final int infoMapFileViewVersion=0x7f08000a; - public static final int latitude=0x7f080004; - public static final int longitude=0x7f080005; - public static final int mainView=0x7f080000; - public static final int mapView=0x7f080001; - public static final int menu_info=0x7f080013; - public static final int menu_info_map_file=0x7f080014; - public static final int menu_mapfile=0x7f08001f; - public static final int menu_position=0x7f080015; - public static final int menu_position_enter_coordinates=0x7f080019; - public static final int menu_position_last_known=0x7f080018; - public static final int menu_position_map_center=0x7f08001a; - public static final int menu_position_my_location_disable=0x7f080017; - public static final int menu_position_my_location_enable=0x7f080016; - public static final int menu_preferences=0x7f08001b; - public static final int menu_render_theme=0x7f08001c; - public static final int menu_render_theme_osmarender=0x7f08001d; - public static final int menu_render_theme_select_file=0x7f08001e; - public static final int snapToLocationView=0x7f080002; - public static final int zoomLevel=0x7f080006; - public static final int zoomlevelValue=0x7f080007; + public static final int filePickerView=0x7f090003; + public static final int infoMapFileViewArea=0x7f09000d; + public static final int infoMapFileViewComment=0x7f090011; + public static final int infoMapFileViewCreatedBy=0x7f090012; + public static final int infoMapFileViewDate=0x7f09000c; + public static final int infoMapFileViewDebug=0x7f09000b; + public static final int infoMapFileViewLanguagePreference=0x7f090010; + public static final int infoMapFileViewName=0x7f090008; + public static final int infoMapFileViewSize=0x7f090009; + public static final int infoMapFileViewStartPosition=0x7f09000e; + public static final int infoMapFileViewStartZoomLevel=0x7f09000f; + public static final int infoMapFileViewVersion=0x7f09000a; + public static final int latitude=0x7f090004; + public static final int longitude=0x7f090005; + public static final int mainView=0x7f090000; + public static final int mapView=0x7f090001; + public static final int menu_mapfile=0x7f09001e; + public static final int menu_options=0x7f090019; + public static final int menu_position=0x7f090013; + public static final int menu_position_enter_coordinates=0x7f090017; + public static final int menu_position_last_known=0x7f090016; + public static final int menu_position_map_center=0x7f090018; + public static final int menu_position_my_location_disable=0x7f090015; + public static final int menu_position_my_location_enable=0x7f090014; + public static final int menu_preferences=0x7f09001a; + public static final int menu_render_theme=0x7f09001b; + public static final int menu_render_theme_osmarender=0x7f09001c; + public static final int menu_render_theme_select_file=0x7f09001d; + public static final int snapToLocationView=0x7f090002; + public static final int zoomLevel=0x7f090006; + public static final int zoomlevelValue=0x7f090007; } public static final class layout { public static final int activity_advanced_map_viewer=0x7f030000; @@ -76,7 +81,7 @@ public final class R { public static final int dialog_info_map_file=0x7f030003; } public static final class menu { - public static final int options_menu=0x7f070000; + public static final int options_menu=0x7f080000; } public static final class string { public static final int application_name=0x7f060003; @@ -101,7 +106,7 @@ public final class R { public static final int info_map_file_language_preference=0x7f060016; public static final int info_map_file_name=0x7f060017; public static final int info_map_file_size=0x7f060018; - public static final int info_map_file_start=0x7f060055; + public static final int info_map_file_start=0x7f060056; public static final int info_map_file_start_position=0x7f060019; public static final int info_map_file_start_zoom_level=0x7f06001a; public static final int info_map_file_version=0x7f06001b; @@ -111,6 +116,7 @@ public final class R { public static final int menu_info_about=0x7f060020; public static final int menu_info_map_file=0x7f06001f; public static final int menu_mapfile=0x7f060021; + public static final int menu_options=0x7f060055; public static final int menu_position=0x7f060022; public static final int menu_position_enter_coordinates=0x7f060023; public static final int menu_position_last_known=0x7f060024; @@ -154,7 +160,7 @@ public final class R { public static final int preferences_show_tile_coordinates_desc=0x7f060047; public static final int preferences_show_tile_frames=0x7f060048; public static final int preferences_show_tile_frames_desc=0x7f060049; - public static final int preferences_show_water_tiles=0x7f060056; + public static final int preferences_show_water_tiles=0x7f060057; public static final int preferences_show_water_tiles_desc=0x7f06004b; public static final int preferences_text_scale=0x7f06004c; public static final int preferences_text_scale_default=0x7f060002; @@ -167,6 +173,18 @@ public final class R { public static final int unit_symbol_meter=0x7f060053; public static final int zoomLevel=0x7f060054; } + public static final class style { + public static final int MyActionBar=0x7f070000; + /** + @style/MyDropDownListView + @style/MyActionBarTabStyle + @style/MyDropDownNav + @drawable/ad_btn_check_holo_light + @drawable/ad_btn_radio_holo_light + + */ + public static final int Theme_TileMap=0x7f070001; + } public static final class xml { public static final int preferences=0x7f040000; } diff --git a/res/drawable-hdpi/bar_globe.png b/res/drawable-hdpi/bar_globe.png new file mode 100644 index 0000000000000000000000000000000000000000..4a5756d802745c7d3eb710028f9e4dce7b31ff7f GIT binary patch literal 16333 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 diff --git a/res/drawable-hdpi/ic_menu_archive.png b/res/drawable-hdpi/ic_menu_archive.png index 9ca5c6247ec348fea5ef67c726e43a1ad3e0b77d..6f441b41da840fd8bff666f47f3beb5925976e0c 100644 GIT binary patch literal 1449 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi))Y-tz$kfu*$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1O?oUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnv1@ zG!Lpb1-Dx)aO%|uIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1z{wZbfoq>T#+SA1` zq~g|_8P?v+jv}p_Dp@~=$xgtPq#)P z%r4Ndv#``w+)uE{NA0AVHFxpDW>=w2_s{J7eBq;wzRp!wes$hs@66N9ng*QPnuI#0+5R`O+qGj##Dba! zOkYC;c^Y4C;HsF@TRDMe7yGNV`WLvv4ou{44%&B0Haz<2BPru28GmMcIV|&Wwbj8a zWu{M$?wh{hcAbCuVPVKXBEp6XG=T%rpOPOhc2>jX*QkOaQNc6CcX>&ayM5vPIvh&nzP~? zH)eMwkEtC#j{N=#~#y;ro0 zNp+qJcN@ov+=At|LbpwBe!6MBhq@Ia~A@BM6^rfve8KA<`)78&q Iol`;+00R>g-v9sr delta 1988 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 literal 3948 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 Hu0mjfku=B$ diff --git a/res/drawable-mdpi/ic_menu_archive.png b/res/drawable-mdpi/ic_menu_archive.png old mode 100755 new mode 100644 index a4599e37a063394c74fd83c3d255918431941641..cc81e57f7ecc485edb05d35c1efda39a45bc3e85 GIT binary patch literal 1312 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi)%+$!x$j!ji$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OozuV4URX z;uunK>&^7tUd)anZRN!mAFx_S3%=1=v&SUNu5s!Oj;I?y8TK{XHO-BP;NB({7wE$3 zx|T&*siRBaii`0-`#A^FPWT9IcGoR?pzJF4?DqdNmXlkK&3K?6K7&JrNy&ht&Ee$7 z7_m1^vv;r>eX`^db2#`hhCPDWyO4W{QvQvXioDAXG)!Z7{o!fj(wA(Xqf|3eHrfa$ z2;DK=$uGQz$^R=$&y>Y?C*LsAFxR}mnszYFmNBn}H|!w$?ju)i?LDgYPZZkH$Xmen z%tfj1XiB^C@23Z>qOFtnh6>6wXBs@tJRQbw*BbVQr6SJ^xCc3+DXuwCe8_>Voac)5e+g=n8|A-8U8F8KBM zc;A0>)*a`$Eeh_kEAM{!F bu}Uy#vJ`o5dtB`eDziLY{an^LB{Ts5!e_@2 delta 1334 zcmV-613uQdpTDypUc>FNPbG$yTykiRh87Z=hSurDaqopD z{TB))n;r^#@y5MbYC%gW zCAh@R^{eYYqCqUR7uvv@EOQgj_rQ7VfaiJr+jnlC$EkhNM437zkot)=e{k9~%_U|r zz)=_z^BH)$Cq}-CGtG1sT0Q>e&pD1W-~Fch-rAM5pU9ko63mau^n5bO@ks#8u?7R% zw1JOk9^f(;EWFU9z|f7*Z2WMZH_NwRP#?hF-rk$tuex&xaD-hj!SM2gLew;}eR$)u z8$ToU4}l*Q5kOWH3MGuqf5l5M3nB9Y1P7&0<~hw6gWlubX0O)+*K=d-h!OJX^$*wk zowqw{8=r36CoLQv7eHv+crloOh#i(00$c=;(Pf>ppna|l-ru2AIZ$%&czqfjjf1Cy zdFP4qIo`TRmT&?9{*fpX`T|PXY?#~lb34g^FfsnyG^PL-ZVSLofA9dQQ^diX6wy*6 zTc!rY77>t!V7}jeqrKI6tFue?sXgbY80C{D<)K6Jg#%T7(F?~a1Y+B^VE)z@w^lLY zyz`=ByKrnT{`ps{)w+B0%bR!8w2)~+Vk19x<{y^NFYj(`Zf!bGoz=(>VrP`clQci{ zDgMVpH4g^8KYJJWfBPjZ#w)8>lOX>EVV^P=#J zS~(w}EXyyGnSFX$)3$8k%pwv=3`b1Fb3U7ZEJ6cI6@myLp}%Rx%W2tx$(*o0ninr* zYzn$8$*DQLB%Lzy`$!K}Wk#)#Lm`06?_b`=1Z9gdf+QE+e~U&LEZ1DLJ_4qsNy}+# z$**=PA_e6V8E$0aHSh-$=KP6@W#*Hh#4~<&`7lK*)=D{PTuKA+2B9N!3BbcY9xe)d zl{ZgnE1|jMUa9k0Yq?+=Y+F^}psIL_&I0e@=1fh_k@RjeiS3BckPb6&*bf z)AR8;q;4paSTPgAC$Rby%v%j>BKZXK5h!DXb9FZ!uH_AQtE_RpQEL;8IaXMQ8bfG>@8(K3N7u0q_OS zQ0jf7e`y@ml`b)p?8)e&E9hi2O4$c(U-Z`Nt>3afRq6`-?#hLgYiRr5;mNBx^H0tb zaNn+eu=+inlgC9rEpn~Y#W^DEr|9dzEL%WQ_vjgW0#S^l?iW sg|zDb#1()FKn0)z@V^G|p8x{@gRe3ASnZ*53;+NC07*qoM6N<$f^IQ~ZvX%Q diff --git a/res/drawable-mdpi/ic_menu_mylocation.png b/res/drawable-mdpi/ic_menu_mylocation.png old mode 100755 new mode 100644 index fdbd5ca1282d094d6fa4843ed783911618b8a65b..9d1f4403a931ada4c33f5fab6123e5869c913804 GIT binary patch literal 1409 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi;#m&XQ(Amh;$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1PCvUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dR=1d2 z7#ld@HV>*d1*==YdQEV;MIY!GeNfaQMKw$an0`P^c)|s8;7LC<518JIfC>Bek$Ykc z42+*WT^vIyZoQel+n>o%;F#rsQ{DVgCIY%VT)kpWN@80)lDBNxa5O49xx4p&!_>8N zxx%*HkWl`?W!KcXZHB}OfphOCy`Q9eZujGNPq=PAnf~VNxpREGt&O{vXmp)F{p@?? z9X39T(ggM=b0s*eN)qI1sE&$m&fqgi_cyPQsBsO$y@sXGly5loZ%`i^W=D!m+*6CGK@7IHvwg6@mc zSJoD+Te$D0;EKQ^mSYF3GJ@ooA`Onew=Q6l`ZMjIp>j&|^sCndQw|7waBZ@%U^o5X zku~Kg>t2!PX+75rxDU&$_;e_9e~rA$0rB!BC+k|06<-r{1ycWsY{OZ~jAYF#(gZ}r-4r>|^` z>A9nETKbLh*2~7ZF9Rj2P literal 5307 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 CljEBJ literal 0 HcmV?d00001 diff --git a/res/drawable/action_bar.xml b/res/drawable/action_bar.xml new file mode 100644 index 00000000..11c7f98d --- /dev/null +++ b/res/drawable/action_bar.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/drawable/globe2.png b/res/drawable/globe2.png new file mode 100644 index 0000000000000000000000000000000000000000..64c4e31a65c9886e58f10b19c43e9a43600f504e GIT binary patch literal 2988 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 i)X1|n#ROFK6#gIi5_i}ZRo9dN0000 + android:layout_height="fill_parent" + android:windowActionBarOverlay="true" + > - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 9cf0efeb..2a7f286e 100755 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -18,7 +18,7 @@ riesig - VectorTileMap + OpenScienceMap Abbrechen Fehler Die letzte Position ist unbekannt diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index ed0cc383..1929f577 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -13,7 +13,7 @@ hyvin suuri - VectorTileMap + OpenScienceMap Peruuta Virhe Viimeinen sijainti ei ole tiedossa diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 745b2aa2..312f0e2f 100755 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -13,7 +13,7 @@ enorme - VectorTileMap + OpenScienceMap Annulla Errore L\'ultima posizione รจ sconosciuta diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 2bc4667b..04b7c6fe 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -4,7 +4,7 @@ MAP_READER POSTGIS_READER - MAP_READER + POSTGIS_READER imperial @@ -20,4 +20,11 @@ 1.6 1.0 + + + Map + Routes + Overlays + etc + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index ffe3c179..55e2ad76 100755 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -18,7 +18,7 @@ huge - VectorTileMap + OpenScienceMap Cancel Error The last location is unknown @@ -100,4 +100,5 @@  km  m Zoom level + Options \ No newline at end of file diff --git a/res/values/styles.xml b/res/values/styles.xml new file mode 100644 index 00000000..705ab3a2 --- /dev/null +++ b/res/values/styles.xml @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file diff --git a/src/org/mapsforge/android/MapActivity.java b/src/org/mapsforge/android/MapActivity.java index 5e367267..85e99807 100644 --- a/src/org/mapsforge/android/MapActivity.java +++ b/src/org/mapsforge/android/MapActivity.java @@ -40,7 +40,8 @@ public abstract class MapActivity extends Activity { private static final String PREFERENCES_FILE = "MapActivity"; private static boolean containsMapViewPosition(SharedPreferences sharedPreferences) { - return sharedPreferences.contains(KEY_LATITUDE) && sharedPreferences.contains(KEY_LONGITUDE) + return sharedPreferences.contains(KEY_LATITUDE) + && sharedPreferences.contains(KEY_LONGITUDE) && sharedPreferences.contains(KEY_ZOOM_LEVEL); } @@ -59,10 +60,14 @@ public abstract class MapActivity extends Activity { } private void restoreMapView(MapView mapView) { - SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCES_FILE, MODE_PRIVATE); + SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCES_FILE, + MODE_PRIVATE); if (containsMapViewPosition(sharedPreferences)) { + MapGenerator mapGenerator = mapView.getMapGenerator(); - if (!mapGenerator.requiresInternetConnection() && sharedPreferences.contains(KEY_MAP_FILE)) { + + if (!mapGenerator.requiresInternetConnection() + && sharedPreferences.contains(KEY_MAP_FILE)) { // get and set the map file mapView.setMapFile(sharedPreferences.getString(KEY_MAP_FILE, null)); } @@ -101,7 +106,8 @@ public abstract class MapActivity extends Activity { editor.putInt(KEY_ZOOM_LEVEL, mapPosition.zoomLevel); } - if (!mMapView.getMapGenerator().requiresInternetConnection() && mMapView.getMapFile() != null) { + if (!mMapView.getMapGenerator().requiresInternetConnection() + && mMapView.getMapFile() != null) { // save the map file editor.putString(KEY_MAP_FILE, mMapView.getMapFile()); } diff --git a/src/org/mapsforge/android/MapView.java b/src/org/mapsforge/android/MapView.java index 0bfd1d9f..a04a0ff0 100644 --- a/src/org/mapsforge/android/MapView.java +++ b/src/org/mapsforge/android/MapView.java @@ -25,6 +25,7 @@ import org.mapsforge.android.mapgenerator.MapDatabaseFactory; import org.mapsforge.android.mapgenerator.MapDatabaseInternal; import org.mapsforge.android.mapgenerator.MapGenerator; import org.mapsforge.android.mapgenerator.MapGeneratorFactory; +import org.mapsforge.android.mapgenerator.MapGeneratorInternal; import org.mapsforge.android.mapgenerator.MapWorker; import org.mapsforge.android.rendertheme.ExternalRenderTheme; import org.mapsforge.android.rendertheme.InternalRenderTheme; @@ -93,7 +94,9 @@ public class MapView extends GLSurfaceView { * if the context object is not an instance of {@link MapActivity} . */ public MapView(Context context) { - this(context, null, new org.mapsforge.android.glrenderer.DatabaseRenderer()); + this(context, null, + MapGeneratorFactory.createMapGenerator(MapGeneratorInternal.GL_RENDERER), + MapDatabaseFactory.createMapDatabase(MapDatabaseInternal.MAP_READER)); } /** @@ -105,7 +108,9 @@ public class MapView extends GLSurfaceView { * if the context object is not an instance of {@link MapActivity} . */ public MapView(Context context, AttributeSet attributeSet) { - this(context, attributeSet, MapGeneratorFactory.createMapGenerator(attributeSet)); + this(context, attributeSet, + MapGeneratorFactory.createMapGenerator(attributeSet), + MapDatabaseFactory.createMapDatabase(attributeSet)); } /** @@ -117,10 +122,12 @@ public class MapView extends GLSurfaceView { * if the context object is not an instance of {@link MapActivity} . */ public MapView(Context context, MapGenerator mapGenerator) { - this(context, null, mapGenerator); + this(context, null, mapGenerator, MapDatabaseFactory + .createMapDatabase(MapDatabaseInternal.MAP_READER)); } - private MapView(Context context, AttributeSet attributeSet, MapGenerator mapGenerator) { + private MapView(Context context, AttributeSet attributeSet, + MapGenerator mapGenerator, IMapDatabase mapDatabase) { super(context, attributeSet); @@ -128,6 +135,7 @@ public class MapView extends GLSurfaceView { throw new IllegalArgumentException( "context is not an instance of MapActivity"); } + setWillNotDraw(true); setWillNotCacheDrawing(true); @@ -139,8 +147,9 @@ public class MapView extends GLSurfaceView { mMapController = new MapController(this); // mMapDatabase = MapDatabaseFactory.createMapDatabase(MapDatabaseInternal.POSTGIS_READER); - mMapDatabase = MapDatabaseFactory - .createMapDatabase(MapDatabaseInternal.MAP_READER); + mMapDatabase = mapDatabase; + // MapDatabaseFactory + // .createMapDatabase(MapDatabaseInternal.MAP_READER); mMapViewPosition = new MapViewPosition(this); mMapScaleBar = new MapScaleBar(this); @@ -354,14 +363,21 @@ public class MapView extends GLSurfaceView { * if the current MapGenerator mode works with an Internet connection. */ public boolean setMapFile(String mapFile) { + FileOpenResult fileOpenResult = null; + if (mMapGenerator.requiresInternetConnection()) { throw new UnsupportedOperationException(); } Log.d(TAG, "set mapfile " + mapFile); - if (mapFile == null) { - // no map file specified - return false; - } else if (mapFile.equals(mMapFile)) { + // if (mapFile == null) { + // if (mMapDatabase instanceof org.mapsforge.database.postgis.MapDatabase) { + // fileOpenResult = mMapDatabase.openFile(null); + // } else { + // // no map file specified + // return false; + // } + // } else + if (mapFile != null && mapFile.equals(mMapFile)) { // same map file as before return false; } @@ -378,8 +394,13 @@ public class MapView extends GLSurfaceView { mMapWorker.proceed(); mMapDatabase.closeFile(); - FileOpenResult fileOpenResult = mMapDatabase.openFile(new File(mapFile)); - if (fileOpenResult.isSuccess()) { + + if (mapFile != null) + fileOpenResult = mMapDatabase.openFile(new File(mapFile)); + else + fileOpenResult = mMapDatabase.openFile(null); + + if (fileOpenResult != null && fileOpenResult.isSuccess()) { mMapFile = mapFile; GeoPoint startPoint = mMapGenerator.getStartPoint(); @@ -454,19 +475,24 @@ public class MapView extends GLSurfaceView { if (mapDatabase == null) { throw new IllegalArgumentException("MapDatabase must not be null"); } - // mMapWorker.pause(); - // mMapWorker.awaitPausing(); + if (!mMapWorker.isPausing()) { + mMapWorker.pause(); + mMapWorker.awaitPausing(); + } + + mJobQueue.clear(); mMapDatabase = mapDatabase; mMapGenerator.setMapDatabase(mMapDatabase); Log.d(TAG, "setMapDatabaseInternal " + mapDatabase.getClass()); - // mMapWorker.proceed(); String mapFile = mMapFile; mMapFile = null; setMapFile(mapFile); + mMapWorker.proceed(); + // mMapWorker.setMapDatabase(mMapDatabase); } @@ -559,28 +585,28 @@ public class MapView extends GLSurfaceView { return true; } - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - super.onLayout(changed, left, top, right, bottom); - // mMapZoomControls.onLayout(changed, left, top, right, bottom); - } + // @Override + // protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + // super.onLayout(changed, left, top, right, bottom); + // // mMapZoomControls.onLayout(changed, left, top, right, bottom); + // } - @Override - protected final void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - // find out how big the zoom controls should be - mMapZoomControls.measure( - MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), - MeasureSpec.AT_MOST), - MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec), - MeasureSpec.AT_MOST)); - - // make sure that MapView is big enough to display the zoom controls - setMeasuredDimension( - Math.max(MeasureSpec.getSize(widthMeasureSpec), - mMapZoomControls.getMeasuredWidth()), - Math.max(MeasureSpec.getSize(heightMeasureSpec), - mMapZoomControls.getMeasuredHeight())); - } + // @Override + // protected final void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + // // find out how big the zoom controls should be + // mMapZoomControls.measure( + // MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), + // MeasureSpec.AT_MOST), + // MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec), + // MeasureSpec.AT_MOST)); + // + // // make sure that MapView is big enough to display the zoom controls + // setMeasuredDimension( + // Math.max(MeasureSpec.getSize(widthMeasureSpec), + // mMapZoomControls.getMeasuredWidth()), + // Math.max(MeasureSpec.getSize(heightMeasureSpec), + // mMapZoomControls.getMeasuredHeight())); + // } @Override protected synchronized void onSizeChanged(int width, int height, int oldWidth, diff --git a/src/org/mapsforge/tilemap/TileMap.java b/src/org/mapsforge/tilemap/TileMap.java index ec7001b9..e58ee17a 100755 --- a/src/org/mapsforge/tilemap/TileMap.java +++ b/src/org/mapsforge/tilemap/TileMap.java @@ -8,7 +8,6 @@ import java.util.Date; import org.mapsforge.android.DebugSettings; import org.mapsforge.android.MapActivity; import org.mapsforge.android.MapController; -import org.mapsforge.android.MapScaleBar; import org.mapsforge.android.MapView; import org.mapsforge.android.mapgenerator.MapDatabaseFactory; import org.mapsforge.android.mapgenerator.MapDatabaseInternal; @@ -25,6 +24,7 @@ import org.mapsforge.tilemap.filefilter.ValidRenderTheme; import org.mapsforge.tilemap.filepicker.FilePicker; import org.mapsforge.tilemap.preferences.EditPreferences; +import android.app.ActionBar; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; @@ -46,8 +46,10 @@ import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; +import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.SeekBar; +import android.widget.SpinnerAdapter; import android.widget.TextView; import android.widget.Toast; import android.widget.ToggleButton; @@ -57,31 +59,36 @@ import android.widget.ToggleButton; * location. A simple file browser for selecting the map file is also included. Some preferences can be adjusted via the * {@link EditPreferences} activity. */ -public class TileMap extends MapActivity { +public class TileMap extends MapActivity implements ActionBar.OnNavigationListener { private static final String BUNDLE_CENTER_AT_FIRST_FIX = "centerAtFirstFix"; private static final String BUNDLE_SHOW_MY_LOCATION = "showMyLocation"; private static final String BUNDLE_SNAP_TO_LOCATION = "snapToLocation"; private static final int DIALOG_ENTER_COORDINATES = 0; private static final int DIALOG_INFO_MAP_FILE = 1; private static final int DIALOG_LOCATION_PROVIDER_DISABLED = 2; - private static final FileFilter FILE_FILTER_EXTENSION_MAP = new FilterByFileExtension(".map"); - private static final FileFilter FILE_FILTER_EXTENSION_XML = new FilterByFileExtension(".xml"); + private static final FileFilter FILE_FILTER_EXTENSION_MAP = + new FilterByFileExtension(".map"); + private static final FileFilter FILE_FILTER_EXTENSION_XML = + new FilterByFileExtension(".xml"); private static final int SELECT_MAP_FILE = 0; private static final int SELECT_RENDER_THEME_FILE = 1; - private LocationManager locationManager; - private MapDatabaseInternal mapDatabaseInternal; - private MyLocationListener myLocationListener; - private boolean showMyLocation; - private boolean snapToLocation; - private ToggleButton snapToLocationView; - private WakeLock wakeLock; - MapController mapController; - MapView mapView; + private LocationManager mLocationManager; + private MapDatabaseInternal mMapDatabaseInternal; + private MyLocationListener mMyLocationListener; + private boolean mShowMyLocation; + private boolean mSnapToLocation; + private ToggleButton mSnapToLocationView; + private WakeLock mWakeLock; + MapController mMapController; + MapView mMapView; private Menu mMenu = null; + SpinnerAdapter mSpinnerAdapter; + @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.options_menu, menu); + mMenu = menu; return true; } @@ -89,31 +96,37 @@ public class TileMap extends MapActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case R.id.menu_info: - return true; - case R.id.menu_info_map_file: - showDialog(DIALOG_INFO_MAP_FILE); - return true; + // case R.id.menu_info_map_file: + // showDialog(DIALOG_INFO_MAP_FILE); + // return true; case R.id.menu_position: return true; case R.id.menu_position_my_location_enable: if (enableShowMyLocation(true)) { - mMenu.findItem(R.id.menu_position_my_location_enable).setVisible(false); - mMenu.findItem(R.id.menu_position_my_location_enable).setEnabled(false); - mMenu.findItem(R.id.menu_position_my_location_disable).setVisible(true); - mMenu.findItem(R.id.menu_position_my_location_disable).setEnabled(true); + mMenu.findItem(R.id.menu_position_my_location_enable) + .setVisible(false); + mMenu.findItem(R.id.menu_position_my_location_enable) + .setEnabled(false); + mMenu.findItem(R.id.menu_position_my_location_disable) + .setVisible(true); + mMenu.findItem(R.id.menu_position_my_location_disable) + .setEnabled(true); } return true; case R.id.menu_position_my_location_disable: if (disableShowMyLocation()) { - mMenu.findItem(R.id.menu_position_my_location_enable).setVisible(true); - mMenu.findItem(R.id.menu_position_my_location_enable).setEnabled(true); - mMenu.findItem(R.id.menu_position_my_location_disable).setVisible(false); - mMenu.findItem(R.id.menu_position_my_location_disable).setEnabled(false); + mMenu.findItem(R.id.menu_position_my_location_enable) + .setVisible(true); + mMenu.findItem(R.id.menu_position_my_location_enable) + .setEnabled(true); + mMenu.findItem(R.id.menu_position_my_location_disable) + .setVisible(false); + mMenu.findItem(R.id.menu_position_my_location_disable) + .setEnabled(false); } return true; @@ -128,7 +141,8 @@ public class TileMap extends MapActivity { case R.id.menu_position_map_center: // disable GPS follow mode if it is enabled disableSnapToLocation(true); - this.mapController.setCenter(this.mapView.getMapDatabase().getMapFileInfo().mapCenter); + mMapController.setCenter(mMapView.getMapDatabase() + .getMapFileInfo().mapCenter); return true; case R.id.menu_preferences: @@ -138,8 +152,11 @@ public class TileMap extends MapActivity { case R.id.menu_render_theme: return true; + case R.id.menu_options: + return true; + case R.id.menu_render_theme_osmarender: - this.mapView.setRenderTheme(InternalRenderTheme.OSMARENDER); + mMapView.setRenderTheme(InternalRenderTheme.OSMARENDER); return true; case R.id.menu_render_theme_select_file: @@ -157,13 +174,13 @@ public class TileMap extends MapActivity { @Override public boolean onPrepareOptionsMenu(Menu menu) { - MapGenerator mapGenerator = this.mapView.getMapGenerator(); + MapGenerator mapGenerator = mMapView.getMapGenerator(); - if (mapGenerator.requiresInternetConnection()) { - menu.findItem(R.id.menu_info_map_file).setEnabled(false); - } else { - menu.findItem(R.id.menu_info_map_file).setEnabled(true); - } + // if (mapGenerator.requiresInternetConnection()) { + // menu.findItem(R.id.menu_info_map_file).setEnabled(false); + // } else { + // menu.findItem(R.id.menu_info_map_file).setEnabled(true); + // } if (isShowMyLocationEnabled()) { menu.findItem(R.id.menu_position_my_location_enable).setVisible(false); @@ -201,32 +218,33 @@ public class TileMap extends MapActivity { @Override public boolean onTrackballEvent(MotionEvent event) { // forward the event to the MapView - return this.mapView.onTrackballEvent(event); + return mMapView.onTrackballEvent(event); } private void configureMapView() { // configure the MapView and activate the zoomLevel buttons - this.mapView.setClickable(true); - this.mapView.setBuiltInZoomControls(true); - this.mapView.setFocusable(true); + mMapView.setClickable(true); + mMapView.setBuiltInZoomControls(true); + mMapView.setFocusable(true); - this.mapController = this.mapView.getController(); + mMapController = mMapView.getController(); } private boolean enableShowMyLocation(boolean centerAtFirstFix) { - if (!this.showMyLocation) { + if (!mShowMyLocation) { Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); - String bestProvider = this.locationManager.getBestProvider(criteria, true); + String bestProvider = mLocationManager.getBestProvider(criteria, true); if (bestProvider == null) { showDialog(DIALOG_LOCATION_PROVIDER_DISABLED); return false; } - this.showMyLocation = true; - this.myLocationListener.setCenterAtFirstFix(centerAtFirstFix); - this.locationManager.requestLocationUpdates(bestProvider, 1000, 0, this.myLocationListener); - this.snapToLocationView.setVisibility(View.VISIBLE); + mShowMyLocation = true; + mMyLocationListener.setCenterAtFirstFix(centerAtFirstFix); + mLocationManager.requestLocationUpdates(bestProvider, 1000, 0, + mMyLocationListener); + mSnapToLocationView.setVisibility(View.VISIBLE); return true; } return false; @@ -235,16 +253,20 @@ public class TileMap extends MapActivity { private void gotoLastKnownPosition() { Location currentLocation; Location bestLocation = null; - for (String provider : this.locationManager.getProviders(true)) { - currentLocation = this.locationManager.getLastKnownLocation(provider); - if (bestLocation == null || currentLocation.getAccuracy() < bestLocation.getAccuracy()) { + for (String provider : mLocationManager.getProviders(true)) { + currentLocation = mLocationManager.getLastKnownLocation(provider); + if (currentLocation == null) + continue; + if (bestLocation == null + || currentLocation.getAccuracy() < bestLocation.getAccuracy()) { bestLocation = currentLocation; } } if (bestLocation != null) { - GeoPoint point = new GeoPoint(bestLocation.getLatitude(), bestLocation.getLongitude()); - this.mapController.setCenter(point); + GeoPoint point = new GeoPoint(bestLocation.getLatitude(), + bestLocation.getLongitude()); + mMapController.setCenter(point); } else { showToastOnUiThread(getString(R.string.error_last_location_unknown)); } @@ -259,25 +281,35 @@ public class TileMap extends MapActivity { private void startRenderThemePicker() { FilePicker.setFileDisplayFilter(FILE_FILTER_EXTENSION_XML); FilePicker.setFileSelectFilter(new ValidRenderTheme()); - startActivityForResult(new Intent(this, FilePicker.class), SELECT_RENDER_THEME_FILE); + startActivityForResult(new Intent(this, FilePicker.class), + SELECT_RENDER_THEME_FILE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == SELECT_MAP_FILE) { if (resultCode == RESULT_OK) { + disableSnapToLocation(true); - if (intent != null && intent.getStringExtra(FilePicker.SELECTED_FILE) != null) { - this.mapView.setMapFile(intent.getStringExtra(FilePicker.SELECTED_FILE)); + + if (intent != null) { + if (intent.getStringExtra(FilePicker.SELECTED_FILE) != null) { + mMapView.setMapFile(intent + .getStringExtra(FilePicker.SELECTED_FILE)); + } } - } else if (resultCode == RESULT_CANCELED && !this.mapView.getMapGenerator().requiresInternetConnection() - && this.mapView.getMapFile() == null) { - finish(); + } else if (resultCode == RESULT_CANCELED) { + startActivity(new Intent(this, EditPreferences.class)); + // && !mapView.getMapGenerator().requiresInternetConnection() + // && mapView.getMapFile() == null) { + // finish(); } - } else if (requestCode == SELECT_RENDER_THEME_FILE && resultCode == RESULT_OK && intent != null + } else if (requestCode == SELECT_RENDER_THEME_FILE && resultCode == RESULT_OK + && intent != null && intent.getStringExtra(FilePicker.SELECTED_FILE) != null) { try { - this.mapView.setRenderTheme(intent.getStringExtra(FilePicker.SELECTED_FILE)); + mMapView.setRenderTheme(intent + .getStringExtra(FilePicker.SELECTED_FILE)); } catch (FileNotFoundException e) { showToastOnUiThread(e.getLocalizedMessage()); } @@ -288,14 +320,31 @@ public class TileMap extends MapActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - // this.requestWindowFeature(Window.FEATURE_NO_TITLE); + mSpinnerAdapter = ArrayAdapter.createFromResource(this, + R.array.view_sections, + android.R.layout.simple_spinner_dropdown_item); + ActionBar actionBar = getActionBar(); + actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); + + actionBar.setListNavigationCallbacks(mSpinnerAdapter, this); + actionBar.setDisplayShowTitleEnabled(false); + + // getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY); + // getActionBar().setBackgroundDrawable( + // getResources().getDrawable(R.drawable.action_bar)); + // // getActionBar().setDisplayShowTitleEnabled(false); + // getActionBar().setIcon(R.drawable.bar_globe2); + // set up the layout views setContentView(R.layout.activity_advanced_map_viewer); - this.mapView = (MapView) findViewById(R.id.mapView); + + // getActionBar().setDisplayOptions(ActionBar.NAVIGATION_MODE_TABS); + + mMapView = (MapView) findViewById(R.id.mapView); configureMapView(); - this.snapToLocationView = (ToggleButton) findViewById(R.id.snapToLocationView); - this.snapToLocationView.setOnClickListener(new OnClickListener() { + mSnapToLocationView = (ToggleButton) findViewById(R.id.snapToLocationView); + mSnapToLocationView.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { if (isSnapToLocationEnabled()) { @@ -307,15 +356,21 @@ public class TileMap extends MapActivity { }); // get the pointers to different system services - this.locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); - this.myLocationListener = new MyLocationListener(this); + mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); + mMyLocationListener = new MyLocationListener(this); PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); - this.wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "AMV"); + mWakeLock = powerManager + .newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "AMV"); - if (savedInstanceState != null && savedInstanceState.getBoolean(BUNDLE_SHOW_MY_LOCATION)) { - enableShowMyLocation(savedInstanceState.getBoolean(BUNDLE_CENTER_AT_FIRST_FIX)); - if (savedInstanceState.getBoolean(BUNDLE_SNAP_TO_LOCATION)) { - enableSnapToLocation(false); + if (savedInstanceState != null) { + if (savedInstanceState.getBoolean(BUNDLE_SHOW_MY_LOCATION)) { + + enableShowMyLocation(savedInstanceState + .getBoolean(BUNDLE_CENTER_AT_FIRST_FIX)); + + if (savedInstanceState.getBoolean(BUNDLE_SNAP_TO_LOCATION)) { + enableSnapToLocation(false); + } } } } @@ -329,23 +384,30 @@ public class TileMap extends MapActivity { LayoutInflater factory = LayoutInflater.from(this); final View view = factory.inflate(R.layout.dialog_enter_coordinates, null); builder.setView(view); - builder.setPositiveButton(R.string.go_to_position, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - // disable GPS follow mode if it is enabled - disableSnapToLocation(true); + builder.setPositiveButton(R.string.go_to_position, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // disable GPS follow mode if it is enabled + disableSnapToLocation(true); - // set the map center and zoom level - EditText latitudeView = (EditText) view.findViewById(R.id.latitude); - EditText longitudeView = (EditText) view.findViewById(R.id.longitude); - double latitude = Double.parseDouble(latitudeView.getText().toString()); - double longitude = Double.parseDouble(longitudeView.getText().toString()); - GeoPoint geoPoint = new GeoPoint(latitude, longitude); - TileMap.this.mapController.setCenter(geoPoint); - SeekBar zoomLevelView = (SeekBar) view.findViewById(R.id.zoomLevel); - TileMap.this.mapController.setZoom(zoomLevelView.getProgress()); - } - }); + // set the map center and zoom level + EditText latitudeView = (EditText) view + .findViewById(R.id.latitude); + EditText longitudeView = (EditText) view + .findViewById(R.id.longitude); + double latitude = Double.parseDouble(latitudeView.getText() + .toString()); + double longitude = Double.parseDouble(longitudeView.getText() + .toString()); + GeoPoint geoPoint = new GeoPoint(latitude, longitude); + TileMap.this.mMapController.setCenter(geoPoint); + SeekBar zoomLevelView = (SeekBar) view + .findViewById(R.id.zoomLevel); + TileMap.this.mMapController.setZoom(zoomLevelView + .getProgress()); + } + }); builder.setNegativeButton(R.string.cancel, null); return builder.create(); } else if (id == DIALOG_LOCATION_PROVIDER_DISABLED) { @@ -377,8 +439,8 @@ public class TileMap extends MapActivity { protected void onPause() { super.onPause(); // release the wake lock if necessary - if (this.wakeLock.isHeld()) { - this.wakeLock.release(); + if (mWakeLock.isHeld()) { + mWakeLock.release(); } } @@ -386,27 +448,28 @@ public class TileMap extends MapActivity { protected void onPrepareDialog(int id, final Dialog dialog) { if (id == DIALOG_ENTER_COORDINATES) { EditText editText = (EditText) dialog.findViewById(R.id.latitude); - GeoPoint mapCenter = this.mapView.getMapPosition().getMapCenter(); + GeoPoint mapCenter = mMapView.getMapPosition().getMapCenter(); editText.setText(Double.toString(mapCenter.getLatitude())); editText = (EditText) dialog.findViewById(R.id.longitude); editText.setText(Double.toString(mapCenter.getLongitude())); SeekBar zoomlevel = (SeekBar) dialog.findViewById(R.id.zoomLevel); - zoomlevel.setMax(this.mapView.getMapGenerator().getZoomLevelMax()); - zoomlevel.setProgress(this.mapView.getMapPosition().getZoomLevel()); + zoomlevel.setMax(mMapView.getMapGenerator().getZoomLevelMax()); + zoomlevel.setProgress(mMapView.getMapPosition().getZoomLevel()); final TextView textView = (TextView) dialog.findViewById(R.id.zoomlevelValue); textView.setText(String.valueOf(zoomlevel.getProgress())); zoomlevel.setOnSeekBarChangeListener(new SeekBarChangeListener(textView)); } else if (id == DIALOG_INFO_MAP_FILE) { - MapFileInfo mapFileInfo = this.mapView.getMapDatabase().getMapFileInfo(); + MapFileInfo mapFileInfo = mMapView.getMapDatabase().getMapFileInfo(); TextView textView = (TextView) dialog.findViewById(R.id.infoMapFileViewName); - textView.setText(this.mapView.getMapFile()); + textView.setText(mMapView.getMapFile()); textView = (TextView) dialog.findViewById(R.id.infoMapFileViewSize); - textView.setText(FileUtils.formatFileSize(mapFileInfo.fileSize, getResources())); + textView.setText(FileUtils.formatFileSize(mapFileInfo.fileSize, + getResources())); textView = (TextView) dialog.findViewById(R.id.infoMapFileViewVersion); textView.setText(String.valueOf(mapFileInfo.fileVersion)); @@ -424,7 +487,8 @@ public class TileMap extends MapActivity { textView = (TextView) dialog.findViewById(R.id.infoMapFileViewArea); BoundingBox boundingBox = mapFileInfo.boundingBox; - textView.setText(boundingBox.getMinLatitude() + ", " + boundingBox.getMinLongitude() + " - \n" + textView.setText(boundingBox.getMinLatitude() + ", " + + boundingBox.getMinLongitude() + " - \n" + boundingBox.getMaxLatitude() + ", " + boundingBox.getMaxLongitude()); textView = (TextView) dialog.findViewById(R.id.infoMapFileViewStartPosition); @@ -432,7 +496,8 @@ public class TileMap extends MapActivity { if (startPosition == null) { textView.setText(null); } else { - textView.setText(startPosition.getLatitude() + ", " + startPosition.getLongitude()); + textView.setText(startPosition.getLatitude() + ", " + + startPosition.getLongitude()); } textView = (TextView) dialog.findViewById(R.id.infoMapFileViewStartZoomLevel); @@ -443,7 +508,8 @@ public class TileMap extends MapActivity { textView.setText(startZoomLevel.toString()); } - textView = (TextView) dialog.findViewById(R.id.infoMapFileViewLanguagePreference); + textView = (TextView) dialog + .findViewById(R.id.infoMapFileViewLanguagePreference); textView.setText(mapFileInfo.languagePreference); textView = (TextView) dialog.findViewById(R.id.infoMapFileViewComment); @@ -460,13 +526,14 @@ public class TileMap extends MapActivity { protected void onResume() { super.onResume(); - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); + SharedPreferences preferences = PreferenceManager + .getDefaultSharedPreferences(this); - MapScaleBar mapScaleBar = this.mapView.getMapScaleBar(); - mapScaleBar.setShowMapScaleBar(preferences.getBoolean("showScaleBar", false)); - String scaleBarUnitDefault = getString(R.string.preferences_scale_bar_unit_default); - String scaleBarUnit = preferences.getString("scaleBarUnit", scaleBarUnitDefault); - mapScaleBar.setImperialUnits(scaleBarUnit.equals("imperial")); + // MapScaleBar mapScaleBar = mapView.getMapScaleBar(); + // mapScaleBar.setShowMapScaleBar(preferences.getBoolean("showScaleBar", false)); + // String scaleBarUnitDefault = getString(R.string.preferences_scale_bar_unit_default); + // String scaleBarUnit = preferences.getString("scaleBarUnit", scaleBarUnitDefault); + // mapScaleBar.setImperialUnits(scaleBarUnit.equals("imperial")); // if (preferences.contains("mapGenerator")) { // String name = preferences.getString("mapGenerator", MapGeneratorInternal.SW_RENDERER.name()); @@ -477,33 +544,41 @@ public class TileMap extends MapActivity { // mapGeneratorInternalNew = MapGeneratorInternal.SW_RENDERER; // } // - // if (mapGeneratorInternalNew != this.mapGeneratorInternal) { + // if (mapGeneratorInternalNew != mapGeneratorInternal) { // MapGenerator mapGenerator = MapGeneratorFactory.createMapGenerator(mapGeneratorInternalNew); - // this.mapView.setMapGenerator(mapGenerator); - // this.mapGeneratorInternal = mapGeneratorInternalNew; + // mapView.setMapGenerator(mapGenerator); + // mapGeneratorInternal = mapGeneratorInternalNew; // } // } + if (preferences.contains("mapDatabase")) { - String name = preferences.getString("mapDatabase", MapDatabaseInternal.MAP_READER.name()); + String name = preferences.getString("mapDatabase", + MapDatabaseInternal.POSTGIS_READER.name()); + MapDatabaseInternal mapDatabaseInternalNew; + try { mapDatabaseInternalNew = MapDatabaseInternal.valueOf(name); } catch (IllegalArgumentException e) { - mapDatabaseInternalNew = MapDatabaseInternal.MAP_READER; + mapDatabaseInternalNew = MapDatabaseInternal.POSTGIS_READER; } + Log.d("VectorTileMap", "set map database " + mapDatabaseInternalNew); - if (mapDatabaseInternalNew != this.mapDatabaseInternal) { - IMapDatabase mapDatabase = MapDatabaseFactory.createMapDatabase(mapDatabaseInternalNew); - this.mapView.setMapDatabase(mapDatabase); - this.mapDatabaseInternal = mapDatabaseInternalNew; + if (mapDatabaseInternalNew != mMapDatabaseInternal) { + IMapDatabase mapDatabase = MapDatabaseFactory + .createMapDatabase(mapDatabaseInternalNew); + mMapView.setMapDatabase(mapDatabase); + mMapDatabaseInternal = mapDatabaseInternalNew; } } + try { String textScaleDefault = getString(R.string.preferences_text_scale_default); - this.mapView.setTextScale(Float.parseFloat(preferences.getString("textScale", textScaleDefault))); + mMapView.setTextScale(Float.parseFloat(preferences.getString("textScale", + textScaleDefault))); } catch (NumberFormatException e) { - this.mapView.setTextScale(1); + mMapView.setTextScale(1); } if (preferences.getBoolean("fullscreen", false)) { @@ -515,18 +590,27 @@ public class TileMap extends MapActivity { getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); } - if (preferences.getBoolean("wakeLock", false) && !this.wakeLock.isHeld()) { - this.wakeLock.acquire(); + if (preferences.getBoolean("wakeLock", false) && !mWakeLock.isHeld()) { + mWakeLock.acquire(); } - boolean drawTileFrames = preferences.getBoolean("drawTileFrames", false); - boolean drawTileCoordinates = preferences.getBoolean("drawTileCoordinates", false); - boolean disablePolygons = preferences.getBoolean("disablePolygons", false); - DebugSettings debugSettings = new DebugSettings(drawTileCoordinates, drawTileFrames, disablePolygons); - this.mapView.setDebugSettings(debugSettings); + boolean drawTileFrames = + preferences.getBoolean("drawTileFrames", false); + boolean drawTileCoordinates = + preferences.getBoolean("drawTileCoordinates", false); + boolean disablePolygons = + preferences.getBoolean("disablePolygons", false); - if (!this.mapView.getMapGenerator().requiresInternetConnection() && this.mapView.getMapFile() == null) { - startMapFilePicker(); + DebugSettings debugSettings = new DebugSettings(drawTileCoordinates, + drawTileFrames, disablePolygons); + + mMapView.setDebugSettings(debugSettings); + + if (mMapDatabaseInternal == MapDatabaseInternal.MAP_READER) { + if (mMapView.getMapFile() == null) + startMapFilePicker(); + } else { + mMapView.setMapFile(null); } } @@ -534,8 +618,9 @@ public class TileMap extends MapActivity { protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putBoolean(BUNDLE_SHOW_MY_LOCATION, isShowMyLocationEnabled()); - outState.putBoolean(BUNDLE_CENTER_AT_FIRST_FIX, this.myLocationListener.isCenterAtFirstFix()); - outState.putBoolean(BUNDLE_SNAP_TO_LOCATION, this.snapToLocation); + outState.putBoolean(BUNDLE_CENTER_AT_FIRST_FIX, + mMyLocationListener.isCenterAtFirstFix()); + outState.putBoolean(BUNDLE_SNAP_TO_LOCATION, mSnapToLocation); } /** @@ -544,17 +629,17 @@ public class TileMap extends MapActivity { * @return ... */ private boolean disableShowMyLocation() { - if (this.showMyLocation) { - this.showMyLocation = false; + if (mShowMyLocation) { + mShowMyLocation = false; disableSnapToLocation(false); - this.locationManager.removeUpdates(this.myLocationListener); - // if (this.circleOverlay != null) { - // this.mapView.getOverlays().remove(this.circleOverlay); - // this.mapView.getOverlays().remove(this.itemizedOverlay); - // this.circleOverlay = null; - // this.itemizedOverlay = null; + mLocationManager.removeUpdates(mMyLocationListener); + // if (circleOverlay != null) { + // mapView.getOverlays().remove(circleOverlay); + // mapView.getOverlays().remove(itemizedOverlay); + // circleOverlay = null; + // itemizedOverlay = null; // } - this.snapToLocationView.setVisibility(View.GONE); + mSnapToLocationView.setVisibility(View.GONE); return true; } return false; @@ -567,10 +652,10 @@ public class TileMap extends MapActivity { * defines whether a toast message is displayed or not. */ void disableSnapToLocation(boolean showToast) { - if (this.snapToLocation) { - this.snapToLocation = false; - this.snapToLocationView.setChecked(false); - this.mapView.setClickable(true); + if (mSnapToLocation) { + mSnapToLocation = false; + mSnapToLocationView.setChecked(false); + mMapView.setClickable(true); if (showToast) { showToastOnUiThread(getString(R.string.snap_to_location_disabled)); } @@ -584,9 +669,9 @@ public class TileMap extends MapActivity { * defines whether a toast message is displayed or not. */ void enableSnapToLocation(boolean showToast) { - if (!this.snapToLocation) { - this.snapToLocation = true; - this.mapView.setClickable(false); + if (!mSnapToLocation) { + mSnapToLocation = true; + mMapView.setClickable(false); if (showToast) { showToastOnUiThread(getString(R.string.snap_to_location_enabled)); } @@ -599,7 +684,7 @@ public class TileMap extends MapActivity { * @return true if the "show my location" mode is enabled, false otherwise. */ boolean isShowMyLocationEnabled() { - return this.showMyLocation; + return mShowMyLocation; } /** @@ -608,7 +693,7 @@ public class TileMap extends MapActivity { * @return true if the "snap to location" mode is enabled, false otherwise. */ boolean isSnapToLocationEnabled() { - return this.snapToLocation; + return mSnapToLocation; } /** @@ -632,4 +717,10 @@ public class TileMap extends MapActivity { }); } } + + @Override + public boolean onNavigationItemSelected(int arg0, long arg1) { + // TODO Auto-generated method stub + return false; + } } diff --git a/src/org/mapsforge/tilemap/filepicker/FilePicker.java b/src/org/mapsforge/tilemap/filepicker/FilePicker.java index de81a213..8f8cbc87 100755 --- a/src/org/mapsforge/tilemap/filepicker/FilePicker.java +++ b/src/org/mapsforge/tilemap/filepicker/FilePicker.java @@ -19,6 +19,7 @@ import java.io.FileFilter; import java.util.Arrays; import java.util.Comparator; +import org.mapsforge.tilemap.R; import org.mapsforge.tilemap.filefilter.ValidFileFilter; import android.app.Activity; @@ -28,12 +29,9 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; -import android.preference.PreferenceManager; import android.view.View; -import android.view.WindowManager; import android.widget.AdapterView; import android.widget.GridView; -import org.mapsforge.tilemap.R; /** * A FilePicker displays the contents of directories. The user can navigate within the file system and select a single @@ -128,7 +126,8 @@ public class FilePicker extends Activity implements AdapterView.OnItemClickListe this.currentDirectory = selectedFile; browseToCurrentDirectory(); } else if (fileSelectFilter == null || fileSelectFilter.accept(selectedFile)) { - setResult(RESULT_OK, new Intent().putExtra(SELECTED_FILE, selectedFile.getAbsolutePath())); + setResult(RESULT_OK, + new Intent().putExtra(SELECTED_FILE, selectedFile.getAbsolutePath())); finish(); } else { showDialog(DIALOG_FILE_INVALID); @@ -159,7 +158,8 @@ public class FilePicker extends Activity implements AdapterView.OnItemClickListe if (this.currentDirectory.getParentFile() != null) { this.filesWithParentFolder = new File[this.files.length + 1]; this.filesWithParentFolder[0] = this.currentDirectory.getParentFile(); - System.arraycopy(this.files, 0, this.filesWithParentFolder, 1, this.files.length); + System.arraycopy(this.files, 0, this.filesWithParentFolder, 1, + this.files.length); this.files = this.filesWithParentFolder; this.filePickerIconAdapter.setFiles(this.files, true); } else { @@ -195,7 +195,8 @@ public class FilePicker extends Activity implements AdapterView.OnItemClickListe StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(getString(R.string.file_invalid)); stringBuilder.append("\n\n"); - stringBuilder.append(FilePicker.fileSelectFilter.getFileOpenResult().getErrorMessage()); + stringBuilder.append(FilePicker.fileSelectFilter.getFileOpenResult() + .getErrorMessage()); builder.setMessage(stringBuilder.toString()); builder.setPositiveButton(R.string.ok, null); @@ -225,18 +226,21 @@ public class FilePicker extends Activity implements AdapterView.OnItemClickListe @Override protected void onResume() { super.onResume(); + getActionBar().hide(); // check if the full screen mode should be activated - if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("fullscreen", false)) { - getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); - getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); - } else { - getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); - getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); - } + // if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("fullscreen", false)) { + // getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + // getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + // } else { + // getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + // getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + // } // restore the current directory - SharedPreferences preferences = getSharedPreferences(PREFERENCES_FILE, MODE_PRIVATE); - this.currentDirectory = new File(preferences.getString(CURRENT_DIRECTORY, DEFAULT_DIRECTORY)); + SharedPreferences preferences = getSharedPreferences(PREFERENCES_FILE, + MODE_PRIVATE); + this.currentDirectory = new File(preferences.getString(CURRENT_DIRECTORY, + DEFAULT_DIRECTORY)); if (!this.currentDirectory.exists() || !this.currentDirectory.canRead()) { this.currentDirectory = new File(DEFAULT_DIRECTORY); } diff --git a/src/org/mapsforge/tilemap/preferences/EditPreferences.java b/src/org/mapsforge/tilemap/preferences/EditPreferences.java index 72d8febb..ae692609 100644 --- a/src/org/mapsforge/tilemap/preferences/EditPreferences.java +++ b/src/org/mapsforge/tilemap/preferences/EditPreferences.java @@ -14,11 +14,12 @@ */ package org.mapsforge.tilemap.preferences; +import org.mapsforge.tilemap.R; + import android.os.Bundle; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; import android.view.WindowManager; -import org.mapsforge.tilemap.R; /** * Activity to edit the application preferences. @@ -33,8 +34,11 @@ public class EditPreferences extends PreferenceActivity { @Override protected void onResume() { super.onResume(); + getActionBar().hide(); + // check if the full screen mode should be activated - if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("fullscreen", false)) { + if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("fullscreen", + false)) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); } else {