This commit is contained in:
GaidamakUA 2015-10-19 11:11:48 +03:00
commit 2fa80cc65c
42 changed files with 815 additions and 371 deletions

View file

@ -38,7 +38,7 @@
- https://github.com/osmandapp/OsmAnd-tools - https://github.com/osmandapp/OsmAnd-tools
- https://github.com/osmandapp/OsmAnd-resources - https://github.com/osmandapp/OsmAnd-resources
* UI Design and UX work, such as layout, icons is covered by CC-BY-ND * UI Design and UX work, such as layout, icons is covered by CC-BY-ND-NC
- https://github.com/osmandapp/Osmand/tree/master/OsmAnd/res and others - https://github.com/osmandapp/Osmand/tree/master/OsmAnd/res and others
* Map icons are taken from sjjb and some are drawn and distributed under Public Domain (except icons8) * Map icons are taken from sjjb and some are drawn and distributed under Public Domain (except icons8)

View file

@ -55,14 +55,24 @@
<TextView <TextView
android:id="@+id/header_caption" android:id="@+id/header_caption"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="16dp" android:layout_marginLeft="16dp"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:text="Point info" android:text="Point info"
android:textColor="?android:textColorPrimary" android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"/> android:textSize="@dimen/default_list_text_size"/>
<Button
android:id="@+id/button_replace"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/color_transparent"
android:textColor="@color/color_dialog_buttons"
android:text="@string/update_existing"
android:visibility="gone"/>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout

View file

@ -29,6 +29,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxLines="1" android:maxLines="1"
android:singleLine="true" android:singleLine="true"
android:inputType="textNoSuggestions"
android:lines="1" android:lines="1"
android:layout_weight="1"/> android:layout_weight="1"/>

View file

@ -851,7 +851,7 @@
<string name="poi_candles">Cereria</string> <string name="poi_candles">Cereria</string>
<string name="poi_leather">Pelleteria</string> <string name="poi_leather">Pelleteria</string>
<string name="poi_watches">Rellotgeria</string> <string name="poi_watches">Rellotgeria</string>
<string name="poi_barrier_entrance">Entrada</string> <string name="poi_barrier_entrance">Passatge en un mur o una tanca</string>
<string name="poi_entrance_main">Entrada principal</string> <string name="poi_entrance_main">Entrada principal</string>
<string name="poi_entrance">Entrada</string> <string name="poi_entrance">Entrada</string>
<string name="poi_entrance_exit">Sortida</string> <string name="poi_entrance_exit">Sortida</string>
@ -891,7 +891,7 @@
<string name="poi_tree">Arbre</string> <string name="poi_tree">Arbre</string>
<string name="poi_highway_crossing">Pas de vianants</string> <string name="poi_highway_crossing">Pas de vianants</string>
<string name="poi_icn_ref">Xarxa internacional de rutes ciclistes</string> <string name="poi_icn_ref">Node de la xarxa ciclista internacional</string>
<string name="poi_ncn_ref">Node de la xarxa ciclista nacional</string> <string name="poi_ncn_ref">Node de la xarxa ciclista nacional</string>
<string name="poi_rcn_ref">Node de la xarxa ciclista regional</string> <string name="poi_rcn_ref">Node de la xarxa ciclista regional</string>
<string name="poi_lcn_ref">Node de la xarxa ciclista local</string> <string name="poi_lcn_ref">Node de la xarxa ciclista local</string>
@ -1359,4 +1359,10 @@
<string name="poi_tunnel_pedestrian">Túnel per vianants</string> <string name="poi_tunnel_pedestrian">Túnel per vianants</string>
<string name="poi_bridge_car">Pont de carretera</string> <string name="poi_bridge_car">Pont de carretera</string>
<string name="poi_bridge_waterway">Pont fluvial</string> <string name="poi_bridge_waterway">Pont fluvial</string>
<string name="poi_debris">Runa</string>
<string name="poi_jersey_barrier">Barrera Jersey</string>
<string name="poi_content_fodder">Contingut: farratge</string>
<string name="poi_leaf_type_broadleaved">Fulla ampla</string>
<string name="poi_leaf_type_mixed">Barrejat</string>
<string name="poi_trees_kiwi">Actinídia</string>
</resources> </resources>

View file

@ -2174,4 +2174,7 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu
<string name="confirm_download_roadmaps">N\'esteu segur de baixar un mapa de carreteres quan teniu disponible un mapa complet?</string> <string name="confirm_download_roadmaps">N\'esteu segur de baixar un mapa de carreteres quan teniu disponible un mapa complet?</string>
<string name="value_downloaded_from_max">%1$.1f de %2$.1f MB</string> <string name="value_downloaded_from_max">%1$.1f de %2$.1f MB</string>
<string name="file_size_in_mb">%.1f MB</string> <string name="file_size_in_mb">%.1f MB</string>
<string name="update_all">Actualitzeu tot (%1$ s Mb)</string>
<string name="free_downloads_used">Baixades gratuïtes realitzades</string>
<string name="free_downloads_used_description">Podeu veure quantes baixades gratuïtes heu fet</string>
</resources> </resources>

View file

@ -492,7 +492,7 @@
<string name="poi_beauty">Skønhedssalon</string> <string name="poi_beauty">Skønhedssalon</string>
<string name="poi_beauty_salon_nails">Neglesalon</string> <string name="poi_beauty_salon_nails">Neglesalon</string>
<string name="poi_hairdresser">Frisør</string> <string name="poi_hairdresser">Frisør</string>
<string name="poi_massage">Massage</string> <string name="poi_massage">Massagesalon</string>
<string name="poi_tattoo">Tatovør</string> <string name="poi_tattoo">Tatovør</string>
<string name="poi_dry_cleaning">Renseri</string> <string name="poi_dry_cleaning">Renseri</string>
<string name="poi_laundry">Vaskeri</string> <string name="poi_laundry">Vaskeri</string>
@ -2039,7 +2039,7 @@
<string name="poi_quango">Quango</string> <string name="poi_quango">Quango</string>
<string name="poi_consulting">Rådgivningskontor</string> <string name="poi_consulting">Rådgivningskontor</string>
<string name="poi_cooperative">Kooperativ kontor</string> <string name="poi_cooperative">Kooperativ kontor</string>
<string name="poi_office_forestry">Skovbrug kontor</string> <string name="poi_office_forestry">Skovbrugskontor</string>
<string name="poi_logistics">Logistikkontor</string> <string name="poi_logistics">Logistikkontor</string>
<string name="poi_parish">Sognekontor</string> <string name="poi_parish">Sognekontor</string>
<string name="poi_publisher">Forlagskontor</string> <string name="poi_publisher">Forlagskontor</string>
@ -2084,7 +2084,7 @@
<string name="poi_crop_asparagus">Afgrøde: asparges</string> <string name="poi_crop_asparagus">Afgrøde: asparges</string>
<string name="poi_crop_flowers">Afgrøde: blomster</string> <string name="poi_crop_flowers">Afgrøde: blomster</string>
<string name="poi_escape_lane">Nødstopsspor</string> <string name="poi_escape_lane">Nødstopsrampe</string>
<string name="poi_surveillance_indoor">Overvågning: indendørs</string> <string name="poi_surveillance_indoor">Overvågning: indendørs</string>
<string name="poi_surveillance_outdoor">Overvågning: udendørs</string> <string name="poi_surveillance_outdoor">Overvågning: udendørs</string>
@ -2106,7 +2106,7 @@
<string name="poi_clothes_suits">Jakkesæt</string> <string name="poi_clothes_suits">Jakkesæt</string>
<string name="poi_clothes_maternity">Barselstøj</string> <string name="poi_clothes_maternity">Barselstøj</string>
<string name="poi_clothes_vintage">Vintagetøj</string> <string name="poi_clothes_vintage">Vintagetøj</string>
<string name="poi_clothes_oversize">Oversize tøj</string> <string name="poi_clothes_oversize">Tøj i store størrelser</string>
<string name="poi_clothes_schoolwear">Skoleuniform</string> <string name="poi_clothes_schoolwear">Skoleuniform</string>
<string name="poi_clothes_swimwear">Badetøj</string> <string name="poi_clothes_swimwear">Badetøj</string>
<string name="poi_clothes_socks">Sokker</string> <string name="poi_clothes_socks">Sokker</string>
@ -2132,14 +2132,14 @@
<string name="poi_castle_type_castrum">Borgtype: castrum</string> <string name="poi_castle_type_castrum">Borgtype: castrum</string>
<string name="poi_castle_type_shiro">Borgtype: shiro</string> <string name="poi_castle_type_shiro">Borgtype: shiro</string>
<string name="poi_massage_thai">Massage: thailandsk</string> <string name="poi_massage_thai">Massage: thai</string>
<string name="poi_massage_sexual">Massage: erotisk</string> <string name="poi_massage_sexual">Massage: erotisk</string>
<string name="poi_massage_chinese">Massage: kinesisk</string> <string name="poi_massage_chinese">Massage: kinesisk</string>
<string name="poi_massage_yes">Massage tjenester</string> <string name="poi_massage_yes">Massage</string>
<string name="poi_massage_therapeutic">Massage: terapeutisk</string> <string name="poi_massage_therapeutic">Massage: terapeutisk</string>
<string name="poi_sauna_yes">Sauna tjenester</string> <string name="poi_sauna_yes">Sauna</string>
<string name="poi_solarium_yes">Solarium tjenester</string> <string name="poi_solarium_yes">Solarium</string>
<string name="poi_tents_yes">Telte tilladt</string> <string name="poi_tents_yes">Telte tilladt</string>
<string name="poi_tents_no">Telte ikke tilladt</string> <string name="poi_tents_no">Telte ikke tilladt</string>
@ -2165,7 +2165,7 @@
<string name="poi_impromptu_no">Improviseret: nej</string> <string name="poi_impromptu_no">Improviseret: nej</string>
<string name="poi_sanitary_dump_station_yes">Sanitære dump station: ja</string> <string name="poi_sanitary_dump_station_yes">Sanitære dump station: ja</string>
<string name="poi_sanitary_dump_station_no">Sanitære dump station: nej</string> <string name="poi_sanitary_dump_station_no">Sanitære dump station: nej</string>
<string name="poi_sanitary_dump_station_customers">Sanitær dump station: kun kunder</string> <string name="poi_sanitary_dump_station_customers">Sanitær dump station: kun for kunder</string>
<string name="poi_power_supply_yes">Strømforsyning: ja</string> <string name="poi_power_supply_yes">Strømforsyning: ja</string>
<string name="poi_power_supply_no">Strømforsyning: nej</string> <string name="poi_power_supply_no">Strømforsyning: nej</string>
<string name="poi_power_supply_cee_17_blue">Strømforsyning (stik): CEE 17 blå</string> <string name="poi_power_supply_cee_17_blue">Strømforsyning (stik): CEE 17 blå</string>

View file

