commit
bd45d6f88c
20 changed files with 195 additions and 97 deletions
|
@ -8,7 +8,8 @@
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1">
|
||||||
|
|
||||||
<ScrollView
|
<ScrollView
|
||||||
android:id="@+id/scroll_view"
|
android:id="@+id/scroll_view"
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:focusable="true"
|
||||||
|
android:focusableInTouchMode="true"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
|
|
@ -3988,4 +3988,6 @@
|
||||||
<string name="select_picture">تحديد صورة</string>
|
<string name="select_picture">تحديد صورة</string>
|
||||||
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
|
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
|
||||||
<string name="lang_de_casual">الألمانية (تقليدية)</string>
|
<string name="lang_de_casual">الألمانية (تقليدية)</string>
|
||||||
|
<string name="elevation_data">يمكنك استخدام بيانات الارتفاع للنظر في الصعود / الهبوط لرحلتك</string>
|
||||||
|
<string name="app_mode_light_aircraft">طائرة</string>
|
||||||
</resources>
|
</resources>
|
|
@ -3861,4 +3861,6 @@
|
||||||
<string name="select_items_for_import">Vælg emner, der skal importeres.</string>
|
<string name="select_items_for_import">Vælg emner, der skal importeres.</string>
|
||||||
<string name="use_dev_url_descr">Skift til dev.openstreetmap.org i stedet for openstreetmap.org for at teste overførelse af OSM-note / IP / GPX.</string>
|
<string name="use_dev_url_descr">Skift til dev.openstreetmap.org i stedet for openstreetmap.org for at teste overførelse af OSM-note / IP / GPX.</string>
|
||||||
<string name="use_dev_url">Brug dev.openstreetmap.org</string>
|
<string name="use_dev_url">Brug dev.openstreetmap.org</string>
|
||||||
|
<string name="cannot_upload_image">Kan ikke overføre billedet, prøv igen senere</string>
|
||||||
|
<string name="select_picture">Vælg billede</string>
|
||||||
</resources>
|
</resources>
|
|
@ -4004,4 +4004,6 @@
|
||||||
<string name="cannot_upload_image">Bild kann nicht hochgeladen werden, bitte versuchen Sie es später erneut</string>
|
<string name="cannot_upload_image">Bild kann nicht hochgeladen werden, bitte versuchen Sie es später erneut</string>
|
||||||
<string name="select_picture">Bild auswählen</string>
|
<string name="select_picture">Bild auswählen</string>
|
||||||
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
|
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
|
||||||
|
<string name="elevation_data">Sie können Höhendaten für die Berücksichtigung von Aufstieg / Abstieg auf Ihrer Strecke verwenden</string>
|
||||||
|
<string name="app_mode_light_aircraft">Kleinflugzeug</string>
|
||||||
</resources>
|
</resources>
|
|
@ -3992,4 +3992,6 @@
|
||||||
<string name="select_picture">Kép kijelölése</string>
|
<string name="select_picture">Kép kijelölése</string>
|
||||||
<string name="lang_de_casual">német (tegeződő)</string>
|
<string name="lang_de_casual">német (tegeződő)</string>
|
||||||
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
|
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
|
||||||
|
<string name="elevation_data">A magassági adatokat az utazás során előforduló emelkedés/lejtés megfontolásához használhatja</string>
|
||||||
|
<string name="app_mode_light_aircraft">Könnyű légi jármű</string>
|
||||||
</resources>
|
</resources>
|
|
@ -3342,7 +3342,7 @@
|
||||||
<string name="tts_initialization_error">Impossibile avviare il motore dal-testo-alla-voce.</string>
|
<string name="tts_initialization_error">Impossibile avviare il motore dal-testo-alla-voce.</string>
|
||||||
<string name="simulate_your_location_gpx_descr">Simula la mia posizione utilizzando una traccia GPX registrata.</string>
|
<string name="simulate_your_location_gpx_descr">Simula la mia posizione utilizzando una traccia GPX registrata.</string>
|
||||||
<string name="default_speed_dialog_msg">Utilizzata per stimare l\'orario d\'arrivo per le strade di tipo sconosciute e come limite di velocità per tutte le strade (può influenzare il calcolo del percorso)</string>
|
<string name="default_speed_dialog_msg">Utilizzata per stimare l\'orario d\'arrivo per le strade di tipo sconosciute e come limite di velocità per tutte le strade (può influenzare il calcolo del percorso)</string>
|
||||||
<string name="export_profile">Esporta il profilo</string>
|
<string name="export_profile">Esporta profilo</string>
|
||||||
<string name="exported_osmand_profile">Profilo OsmAnd: %1$s</string>
|
<string name="exported_osmand_profile">Profilo OsmAnd: %1$s</string>
|
||||||
<string name="overwrite_profile_q">Il profilo \'%1$s\' c\'è già. Sovrascriverlo\?</string>
|
<string name="overwrite_profile_q">Il profilo \'%1$s\' c\'è già. Sovrascriverlo\?</string>
|
||||||
<string name="export_profile_failed">Esportazione del profilo non riuscita.</string>
|
<string name="export_profile_failed">Esportazione del profilo non riuscita.</string>
|
||||||
|
@ -3389,7 +3389,7 @@
|
||||||
<string name="select_color">Seleziona il colore</string>
|
<string name="select_color">Seleziona il colore</string>
|
||||||
<string name="edit_profiles_descr">Non puoi cancellare i profili preimpostati di OsmAnd, ma puoi disabilitarli nello schermo precedente o spostarli in basso.</string>
|
<string name="edit_profiles_descr">Non puoi cancellare i profili preimpostati di OsmAnd, ma puoi disabilitarli nello schermo precedente o spostarli in basso.</string>
|
||||||
<string name="edit_profiles">Modifica il profilo</string>
|
<string name="edit_profiles">Modifica il profilo</string>
|
||||||
<string name="select_nav_profile_dialog_message">Il tipo di navigazione influenza le regole di calcolo dei percorsi.</string>
|
<string name="select_nav_profile_dialog_message">Il \'Tipo di navigazione\' determina il modo in cui vengono calcolati i percorsi.</string>
|
||||||
<string name="profile_appearance">Aspetto del profilo</string>
|
<string name="profile_appearance">Aspetto del profilo</string>
|
||||||
<string name="choose_icon_color_name">Scegli l\'icona, il colore e il nome</string>
|
<string name="choose_icon_color_name">Scegli l\'icona, il colore e il nome</string>
|
||||||
<string name="reorder_profiles">Modifica la lista dei profili</string>
|
<string name="reorder_profiles">Modifica la lista dei profili</string>
|
||||||
|
@ -3633,7 +3633,7 @@
|
||||||
<string name="legend_item_description">La guida ai simboli della mappa.</string>
|
<string name="legend_item_description">La guida ai simboli della mappa.</string>
|
||||||
<string name="navigation_profiles_item">Profili di navigazione</string>
|
<string name="navigation_profiles_item">Profili di navigazione</string>
|
||||||
<string name="unsupported_type_error">Tipo non supportato</string>
|
<string name="unsupported_type_error">Tipo non supportato</string>
|
||||||
<string name="gpx_parse_error">Il GPX OsmAnd non è ben formattato, per favore contatta il supporto per ulteriori informazioni.</string>
|
<string name="gpx_parse_error">OsmAnd GPX non è ben formato, contatta il team di supporto per approfondire.</string>
|
||||||
<string name="shared_string_always">Sempre</string>
|
<string name="shared_string_always">Sempre</string>
|
||||||
<string name="screen_control">Controllo dello schermo</string>
|
<string name="screen_control">Controllo dello schermo</string>
|
||||||
<string name="system_screen_timeout_descr">Spegni lo schermo dopo il tempo di spegnimento di sistema dello schermo.</string>
|
<string name="system_screen_timeout_descr">Spegni lo schermo dopo il tempo di spegnimento di sistema dello schermo.</string>
|
||||||
|
@ -3977,7 +3977,7 @@
|
||||||
<string name="enter_text_separated">Immetti le etichette separate dalla virgola.</string>
|
<string name="enter_text_separated">Immetti le etichette separate dalla virgola.</string>
|
||||||
<string name="gpx_upload_public_visibility_descr">\"Pubblico\" significa che la traccia è visualizzata pubblicamente nelle tue tracce GPS, nelle liste pubbliche di tracce GPS con le informazioni temporali in forma grezza. I dati forniti attraverso le API non conducono alla tua pagina delle tracce. Le informazioni temporali dei punti traccia non sono disponibili attraverso le API GPS pubbliche, e i punti della traccia non sono ordinati cronologicamente.</string>
|
<string name="gpx_upload_public_visibility_descr">\"Pubblico\" significa che la traccia è visualizzata pubblicamente nelle tue tracce GPS, nelle liste pubbliche di tracce GPS con le informazioni temporali in forma grezza. I dati forniti attraverso le API non conducono alla tua pagina delle tracce. Le informazioni temporali dei punti traccia non sono disponibili attraverso le API GPS pubbliche, e i punti della traccia non sono ordinati cronologicamente.</string>
|
||||||
<string name="gpx_upload_private_visibility_descr">\"Privato\" significa che la traccia non è visualizzabile in alcuna lista pubblica ma i suoi punti, in ordine non cronologico, sono disponibili attraverso le API GPS senza le informazioni temporali.</string>
|
<string name="gpx_upload_private_visibility_descr">\"Privato\" significa che la traccia non è visualizzabile in alcuna lista pubblica ma i suoi punti, in ordine non cronologico, sono disponibili attraverso le API GPS senza le informazioni temporali.</string>
|
||||||
<string name="gpx_upload_identifiable_visibility_descr">\"Identificabile\" significa che la traccia è visualizzabile nelle Mie tracce GPS e nelle liste pubbliche, es. gli altri utenti potranno scaricare la traccia grezza e associarla con il tuo nome utente. I punti della traccia, con le loro informazioni temporali, saranno riconducibili, attraverso le API GPS, alla tua traccia originale.</string>
|
<string name="gpx_upload_identifiable_visibility_descr">\"Identificabile\" significa che la traccia è visualizzabile nelle Mie tracce GPS e nelle liste pubbliche, ad es. gli altri utenti potranno scaricare la traccia grezza e associarla con il tuo nome utente. I punti della traccia, con le loro informazioni temporali, saranno riconducibili, attraverso le API GPS, alla tua traccia originale.</string>
|
||||||
<string name="gpx_upload_trackable_visibility_descr">\"Tracciabile\" significa che la traccia non è visualizzabile in alcuna lista pubblica, ma solo i suoi punti, processati, con le informazioni temporali (che non possono essere direttamente associati a te) attraverso le API GPS pubbliche.</string>
|
<string name="gpx_upload_trackable_visibility_descr">\"Tracciabile\" significa che la traccia non è visualizzabile in alcuna lista pubblica, ma solo i suoi punti, processati, con le informazioni temporali (che non possono essere direttamente associati a te) attraverso le API GPS pubbliche.</string>
|
||||||
<string name="add_to_mapillary">Aggiungi a Mapillary</string>
|
<string name="add_to_mapillary">Aggiungi a Mapillary</string>
|
||||||
<string name="add_to_opr">Aggiungi a OpenPlaceReviews</string>
|
<string name="add_to_opr">Aggiungi a OpenPlaceReviews</string>
|
||||||
|
|
|
@ -3996,4 +3996,6 @@
|
||||||
<string name="select_picture">Selecione a foto</string>
|
<string name="select_picture">Selecione a foto</string>
|
||||||
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
|
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
|
||||||
<string name="lang_de_casual">Alemão (casual)</string>
|
<string name="lang_de_casual">Alemão (casual)</string>
|
||||||
|
<string name="elevation_data">Você pode usar os dados de elevação para consideração de subida / descida para sua viagem</string>
|
||||||
|
<string name="app_mode_light_aircraft">Avião leve</string>
|
||||||
</resources>
|
</resources>
|
|
@ -4002,4 +4002,7 @@
|
||||||
<string name="select_picture">Selecione a imagem</string>
|
<string name="select_picture">Selecione a imagem</string>
|
||||||
<string name="use_dev_url_descr">Mude para usar dev.openstreetmap.org ao invés de openstreetmap.org para testar enviar uma OSM Nota / POI / GPX.</string>
|
<string name="use_dev_url_descr">Mude para usar dev.openstreetmap.org ao invés de openstreetmap.org para testar enviar uma OSM Nota / POI / GPX.</string>
|
||||||
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
|
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
|
||||||
|
<string name="lang_de_casual">Alemão (casual)</string>
|
||||||
|
<string name="elevation_data">Pode usar os dados de elevação para considerar a ascensão / descida na sua viagem</string>
|
||||||
|
<string name="app_mode_light_aircraft">Aeronaves ligeiras</string>
|
||||||
</resources>
|
</resources>
|
|
@ -3954,7 +3954,7 @@
|
||||||
<string name="login_open_street_map_org">Вход в OpenStreetMap.org</string>
|
<string name="login_open_street_map_org">Вход в OpenStreetMap.org</string>
|
||||||
<string name="sign_in_with_open_street_map">Войти через OpenStreetMap</string>
|
<string name="sign_in_with_open_street_map">Войти через OpenStreetMap</string>
|
||||||
<string name="login_account">Аккаунт</string>
|
<string name="login_account">Аккаунт</string>
|
||||||
<string name="user_login">Пользователь</string>
|
<string name="user_login">Авторизоваться</string>
|
||||||
<string name="manage_subscription">Управление подпиской</string>
|
<string name="manage_subscription">Управление подпиской</string>
|
||||||
<string name="subscription_expired_title">Срок действия подписки OsmAnd Live истёк</string>
|
<string name="subscription_expired_title">Срок действия подписки OsmAnd Live истёк</string>
|
||||||
<string name="subscription_paused_title">Подписка OsmAnd Live была приостановлена</string>
|
<string name="subscription_paused_title">Подписка OsmAnd Live была приостановлена</string>
|
||||||
|
|
|
@ -3132,4 +3132,7 @@
|
||||||
<string name="poi_fire_hydrant_style_water_source_pond">Gölet</string>
|
<string name="poi_fire_hydrant_style_water_source_pond">Gölet</string>
|
||||||
<string name="poi_consulate_filter">Konsolosluk</string>
|
<string name="poi_consulate_filter">Konsolosluk</string>
|
||||||
<string name="poi_embassy_filter">Büyük elçilik</string>
|
<string name="poi_embassy_filter">Büyük elçilik</string>
|
||||||
|
<string name="poi_diplomatic_services_citizen_services_filter">Vatandaş hizmetleri</string>
|
||||||
|
<string name="poi_diplomatic_services_immigrant_visas_filter">Göçmen vizeleri</string>
|
||||||
|
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Göçmen olmayan vizeleri</string>
|
||||||
</resources>
|
</resources>
|
|
@ -3543,7 +3543,7 @@
|
||||||
<string name="shared_string_circle">Daire</string>
|
<string name="shared_string_circle">Daire</string>
|
||||||
<string name="shared_string_octagon">Sekizgen</string>
|
<string name="shared_string_octagon">Sekizgen</string>
|
||||||
<string name="shared_string_square">Kare</string>
|
<string name="shared_string_square">Kare</string>
|
||||||
<string name="shared_string_min">Min</string>
|
<string name="shared_string_min">Asgari</string>
|
||||||
<string name="replace_point_descr">Başka bir noktayı bununla değiştirin.</string>
|
<string name="replace_point_descr">Başka bir noktayı bununla değiştirin.</string>
|
||||||
<string name="app_mode_ski_touring">Kayak turu</string>
|
<string name="app_mode_ski_touring">Kayak turu</string>
|
||||||
<string name="app_mode_ski_snowmobile">Kar arabası</string>
|
<string name="app_mode_ski_snowmobile">Kar arabası</string>
|
||||||
|
@ -3903,13 +3903,13 @@
|
||||||
<string name="icon_group_emergency">Acil</string>
|
<string name="icon_group_emergency">Acil</string>
|
||||||
<string name="icon_group_travel">Seyahat</string>
|
<string name="icon_group_travel">Seyahat</string>
|
||||||
<string name="message_you_need_add_two_points_to_show_graphs">En az iki nokta eklemelisiniz</string>
|
<string name="message_you_need_add_two_points_to_show_graphs">En az iki nokta eklemelisiniz</string>
|
||||||
<string name="login_open_street_map">OpenStreetMap için oturum aç</string>
|
<string name="login_open_street_map">OpenStreetMap\'te oturum aç</string>
|
||||||
<string name="login_open_street_map_org">OpenStreetMap.org için oturum aç</string>
|
<string name="login_open_street_map_org">OpenStreetMap.org\'da oturum aç</string>
|
||||||
<string name="open_street_map_login_mode">Yenilikleri veya değişiklikleri karşıya yüklemek için oturum açın,
|
<string name="open_street_map_login_mode">Yenilikleri veya değişiklikleri karşıya yüklemek için oturum açmanız gerekir.
|
||||||
\n
|
\n
|
||||||
\nOAuth ile oturum açabilir veya kullanıcı adı ve parolanızı kullanabilirsiniz.</string>
|
\nGüvenli OAuth yöntemini kullanarak oturum açabilir veya giriş bilgilerinizi ve parolanızı kullanabilirsiniz.</string>
|
||||||
<string name="use_login_password">Kullanıcı adı ve parola ile oturum aç</string>
|
<string name="use_login_password">Giriş bilgisi ve parola kullan</string>
|
||||||
<string name="user_login">Kullanıcı adı</string>
|
<string name="user_login">Giriş bilgisi</string>
|
||||||
<string name="login_account">Hesap</string>
|
<string name="login_account">Hesap</string>
|
||||||
<string name="manage_subscription">Aboneliği yönet</string>
|
<string name="manage_subscription">Aboneliği yönet</string>
|
||||||
<string name="subscription_payment_issue_title">Aboneliğinizle ilgili bir sorun var. Ödeme yönteminizi düzeltmek üzere Google Play abonelik ayarlarına gitmek için düğmeye tıklayın.</string>
|
<string name="subscription_payment_issue_title">Aboneliğinizle ilgili bir sorun var. Ödeme yönteminizi düzeltmek üzere Google Play abonelik ayarlarına gitmek için düğmeye tıklayın.</string>
|
||||||
|
@ -3926,11 +3926,11 @@
|
||||||
<string name="gpx_upload_trackable_visibility_descr">\"Takip edilebilir\", izlemenin herkese açık herhangi bir listede gösterilmediği, ancak (sizinle doğrudan ilişkilendirilemeyen) zaman damgaları olan işlenen izleme noktalarının herkese açık GPS API\'sinden indirmeler yoluyla göründüğü anlamına gelir.</string>
|
<string name="gpx_upload_trackable_visibility_descr">\"Takip edilebilir\", izlemenin herkese açık herhangi bir listede gösterilmediği, ancak (sizinle doğrudan ilişkilendirilemeyen) zaman damgaları olan işlenen izleme noktalarının herkese açık GPS API\'sinden indirmeler yoluyla göründüğü anlamına gelir.</string>
|
||||||
<string name="osm_edit_close_note">OSM Notunu Kapat</string>
|
<string name="osm_edit_close_note">OSM Notunu Kapat</string>
|
||||||
<string name="osm_edit_comment_note">OSM Notuna Yorum Yap</string>
|
<string name="osm_edit_comment_note">OSM Notuna Yorum Yap</string>
|
||||||
<string name="osm_login_descr">Güvenli OAuth yöntemini kullanarak oturum açın veya kullanıcı adınızı ve parolanızı kullanın.</string>
|
<string name="osm_login_descr">Güvenli OAuth yöntemini kullanarak oturum açabilir veya giriş bilgilerinizi ve parolanızı kullanabilirsiniz.</string>
|
||||||
<string name="shared_string_add_photo">Fotoğraf ekle</string>
|
<string name="shared_string_add_photo">Fotoğraf ekle</string>
|
||||||
<string name="register_on_openplacereviews">OpenPlaceReviews.org\'a
|
<string name="register_on_openplacereviews">OpenPlaceReviews.org\'a
|
||||||
\nkaydolun</string>
|
\nkaydolun</string>
|
||||||
<string name="register_on_openplacereviews_desc">Daha da fazla fotoğraf yüklemek için açık veri projesi web sitesi OpenPlaceReviews.org\'da oturum açın.</string>
|
<string name="register_on_openplacereviews_desc">Fotoğraflar açık veri projesi OpenPlaceReviews.org tarafından sağlanmaktadır. Fotoğraflarınızı yüklemek için web sitesine kaydolmanız gerekir.</string>
|
||||||
<string name="register_opr_create_new_account">Yeni hesap oluştur</string>
|
<string name="register_opr_create_new_account">Yeni hesap oluştur</string>
|
||||||
<string name="register_opr_have_account">Zaten bir hesabım var</string>
|
<string name="register_opr_have_account">Zaten bir hesabım var</string>
|
||||||
<string name="shared_string_search_history">Arama geçmişi</string>
|
<string name="shared_string_search_history">Arama geçmişi</string>
|
||||||
|
@ -3952,4 +3952,10 @@
|
||||||
<string name="select_items_for_import">İçe aktarılacak ögeleri seçin.</string>
|
<string name="select_items_for_import">İçe aktarılacak ögeleri seçin.</string>
|
||||||
<string name="use_dev_url_descr">OSM Notu/POI/GPX yüklemeyi test etmek için openstreetmap.org yerine dev.openstreetmap.org kullanmaya geçin.</string>
|
<string name="use_dev_url_descr">OSM Notu/POI/GPX yüklemeyi test etmek için openstreetmap.org yerine dev.openstreetmap.org kullanmaya geçin.</string>
|
||||||
<string name="use_dev_url">dev.openstreetmap.org\'u kullan</string>
|
<string name="use_dev_url">dev.openstreetmap.org\'u kullan</string>
|
||||||
|
<string name="lang_de_casual">Almanca (gündelik)</string>
|
||||||
|
<string name="cannot_upload_image">Resim yüklenemiyor, lütfen daha sonra tekrar deneyin</string>
|
||||||
|
<string name="select_picture">Resim seç</string>
|
||||||
|
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
|
||||||
|
<string name="elevation_data">Yolculuğunuzun Çıkış / İniş değerleri için Yükseklik verilerini kullanabilirsiniz</string>
|
||||||
|
<string name="app_mode_light_aircraft">Hafif uçak</string>
|
||||||
</resources>
|
</resources>
|
|
@ -187,18 +187,27 @@ public abstract class MenuBottomSheetDialogFragment extends BottomSheetDialogFra
|
||||||
|
|
||||||
// 8dp is the shadow height
|
// 8dp is the shadow height
|
||||||
boolean showTopShadow = screenHeight - statusBarHeight - mainView.getHeight() >= AndroidUtils.dpToPx(activity, 8);
|
boolean showTopShadow = screenHeight - statusBarHeight - mainView.getHeight() >= AndroidUtils.dpToPx(activity, 8);
|
||||||
if (AndroidUiHelper.isOrientationPortrait(activity)) {
|
drawTopShadow(showTopShadow);
|
||||||
AndroidUtils.setBackground(mainView, showTopShadow ? getPortraitBg(activity) : getColoredBg(activity));
|
|
||||||
if (!showTopShadow) {
|
|
||||||
mainView.setPadding(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
AndroidUtils.setBackground(mainView, showTopShadow ? getLandscapeTopsidesBg(activity) : getLandscapeSidesBg(activity));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void drawTopShadow(boolean showTopShadow) {
|
||||||
|
final Activity activity = getActivity();
|
||||||
|
View mainView = getView();
|
||||||
|
if (activity == null || mainView == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (AndroidUiHelper.isOrientationPortrait(activity)) {
|
||||||
|
AndroidUtils.setBackground(mainView, showTopShadow ? getPortraitBg(activity) : getColoredBg(activity));
|
||||||
|
if (!showTopShadow) {
|
||||||
|
mainView.setPadding(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
AndroidUtils.setBackground(mainView, showTopShadow ? getLandscapeTopsidesBg(activity) : getLandscapeSidesBg(activity));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private int getContentHeight(int availableScreenHeight) {
|
private int getContentHeight(int availableScreenHeight) {
|
||||||
int customHeight = getCustomHeight();
|
int customHeight = getCustomHeight();
|
||||||
int buttonsHeight;
|
int buttonsHeight;
|
||||||
|
|
|
@ -281,24 +281,23 @@ public class MeasurementEditingContext {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isApproximationNeeded() {
|
public boolean isApproximationNeeded() {
|
||||||
boolean hasDefaultPoints = false;
|
boolean hasDefaultPointsOnly = false;
|
||||||
boolean newData = isNewData();
|
boolean newData = isNewData();
|
||||||
if (!newData) {
|
if (!newData) {
|
||||||
List<WptPt> points = getPoints();
|
List<WptPt> points = getPoints();
|
||||||
WptPt prevPoint = null;
|
hasDefaultPointsOnly = true;
|
||||||
for (WptPt point : points) {
|
for (WptPt point : points) {
|
||||||
if (!point.hasProfile() && (prevPoint == null || !prevPoint.hasProfile())) {
|
if (point.hasProfile()) {
|
||||||
hasDefaultPoints = true;
|
hasDefaultPointsOnly = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
prevPoint = point;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return !newData && hasDefaultPoints && getPoints().size() > 2;
|
return !newData && hasDefaultPointsOnly && getPoints().size() > 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSelectionNeedApproximation() {
|
public boolean isSelectionNeedApproximation() {
|
||||||
boolean hasDefaultPoints = false;
|
boolean hasDefaultPointsOnly = false;
|
||||||
boolean newData = isNewData();
|
boolean newData = isNewData();
|
||||||
if (!newData && selectedPointPosition != -1) {
|
if (!newData && selectedPointPosition != -1) {
|
||||||
WptPt selectedPoint = getPoints().get(selectedPointPosition);
|
WptPt selectedPoint = getPoints().get(selectedPointPosition);
|
||||||
|
@ -309,18 +308,17 @@ public class MeasurementEditingContext {
|
||||||
points = segment.points;
|
points = segment.points;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
WptPt prevPoint = null;
|
if (!Algorithms.isEmpty(points)) {
|
||||||
if (points != null) {
|
hasDefaultPointsOnly = true;
|
||||||
for (WptPt point : points) {
|
for (WptPt point : points) {
|
||||||
if (!point.hasProfile() && (prevPoint == null || !prevPoint.hasProfile())) {
|
if (point.hasProfile()) {
|
||||||
hasDefaultPoints = true;
|
hasDefaultPointsOnly = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
prevPoint = point;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return !newData && hasDefaultPoints && getPoints().size() > 2;
|
return !newData && hasDefaultPointsOnly && getPoints().size() > 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearSnappedToRoadPoints() {
|
public void clearSnappedToRoadPoints() {
|
||||||
|
@ -625,7 +623,7 @@ public class MeasurementEditingContext {
|
||||||
WptPt startPoint = points.get(i);
|
WptPt startPoint = points.get(i);
|
||||||
WptPt endPoint = points.get(i + 1);
|
WptPt endPoint = points.get(i + 1);
|
||||||
Pair<WptPt, WptPt> pair = new Pair<>(startPoint, endPoint);
|
Pair<WptPt, WptPt> pair = new Pair<>(startPoint, endPoint);
|
||||||
if (roadSegmentData.get(pair) == null && startPoint.hasProfile()) {
|
if (roadSegmentData.get(pair) == null && (startPoint.hasProfile() || hasRoute())) {
|
||||||
res.add(pair);
|
res.add(pair);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package net.osmand.plus.osmedit;
|
package net.osmand.plus.osmedit;
|
||||||
|
|
||||||
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.osm.edit.Entity;
|
import net.osmand.osm.edit.Entity;
|
||||||
import net.osmand.osm.edit.OSMSettings.OSMTagKey;
|
import net.osmand.osm.edit.OSMSettings.OSMTagKey;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
@ -97,4 +98,43 @@ public class OpenstreetmapPoint extends OsmPoint {
|
||||||
.append(" (").append(this.getLatitude()).append(", ").append(this.getLongitude())
|
.append(" (").append(this.getLatitude()).append(", ").append(this.getLongitude())
|
||||||
.append(")]").toString();
|
.append(")]").toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object other) {
|
||||||
|
if (other == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(other instanceof OpenstreetmapPoint)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
OpenstreetmapPoint otherPoint = (OpenstreetmapPoint) other;
|
||||||
|
boolean res = this.getName() != null && this.getName().equals(otherPoint.getName());
|
||||||
|
LatLon thisLatLon = new LatLon(this.getLatitude(), this.getLongitude());
|
||||||
|
LatLon otherLatLon = new LatLon(otherPoint.getLatitude(), otherPoint.getLongitude());
|
||||||
|
res = res || thisLatLon.equals(otherLatLon);
|
||||||
|
if (getType() != null)
|
||||||
|
res = res || getType().equals(otherPoint.getType());
|
||||||
|
if (getSubtype() != null)
|
||||||
|
res = res || getSubtype().equals(otherPoint.getSubtype());
|
||||||
|
if (getTagsString() != null)
|
||||||
|
res = res || getTagsString().equals(otherPoint.getTagsString());
|
||||||
|
res = res || getId() == otherPoint.getId();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 0;
|
||||||
|
int temp;
|
||||||
|
temp = (int) Math.floor(getLatitude() * 10000);
|
||||||
|
result = prime * result + temp;
|
||||||
|
temp = (int) Math.floor(getLongitude() * 10000);
|
||||||
|
result = prime * result + temp;
|
||||||
|
result = prime * result + (getType() != null ? getType().hashCode() : 0);
|
||||||
|
result = prime * result + (getSubtype() != null ? getSubtype().hashCode() : 0);
|
||||||
|
result = prime * result + (getTagsString() != null ? getTagsString().hashCode() : 0);
|
||||||
|
result = prime * result + Long.valueOf(getId()).hashCode();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package net.osmand.plus.osmedit;
|
package net.osmand.plus.osmedit;
|
||||||
|
|
||||||
|
import net.osmand.data.LatLon;
|
||||||
|
|
||||||
public class OsmNotesPoint extends OsmPoint {
|
public class OsmNotesPoint extends OsmPoint {
|
||||||
private static final long serialVersionUID = 729654300829771468L;
|
private static final long serialVersionUID = 729654300829771468L;
|
||||||
|
|
||||||
|
@ -68,4 +70,29 @@ public class OsmNotesPoint extends OsmPoint {
|
||||||
.append(" (").append(this.getLatitude()).append(", ").append(this.getLongitude())
|
.append(" (").append(this.getLatitude()).append(", ").append(this.getLongitude())
|
||||||
.append(")]").toString();
|
.append(")]").toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (!(o instanceof OsmNotesPoint)) return false;
|
||||||
|
OsmNotesPoint that = (OsmNotesPoint) o;
|
||||||
|
LatLon thisPos = new LatLon(latitude, longitude);
|
||||||
|
LatLon thatPos = new LatLon(that.latitude, that.longitude);
|
||||||
|
boolean res = thisPos.equals(thatPos);
|
||||||
|
res = res || text != null && text.equals(that.text);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 0;
|
||||||
|
int temp;
|
||||||
|
temp = (int) Math.floor(latitude * 10000);
|
||||||
|
result = prime * result + temp;
|
||||||
|
temp = (int) Math.floor(longitude * 10000);
|
||||||
|
result = prime * result + temp;
|
||||||
|
result = prime * result + (text != null ? text.hashCode() : 0);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,12 +2,10 @@ package net.osmand.plus.osmedit.dialogs;
|
||||||
|
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.view.ViewTreeObserver;
|
import android.view.ViewTreeObserver;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ScrollView;
|
import android.widget.ScrollView;
|
||||||
|
@ -57,6 +55,9 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment {
|
||||||
private TextInputEditText tagsField;
|
private TextInputEditText tagsField;
|
||||||
private TextInputEditText messageField;
|
private TextInputEditText messageField;
|
||||||
private int contentHeightPrevious = 0;
|
private int contentHeightPrevious = 0;
|
||||||
|
private int buttonsHeight;
|
||||||
|
private int shadowHeight;
|
||||||
|
private ScrollView scrollView;
|
||||||
|
|
||||||
public void setGpxInfos(GpxInfo[] gpxInfos) {
|
public void setGpxInfos(GpxInfo[] gpxInfos) {
|
||||||
this.gpxInfos = gpxInfos;
|
this.gpxInfos = gpxInfos;
|
||||||
|
@ -136,26 +137,18 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment {
|
||||||
@Override
|
@Override
|
||||||
public void onGlobalLayout() {
|
public void onGlobalLayout() {
|
||||||
Rect visibleDisplayFrame = new Rect();
|
Rect visibleDisplayFrame = new Rect();
|
||||||
int buttonsHeight = getResources().getDimensionPixelSize(R.dimen.dialog_button_ex_max_width);
|
buttonsHeight = getResources().getDimensionPixelSize(R.dimen.dialog_button_ex_max_width);
|
||||||
int shadowHeight = getResources().getDimensionPixelSize(R.dimen.bottom_sheet_top_shadow_height);
|
shadowHeight = getResources().getDimensionPixelSize(R.dimen.bottom_sheet_top_shadow_height);
|
||||||
final ScrollView scrollView = getView().findViewById(R.id.scroll_view);
|
scrollView = getView().findViewById(R.id.scroll_view);
|
||||||
scrollView.getWindowVisibleDisplayFrame(visibleDisplayFrame);
|
scrollView.getWindowVisibleDisplayFrame(visibleDisplayFrame);
|
||||||
int height = scrollView.getHeight();
|
int viewHeight = scrollView.getHeight();
|
||||||
int contentHeight = visibleDisplayFrame.bottom - visibleDisplayFrame.top - buttonsHeight;
|
int contentHeight = visibleDisplayFrame.bottom - visibleDisplayFrame.top - buttonsHeight;
|
||||||
if (contentHeightPrevious != contentHeight || contentHeight < height) {
|
if (contentHeightPrevious != contentHeight) {
|
||||||
if (scrollView.getHeight() + shadowHeight > contentHeight) {
|
boolean showTopShadow;
|
||||||
scrollView.getLayoutParams().height = contentHeight;
|
showTopShadow = viewHeight + shadowHeight < contentHeight;
|
||||||
} else {
|
|
||||||
scrollView.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
|
|
||||||
}
|
|
||||||
scrollView.requestLayout();
|
scrollView.requestLayout();
|
||||||
int delay = Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP ? 300 : 1000;
|
|
||||||
scrollView.postDelayed(new Runnable() {
|
|
||||||
public void run() {
|
|
||||||
scrollView.scrollTo(0, scrollView.getHeight());
|
|
||||||
}
|
|
||||||
}, delay);
|
|
||||||
contentHeightPrevious = contentHeight;
|
contentHeightPrevious = contentHeight;
|
||||||
|
drawTopShadow(showTopShadow);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -74,22 +74,25 @@ public class OsmEditsSettingsItem extends CollectionSettingsItem<OpenstreetmapPo
|
||||||
if (!newItems.isEmpty() || !duplicateItems.isEmpty()) {
|
if (!newItems.isEmpty() || !duplicateItems.isEmpty()) {
|
||||||
appliedItems = new ArrayList<>(newItems);
|
appliedItems = new ArrayList<>(newItems);
|
||||||
|
|
||||||
for (OpenstreetmapPoint duplicate : duplicateItems) {
|
OsmEditingPlugin osmEditingPlugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
|
||||||
appliedItems.add(shouldReplace ? duplicate : renameItem(duplicate));
|
if (osmEditingPlugin != null) {
|
||||||
}
|
OpenstreetmapsDbHelper db = osmEditingPlugin.getDBPOI();
|
||||||
}
|
for (OpenstreetmapPoint duplicate : duplicateItems) {
|
||||||
OsmEditingPlugin osmEditingPlugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
|
db.deletePOI(duplicate);
|
||||||
if (osmEditingPlugin != null) {
|
db.addOpenstreetmap(duplicate);
|
||||||
OpenstreetmapsDbHelper db = osmEditingPlugin.getDBPOI();
|
}
|
||||||
for (OpenstreetmapPoint point : appliedItems) {
|
for (OpenstreetmapPoint point : appliedItems) {
|
||||||
db.addOpenstreetmap(point);
|
db.addOpenstreetmap(point);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isDuplicate(@NonNull OpenstreetmapPoint item) {
|
public boolean isDuplicate(@NonNull OpenstreetmapPoint item) {
|
||||||
return false;
|
return existingItems.contains(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
@ -115,6 +118,11 @@ public class OsmEditsSettingsItem extends CollectionSettingsItem<OpenstreetmapPo
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldShowDuplicates() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void readItemsFromJson(@NonNull JSONObject json) throws IllegalArgumentException {
|
void readItemsFromJson(@NonNull JSONObject json) throws IllegalArgumentException {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -22,7 +22,6 @@ import java.util.List;
|
||||||
|
|
||||||
public class OsmNotesSettingsItem extends CollectionSettingsItem<OsmNotesPoint> {
|
public class OsmNotesSettingsItem extends CollectionSettingsItem<OsmNotesPoint> {
|
||||||
|
|
||||||
public static final String ID_KEY = "id";
|
|
||||||
public static final String TEXT_KEY = "text";
|
public static final String TEXT_KEY = "text";
|
||||||
public static final String LAT_KEY = "lat";
|
public static final String LAT_KEY = "lat";
|
||||||
public static final String LON_KEY = "lon";
|
public static final String LON_KEY = "lon";
|
||||||
|
@ -63,12 +62,20 @@ public class OsmNotesSettingsItem extends CollectionSettingsItem<OsmNotesPoint>
|
||||||
if (!newItems.isEmpty() || !duplicateItems.isEmpty()) {
|
if (!newItems.isEmpty() || !duplicateItems.isEmpty()) {
|
||||||
appliedItems = new ArrayList<>(newItems);
|
appliedItems = new ArrayList<>(newItems);
|
||||||
|
|
||||||
for (OsmNotesPoint duplicate : duplicateItems) {
|
|
||||||
appliedItems.add(shouldReplace ? duplicate : renameItem(duplicate));
|
|
||||||
}
|
|
||||||
OsmEditingPlugin osmEditingPlugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
|
OsmEditingPlugin osmEditingPlugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
|
||||||
if (osmEditingPlugin != null) {
|
if (osmEditingPlugin != null) {
|
||||||
OsmBugsDbHelper db = osmEditingPlugin.getDBBug();
|
OsmBugsDbHelper db = osmEditingPlugin.getDBBug();
|
||||||
|
for (OsmNotesPoint duplicate : duplicateItems) {
|
||||||
|
int ind = existingItems.indexOf(duplicate);
|
||||||
|
if (ind != -1 && ind < existingItems.size()) {
|
||||||
|
OsmNotesPoint original = existingItems.get(ind);
|
||||||
|
if (original != null) {
|
||||||
|
db.deleteAllBugModifications(original);
|
||||||
|
}
|
||||||
|
db.addOsmbugs(duplicate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (OsmNotesPoint point : appliedItems) {
|
for (OsmNotesPoint point : appliedItems) {
|
||||||
db.addOsmbugs(point);
|
db.addOsmbugs(point);
|
||||||
}
|
}
|
||||||
|
@ -78,7 +85,7 @@ public class OsmNotesSettingsItem extends CollectionSettingsItem<OsmNotesPoint>
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isDuplicate(@NonNull OsmNotesPoint item) {
|
public boolean isDuplicate(@NonNull OsmNotesPoint item) {
|
||||||
return false;
|
return existingItems.contains(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
@ -104,16 +111,23 @@ public class OsmNotesSettingsItem extends CollectionSettingsItem<OsmNotesPoint>
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldShowDuplicates() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void readItemsFromJson(@NonNull JSONObject json) throws IllegalArgumentException {
|
void readItemsFromJson(@NonNull JSONObject json) throws IllegalArgumentException {
|
||||||
try {
|
try {
|
||||||
if (!json.has("items")) {
|
if (!json.has("items")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
OsmEditingPlugin osmEditingPlugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
|
||||||
|
long minId = osmEditingPlugin != null ? osmEditingPlugin.getDBBug().getMinID() - 1 : -2;
|
||||||
|
int idOffset = 0;
|
||||||
JSONArray jsonArray = json.getJSONArray("items");
|
JSONArray jsonArray = json.getJSONArray("items");
|
||||||
for (int i = 0; i < jsonArray.length(); i++) {
|
for (int i = 0; i < jsonArray.length(); i++) {
|
||||||
JSONObject object = jsonArray.getJSONObject(i);
|
JSONObject object = jsonArray.getJSONObject(i);
|
||||||
long id = object.getLong(ID_KEY);
|
|
||||||
String text = object.optString(TEXT_KEY);
|
String text = object.optString(TEXT_KEY);
|
||||||
double lat = object.getDouble(LAT_KEY);
|
double lat = object.getDouble(LAT_KEY);
|
||||||
double lon = object.getDouble(LON_KEY);
|
double lon = object.getDouble(LON_KEY);
|
||||||
|
@ -121,13 +135,14 @@ public class OsmNotesSettingsItem extends CollectionSettingsItem<OsmNotesPoint>
|
||||||
author = author.isEmpty() ? null : author;
|
author = author.isEmpty() ? null : author;
|
||||||
String action = object.getString(ACTION_KEY);
|
String action = object.getString(ACTION_KEY);
|
||||||
OsmNotesPoint point = new OsmNotesPoint();
|
OsmNotesPoint point = new OsmNotesPoint();
|
||||||
point.setId(id);
|
point.setId(Math.min(-2, minId - idOffset));
|
||||||
point.setText(text);
|
point.setText(text);
|
||||||
point.setLatitude(lat);
|
point.setLatitude(lat);
|
||||||
point.setLongitude(lon);
|
point.setLongitude(lon);
|
||||||
point.setAuthor(author);
|
point.setAuthor(author);
|
||||||
point.setAction(action);
|
point.setAction(action);
|
||||||
items.add(point);
|
items.add(point);
|
||||||
|
idOffset++;
|
||||||
}
|
}
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
warnings.add(app.getString(R.string.settings_item_read_error, String.valueOf(getType())));
|
warnings.add(app.getString(R.string.settings_item_read_error, String.valueOf(getType())));
|
||||||
|
@ -142,7 +157,6 @@ public class OsmNotesSettingsItem extends CollectionSettingsItem<OsmNotesPoint>
|
||||||
try {
|
try {
|
||||||
for (OsmNotesPoint point : items) {
|
for (OsmNotesPoint point : items) {
|
||||||
JSONObject jsonObject = new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
jsonObject.put(ID_KEY, point.getId());
|
|
||||||
jsonObject.put(TEXT_KEY, point.getText());
|
jsonObject.put(TEXT_KEY, point.getText());
|
||||||
jsonObject.put(LAT_KEY, point.getLatitude());
|
jsonObject.put(LAT_KEY, point.getLatitude());
|
||||||
jsonObject.put(LON_KEY, point.getLongitude());
|
jsonObject.put(LON_KEY, point.getLongitude());
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package net.osmand.plus.settings.bottomsheets;
|
package net.osmand.plus.settings.bottomsheets;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Activity;
|
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
@ -23,13 +22,11 @@ import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import net.osmand.AndroidUtils;
|
|
||||||
import net.osmand.PlatformUtil;
|
import net.osmand.PlatformUtil;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.UiUtilities;
|
import net.osmand.plus.UiUtilities;
|
||||||
import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem;
|
import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem;
|
||||||
import net.osmand.plus.helpers.AndroidUiHelper;
|
|
||||||
import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter;
|
import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter;
|
||||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||||
import net.osmand.plus.settings.fragments.ApplyQueryType;
|
import net.osmand.plus.settings.fragments.ApplyQueryType;
|
||||||
|
@ -52,6 +49,9 @@ public class VehicleParametersBottomSheet extends BasePreferenceBottomSheet {
|
||||||
private float currentValue;
|
private float currentValue;
|
||||||
private int contentHeightPrevious = 0;
|
private int contentHeightPrevious = 0;
|
||||||
private EditText text;
|
private EditText text;
|
||||||
|
private int buttonsHeight;
|
||||||
|
private int shadowHeight;
|
||||||
|
private ScrollView scrollView;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createMenuItems(Bundle savedInstanceState) {
|
public void createMenuItems(Bundle savedInstanceState) {
|
||||||
|
@ -164,13 +164,13 @@ public class VehicleParametersBottomSheet extends BasePreferenceBottomSheet {
|
||||||
@Override
|
@Override
|
||||||
public void onGlobalLayout() {
|
public void onGlobalLayout() {
|
||||||
Rect visibleDisplayFrame = new Rect();
|
Rect visibleDisplayFrame = new Rect();
|
||||||
int buttonsHeight = getResources().getDimensionPixelSize(R.dimen.dialog_button_ex_height);
|
buttonsHeight = getResources().getDimensionPixelSize(R.dimen.dialog_button_ex_height);
|
||||||
int shadowHeight = getResources().getDimensionPixelSize(R.dimen.bottom_sheet_top_shadow_height);
|
shadowHeight = getResources().getDimensionPixelSize(R.dimen.bottom_sheet_top_shadow_height);
|
||||||
final ScrollView scrollView = getView().findViewById(R.id.scroll_view);
|
scrollView = getView().findViewById(R.id.scroll_view);
|
||||||
scrollView.getWindowVisibleDisplayFrame(visibleDisplayFrame);
|
scrollView.getWindowVisibleDisplayFrame(visibleDisplayFrame);
|
||||||
boolean showTopShadow;
|
|
||||||
int contentHeight = visibleDisplayFrame.bottom - visibleDisplayFrame.top - buttonsHeight;
|
int contentHeight = visibleDisplayFrame.bottom - visibleDisplayFrame.top - buttonsHeight;
|
||||||
if (contentHeightPrevious != contentHeight) {
|
if (contentHeightPrevious != contentHeight) {
|
||||||
|
boolean showTopShadow;
|
||||||
if (scrollView.getHeight() + shadowHeight > contentHeight) {
|
if (scrollView.getHeight() + shadowHeight > contentHeight) {
|
||||||
scrollView.getLayoutParams().height = contentHeight;
|
scrollView.getLayoutParams().height = contentHeight;
|
||||||
showTopShadow = false;
|
showTopShadow = false;
|
||||||
|
@ -189,22 +189,6 @@ public class VehicleParametersBottomSheet extends BasePreferenceBottomSheet {
|
||||||
drawTopShadow(showTopShadow);
|
drawTopShadow(showTopShadow);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void drawTopShadow(boolean showTopShadow) {
|
|
||||||
final Activity activity = getActivity();
|
|
||||||
View mainView = getView();
|
|
||||||
if (activity == null || mainView == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (AndroidUiHelper.isOrientationPortrait(activity)) {
|
|
||||||
AndroidUtils.setBackground(mainView, showTopShadow ? getPortraitBg(activity) : getColoredBg(activity));
|
|
||||||
if (!showTopShadow) {
|
|
||||||
mainView.setPadding(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
AndroidUtils.setBackground(mainView, showTopShadow ? getLandscapeTopsidesBg(activity) : getLandscapeSidesBg(activity));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,7 +209,7 @@ public class VehicleParametersBottomSheet extends BasePreferenceBottomSheet {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void showInstance(@NonNull FragmentManager fm, String key, Fragment target,
|
public static void showInstance(@NonNull FragmentManager fm, String key, Fragment target,
|
||||||
boolean usedOnMap, @Nullable ApplicationMode appMode) {
|
boolean usedOnMap, @Nullable ApplicationMode appMode) {
|
||||||
try {
|
try {
|
||||||
if (!fm.isStateSaved()) {
|
if (!fm.isStateSaved()) {
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
|
|
Loading…
Reference in a new issue