@ -2184,6 +2184,6 @@
<string name="value_downloaded_from_max">%1$.1f af %2$.1f MB</string> <string name="value_downloaded_from_max">%1$.1f af %2$.1f MB</string>
<string name="file_size_in_mb">%.1f MB</string> <string name="file_size_in_mb">%.1f MB</string>
<string name="update_all">Opdater alle (%1$s Mb)</string> <string name="update_all">Opdater alle (%1$s Mb)</string>
<string name="free_downloads_used_description">Se hvormange gratis filhentninger der er brugt</string> <string name="free_downloads_used_description">Indstil hvormange gratis filhentninger der er brugt</string>
<string name="free_downloads_used">Gratis filhentninger brugt</string> <string name="free_downloads_used">Gratis filhentninger brugt</string>
</resources> </resources>

View file

@ -2092,4 +2092,68 @@
<string name="poi_clothes_military">Ropa militar</string> <string name="poi_clothes_military">Ropa militar</string>
<string name="poi_clothes_denim">Ropa de mezclilla</string> <string name="poi_clothes_denim">Ropa de mezclilla</string>
<string name="poi_historic_milestone">Hito histórico</string>
<string name="poi_shoes_children">Calzados de niños</string>
<string name="poi_shoes_women">Zapatos de mujer</string>
<string name="poi_shoes_sport">Zapatillas deportivas</string>
<string name="poi_shoes_men">Calzado de hombres</string>
<string name="poi_shoes_orthopedic">Calzado ortopédico</string>
<string name="poi_historic_manor">Mansión histórica</string>
<string name="poi_castle_type_stately">Castillo: majestuoso</string>
<string name="poi_castle_type_defensive">Castillo: defensivo</string>
<string name="poi_castle_type_fortress">Castillo: Fortaleza</string>
<string name="poi_castle_type_palace">Castillo: Palacio</string>
<string name="poi_castle_type_kremlin">Castillo: Kremlin</string>
<string name="poi_castle_type_defensive_stately">Castillo: defensivo, majestuoso</string>
<string name="poi_castle_type_castrum">Castillo: Fortificación (castrum)</string>
<string name="poi_castle_type_shiro">Castillo: shiro</string>
<string name="poi_massage_thai">Masaje: thai</string>
<string name="poi_massage_sexual">Masaje: sexual</string>
<string name="poi_massage_chinese">Masaje: chino</string>
<string name="poi_massage_yes">Servicio de masajes</string>
<string name="poi_massage_therapeutic">Masaje: terapéutico</string>
<string name="poi_sauna_yes">Servicio de sauna</string>
<string name="poi_solarium_yes">Servicio de solárium</string>
<string name="poi_tents_yes">Carpas permitidas</string>
<string name="poi_tents_no">Carpas prohibidas</string>
<string name="poi_openfire_yes">Permitido encender fuego</string>
<string name="poi_openfire_no">Prohibido encender fuego</string>
<string name="poi_backcountry_yes">Permitido acampar en zona aislada</string>
<string name="poi_backcountry_no">Prohibido acampar en zona aislada</string>
<string name="poi_scout_yes">Permitido campamento scout</string>
<string name="poi_scout_no">Prohibido campamento scout</string>
<string name="poi_group_only_yes">Sólo para grupos</string>
<string name="poi_group_only_no">Sólo para grupos: no</string>
<string name="poi_washing_machine_yes">Con lavarropa</string>
<string name="poi_washing_machine_no">Sin lavarropa</string>
<string name="poi_shower_yes">Con ducha</string>
<string name="poi_shower_no">Sin ducha</string>
<string name="poi_shower_hot">Ducha caliente</string>
<string name="poi_shower_outdoor">Ducha exterior</string>
<string name="poi_shower_cold">Ducha fría</string>
<string name="poi_shower_indoor">Ducha interior</string>
<string name="poi_caravans_yes">Permitido casas rodantes</string>
<string name="poi_caravans_no">Prohibido casas rodantes</string>
<string name="poi_impromptu_yes">Improvisado: si</string>
<string name="poi_impromptu_no">Improvisado: no</string>
<string name="poi_sanitary_dump_station_yes">Con estación de descarga sanitaria</string>
<string name="poi_sanitary_dump_station_no">Sin estación de descarga sanitaria</string>
<string name="poi_sanitary_dump_station_customers">Estación de descarga sanitaria sólo para clientes</string>
<string name="poi_power_supply_yes">Con fuentes de alimentación</string>
<string name="poi_power_supply_no">Sin fuentes de alimentación</string>
<string name="poi_power_supply_cee_7_4">Fuente de alimentación (enchufe): CEE 7/4</string>
<string name="poi_power_supply_cee_7_5">Fuente de alimentación (enchufe): CEE 7/5</string>
<string name="poi_power_supply_nema_5_15">Fuente de alimentación (enchufe): NEMA 5-15</string>
<string name="poi_capacity_tents">Carpas máximas</string>
<string name="poi_capacity_caravans">Casas rodantes máximas</string>
<string name="poi_dog_yes">Perros: permitido</string>
<string name="poi_dog_no">Perros: prohibido</string>
<string name="poi_power_supply_cee_17_blue">Fuente de alimentación (enchufe): CEE 17 azul</string>
</resources> </resources>

View file

@ -2107,4 +2107,6 @@
<string name="value_downloaded_from_max">%1$.1f de %2$.1f MB</string> <string name="value_downloaded_from_max">%1$.1f de %2$.1f MB</string>
<string name="file_size_in_mb">%.1f MB</string> <string name="file_size_in_mb">%.1f MB</string>
<string name="update_all">Actualizar todo (%1$s Mb)</string> <string name="update_all">Actualizar todo (%1$s Mb)</string>
<string name="free_downloads_used">Descargas gratis usadas</string>
<string name="free_downloads_used_description">Puedes configurar cuántas descargas gratis ha usado</string>
</resources> </resources>

View file

@ -2206,4 +2206,7 @@ Afghanistan, Albanie, Algérie, Allemagne, Andorre, Angola, Anguilla, Antigua-et
<string name="confirm_download_roadmaps">Êtes-vous certains de vouloir télécharger les routes alors que vous disposez d\'une carte complète ?</string> <string name="confirm_download_roadmaps">Êtes-vous certains de vouloir télécharger les routes alors que vous disposez d\'une carte complète ?</string>
<string name="value_downloaded_from_max">%1$.1f de %2$.1f MB</string> <string name="value_downloaded_from_max">%1$.1f de %2$.1f MB</string>
<string name="file_size_in_mb">%.1f MB</string> <string name="file_size_in_mb">%.1f MB</string>
<string name="update_all">Tout mettre à jour (%1$s Mb)</string>
<string name="free_downloads_used">Téléchargements gratuits effectués</string>
<string name="free_downloads_used_description">Visualiser le nombre de téléchargements gratuits déjà effectués</string>
</resources> </resources>

View file

@ -2122,4 +2122,7 @@
<string name="confirm_download_roadmaps">Biztosan letöltesz csak utakat tartalmazó térképet, annak ellenére, hogy már van teljes térképed?</string> <string name="confirm_download_roadmaps">Biztosan letöltesz csak utakat tartalmazó térképet, annak ellenére, hogy már van teljes térképed?</string>
<string name="value_downloaded_from_max">%1$.1f / %2$.1f MB</string> <string name="value_downloaded_from_max">%1$.1f / %2$.1f MB</string>
<string name="file_size_in_mb">%.1f MB</string> <string name="file_size_in_mb">%.1f MB</string>
<string name="update_all">Összes frissítése (%1$s Mb)</string>
<string name="free_downloads_used">Elhasznált ingyenes letöltés</string>
<string name="free_downloads_used_description">Beállíthatod, mennyi ingyenes letöltést használtál</string>
</resources> </resources>

View file

@ -2228,4 +2228,6 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz
<string name="value_downloaded_from_max">%1$.1f da %2$.1f MB</string> <string name="value_downloaded_from_max">%1$.1f da %2$.1f MB</string>
<string name="file_size_in_mb">%.1f MB</string> <string name="file_size_in_mb">%.1f MB</string>
<string name="update_all">Aggiorna tutto (%1$s Mb)</string> <string name="update_all">Aggiorna tutto (%1$s Mb)</string>
<string name="free_downloads_used">Download gratuiti utilizzati</string>
<string name="free_downloads_used_description">Puoi impostare quanti download gratuiti hai utilizzato</string>
</resources> </resources>

View file

@ -782,4 +782,16 @@
<string name="poi_ski_resort">スキーリゾート(Ski resort)</string> <string name="poi_ski_resort">スキーリゾート(Ski resort)</string>
<string name="poi_trail_riding_station">トレイルライディング小屋(Trail riding station)</string> <string name="poi_trail_riding_station">トレイルライディング小屋(Trail riding station)</string>
<string name="poi_hiking_routes">ハイキングルート(Hiking routes)</string>
<string name="poi_traffic_enforcement">交通違反取締装置(Traffic enforcement)</string>
<string name="poi_cheese">チーズ専門店(Cheese shop)</string>
<string name="poi_chocolate">チョコレート専門店(Chocolate shop)</string>
<string name="poi_coffee">コーヒーショップ(Coffee shop)</string>
<string name="poi_pasta">パスタ屋(Pasta shop)</string>
<string name="poi_pastry">洋菓子店(Pastry Shop)</string>
<string name="poi_camera">カメラ店(Cameras and lenses)</string>
<string name="poi_candles">ろうそく店・キャンドルショップ(Candles store)</string>
<string name="poi_doors">ドア店(Doors)</string>
<string name="poi_fashion">ファッションショップ(Fashion shop)</string>
<string name="poi_free_flying">スカイダイビング/フリーフライ用具店(Free flying goods store)</string>
</resources> </resources>

View file

@ -943,7 +943,7 @@ POIの更新は利用できません</string>
<string name="bg_service_screen_lock_toast">画面はロックされています</string> <string name="bg_service_screen_lock_toast">画面はロックされています</string>
<string name="bg_service_interval">呼び出し間隔の設定:</string> <string name="bg_service_interval">呼び出し間隔の設定:</string>
<string name="show_cameras">スピード監視カメラ(オービス等)を通知</string> <string name="show_cameras">スピード監視カメラ(オービス等)を通知</string>
<string name="show_traffic_warnings">通警告を通知</string> <string name="show_traffic_warnings">行に関する警告を通知</string>
<string name="avoid_toll_roads">有料道路を使用しない</string> <string name="avoid_toll_roads">有料道路を使用しない</string>
<string name="continue_follow_previous_route_auto">前回のナビゲーションがまだ終わっていません。続行しますか? (%1$s seconds)</string> <string name="continue_follow_previous_route_auto">前回のナビゲーションがまだ終わっていません。続行しますか? (%1$s seconds)</string>
<string name="route_updated_loc_found">現在位置が見つかるとルートを検索します</string> <string name="route_updated_loc_found">現在位置が見つかるとルートを検索します</string>
@ -2201,4 +2201,10 @@ POIの更新は利用できません</string>
<string name="later">後で</string> <string name="later">後で</string>
<string name="get_full_version">フルバージョンの入手</string> <string name="get_full_version">フルバージョンの入手</string>
<string name="downloads">ダウンロード</string> <string name="downloads">ダウンロード</string>
<string name="confirm_download_roadmaps">完全なマップがありますが、道路のみのマップをダウンロードしてよろしいですか?</string>
<string name="value_downloaded_from_max">%1$.1f %2$.1f MB</string>
<string name="file_size_in_mb">%.1f MB</string>
<string name="update_all">全て更新(%1$s MB)</string>
<string name="free_downloads_used">使用済み無料ダウンロード枠</string>
<string name="free_downloads_used_description">使用する無料ダウンロード枠を設定できます</string>
</resources> </resources>

View file

@ -2284,4 +2284,7 @@ Afganistan, Afryka Południowa, Albania, Algieria, Andora, Angola, Anguilla, Ant
<string name="later">Później</string> <string name="later">Później</string>
<string name="get_full_version">Pobierz pełną wersję</string> <string name="get_full_version">Pobierz pełną wersję</string>
<string name="downloads">Pobierz</string> <string name="downloads">Pobierz</string>
</resources> <string name="favorite_category_add_new_title">Dodaj nową kategorię</string>
<string name="favorite_category_name">Nazwa kategorii</string>
<string name="favorite_category_dublicate_message">Taka nazwa kategorii już istnieje. Proszę wybrać inną.</string>
</resources>

View file

@ -843,7 +843,7 @@
<string name="poi_height_restrictor">Limitador de altura</string> <string name="poi_height_restrictor">Limitador de altura</string>
<string name="poi_horse_stile">Passagem para cavalos</string> <string name="poi_horse_stile">Passagem para cavalos</string>
<string name="poi_turnstile">Catraca</string> <string name="poi_turnstile">Catraca</string>
<string name="poi_barrier_entrance">Entrada</string> <string name="poi_barrier_entrance">Passagem em um muro ou uma cerca</string>
<string name="poi_entrance_main">Entrada principal</string> <string name="poi_entrance_main">Entrada principal</string>
<string name="poi_entrance">Entrada</string> <string name="poi_entrance">Entrada</string>
<string name="poi_entrance_exit">Saída</string> <string name="poi_entrance_exit">Saída</string>
@ -887,15 +887,15 @@
<string name="poi_crane">Guindaste</string> <string name="poi_crane">Guindaste</string>
<string name="poi_tourism_attraction">Atração turística</string> <string name="poi_tourism_attraction">Atração turística</string>
<string name="poi_tree">Árvore</string> <string name="poi_tree">Árvore</string>
<string name="poi_icn_ref">Rede de rota cicloviária internacional</string> <string name="poi_icn_ref">Ponto de rede cicloviária internacional</string>
<string name="poi_ncn_ref">Rede de rota cicloviária nacional</string> <string name="poi_ncn_ref">Ponto de rede cicloviária nacional</string>
<string name="poi_rcn_ref">Rede de rota cicloviária regional</string> <string name="poi_rcn_ref">Ponto de rede cicloviária regional</string>
<string name="poi_lcn_ref">Rede de rota cicloviária local</string> <string name="poi_lcn_ref">Ponto de rede cicloviária local</string>
<string name="poi_iwn_ref">Rede de rota internacional de caminhada</string> <string name="poi_iwn_ref">Ponto de rede internacional de caminhada</string>
<string name="poi_nwn_ref">Rede de rota nacional de caminhada</string> <string name="poi_nwn_ref">Ponto de rede nacional de caminhada</string>
<string name="poi_rwn_ref">Rede de rota regional de caminhada</string> <string name="poi_rwn_ref">Ponto de rede regional de caminhada</string>
<string name="poi_lwn_ref">Rede de rota local de caminhada</string> <string name="poi_lwn_ref">Ponto de rede local de caminhada</string>
<string name="poi_opening_hours">Horário de funcionamento</string> <string name="poi_opening_hours">Horário de funcionamento</string>
<string name="poi_description">Descrição</string> <string name="poi_description">Descrição</string>
@ -1285,7 +1285,7 @@
<string name="poi_information_bicyclemap">Mapa ciclístico</string> <string name="poi_information_bicyclemap">Mapa ciclístico</string>
<string name="poi_information_tactile_model">Modelo tátil</string> <string name="poi_information_tactile_model">Modelo tátil</string>
<string name="poi_information_tactile_map">Mapa tátil</string> <string name="poi_information_tactile_map">Mapa tátil</string>
<string name="poi_board_type_notice">Placa com aviso</string> <string name="poi_board_type_notice">Quadro de avisos</string>
<string name="poi_board_type_plants">Informações sobre plantas</string> <string name="poi_board_type_plants">Informações sobre plantas</string>
<string name="poi_board_type_geology">Informações sobre geologia</string> <string name="poi_board_type_geology">Informações sobre geologia</string>
<string name="poi_board_type_public_transport">Informações sobre transporte público</string> <string name="poi_board_type_public_transport">Informações sobre transporte público</string>
@ -1353,4 +1353,7 @@
<string name="poi_wheelchair_limited">Cadeira de rodas: limitado</string> <string name="poi_wheelchair_limited">Cadeira de rodas: limitado</string>
<string name="poi_pump">Bomba</string> <string name="poi_pump">Bomba</string>
<string name="poi_debris">Escombros</string>
<string name="poi_jersey_barrier">Barreira de Nova Jersey</string>
<string name="poi_animal_shelter">Abrigo de animais</string>
</resources> </resources>

View file

@ -552,7 +552,7 @@
<string name="poi_skiing">Iscì</string> <string name="poi_skiing">Iscì</string>
<string name="poi_wreck">Relitu navale</string> <string name="poi_wreck">Relitu navale</string>
<string name="poi_alpine_hut">Refùgiu alpinu</string> <string name="poi_alpine_hut">Refùgiu alpinu</string>
<string name="poi_shelter">Cuadorju</string> <string name="poi_shelter">Imbaru</string>
<string name="poi_craft_metal_construction">Costrutziones metàllicas</string> <string name="poi_craft_metal_construction">Costrutziones metàllicas</string>
<string name="poi_craft_parquet_layer">Assentadore de parquet</string> <string name="poi_craft_parquet_layer">Assentadore de parquet</string>
<string name="poi_craft_tiler">Assentadore de regiolas</string> <string name="poi_craft_tiler">Assentadore de regiolas</string>
@ -692,7 +692,7 @@
<string name="poi_fuel_e10">E10</string> <string name="poi_fuel_e10">E10</string>
<string name="poi_fuel_e20">E20</string> <string name="poi_fuel_e20">E20</string>
<string name="poi_fuel_e85">E85</string> <string name="poi_fuel_e85">E85</string>
<string name="poi_fuel_biogas">Biogas E85</string> <string name="poi_fuel_biogas">Biogàs</string>
<string name="poi_junction">Giuntura istradale</string> <string name="poi_junction">Giuntura istradale</string>
<string name="poi_bell_tower">Campanile</string> <string name="poi_bell_tower">Campanile</string>
<string name="poi_farmyard">Argiola</string> <string name="poi_farmyard">Argiola</string>
@ -803,7 +803,7 @@
<string name="poi_general_barrier">Barriera genèrica</string> <string name="poi_general_barrier">Barriera genèrica</string>
<string name="poi_height_restrictor">Limitadore de artària</string> <string name="poi_height_restrictor">Limitadore de artària</string>
<string name="poi_turnstile">Tornellu</string> <string name="poi_turnstile">Tornellu</string>
<string name="poi_barrier_entrance">Intrada</string> <string name="poi_barrier_entrance">Coladòrgiu in unu muru o una cresura</string>
<string name="poi_entrance_main">Intrada printzipale</string> <string name="poi_entrance_main">Intrada printzipale</string>
<string name="poi_entrance">Intrada</string> <string name="poi_entrance">Intrada</string>
<string name="poi_entrance_exit">Essida</string> <string name="poi_entrance_exit">Essida</string>
@ -1094,14 +1094,14 @@
<string name="poi_seamark_bridge">Ponte nàuticu</string> <string name="poi_seamark_bridge">Ponte nàuticu</string>
<string name="poi_highway_crossing">Coladòrgiu pedonale</string> <string name="poi_highway_crossing">Coladòrgiu pedonale</string>
<string name="poi_icn_ref">Àndala retza tziclàbile internatzionale</string> <string name="poi_icn_ref">Nodu retza tziclàbile internatzionale</string>
<string name="poi_ncn_ref">Àndala retza tziclàbile natzionale</string> <string name="poi_ncn_ref">Nodu retza tziclàbile natzionale</string>
<string name="poi_rcn_ref">Àndala retza tziclàbile regionale</string> <string name="poi_rcn_ref">Nodu retza tziclàbile regionale</string>
<string name="poi_lcn_ref">Àndala retza tziclàbile locale</string> <string name="poi_lcn_ref">Nodu retza tziclàbile locale</string>
<string name="poi_iwn_ref">Àndala retza internatzionale pro sescursionismu</string> <string name="poi_iwn_ref">Nodu retza internatzionale pro sescursionismu</string>
<string name="poi_nwn_ref">Àndala retza natzionale pro sescursionismu</string> <string name="poi_nwn_ref">Nodu retza natzionale pro sescursionismu</string>
<string name="poi_rwn_ref">Àndala retza regionale pro sescursionismu</string> <string name="poi_rwn_ref">Nodu retza regionale pro sescursionismu</string>
<string name="poi_lwn_ref">Àndala retza locale pro sescursionismu</string> <string name="poi_lwn_ref">Nodu retza locale pro sescursionismu</string>
<string name="poi_route_hiking_iwn_poi">Àndala internatzionale pro sescursionismu</string> <string name="poi_route_hiking_iwn_poi">Àndala internatzionale pro sescursionismu</string>
<string name="poi_route_hiking_nwn_poi">Àndala natzionale pro sescursionismu</string> <string name="poi_route_hiking_nwn_poi">Àndala natzionale pro sescursionismu</string>
@ -1126,7 +1126,7 @@
<string name="poi_wheelchair_no">Cadira a rodas: non permitidas</string> <string name="poi_wheelchair_no">Cadira a rodas: non permitidas</string>
<string name="poi_wheelchair_limited">Cadira a rodas: limitadas</string> <string name="poi_wheelchair_limited">Cadira a rodas: limitadas</string>
<string name="poi_access_private">Atzessu privadu</string> <string name="poi_access_private">Atzessu privadu</string>
<string name="poi_access_no">Sena atzessu</string> <string name="poi_access_no">Chene atzessu</string>
<string name="poi_access_customers">Atzessu pro clientes</string> <string name="poi_access_customers">Atzessu pro clientes</string>
<string name="poi_access_delivery">Atzessu pro cunsinnas</string> <string name="poi_access_delivery">Atzessu pro cunsinnas</string>
<string name="poi_access_agricultural">Atzessu agrìcolu</string> <string name="poi_access_agricultural">Atzessu agrìcolu</string>
@ -1164,7 +1164,7 @@
<string name="poi_leaf_type_broadleaved">Fògia larga (latifògia)</string> <string name="poi_leaf_type_broadleaved">Fògia larga (latifògia)</string>
<string name="poi_leaf_type_needleleaved">Fògia a agu (aghifògia)</string> <string name="poi_leaf_type_needleleaved">Fògia a agu (aghifògia)</string>
<string name="poi_leaf_type_mixed">Mistu</string> <string name="poi_leaf_type_mixed">Mistu</string>
<string name="poi_leaf_type_leafless">Sena fògias</string> <string name="poi_leaf_type_leafless">Chene fògias</string>
<string name="poi_species">Genia</string> <string name="poi_species">Genia</string>
<string name="poi_genus">Gènere</string> <string name="poi_genus">Gènere</string>
<string name="poi_taxon">Tàxon</string> <string name="poi_taxon">Tàxon</string>
@ -1250,4 +1250,53 @@
<string name="poi_beach_shingle">Casta de plàia: giarra/ghiàia</string> <string name="poi_beach_shingle">Casta de plàia: giarra/ghiàia</string>
<string name="poi_beach_rocky">Casta de plàia: pedrosa</string> <string name="poi_beach_rocky">Casta de plàia: pedrosa</string>
<string name="poi_shoes_children">Iscarpas pro pitzinnos</string>
<string name="poi_shoes_women">Iscarpas pro fèminas</string>
<string name="poi_shoes_sport">Iscarpas pro isport</string>
<string name="poi_shoes_men">Iscarpas pro òmines</string>
<string name="poi_shoes_orthopedic">Iscarpas ortopèdicas</string>
<string name="poi_collection_times">Oràriu de regorta</string>
<string name="poi_email">P.eletrònica</string>
<string name="poi_fee_yes">A pagamentu</string>
<string name="poi_fee_no">De badas</string>
<string name="poi_wholesale">Grussista</string>
<string name="poi_access_destination">Atzessu pro sa destinatzione</string>
<string name="poi_access_permissive">Atzessu permissivu</string>
<string name="poi_trade_building_supplies">Ainas pro su fràigu</string>
<string name="poi_trade_plumbing">Ainas pro sidràulica</string>
<string name="poi_trade_wood">Frunidura de linna</string>
<string name="poi_trade_agricultural_supplies">Ainas pro s\'agricultura</string>
<string name="poi_trade_tile">Frunidura de regiolas</string>
<string name="poi_animal_shelter">Imbaru pro animales</string>
<string name="poi_animal_shelter_dog">Casta de imbaru: pro canes</string>
<string name="poi_animal_shelter_cat">Casta de imbaru: pro gatos</string>
<string name="poi_animal_shelter_dog_cat">Casta de imbaru: pro canes e gatos</string>
<string name="poi_animal_shelter_bird">Casta de imbaru: pro pugiones</string>
<string name="poi_generator_source_coal">Mitza de energia: carbone</string>
<string name="poi_generator_source_gas">Mitza de energia: gas</string>
<string name="poi_generator_source_nuclear">Mitza de energia: nucleare</string>
<string name="poi_generator_source_solar">Mitza de energia: solare</string>
<string name="poi_generator_source_hydro">Mitza de energia: idroelètrica</string>
<string name="poi_generator_source_wind">Mitza de energia: eòlica</string>
<string name="poi_generator_source_geothermal">Mitza de energia: geotèrmica</string>
<string name="poi_generator_source_oil">Mitza de energia: ògiu</string>
<string name="poi_generator_source_diesel">Mitza de energia: diesel</string>
<string name="poi_int_name">Nùmene internatzionale</string>
<string name="poi_nat_name">Nùmene natzionale</string>
<string name="poi_reg_name">Nùmene regionale</string>
<string name="poi_loc_name">Nùmene locale</string>
<string name="poi_old_name">Nùmene antigu</string>
<string name="poi_alt_name">Nùmene alternativu</string>
<string name="poi_pump_manual">Pompa manuale</string>
<string name="poi_pump_powered">Pompa automàtica</string>
<string name="poi_pump_no">Chene pompa</string>
<string name="poi_pump">Pompa</string>
<string name="poi_building">Edifìtziu</string>
</resources> </resources>

File diff suppressed because one or more lines are too long

View file

@ -2335,4 +2335,10 @@ Afganistan, Albánsko, Alžírsko, Andora, Angola, Anguilla, Antigua a Barbuda,
<string name="favorite_category_dublicate_message">Zadaný názov kategórie už existuje. Prosím zadajte iný názov.</string> <string name="favorite_category_dublicate_message">Zadaný názov kategórie už existuje. Prosím zadajte iný názov.</string>
<string name="favorite_category_name">Názov kategórie</string> <string name="favorite_category_name">Názov kategórie</string>
<string name="favorite_category_add_new_title">Pridať novú kategóriu</string> <string name="favorite_category_add_new_title">Pridať novú kategóriu</string>
</resources> <string name="confirm_download_roadmaps">Naozaj chcete stiahnuť mapu ciest, keď už máte plnú mapu?</string>
<string name="value_downloaded_from_max">%1$.1f z %2$.1f MB</string>
<string name="file_size_in_mb">%.1f MB</string>
<string name="update_all">Aktualizovať všetko (%1$s MB)</string>
<string name="free_downloads_used">Počet použitých voľných stiahnutí</string>
<string name="free_downloads_used_description">Môžete nastaviť, koľko voľných stiahnutí ste už použili</string>
</resources>

View file

@ -2028,4 +2028,13 @@
<string name="world_maps">Svetovni zemljevidi</string> <string name="world_maps">Svetovni zemljevidi</string>
<string name="world_regions">Svetovna območja</string> <string name="world_regions">Svetovna območja</string>
<string name="downloads">Prejemi</string> <string name="downloads">Prejemi</string>
<string name="favorite_category_dublicate_message">Ime kategorije že obstaja. Izberite drugo ime.</string>
<string name="favorite_category_name">Ime kategorije</string>
<string name="favorite_category_add_new_title">Dodaj kategorijo</string>
<string name="confirm_download_roadmaps">Ali ste prepričani, da želite prejeti cestni zemljevid, čeprav imate polni zemljevid že nameščen?</string>
<string name="value_downloaded_from_max">%1$.1f od %2$.1f MB</string>
<string name="file_size_in_mb">%.1f MB</string>
<string name="update_all">Posodobi vse (%1$s MB)</string>
<string name="free_downloads_used">Omejitev brezplačnih prejemov je dosežena.</string>
<string name="free_downloads_used_description">Videti je mogoče, koliko brezplačnih prejemov je že bilo izvedenih.</string>
</resources> </resources>

View file

@ -227,7 +227,7 @@
<string name="poi_aeroway_gate">登機門</string> <string name="poi_aeroway_gate">登機門</string>
<string name="poi_slipway">船舶斜滑道</string> <string name="poi_slipway">船舶斜滑道</string>
<string name="poi_ferry_terminal">渡碼頭</string> <string name="poi_ferry_terminal">碼頭</string>
<string name="poi_lighthouse">燈塔</string> <string name="poi_lighthouse">燈塔</string>
<string name="poi_bicycle_rental">自行車租賃站</string> <string name="poi_bicycle_rental">自行車租賃站</string>
@ -543,7 +543,7 @@
<string name="poi_grave_yard">墓地</string> <string name="poi_grave_yard">墓地</string>
<string name="poi_tomb">墳墓</string> <string name="poi_tomb">墳墓</string>
<string name="poi_shelter">涼亭</string> <string name="poi_shelter">涼亭</string>
<string name="poi_funicular">纜索鐵路</string> <string name="poi_funicular">纜索</string>
<string name="poi_resort">度假村</string> <string name="poi_resort">度假村</string>
<string name="poi_hanami">賞花</string> <string name="poi_hanami">賞花</string>
<string name="poi_wine_cellar">酒窖</string> <string name="poi_wine_cellar">酒窖</string>
@ -1895,4 +1895,55 @@
<string name="poi_bridge_structure_aqueduct">橋樑結構:高架渠式</string> <string name="poi_bridge_structure_aqueduct">橋樑結構:高架渠式</string>
<string name="poi_bridge_structure_log">橋樑結構:圓木式</string> <string name="poi_bridge_structure_log">橋樑結構:圓木式</string>
<string name="poi_bridge_type_movable">橋樑類型:活動型</string> <string name="poi_bridge_type_movable">橋樑類型:活動型</string>
<string name="poi_bridge_movable_bascule">活動橋類型:開啟型</string>
<string name="poi_bridge_movable_swing">活動橋類型:旋開型</string>
<string name="poi_bridge_movable_lift">活動橋類型:昇降型</string>
<string name="poi_bridge_movable_drawbridge">活動橋類型:開合型</string>
<string name="poi_bridge_movable_submersible">活動橋類型:潛水型</string>
<string name="poi_bridge_movable_transporter">活動橋類型:運輸型</string>
<string name="poi_bridge_movable_retractable">活動橋類型:伸縮型</string>
<string name="poi_lit_yes">路燈:有</string>
<string name="poi_lit_no">路燈:無</string>
<string name="poi_surface_unpaved">路面:未鋪設</string>
<string name="poi_surface_paved">路面:已鋪設</string>
<string name="poi_surface_asphalt">路面:柏油</string>
<string name="poi_surface_concrete">路面:混凝土</string>
<string name="poi_surface_sett">路面:石塊</string>
<string name="poi_surface_cobblestone">路面:圓扁石</string>
<string name="poi_surface_paving_stones">路面:鋪路石</string>
<string name="poi_surface_pebblestone">路面:鵝卵石</string>
<string name="poi_surface_stone">路面:石頭</string>
<string name="poi_surface_metal">路面:金屬</string>
<string name="poi_surface_wood">路面:木頭</string>
<string name="poi_surface_gravel">路面:礫石</string>
<string name="poi_surface_fine_gravel">路面:細礫石</string>
<string name="poi_surface_compacted">路面:壓緊實</string>
<string name="poi_surface_sand">路面:沙</string>
<string name="poi_surface_grass">路面:草地</string>
<string name="poi_surface_grass_paver">路面:植草磚</string>
<string name="poi_surface_ground">路面:土壤</string>
<string name="poi_surface_dirt">路面:爛泥</string>
<string name="poi_surface_mud">路面:泥漿</string>
<string name="poi_surface_ice">路面:冰</string>
<string name="poi_surface_salt">路面:鹽</string>
<string name="poi_surface_snow">路面:雪</string>
<string name="poi_route_bus_ref">公車</string>
<string name="poi_route_share_taxi_ref">共乘計程車</string>
<string name="poi_route_trolleybus_ref">無軌電車</string>
<string name="poi_route_tram_ref">電車</string>
<string name="poi_route_train_ref">火車</string>
<string name="poi_route_light_rail_ref">輕軌車</string>
<string name="poi_route_monorail_ref">單軌車</string>
<string name="poi_route_funicular_ref">纜索車</string>
<string name="poi_route_ferry_ref">渡輪</string>
<string name="poi_route_railway_ref">鐵路的路線</string>
<string name="poi_historic_yes">歷史物件</string>
<string name="poi_surveillance_yes">監視器:有</string>
<string name="poi_shop_yes">有商店</string>
</resources> </resources>

View file

@ -576,7 +576,7 @@
<string name="amenity_type_natural">自然景觀</string> <string name="amenity_type_natural">自然景觀</string>
<string name="amenity_type_office">公司行號</string> <string name="amenity_type_office">公司行號</string>
<string name="amenity_type_other">其它</string> <string name="amenity_type_other">其它</string>
<string name="amenity_type_shop">購物</string> <string name="amenity_type_shop">商店</string>
<string name="amenity_type_sport">運動</string> <string name="amenity_type_sport">運動</string>
<string name="amenity_type_sustenance">飲食</string> <string name="amenity_type_sustenance">飲食</string>
<string name="amenity_type_tourism">旅遊、住宿</string> <string name="amenity_type_tourism">旅遊、住宿</string>

View file

@ -547,6 +547,7 @@ public class MapActivity extends AccessibleActivity {
} }
if (mapLabelToShow != null) { if (mapLabelToShow != null) {
contextMenuOnMap.setMapCenter(latLonToShow); contextMenuOnMap.setMapCenter(latLonToShow);
contextMenuOnMap.setMapPosition(mapView.getMapPosition());
contextMenuOnMap.show(latLonToShow, mapLabelToShow, toShow); contextMenuOnMap.show(latLonToShow, mapLabelToShow, toShow);
} }
if (!latLonToShow.equals(cur)) { if (!latLonToShow.equals(cur)) {

View file

@ -493,6 +493,12 @@ public class MapActivityActions implements DialogProvider {
ApplicationMode selected = settings.APPLICATION_MODE.get(); ApplicationMode selected = settings.APPLICATION_MODE.get();
OsmandApplication app = mapActivity.getMyApplication(); OsmandApplication app = mapActivity.getMyApplication();
TargetPointsHelper targets = app.getTargetPointsHelper(); TargetPointsHelper targets = app.getTargetPointsHelper();
if (from == null) {
Location ll = app.getLocationProvider().getLastKnownLocation();
if (ll != null) {
from = new LatLon(ll.getLatitude(), ll.getLongitude());
}
}
if( selected != ApplicationMode.DEFAULT) { if( selected != ApplicationMode.DEFAULT) {
mode = selected; mode = selected;
} else if (mode == ApplicationMode.DEFAULT) { } else if (mode == ApplicationMode.DEFAULT) {

View file

@ -23,7 +23,6 @@ public class SearchBuildingByNameActivity extends SearchByNameAbstractActivity<B
private RegionAddressRepository region; private RegionAddressRepository region;
private City city; private City city;
private Street street; private Street street;
private OsmandSettings osmandSettings;
@Override @Override
protected Comparator<? super Building> createComparator() { protected Comparator<? super Building> createComparator() {
@ -124,7 +123,7 @@ public class SearchBuildingByNameActivity extends SearchByNameAbstractActivity<B
text = hno; text = hno;
} }
settings.setLastSearchedBuilding(text, loc); settings.setLastSearchedBuilding(text, loc);
quitActivity(null); showOnMap(loc, AddressInformation.buildBuilding(this, settings));
} }
@Override @Override

View file

@ -8,12 +8,7 @@ import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import android.content.pm.ActivityInfo;
import android.os.*;
import android.support.v4.view.MenuItemCompat;
import android.view.*;
import android.view.MenuItem.OnMenuItemClickListener;
import android.widget.*;
import net.osmand.Collator; import net.osmand.Collator;
import net.osmand.CollatorStringMatcher; import net.osmand.CollatorStringMatcher;
import net.osmand.CollatorStringMatcher.StringMatcherMode; import net.osmand.CollatorStringMatcher.StringMatcherMode;
@ -26,26 +21,44 @@ import net.osmand.plus.OsmAndConstants;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.OsmandListActivity; import net.osmand.plus.activities.OsmandListActivity;
import net.osmand.plus.activities.search.SearchAddressFragment.AddressInformation; import net.osmand.plus.activities.search.SearchAddressFragment.AddressInformation;
import net.osmand.plus.dialogs.DirectionsDialogs; import net.osmand.plus.dialogs.DirectionsDialogs;
import net.osmand.plus.dialogs.FavoriteDialogs; import net.osmand.plus.dialogs.FavoriteDialogs;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.os.AsyncTask;
import android.os.AsyncTask.Status; import android.os.AsyncTask.Status;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable; import android.text.Editable;
import android.text.Spannable; import android.text.Spannable;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.text.style.ForegroundColorSpan; import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan; import android.text.style.StyleSpan;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Filter;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.TextView.BufferType; import android.widget.TextView.BufferType;
import android.widget.TextView.OnEditorActionListener; import android.widget.TextView.OnEditorActionListener;
@ -516,62 +529,8 @@ public abstract class SearchByNameAbstractActivity<T> extends OsmandListActivity
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
if (sequentialSearch) { if (sequentialSearch) {
OsmandApplication app = ((OsmandApplication) getApplication()); createMenuItem(menu, SHOW_ON_MAP, R.string.shared_string_show_on_map,
MenuItem menuItem = menu.add(0, NAVIGATE_TO, 0, R.string.context_menu_item_directions_to); R.drawable.ic_action_done, MenuItem.SHOW_AS_ACTION_ALWAYS);
MenuItemCompat.setShowAsAction(menuItem,
MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
menuItem = menuItem.setIcon(app.getIconsCache().getIcon(R.drawable.ic_action_gdirections_dark));
menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
select(NAVIGATE_TO);
return true;
}
});
TargetPointsHelper targets = ((OsmandApplication) getApplication()).getTargetPointsHelper();
if (targets.getPointToNavigate() != null) {
menuItem = menu.add(0, ADD_WAYPOINT, 0, R.string.context_menu_item_intermediate_point);
MenuItemCompat.setShowAsAction(menuItem,
MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
menuItem = menuItem.setIcon(app.getIconsCache().getIcon(R.drawable.ic_action_flage_dark));
} else {
menuItem = menu.add(0, ADD_WAYPOINT, 0, R.string.context_menu_item_destination_point);
MenuItemCompat.setShowAsAction(menuItem,
MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
menuItem = menuItem.setIcon(app.getIconsCache().getIcon( R.drawable.ic_action_flag_dark));
}
menuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
select(ADD_WAYPOINT);
return true;
}
});
menuItem = menu.add(0, SHOW_ON_MAP, 0, R.string.shared_string_show_on_map);
MenuItemCompat.setShowAsAction(menuItem,
MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
menuItem = menuItem.setIcon(app.getIconsCache().getIcon(R.drawable.ic_action_marker_dark));
menuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
select(SHOW_ON_MAP);
return true;
}
});
menuItem = menu.add(0, ADD_TO_FAVORITE, 0, R.string.shared_string_add_to_favorites);
MenuItemCompat.setShowAsAction(menuItem,
MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
menuItem = menuItem.setIcon(app.getIconsCache().getIcon(R.drawable.ic_action_fav_dark));
menuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
select(ADD_TO_FAVORITE);
return true;
}
});
} else { } else {
createMenuItem(menu, 1, R.string.shared_string_ok, createMenuItem(menu, 1, R.string.shared_string_ok,
R.drawable.ic_action_done, MenuItem.SHOW_AS_ACTION_ALWAYS); R.drawable.ic_action_done, MenuItem.SHOW_AS_ACTION_ALWAYS);
@ -600,14 +559,18 @@ public abstract class SearchByNameAbstractActivity<T> extends OsmandListActivity
DirectionsDialogs.addWaypointDialogAndLaunchMap(getActivity(), searchPoint.getLatitude(), DirectionsDialogs.addWaypointDialogAndLaunchMap(getActivity(), searchPoint.getLatitude(),
searchPoint.getLongitude(), ai.getHistoryName()); searchPoint.getLongitude(), ai.getHistoryName());
} else if (mode == SHOW_ON_MAP) { } else if (mode == SHOW_ON_MAP) {
settings.setMapLocationToShow(searchPoint.getLatitude(), searchPoint.getLongitude(), ai.zoom, showOnMap(searchPoint, ai);
ai.getHistoryName());
MapActivity.launchMapActivityMoveToTop(getActivity());
} }
} }
} }
public void showOnMap(LatLon searchPoint, AddressInformation ai) {
settings.setMapLocationToShow(searchPoint.getLatitude(), searchPoint.getLongitude(), ai.zoom,
ai.getHistoryName());
MapActivity.launchMapActivityMoveToTop(getActivity());
}
private Activity getActivity() { private Activity getActivity() {
return this; return this;
} }

View file

@ -265,26 +265,7 @@ public class SearchHistoryFragment extends OsmAndListFragment implements SearchA
PointDescription pd = historyEntry.getName(); PointDescription pd = historyEntry.getName();
nameText.setText(pd.getSimpleName(activity, false), BufferType.SPANNABLE); nameText.setText(pd.getSimpleName(activity, false), BufferType.SPANNABLE);
ImageView icon = ((ImageView) row.findViewById(R.id.icon)); ImageView icon = ((ImageView) row.findViewById(R.id.icon));
icon.setImageDrawable(ic.getContentIcon(getItemIcon(historyEntry.getName())));
if (historyEntry.getName().isAddress()) {
icon.setImageDrawable(ic.getContentIcon(R.drawable.ic_type_address));
} else if (historyEntry.getName().isFavorite()) {
icon.setImageDrawable(ic.getContentIcon(R.drawable.ic_type_favorites));
} else if (historyEntry.getName().isLocation()) {
icon.setImageDrawable(ic.getContentIcon(R.drawable.ic_type_coordinates));
} else if (historyEntry.getName().isPoi()) {
icon.setImageDrawable(ic.getContentIcon(R.drawable.ic_type_info));
} else if (historyEntry.getName().isWpt()) {
icon.setImageDrawable(ic.getContentIcon(R.drawable.ic_type_waypoint));
} else if (historyEntry.getName().isAudioNote()) {
icon.setImageDrawable(ic.getContentIcon(R.drawable.ic_type_audio));
} else if (historyEntry.getName().isVideoNote()) {
icon.setImageDrawable(ic.getContentIcon(R.drawable.ic_type_video));
}else if (historyEntry.getName().isPhotoNote()) {
icon.setImageDrawable(ic.getContentIcon(R.drawable.ic_type_img));
} else {
icon.setImageDrawable(ic.getContentIcon(R.drawable.ic_type_address));
}
String typeName = historyEntry.getName().getTypeName(); String typeName = historyEntry.getName().getTypeName();
if (typeName != null && !typeName.isEmpty()) { if (typeName != null && !typeName.isEmpty()) {
@ -298,6 +279,30 @@ public class SearchHistoryFragment extends OsmAndListFragment implements SearchA
} }
} }
public static int getItemIcon(PointDescription pd) {
int iconId;
if (pd.isAddress()) {
iconId = R.drawable.ic_type_address;
} else if (pd.isFavorite()) {
iconId = R.drawable.ic_type_favorites;
} else if (pd.isLocation()) {
iconId = R.drawable.ic_type_coordinates;
} else if (pd.isPoi()) {
iconId = R.drawable.ic_type_info;
} else if (pd.isWpt()) {
iconId = R.drawable.ic_type_waypoint;
} else if (pd.isAudioNote()) {
iconId = R.drawable.ic_type_audio;
} else if (pd.isVideoNote()) {
iconId = R.drawable.ic_type_video;
}else if (pd.isPhotoNote()) {
iconId = R.drawable.ic_type_img;
} else {
iconId = R.drawable.ic_type_address;
}
return iconId;
}
@Override @Override
public void onCreateOptionsMenu(Menu onCreate, MenuInflater inflater) { public void onCreateOptionsMenu(Menu onCreate, MenuInflater inflater) {
if (getActivity() instanceof SearchActivity) { if (getActivity() instanceof SearchActivity) {

View file

@ -77,6 +77,6 @@ public class SearchStreet2ByNameActivity extends SearchByNameAbstractActivity<St
@Override @Override
public void itemSelected(Street obj) { public void itemSelected(Street obj) {
settings.setLastSearchedIntersectedStreet(obj.getName(region.getLang()), obj.getLocation()); settings.setLastSearchedIntersectedStreet(obj.getName(region.getLang()), obj.getLocation());
quitActivity(null); showOnMap(obj.getLocation(), AddressInformation.build2StreetIntersection(this, settings));
} }
} }

View file

@ -1,25 +1,13 @@
package net.osmand.plus.download; package net.osmand.plus.download;
import android.app.AlertDialog; import java.io.File;
import android.app.AlertDialog.Builder; import java.lang.ref.WeakReference;
import android.content.ActivityNotFoundException; import java.text.MessageFormat;
import android.content.DialogInterface; import java.util.ArrayList;
import android.content.Intent; import java.util.List;
import android.net.Uri; import java.util.Locale;
import android.os.AsyncTask; import java.util.Map;
import android.os.Bundle;
import android.os.StatFs;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.text.method.LinkMovementMethod;
import android.view.MenuItem;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
import net.osmand.IndexConstants;
import net.osmand.PlatformUtil; import net.osmand.PlatformUtil;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandPlugin;
@ -39,16 +27,21 @@ import net.osmand.plus.views.controls.PagerSlidingTabStrip;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import java.io.File; import android.content.ActivityNotFoundException;
import java.lang.ref.WeakReference; import android.content.Intent;
import java.text.MessageFormat; import android.net.Uri;
import java.util.ArrayList; import android.os.AsyncTask;
import java.util.Collection; import android.os.Bundle;
import java.util.HashSet; import android.os.StatFs;
import java.util.List; import android.support.v4.app.DialogFragment;
import java.util.Locale; import android.support.v4.app.Fragment;
import java.util.Map; import android.support.v4.app.FragmentActivity;
import java.util.Set; import android.support.v4.view.ViewPager;
import android.text.method.LinkMovementMethod;
import android.view.MenuItem;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
public class DownloadActivity extends BaseDownloadActivity implements DialogDismissListener { public class DownloadActivity extends BaseDownloadActivity implements DialogDismissListener {
@ -298,65 +291,6 @@ public class DownloadActivity extends BaseDownloadActivity implements DialogDism
} }
protected void downloadWikiFiles() {
if (Version.isFreeVersion(getMyApplication())) {
new InstallPaidVersionDialogFragment().show(getSupportFragmentManager(),
InstallPaidVersionDialogFragment.TAG);
} else {
Builder bld = new AlertDialog.Builder(this);
final List<IndexItem> wi = getWikipediaItems();
long size = 0;
for (IndexItem i : wi) {
size += i.getSize();
}
bld.setMessage(getString(R.string.download_wikipedia_files, (size >> 20)));
bld.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
for (IndexItem i : wi) {
addToDownload(i);
}
updateFragments();
checkOldWikiFiles();
}
});
bld.setNegativeButton(R.string.shared_string_cancel, null);
if (wi.size() > 0) {
bld.show();
}
}
}
protected void checkOldWikiFiles() {
Map<String, String> fileNames = getMyApplication().getResourceManager().getIndexFileNames();
final Set<String> wiki = new HashSet<String>();
for (String s : fileNames.keySet()) {
if (s.contains("_wiki")) {
wiki.add(s);
}
}
if (wiki.size() > 0) {
Builder bld = new AlertDialog.Builder(this);
bld.setMessage(R.string.archive_wikipedia_data);
bld.setNegativeButton(R.string.shared_string_cancel, null);
bld.setPositiveButton(R.string.shared_string_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
for (String w : wiki) {
File fl = getMyApplication().getAppPath(w);
File nf = new File(fl.getParentFile(), IndexConstants.BACKUP_INDEX_DIR + "/" + fl.getName());
boolean res = fl.renameTo(nf);
if (!res) {
System.err.println("Renaming from " + fl.getAbsolutePath() + " to " + nf.getAbsolutePath() + " failed");
}
}
}
});
bld.show();
}
}
@Override @Override
@ -372,41 +306,6 @@ public class DownloadActivity extends BaseDownloadActivity implements DialogDism
} }
} }
private List<IndexItem> getWikipediaItems() {
Set<String> wikipediaItems = new HashSet<String>();
Map<String, String> indexed = getMyApplication().getResourceManager().getIndexFileNames();
for (IndexItem i : getEntriesToDownload().keySet()) {
if (i.getType() == DownloadActivityType.NORMAL_FILE) {
boolean fit = true;
fit = fit && i.getFileName().contains("obf");
fit = fit && !i.getFileName().contains("world");
String fname = i.getBasename();
if (fit && !indexed.containsKey(fname + ".wiki.obf")) {
wikipediaItems.add(fname);
}
}
}
for (IndexItem i : getEntriesToDownload().keySet()) {
if (i.getType() == DownloadActivityType.WIKIPEDIA_FILE) {
wikipediaItems.remove(i.getBasename());
}
}
List<IndexItem> res = new ArrayList<IndexItem>();
IndexFileList list = downloadListIndexThread.getIndexFiles();
if (list != null) {
List<IndexItem> indexFiles = list.getIndexFiles();
for (IndexItem i : indexFiles) {
if (i.getType() == DownloadActivityType.WIKIPEDIA_FILE &&
wikipediaItems.contains(i.getBasename())) {
res.add(i);
}
}
}
return res;
}
public List<DownloadActivityType> getDownloadTypes() { public List<DownloadActivityType> getDownloadTypes() {
return downloadTypes; return downloadTypes;
} }
@ -441,55 +340,6 @@ public class DownloadActivity extends BaseDownloadActivity implements DialogDism
return downloadListIndexThread != null ? downloadListIndexThread.getCachedIndexFiles() : null; return downloadListIndexThread != null ? downloadListIndexThread.getCachedIndexFiles() : null;
} }
public void showDialogToDownloadMaps(Collection<String> maps) {
int count = 0;
int sz = 0;
String s = "";
for (IndexItem i : DownloadActivity.downloadListIndexThread.getCachedIndexFiles()) {
for (String map : maps) {
if ((i.getFileName().equals(map + ".obf.zip") || i.getFileName().equals(map + "_" + IndexConstants.BINARY_MAP_VERSION + ".obf.zip"))
&& i.getType() == DownloadActivityType.NORMAL_FILE) {
final List<DownloadEntry> de = i.createDownloadEntry(getMyApplication(), i.getType(), new ArrayList<DownloadEntry>(1));
for (DownloadEntry d : de) {
count++;
sz += d.sizeMB;
}
if (s.length() > 0) {
s += ", ";
}
s += i.getVisibleName(getMyApplication(), getMyApplication().getResourceManager().getOsmandRegions());
getEntriesToDownload().put(i, de);
}
}
}
if (count > 0) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(getString(R.string.download_additional_maps, s, sz));
builder.setPositiveButton(R.string.shared_string_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
downloadFilesCheckInternet();
}
});
builder.setNegativeButton(R.string.shared_string_no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
getEntriesToDownload().clear();
}
});
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
getEntriesToDownload().clear();
}
});
builder.show();
}
}
public void registerFreeVersionBanner(View view) { public void registerFreeVersionBanner(View view) {
visibleBanner = new BannerAndDownloadFreeVersion(view, this); visibleBanner = new BannerAndDownloadFreeVersion(view, this);

View file

@ -1171,6 +1171,7 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment
IndexItem ii = new IndexItem(iu.fileName, "Incremental update", iu.timestamp, iu.sizeText, IndexItem ii = new IndexItem(iu.fileName, "Incremental update", iu.timestamp, iu.sizeText,
iu.contentSize, iu.containerSize, DownloadActivityType.LIVE_UPDATES_FILE); iu.contentSize, iu.containerSize, DownloadActivityType.LIVE_UPDATES_FILE);
getDownloadActivity().addToDownload(ii); getDownloadActivity().addToDownload(ii);
getDownloadActivity().downloadFilesCheckFreeVersion();
getDownloadActivity().updateFragments(); getDownloadActivity().updateFragments();
} }
} }

View file

@ -1,13 +1,5 @@
package net.osmand.plus.helpers; package net.osmand.plus.helpers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import net.osmand.data.LatLon; import net.osmand.data.LatLon;
import net.osmand.data.PointDescription; import net.osmand.data.PointDescription;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
@ -16,6 +8,14 @@ import net.osmand.plus.api.SQLiteAPI.SQLiteConnection;
import net.osmand.plus.api.SQLiteAPI.SQLiteCursor; import net.osmand.plus.api.SQLiteAPI.SQLiteCursor;
import net.osmand.util.Algorithms; import net.osmand.util.Algorithms;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SearchHistoryHelper { public class SearchHistoryHelper {
private static final int HISTORY_LIMIT = 1500; private static final int HISTORY_LIMIT = 1500;
@ -51,7 +51,7 @@ public class SearchHistoryHelper {
} }
}; };
public static class HistoryEntry { public static class HistoryEntry implements Serializable {
double lat; double lat;
double lon; double lon;
PointDescription name; PointDescription name;

View file

@ -17,9 +17,12 @@ import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry;
import net.osmand.plus.mapcontextmenu.details.AmenityMenuController; import net.osmand.plus.mapcontextmenu.details.AmenityMenuController;
import net.osmand.plus.mapcontextmenu.details.FavouritePointMenuController; import net.osmand.plus.mapcontextmenu.details.FavouritePointMenuController;
import net.osmand.plus.mapcontextmenu.details.HistoryMenuController;
import net.osmand.plus.mapcontextmenu.details.MenuController; import net.osmand.plus.mapcontextmenu.details.MenuController;
import net.osmand.plus.mapcontextmenu.details.PointDescriptionMenuController;
import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.views.ContextMenuLayer; import net.osmand.plus.views.ContextMenuLayer;
import net.osmand.plus.views.OsmandMapLayer; import net.osmand.plus.views.OsmandMapLayer;
@ -38,6 +41,7 @@ public class MapContextMenu {
MenuController menuController; MenuController menuController;
private LatLon mapCenter; private LatLon mapCenter;
private int mapPosition = 0;
private int leftIconId; private int leftIconId;
private Drawable leftIcon; private Drawable leftIcon;
@ -58,6 +62,7 @@ public class MapContextMenu {
private static final String KEY_CTX_MENU_STREET_STR = "key_ctx_menu_street_str"; private static final String KEY_CTX_MENU_STREET_STR = "key_ctx_menu_street_str";
private static final String KEY_CTX_MENU_ADDR_UNKNOWN = "key_ctx_menu_addr_unknown"; private static final String KEY_CTX_MENU_ADDR_UNKNOWN = "key_ctx_menu_addr_unknown";
private static final String KEY_CTX_MENU_MAP_CENTER = "key_ctx_menu_map_center"; private static final String KEY_CTX_MENU_MAP_CENTER = "key_ctx_menu_map_center";
private static final String KEY_CTX_MENU_MAP_POSITION = "key_ctx_menu_map_position";
public boolean isActive() { public boolean isActive() {
return active; return active;
@ -79,6 +84,10 @@ public class MapContextMenu {
this.mapCenter = mapCenter; this.mapCenter = mapCenter;
} }
public void setMapPosition(int mapPosition) {
this.mapPosition = mapPosition;
}
public PointDescription getPointDescription() { public PointDescription getPointDescription() {
return pointDescription; return pointDescription;
} }
@ -140,6 +149,10 @@ public class MapContextMenu {
menuController.addPlainMenuItems(typeStr, this.pointDescription); menuController.addPlainMenuItems(typeStr, this.pointDescription);
} }
if (mapPosition != 0) {
mapActivity.getMapView().setMapPosition(0);
}
mapActivity.getMapView().refreshMap(); mapActivity.getMapView().refreshMap();
return true; return true;
@ -172,6 +185,10 @@ public class MapContextMenu {
} }
public void hide() { public void hide() {
if (mapPosition != 0) {
mapActivity.getMapView().setMapPosition(mapPosition);
mapPosition = 0;
}
MapContextMenuFragment fragment = findMenuFragment(); MapContextMenuFragment fragment = findMenuFragment();
if (fragment != null) { if (fragment != null) {
fragment.dismissMenu(); fragment.dismissMenu();
@ -200,7 +217,11 @@ public class MapContextMenu {
menuController = new AmenityMenuController(app, mapActivity, (Amenity) object); menuController = new AmenityMenuController(app, mapActivity, (Amenity) object);
} else if (object instanceof FavouritePoint) { } else if (object instanceof FavouritePoint) {
menuController = new FavouritePointMenuController(app, mapActivity, (FavouritePoint) object); menuController = new FavouritePointMenuController(app, mapActivity, (FavouritePoint) object);
} else if (object instanceof HistoryEntry) {
menuController = new HistoryMenuController(app, mapActivity, (HistoryEntry) object);
} }
} else {
menuController = new PointDescriptionMenuController(app, mapActivity, pointDescription, latLon);
} }
} }
@ -354,6 +375,8 @@ public class MapContextMenu {
public void fabPressed() { public void fabPressed() {
mapActivity.getMapActions().directionTo(latLon.getLatitude(), latLon.getLongitude()); mapActivity.getMapActions().directionTo(latLon.getLatitude(), latLon.getLongitude());
hide();
mapActivity.getMapLayers().getMapControlsLayer().showRouteInfoControlDialog();
} }
public void buttonWaypointPressed() { public void buttonWaypointPressed() {
@ -400,6 +423,7 @@ public class MapContextMenu {
bundle.putString(KEY_CTX_MENU_STREET_STR, streetStr); bundle.putString(KEY_CTX_MENU_STREET_STR, streetStr);
bundle.putString(KEY_CTX_MENU_ADDR_UNKNOWN, Boolean.toString(addressUnknown)); bundle.putString(KEY_CTX_MENU_ADDR_UNKNOWN, Boolean.toString(addressUnknown));
bundle.putSerializable(KEY_CTX_MENU_MAP_CENTER, mapCenter); bundle.putSerializable(KEY_CTX_MENU_MAP_CENTER, mapCenter);
bundle.putInt(KEY_CTX_MENU_MAP_POSITION, mapPosition);
} }
public void restoreMenuState(Bundle bundle) { public void restoreMenuState(Bundle bundle) {
@ -408,7 +432,6 @@ public class MapContextMenu {
if (pDescObj != null) { if (pDescObj != null) {
pointDescription = (PointDescription) pDescObj; pointDescription = (PointDescription) pDescObj;
} }
acquireMenuController();
active = Boolean.parseBoolean(bundle.getString(KEY_CTX_MENU_ACTIVE)); active = Boolean.parseBoolean(bundle.getString(KEY_CTX_MENU_ACTIVE));
Object latLonObj = bundle.getSerializable(KEY_CTX_MENU_LATLON); Object latLonObj = bundle.getSerializable(KEY_CTX_MENU_LATLON);
@ -418,6 +441,8 @@ public class MapContextMenu {
active = false; active = false;
} }
acquireMenuController();
Object mapCenterObj = bundle.getSerializable(KEY_CTX_MENU_MAP_CENTER); Object mapCenterObj = bundle.getSerializable(KEY_CTX_MENU_MAP_CENTER);
if (mapCenterObj != null) { if (mapCenterObj != null) {
mapCenter = (LatLon) mapCenterObj; mapCenter = (LatLon) mapCenterObj;
@ -427,6 +452,7 @@ public class MapContextMenu {
typeStr = bundle.getString(KEY_CTX_MENU_TYPE_STR); typeStr = bundle.getString(KEY_CTX_MENU_TYPE_STR);
streetStr = bundle.getString(KEY_CTX_MENU_STREET_STR); streetStr = bundle.getString(KEY_CTX_MENU_STREET_STR);
addressUnknown = Boolean.parseBoolean(bundle.getString(KEY_CTX_MENU_ADDR_UNKNOWN)); addressUnknown = Boolean.parseBoolean(bundle.getString(KEY_CTX_MENU_ADDR_UNKNOWN));
mapPosition = bundle.getInt(KEY_CTX_MENU_MAP_POSITION, 0);
acquireIcons(); acquireIcons();

View file

@ -639,6 +639,7 @@ public class MapContextMenuFragment extends Fragment {
public void refreshTitle() { public void refreshTitle() {
setAddressLocation(); setAddressLocation();
runLayoutListener();
} }
public void setFragmentVisibility(boolean visible) { public void setFragmentVisibility(boolean visible) {

View file

@ -47,7 +47,6 @@ public class AmenityMenuBuilder extends MenuBuilder {
LinearLayout ll = new LinearLayout(view.getContext()); LinearLayout ll = new LinearLayout(view.getContext());
ll.setOrientation(LinearLayout.HORIZONTAL); ll.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//llParams.setMargins(0, dpToPx(14f), 0, dpToPx(14f));
ll.setLayoutParams(llParams); ll.setLayoutParams(llParams);
// Icon // Icon
@ -118,15 +117,6 @@ public class AmenityMenuBuilder extends MenuBuilder {
rowBuilt(); rowBuilt();
} }
public int dpToPx(float dp) {
Resources r = app.getResources();
return (int) TypedValue.applyDimension(
COMPLEX_UNIT_DIP,
dp,
r.getDisplayMetrics()
);
}
@Override @Override
public void build(View view) { public void build(View view) {
super.build(view); super.build(view);

View file

@ -1,7 +1,6 @@
package net.osmand.plus.mapcontextmenu.details; package net.osmand.plus.mapcontextmenu.details;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import net.osmand.data.Amenity; import net.osmand.data.Amenity;
import net.osmand.data.PointDescription; import net.osmand.data.PointDescription;

View file

@ -1,9 +1,7 @@
package net.osmand.plus.mapcontextmenu.details; package net.osmand.plus.mapcontextmenu.details;
import android.content.res.Resources;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.text.util.Linkify; import android.text.util.Linkify;
import android.util.TypedValue;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -16,8 +14,6 @@ import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.util.Algorithms; import net.osmand.util.Algorithms;
import static android.util.TypedValue.COMPLEX_UNIT_DIP;
public class FavouritePointMenuBuilder extends MenuBuilder { public class FavouritePointMenuBuilder extends MenuBuilder {
private final FavouritePoint fav; private final FavouritePoint fav;
@ -37,7 +33,6 @@ public class FavouritePointMenuBuilder extends MenuBuilder {
LinearLayout ll = new LinearLayout(view.getContext()); LinearLayout ll = new LinearLayout(view.getContext());
ll.setOrientation(LinearLayout.HORIZONTAL); ll.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//llParams.setMargins(0, dpToPx(14f), 0, dpToPx(14f));
ll.setLayoutParams(llParams); ll.setLayoutParams(llParams);
// Icon // Icon
@ -95,15 +90,6 @@ public class FavouritePointMenuBuilder extends MenuBuilder {
rowBuilt(); rowBuilt();
} }
public int dpToPx(float dp) {
Resources r = app.getResources();
return (int) TypedValue.applyDimension(
COMPLEX_UNIT_DIP,
dp,
r.getDisplayMetrics()
);
}
@Override @Override
public void build(View view) { public void build(View view) {
super.build(view); super.build(view);

View file

@ -0,0 +1,99 @@
package net.osmand.plus.mapcontextmenu.details;
import android.graphics.drawable.Drawable;
import android.text.util.Linkify;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry;
public class HistoryMenuBuilder extends MenuBuilder {
private final HistoryEntry entry;
public HistoryMenuBuilder(OsmandApplication app, final HistoryEntry entry) {
super(app);
this.entry = entry;
}
private void buildRow(View view, int iconId, String text, int textColor) {
buildRow(view, getRowIcon(iconId), text, textColor);
}
private void buildRow(final View view, Drawable icon, String text, int textColor) {
boolean light = app.getSettings().isLightContent();
LinearLayout ll = new LinearLayout(view.getContext());
ll.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ll.setLayoutParams(llParams);
// Icon
LinearLayout llIcon = new LinearLayout(view.getContext());
llIcon.setOrientation(LinearLayout.HORIZONTAL);
llIcon.setLayoutParams(new LinearLayout.LayoutParams(dpToPx(72f), isFirstRow() ? dpToPx(48f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP) : dpToPx(48f)));
llIcon.setGravity(Gravity.CENTER_VERTICAL);
ll.addView(llIcon);
ImageView iconView = new ImageView(view.getContext());
LinearLayout.LayoutParams llIconParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
llIconParams.setMargins(dpToPx(16f), isFirstRow() ? dpToPx(12f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP / 2f) : dpToPx(12f), dpToPx(32f), dpToPx(12f));
llIconParams.gravity = Gravity.CENTER_VERTICAL;
iconView.setLayoutParams(llIconParams);
iconView.setScaleType(ImageView.ScaleType.CENTER);
iconView.setImageDrawable(icon);
llIcon.addView(iconView);
// Text
LinearLayout llText = new LinearLayout(view.getContext());
llText.setOrientation(LinearLayout.VERTICAL);
ll.addView(llText);
TextView textView = new TextView(view.getContext());
LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextParams.setMargins(0, isFirstRow() ? dpToPx(8f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP) : dpToPx(8f), 0, dpToPx(8f));
textView.setLayoutParams(llTextParams);
textView.setTextSize(16);
textView.setTextColor(app.getResources().getColor(light ? R.color.ctx_menu_info_text_light : R.color.ctx_menu_info_text_dark));
textView.setAutoLinkMask(Linkify.ALL);
textView.setLinksClickable(true);
textView.setText(text);
if (textColor > 0) {
textView.setTextColor(view.getResources().getColor(textColor));
}
LinearLayout.LayoutParams llTextViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextViewParams.setMargins(0, 0, dpToPx(10f), 0);
llTextViewParams.gravity = Gravity.CENTER_VERTICAL;
llText.setLayoutParams(llTextViewParams);
llText.addView(textView);
((LinearLayout) view).addView(ll);
View horizontalLine = new View(view.getContext());
LinearLayout.LayoutParams llHorLineParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dpToPx(1f));
llHorLineParams.gravity = Gravity.BOTTOM;
horizontalLine.setLayoutParams(llHorLineParams);
horizontalLine.setBackgroundColor(app.getResources().getColor(light ? R.color.ctx_menu_info_divider_light : R.color.ctx_menu_info_divider_dark));
((LinearLayout) view).addView(horizontalLine);
rowBuilt();
}
@Override
public void build(View view) {
super.build(view);
for (PlainMenuItem item : plainMenuItems) {
buildRow(view, item.getIconId(), item.getText(), 0);
}
}
}

View file

@ -0,0 +1,83 @@
package net.osmand.plus.mapcontextmenu.details;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import net.osmand.data.PointDescription;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.search.SearchHistoryFragment;
import net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry;
public class HistoryMenuController extends MenuController {
private HistoryEntry entry;
public HistoryMenuController(OsmandApplication app, MapActivity mapActivity, final HistoryEntry entry) {
super(new HistoryMenuBuilder(app, entry), mapActivity);
this.entry = entry;
}
@Override
protected int getInitialMenuStatePortrait() {
return MenuState.HEADER_ONLY;
}
@Override
protected int getSupportedMenuStatesPortrait() {
return MenuState.HEADER_ONLY | MenuState.HALF_SCREEN | MenuState.FULL_SCREEN;
}
@Override
public boolean needTypeStr() {
String typeName = entry.getName().getTypeName();
return (typeName != null && !typeName.isEmpty());
}
@Override
public Drawable getLeftIcon() {
return getIcon(SearchHistoryFragment.getItemIcon(entry.getName()));
}
@Override
public Drawable getSecondLineIcon() {
if (needTypeStr()) {
return getIcon(R.drawable.ic_small_group);
} else {
return null;
}
}
@Override
public String getNameStr() {
return entry.getName().getSimpleName(getMapActivity(), false);
}
@Override
public String getTypeStr() {
if (needTypeStr()) {
return entry.getName().getTypeName();
} else {
return "";
}
}
@Override
public boolean needStreetName() {
return !entry.getName().isAddress();
}
@Override
public void addPlainMenuItems(String typeStr, PointDescription pointDescription) {
if (pointDescription != null) {
addPlainMenuItem(R.drawable.map_my_location, PointDescription.getLocationName(getMapActivity(),
entry.getLat(), entry.getLon(), true).replaceAll("\n", ""));
}
}
@Override
public void saveEntityState(Bundle bundle, String key) {
bundle.putSerializable(key, entry);
}
}

View file

@ -1,9 +1,11 @@
package net.osmand.plus.mapcontextmenu.details; package net.osmand.plus.mapcontextmenu.details;
import android.content.Context; import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.util.TypedValue;
import android.view.View; import android.view.View;
import net.osmand.plus.IconsCache; import net.osmand.plus.IconsCache;
@ -13,6 +15,8 @@ import net.osmand.plus.render.RenderingIcons;
import java.util.LinkedList; import java.util.LinkedList;
import static android.util.TypedValue.COMPLEX_UNIT_DIP;
public abstract class MenuBuilder { public abstract class MenuBuilder {
public class PlainMenuItem { public class PlainMenuItem {
@ -76,4 +80,13 @@ public abstract class MenuBuilder {
return null; return null;
} }
} }
public int dpToPx(float dp) {
Resources r = app.getResources();
return (int) TypedValue.applyDimension(
COMPLEX_UNIT_DIP,
dp,
r.getDisplayMetrics()
);
}
} }

View file

@ -0,0 +1,99 @@
package net.osmand.plus.mapcontextmenu.details;
import android.graphics.drawable.Drawable;
import android.text.util.Linkify;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import net.osmand.data.PointDescription;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
public class PointDescriptionMenuBuilder extends MenuBuilder {
private final PointDescription pointDescription;
public PointDescriptionMenuBuilder(OsmandApplication app, final PointDescription pointDescription) {
super(app);
this.pointDescription = pointDescription;
}
private void buildRow(View view, int iconId, String text, int textColor) {
buildRow(view, getRowIcon(iconId), text, textColor);
}
private void buildRow(final View view, Drawable icon, String text, int textColor) {
boolean light = app.getSettings().isLightContent();
LinearLayout ll = new LinearLayout(view.getContext());
ll.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ll.setLayoutParams(llParams);
// Icon
LinearLayout llIcon = new LinearLayout(view.getContext());
llIcon.setOrientation(LinearLayout.HORIZONTAL);
llIcon.setLayoutParams(new LinearLayout.LayoutParams(dpToPx(72f), isFirstRow() ? dpToPx(48f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP) : dpToPx(48f)));
llIcon.setGravity(Gravity.CENTER_VERTICAL);
ll.addView(llIcon);
ImageView iconView = new ImageView(view.getContext());
LinearLayout.LayoutParams llIconParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
llIconParams.setMargins(dpToPx(16f), isFirstRow() ? dpToPx(12f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP / 2f) : dpToPx(12f), dpToPx(32f), dpToPx(12f));
llIconParams.gravity = Gravity.CENTER_VERTICAL;
iconView.setLayoutParams(llIconParams);
iconView.setScaleType(ImageView.ScaleType.CENTER);
iconView.setImageDrawable(icon);
llIcon.addView(iconView);
// Text
LinearLayout llText = new LinearLayout(view.getContext());
llText.setOrientation(LinearLayout.VERTICAL);
ll.addView(llText);
TextView textView = new TextView(view.getContext());
LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextParams.setMargins(0, isFirstRow() ? dpToPx(8f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP) : dpToPx(8f), 0, dpToPx(8f));
textView.setLayoutParams(llTextParams);
textView.setTextSize(16);
textView.setTextColor(app.getResources().getColor(light ? R.color.ctx_menu_info_text_light : R.color.ctx_menu_info_text_dark));
textView.setAutoLinkMask(Linkify.ALL);
textView.setLinksClickable(true);
textView.setText(text);
if (textColor > 0) {
textView.setTextColor(view.getResources().getColor(textColor));
}
LinearLayout.LayoutParams llTextViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextViewParams.setMargins(0, 0, dpToPx(10f), 0);
llTextViewParams.gravity = Gravity.CENTER_VERTICAL;
llText.setLayoutParams(llTextViewParams);
llText.addView(textView);
((LinearLayout) view).addView(ll);
View horizontalLine = new View(view.getContext());
LinearLayout.LayoutParams llHorLineParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dpToPx(1f));
llHorLineParams.gravity = Gravity.BOTTOM;
horizontalLine.setLayoutParams(llHorLineParams);
horizontalLine.setBackgroundColor(app.getResources().getColor(light ? R.color.ctx_menu_info_divider_light : R.color.ctx_menu_info_divider_dark));
((LinearLayout) view).addView(horizontalLine);
rowBuilt();
}
@Override
public void build(View view) {
super.build(view);
for (MenuBuilder.PlainMenuItem item : plainMenuItems) {
buildRow(view, item.getIconId(), item.getText(), 0);
}
}
}

View file

@ -0,0 +1,84 @@
package net.osmand.plus.mapcontextmenu.details;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.search.SearchHistoryFragment;
public class PointDescriptionMenuController extends MenuController {
private PointDescription pointDescription;
private LatLon latLon;
public PointDescriptionMenuController(OsmandApplication app, MapActivity mapActivity, final PointDescription pointDescription, LatLon latLon) {
super(new PointDescriptionMenuBuilder(app, pointDescription), mapActivity);
this.pointDescription = pointDescription;
this.latLon = latLon;
}
@Override
protected int getInitialMenuStatePortrait() {
return MenuState.HEADER_ONLY;
}
@Override
protected int getSupportedMenuStatesPortrait() {
return MenuState.HEADER_ONLY | MenuState.HALF_SCREEN | MenuState.FULL_SCREEN;
}
@Override
public boolean needTypeStr() {
String typeName = pointDescription.getTypeName();
return (typeName != null && !typeName.isEmpty());
}
@Override
public Drawable getLeftIcon() {
return getIcon(SearchHistoryFragment.getItemIcon(pointDescription));
}
@Override
public Drawable getSecondLineIcon() {
if (needTypeStr()) {
return getIcon(R.drawable.ic_small_group);
} else {
return null;
}
}
@Override
public String getNameStr() {
return pointDescription.getSimpleName(getMapActivity(), false);
}
@Override
public String getTypeStr() {
if (needTypeStr()) {
return pointDescription.getTypeName();
} else {
return "";
}
}
@Override
public boolean needStreetName() {
return !pointDescription.isAddress();
}
@Override
public void addPlainMenuItems(String typeStr, PointDescription pointDescription) {
if (pointDescription != null) {
addPlainMenuItem(R.drawable.map_my_location, PointDescription.getLocationName(getMapActivity(),
latLon.getLatitude(), latLon.getLongitude(), true).replaceAll("\n", ""));
}
}
@Override
public void saveEntityState(Bundle bundle, String key) {
}
}

View file

@ -369,6 +369,10 @@ public class MapControlsLayer extends OsmandMapLayer {
} }
} }
public void showRouteInfoControlDialog() {
mapRouteInfoControlDialog.showHideDialog();
}
public void showDialog() { public void showDialog() {
mapRouteInfoControlDialog.setShowDialog(); mapRouteInfoControlDialog.setShowDialog();
} }