From 91dcbc44321e8cedc8034291f46ab6a9314ddc28 Mon Sep 17 00:00:00 2001 From: Jeremiah Date: Wed, 17 Jan 2024 12:34:43 -0700 Subject: [PATCH 1/8] Add option to always show the next turn during navigation Signed-off-by: Jeremiah Miller --- .../main/cpp/app/organicmaps/Framework.cpp | 14 +++++++++++++ .../main/java/app/organicmaps/Framework.java | 4 ++++ .../settings/SettingsPrefsFragment.java | 18 +++++++++++++++++ .../src/main/res/values/donottranslate.xml | 1 + android/app/src/main/res/values/strings.xml | 1 + android/app/src/main/res/xml/prefs_main.xml | 7 ++++++- data/strings/strings.txt | 4 ++++ .../en-GB.lproj/Localizable.strings | 2 ++ .../en.lproj/Localizable.strings | 2 ++ .../UI/Settings/MWMSettingsViewController.mm | 6 ++++++ iphone/Maps/UI/Storyboard/Settings.storyboard | 3 +++ map/framework.cpp | 20 +++++++++++++++++++ map/framework.hpp | 4 ++++ map/routing_manager.hpp | 6 ++++++ routing/routing_session.cpp | 13 +++++++++--- routing/routing_session.hpp | 2 ++ 16 files changed, 103 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/cpp/app/organicmaps/Framework.cpp b/android/app/src/main/cpp/app/organicmaps/Framework.cpp index fe5897546f..778c88aa99 100644 --- a/android/app/src/main/cpp/app/organicmaps/Framework.cpp +++ b/android/app/src/main/cpp/app/organicmaps/Framework.cpp @@ -1644,6 +1644,14 @@ Java_app_organicmaps_Framework_nativeSetAutoZoomEnabled(JNIEnv * env, jclass, jb frm()->AllowAutoZoom(autoZoomEnabled); } +JNIEXPORT void JNICALL +Java_app_organicmaps_Framework_nativeSetAlwaysShowNextTurnEnabled(JNIEnv * env, jclass, jboolean enabled) +{ + bool const alwaysShowNextTurnEnabled = static_cast(enabled); + frm()->SaveAlwaysShowNextTurn(alwaysShowNextTurnEnabled); + frm()->AllowAlwaysShowNextTurn(alwaysShowNextTurnEnabled); +} + JNIEXPORT void JNICALL Java_app_organicmaps_Framework_nativeSetTransitSchemeEnabled(JNIEnv * env, jclass, jboolean enabled) { @@ -1694,6 +1702,12 @@ Java_app_organicmaps_Framework_nativeGetAutoZoomEnabled(JNIEnv *, jclass) return frm()->LoadAutoZoom(); } +JNIEXPORT jboolean JNICALL +Java_app_organicmaps_Framework_nativeGetAlwaysShowNextTurnEnabled(JNIEnv *, jclass) +{ + return frm()->LoadAlwaysShowNextTurn(); +} + // static void nativeZoomToPoint(double lat, double lon, int zoom, boolean animate); JNIEXPORT void JNICALL Java_app_organicmaps_Framework_nativeZoomToPoint(JNIEnv * env, jclass, jdouble lat, jdouble lon, jint zoom, jboolean animate) diff --git a/android/app/src/main/java/app/organicmaps/Framework.java b/android/app/src/main/java/app/organicmaps/Framework.java index c846ddfd7d..68d8689e9a 100644 --- a/android/app/src/main/java/app/organicmaps/Framework.java +++ b/android/app/src/main/java/app/organicmaps/Framework.java @@ -357,6 +357,10 @@ public class Framework public static native void nativeSetAutoZoomEnabled(boolean enabled); + public static native boolean nativeGetAlwaysShowNextTurnEnabled(); + + public static native void nativeSetAlwaysShowNextTurnEnabled(boolean enabled); + public static native void nativeSetTransitSchemeEnabled(boolean enabled); public static native void nativeSaveSettingSchemeEnabled(boolean enabled); diff --git a/android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java b/android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java index cf8406598c..dfbb8d5ad7 100644 --- a/android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java +++ b/android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java @@ -268,6 +268,7 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment init3dModePrefsCallbacks(); initPerspectivePrefsCallbacks(); initAutoZoomPrefsCallbacks(); + initAlwaysShowNextTurnPrefsCallbacks(); initLoggingEnabledPrefsCallbacks(); initEmulationBadStorage(); initUseMobileDataPrefsCallbacks(); @@ -518,6 +519,23 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment }); } + private void initAlwaysShowNextTurnPrefsCallbacks() + { + final TwoStatePreference pref = getPreference(getString(R.string.pref_always_show_next_turn)); + + boolean alwaysShowNextTurnEnabled = Framework.nativeGetAlwaysShowNextTurnEnabled(); + pref.setChecked(alwaysShowNextTurnEnabled); + pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() + { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) + { + Framework.nativeSetAlwaysShowNextTurnEnabled((Boolean)newValue); + return true; + } + }); + } + private void initPlayServicesPrefsCallbacks() { final Preference pref = findPreference(getString(R.string.pref_play_services)); diff --git a/android/app/src/main/res/values/donottranslate.xml b/android/app/src/main/res/values/donottranslate.xml index f8e9bd009f..0c7751348e 100644 --- a/android/app/src/main/res/values/donottranslate.xml +++ b/android/app/src/main/res/values/donottranslate.xml @@ -30,6 +30,7 @@ 3DBuildings Osm profile AutoZoom + AlwaysShowNextTurn LargeFontSize UseMobileData GeneralSettings diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index d46732f8fb..69d320cb48 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -239,6 +239,7 @@ Not Available Auto zoom + Always show next turn Off 1 hour 2 hours diff --git a/android/app/src/main/res/xml/prefs_main.xml b/android/app/src/main/res/xml/prefs_main.xml index 7e9fa51531..c12c858764 100644 --- a/android/app/src/main/res/xml/prefs_main.xml +++ b/android/app/src/main/res/xml/prefs_main.xml @@ -120,12 +120,17 @@ android:title="@string/pref_map_auto_zoom" app:singleLineTitle="false" android:order="3"/> + + android:order="5"> + diff --git a/map/framework.cpp b/map/framework.cpp index e11a5fa94d..1d1479fc6a 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -98,6 +98,7 @@ char const kMapStyleKey[] = "MapStyleKeyV1"; char const kAllow3dKey[] = "Allow3d"; char const kAllow3dBuildingsKey[] = "Buildings3d"; char const kAllowAutoZoom[] = "AutoZoom"; +char const kAllowAlwaysShowNextTurn[] = "AlwaysShowNextTurn"; char const kTrafficEnabledKey[] = "TrafficEnabled"; char const kTransitSchemeEnabledKey[] = "TransitSchemeEnabled"; char const kIsolinesEnabledKey[] = "IsolinesEnabled"; @@ -2467,6 +2468,25 @@ void Framework::SaveAutoZoom(bool allowAutoZoom) settings::Set(kAllowAutoZoom, allowAutoZoom); } +bool Framework::LoadAlwaysShowNextTurn() +{ + bool allowAlwaysShowNextTurn; + if (!settings::Get(kAllowAlwaysShowNextTurn, allowAlwaysShowNextTurn)) + allowAlwaysShowNextTurn = true; + return allowAlwaysShowNextTurn; +} + +void Framework::AllowAlwaysShowNextTurn(bool allowAlwaysShowNextTurn) +{ + if (m_routingManager != nullptr) + m_routingManager->SetAlwaysShowNextTurn(allowAlwaysShowNextTurn); +} + +void Framework::SaveAlwaysShowNextTurn(bool allowAlwaysShowNextTurn) +{ + settings::Set(kAllowAlwaysShowNextTurn, allowAlwaysShowNextTurn); +} + bool Framework::LoadTransitSchemeEnabled() { bool enabled; diff --git a/map/framework.hpp b/map/framework.hpp index 8d557191b6..9e9bbfaf93 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -681,6 +681,10 @@ public: void AllowAutoZoom(bool allowAutoZoom); void SaveAutoZoom(bool allowAutoZoom); + bool LoadAlwaysShowNextTurn(); + bool AllowAlwaysShowNextTurn(bool allowAlwaysShowNextTurn); + bool SaveAlwaysShowNextTurn(bool allowAlwaysShowNextTurn); + TrafficManager & GetTrafficManager(); TransitReadManager & GetTransitManager(); diff --git a/map/routing_manager.hpp b/map/routing_manager.hpp index 2b42c5781d..7ee4a0a931 100644 --- a/map/routing_manager.hpp +++ b/map/routing_manager.hpp @@ -259,6 +259,12 @@ public: { m_routingSession.SetTurnNotificationsUnits(units); } + + void SetAlwaysShowNextTurn(bool alwaysShowNextTurn) + { + m_routingSession.SetAlwaysShowNextTurn(alwaysShowNextTurn); + } + void SetDrapeEngine(ref_ptr engine, bool is3dAllowed); /// \returns true if altitude information along |m_route| is available and /// false otherwise. diff --git a/routing/routing_session.cpp b/routing/routing_session.cpp index bbdf9d64f7..c3d5184503 100644 --- a/routing/routing_session.cpp +++ b/routing/routing_session.cpp @@ -425,10 +425,10 @@ void RoutingSession::GetRouteFollowingInfo(FollowingInfo & info) const info.m_completionPercent = GetCompletionPercent(); - double const timeToNearestTurnSec = m_route->GetCurrentTimeToNearestTurnSec(); - // Lane information and next street name. - if (distanceToTurnMeters < kShowLanesMinDistInMeters || timeToNearestTurnSec < 60.0) + if (m_alwaysShowNextTurn + || distanceToTurnMeters < kShowLanesMinDistInMeters + || m_route->GetCurrentTimeToNearestTurnSec() < 60.0) { info.m_displayedStreetName = info.m_targetName; // There are two nested loops below. Outer one is for lanes and inner one (ctor of @@ -735,6 +735,13 @@ void RoutingSession::SetTurnNotificationsUnits(measurement_utils::Units const un m_turnNotificationsMgr.SetLengthUnits(units); } +void SetAlwaysShowNextTurn(bool alwaysShowNextTurn) +{ + CHECK_THREAD_CHECKER(m_threadChecker, ()); + m_alwaysShowNextTurn = alwaysShowNextTurn; +} + + void RoutingSession::SetTurnNotificationsLocale(std::string const & locale) { CHECK_THREAD_CHECKER(m_threadChecker, ()); diff --git a/routing/routing_session.hpp b/routing/routing_session.hpp index bca11b368f..774293bfe4 100644 --- a/routing/routing_session.hpp +++ b/routing/routing_session.hpp @@ -138,6 +138,7 @@ public: void GenerateNotifications(std::vector & notifications); void EnableTurnNotifications(bool enable); void SetTurnNotificationsUnits(measurement_utils::Units const units); + void SetAlwaysShowNextTurn(bool alwaysShowNextTurn); void SetTurnNotificationsLocale(std::string const & locale); bool AreTurnNotificationsEnabled() const; std::string GetTurnNotificationsLocale() const; @@ -208,6 +209,7 @@ private: m2::PointD m_userCurrentPosition; bool m_userCurrentPositionValid = false; + bool m_alwaysShowNextTurn = false; // Sound turn notification parameters. turns::sound::NotificationManager m_turnNotificationsMgr; -- 2.45.3 From fd79f66a3ca644bbe9bcbc561b104e80e32cf5ff Mon Sep 17 00:00:00 2001 From: Jeremiah Miller Date: Wed, 17 Jan 2024 12:53:51 -0700 Subject: [PATCH 2/8] Fix build errors Signed-off-by: Jeremiah Miller --- map/framework.cpp | 3 +-- map/framework.hpp | 4 ++-- routing/routing_session.cpp | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/map/framework.cpp b/map/framework.cpp index 1d1479fc6a..a64aedd9b4 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -2478,8 +2478,7 @@ bool Framework::LoadAlwaysShowNextTurn() void Framework::AllowAlwaysShowNextTurn(bool allowAlwaysShowNextTurn) { - if (m_routingManager != nullptr) - m_routingManager->SetAlwaysShowNextTurn(allowAlwaysShowNextTurn); + m_routingManager.SetAlwaysShowNextTurn(allowAlwaysShowNextTurn); } void Framework::SaveAlwaysShowNextTurn(bool allowAlwaysShowNextTurn) diff --git a/map/framework.hpp b/map/framework.hpp index 9e9bbfaf93..9722f0e07c 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -682,8 +682,8 @@ public: void SaveAutoZoom(bool allowAutoZoom); bool LoadAlwaysShowNextTurn(); - bool AllowAlwaysShowNextTurn(bool allowAlwaysShowNextTurn); - bool SaveAlwaysShowNextTurn(bool allowAlwaysShowNextTurn); + void AllowAlwaysShowNextTurn(bool allowAlwaysShowNextTurn); + void SaveAlwaysShowNextTurn(bool allowAlwaysShowNextTurn); TrafficManager & GetTrafficManager(); diff --git a/routing/routing_session.cpp b/routing/routing_session.cpp index c3d5184503..b9eeee16fb 100644 --- a/routing/routing_session.cpp +++ b/routing/routing_session.cpp @@ -735,7 +735,7 @@ void RoutingSession::SetTurnNotificationsUnits(measurement_utils::Units const un m_turnNotificationsMgr.SetLengthUnits(units); } -void SetAlwaysShowNextTurn(bool alwaysShowNextTurn) +void RoutingSession::SetAlwaysShowNextTurn(bool alwaysShowNextTurn) { CHECK_THREAD_CHECKER(m_threadChecker, ()); m_alwaysShowNextTurn = alwaysShowNextTurn; -- 2.45.3 From 6bc1c28a7fc4e43b4edb50d25b2f2bd1d97fef11 Mon Sep 17 00:00:00 2001 From: Jeremiah Miller Date: Thu, 18 Jan 2024 12:32:34 -0700 Subject: [PATCH 3/8] Revert adding a setting to always show the next turn, set up the routing session to know when the device is in landscape position, and if it is, don't show the next turn (unless the old logic applies), but show it by default. Signed-off-by: Jeremiah Miller --- .../main/cpp/app/organicmaps/Framework.cpp | 20 ++++++------------- .../main/java/app/organicmaps/Framework.java | 6 ++---- .../java/app/organicmaps/MwmActivity.java | 4 +++- .../settings/SettingsPrefsFragment.java | 18 ----------------- .../src/main/res/values/donottranslate.xml | 1 - android/app/src/main/res/values/strings.xml | 1 - android/app/src/main/res/xml/prefs_main.xml | 7 +------ data/strings/strings.txt | 4 ---- .../Maps/Core/Location/MWMLocationManager.mm | 2 ++ .../en-GB.lproj/Localizable.strings | 2 -- .../en.lproj/Localizable.strings | 2 -- .../Maps/UI/AvailableArea/AvailableArea.swift | 2 ++ .../DirectionView/DirectionView.swift | 3 +++ .../UI/Settings/MWMSettingsViewController.mm | 6 ------ iphone/Maps/UI/Storyboard/Settings.storyboard | 3 --- map/framework.cpp | 19 ------------------ map/framework.hpp | 4 ---- map/routing_manager.hpp | 4 ++-- routing/routing_session.cpp | 14 ++++++------- routing/routing_session.hpp | 5 +++-- 20 files changed, 30 insertions(+), 97 deletions(-) diff --git a/android/app/src/main/cpp/app/organicmaps/Framework.cpp b/android/app/src/main/cpp/app/organicmaps/Framework.cpp index 778c88aa99..5baf68b302 100644 --- a/android/app/src/main/cpp/app/organicmaps/Framework.cpp +++ b/android/app/src/main/cpp/app/organicmaps/Framework.cpp @@ -1144,6 +1144,12 @@ Java_app_organicmaps_Framework_nativeChangeWritableDir(JNIEnv * env, jclass, jst g_framework->AddLocalMaps(); } +JNIEXPORT void JNICALL +Java_app_organicmaps_Framework_nativeSetIsLandscape(JNIEnv * env, jclass, jboolean isLandscape) +{ + return frm()->GetRoutingManager().SetIsLandscape(static_cast(isLandscape)); +} + JNIEXPORT jboolean JNICALL Java_app_organicmaps_Framework_nativeIsRoutingActive(JNIEnv * env, jclass) { @@ -1644,14 +1650,6 @@ Java_app_organicmaps_Framework_nativeSetAutoZoomEnabled(JNIEnv * env, jclass, jb frm()->AllowAutoZoom(autoZoomEnabled); } -JNIEXPORT void JNICALL -Java_app_organicmaps_Framework_nativeSetAlwaysShowNextTurnEnabled(JNIEnv * env, jclass, jboolean enabled) -{ - bool const alwaysShowNextTurnEnabled = static_cast(enabled); - frm()->SaveAlwaysShowNextTurn(alwaysShowNextTurnEnabled); - frm()->AllowAlwaysShowNextTurn(alwaysShowNextTurnEnabled); -} - JNIEXPORT void JNICALL Java_app_organicmaps_Framework_nativeSetTransitSchemeEnabled(JNIEnv * env, jclass, jboolean enabled) { @@ -1702,12 +1700,6 @@ Java_app_organicmaps_Framework_nativeGetAutoZoomEnabled(JNIEnv *, jclass) return frm()->LoadAutoZoom(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_Framework_nativeGetAlwaysShowNextTurnEnabled(JNIEnv *, jclass) -{ - return frm()->LoadAlwaysShowNextTurn(); -} - // static void nativeZoomToPoint(double lat, double lon, int zoom, boolean animate); JNIEXPORT void JNICALL Java_app_organicmaps_Framework_nativeZoomToPoint(JNIEnv * env, jclass, jdouble lat, jdouble lon, jint zoom, jboolean animate) diff --git a/android/app/src/main/java/app/organicmaps/Framework.java b/android/app/src/main/java/app/organicmaps/Framework.java index 68d8689e9a..bcfd501db4 100644 --- a/android/app/src/main/java/app/organicmaps/Framework.java +++ b/android/app/src/main/java/app/organicmaps/Framework.java @@ -255,6 +255,8 @@ public class Framework public static native void nativeChangeWritableDir(String newPath); // Routing. + public static native void nativeSetIsLandscape(boolean isLandscape); + public static native boolean nativeIsRoutingActive(); public static native boolean nativeIsRouteBuilt(); @@ -357,10 +359,6 @@ public class Framework public static native void nativeSetAutoZoomEnabled(boolean enabled); - public static native boolean nativeGetAlwaysShowNextTurnEnabled(); - - public static native void nativeSetAlwaysShowNextTurnEnabled(boolean enabled); - public static native void nativeSetTransitSchemeEnabled(boolean enabled); public static native void nativeSaveSettingSchemeEnabled(boolean enabled); diff --git a/android/app/src/main/java/app/organicmaps/MwmActivity.java b/android/app/src/main/java/app/organicmaps/MwmActivity.java index a65bbb6ea5..9eca49b2d3 100644 --- a/android/app/src/main/java/app/organicmaps/MwmActivity.java +++ b/android/app/src/main/java/app/organicmaps/MwmActivity.java @@ -448,7 +448,7 @@ public class MwmActivity extends BaseMwmFragmentActivity final boolean newUiModeIsCarConnected = newUiMode == Configuration.UI_MODE_TYPE_CAR; final boolean newUiModeIsCarDisconnected = mLastUiMode == Configuration.UI_MODE_TYPE_CAR && newUiMode == Configuration.UI_MODE_TYPE_NORMAL; mLastUiMode = newUiMode; - + Framework.nativeSetIsLandscape(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE); if (newUiModeIsCarConnected || newUiModeIsCarDisconnected) return; recreate(); @@ -568,6 +568,8 @@ public class MwmActivity extends BaseMwmFragmentActivity initMainMenu(); initOnmapDownloader(); initPositionChooser(); + + Framework.nativeSetIsLandscape(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE); } private void initPositionChooser() diff --git a/android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java b/android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java index dfbb8d5ad7..cf8406598c 100644 --- a/android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java +++ b/android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java @@ -268,7 +268,6 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment init3dModePrefsCallbacks(); initPerspectivePrefsCallbacks(); initAutoZoomPrefsCallbacks(); - initAlwaysShowNextTurnPrefsCallbacks(); initLoggingEnabledPrefsCallbacks(); initEmulationBadStorage(); initUseMobileDataPrefsCallbacks(); @@ -519,23 +518,6 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment }); } - private void initAlwaysShowNextTurnPrefsCallbacks() - { - final TwoStatePreference pref = getPreference(getString(R.string.pref_always_show_next_turn)); - - boolean alwaysShowNextTurnEnabled = Framework.nativeGetAlwaysShowNextTurnEnabled(); - pref.setChecked(alwaysShowNextTurnEnabled); - pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() - { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) - { - Framework.nativeSetAlwaysShowNextTurnEnabled((Boolean)newValue); - return true; - } - }); - } - private void initPlayServicesPrefsCallbacks() { final Preference pref = findPreference(getString(R.string.pref_play_services)); diff --git a/android/app/src/main/res/values/donottranslate.xml b/android/app/src/main/res/values/donottranslate.xml index 0c7751348e..f8e9bd009f 100644 --- a/android/app/src/main/res/values/donottranslate.xml +++ b/android/app/src/main/res/values/donottranslate.xml @@ -30,7 +30,6 @@ 3DBuildings Osm profile AutoZoom - AlwaysShowNextTurn LargeFontSize UseMobileData GeneralSettings diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 69d320cb48..d46732f8fb 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -239,7 +239,6 @@ Not Available Auto zoom - Always show next turn Off 1 hour 2 hours diff --git a/android/app/src/main/res/xml/prefs_main.xml b/android/app/src/main/res/xml/prefs_main.xml index c12c858764..7e9fa51531 100644 --- a/android/app/src/main/res/xml/prefs_main.xml +++ b/android/app/src/main/res/xml/prefs_main.xml @@ -120,17 +120,12 @@ android:title="@string/pref_map_auto_zoom" app:singleLineTitle="false" android:order="3"/> - + android:order="4"> - diff --git a/map/framework.cpp b/map/framework.cpp index a64aedd9b4..e11a5fa94d 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -98,7 +98,6 @@ char const kMapStyleKey[] = "MapStyleKeyV1"; char const kAllow3dKey[] = "Allow3d"; char const kAllow3dBuildingsKey[] = "Buildings3d"; char const kAllowAutoZoom[] = "AutoZoom"; -char const kAllowAlwaysShowNextTurn[] = "AlwaysShowNextTurn"; char const kTrafficEnabledKey[] = "TrafficEnabled"; char const kTransitSchemeEnabledKey[] = "TransitSchemeEnabled"; char const kIsolinesEnabledKey[] = "IsolinesEnabled"; @@ -2468,24 +2467,6 @@ void Framework::SaveAutoZoom(bool allowAutoZoom) settings::Set(kAllowAutoZoom, allowAutoZoom); } -bool Framework::LoadAlwaysShowNextTurn() -{ - bool allowAlwaysShowNextTurn; - if (!settings::Get(kAllowAlwaysShowNextTurn, allowAlwaysShowNextTurn)) - allowAlwaysShowNextTurn = true; - return allowAlwaysShowNextTurn; -} - -void Framework::AllowAlwaysShowNextTurn(bool allowAlwaysShowNextTurn) -{ - m_routingManager.SetAlwaysShowNextTurn(allowAlwaysShowNextTurn); -} - -void Framework::SaveAlwaysShowNextTurn(bool allowAlwaysShowNextTurn) -{ - settings::Set(kAllowAlwaysShowNextTurn, allowAlwaysShowNextTurn); -} - bool Framework::LoadTransitSchemeEnabled() { bool enabled; diff --git a/map/framework.hpp b/map/framework.hpp index 9722f0e07c..8d557191b6 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -681,10 +681,6 @@ public: void AllowAutoZoom(bool allowAutoZoom); void SaveAutoZoom(bool allowAutoZoom); - bool LoadAlwaysShowNextTurn(); - void AllowAlwaysShowNextTurn(bool allowAlwaysShowNextTurn); - void SaveAlwaysShowNextTurn(bool allowAlwaysShowNextTurn); - TrafficManager & GetTrafficManager(); TransitReadManager & GetTransitManager(); diff --git a/map/routing_manager.hpp b/map/routing_manager.hpp index 7ee4a0a931..ba1c9a02ae 100644 --- a/map/routing_manager.hpp +++ b/map/routing_manager.hpp @@ -260,9 +260,9 @@ public: m_routingSession.SetTurnNotificationsUnits(units); } - void SetAlwaysShowNextTurn(bool alwaysShowNextTurn) + void SetIsLandscape(bool isLandscape) { - m_routingSession.SetAlwaysShowNextTurn(alwaysShowNextTurn); + m_routingSession.SetIsLandscape(isLandscape); } void SetDrapeEngine(ref_ptr engine, bool is3dAllowed); diff --git a/routing/routing_session.cpp b/routing/routing_session.cpp index b9eeee16fb..bac984f7c3 100644 --- a/routing/routing_session.cpp +++ b/routing/routing_session.cpp @@ -426,24 +426,22 @@ void RoutingSession::GetRouteFollowingInfo(FollowingInfo & info) const info.m_completionPercent = GetCompletionPercent(); // Lane information and next street name. - if (m_alwaysShowNextTurn - || distanceToTurnMeters < kShowLanesMinDistInMeters + info.m_lanes.clear(); + info.m_displayedStreetName = info.m_targetName; + if (distanceToTurnMeters < kShowLanesMinDistInMeters || m_route->GetCurrentTimeToNearestTurnSec() < 60.0) { - info.m_displayedStreetName = info.m_targetName; // There are two nested loops below. Outer one is for lanes and inner one (ctor of // SingleLaneInfo) is // for each lane's directions. The size of turn.m_lanes is relatively small. Less than 10 in // most cases. - info.m_lanes.clear(); info.m_lanes.reserve(turn.m_lanes.size()); for (size_t j = 0; j < turn.m_lanes.size(); ++j) info.m_lanes.emplace_back(turn.m_lanes[j]); } - else + else if(m_isLandscape) { info.m_displayedStreetName = ""; - info.m_lanes.clear(); } // Pedestrian info. @@ -735,10 +733,10 @@ void RoutingSession::SetTurnNotificationsUnits(measurement_utils::Units const un m_turnNotificationsMgr.SetLengthUnits(units); } -void RoutingSession::SetAlwaysShowNextTurn(bool alwaysShowNextTurn) +void RoutingSession::SetIsLandscape(bool isLandscape) { CHECK_THREAD_CHECKER(m_threadChecker, ()); - m_alwaysShowNextTurn = alwaysShowNextTurn; + m_isLandscape = isLandscape; } diff --git a/routing/routing_session.hpp b/routing/routing_session.hpp index 774293bfe4..67f575f9fd 100644 --- a/routing/routing_session.hpp +++ b/routing/routing_session.hpp @@ -138,12 +138,13 @@ public: void GenerateNotifications(std::vector & notifications); void EnableTurnNotifications(bool enable); void SetTurnNotificationsUnits(measurement_utils::Units const units); - void SetAlwaysShowNextTurn(bool alwaysShowNextTurn); void SetTurnNotificationsLocale(std::string const & locale); bool AreTurnNotificationsEnabled() const; std::string GetTurnNotificationsLocale() const; void SetLocaleWithJsonForTesting(std::string const & json, std::string const & locale); + void SetIsLandscape(bool isLandscape); + void EmitCloseRoutingEvent() const; void RouteCall(RouteCallback const & callback) const; @@ -209,7 +210,7 @@ private: m2::PointD m_userCurrentPosition; bool m_userCurrentPositionValid = false; - bool m_alwaysShowNextTurn = false; + bool m_isLandscape = false; // Sound turn notification parameters. turns::sound::NotificationManager m_turnNotificationsMgr; -- 2.45.3 From a9155040a1a91bd7faa5fea521f14dded4dc8b6d Mon Sep 17 00:00:00 2001 From: Jeremiah Miller Date: Fri, 19 Jan 2024 18:54:31 -0700 Subject: [PATCH 4/8] Move landscape check to map framework Signed-off-by: Jeremiah Miller --- android/app/src/main/cpp/app/organicmaps/Framework.cpp | 6 ------ android/app/src/main/java/app/organicmaps/Framework.java | 2 -- android/app/src/main/java/app/organicmaps/MwmActivity.java | 4 +--- iphone/Maps/Core/Location/MWMLocationManager.mm | 2 -- iphone/Maps/UI/AvailableArea/AvailableArea.swift | 2 -- iphone/Maps/UI/PlacePage/DirectionView/DirectionView.swift | 3 --- map/framework.cpp | 1 + 7 files changed, 2 insertions(+), 18 deletions(-) diff --git a/android/app/src/main/cpp/app/organicmaps/Framework.cpp b/android/app/src/main/cpp/app/organicmaps/Framework.cpp index 5baf68b302..fe5897546f 100644 --- a/android/app/src/main/cpp/app/organicmaps/Framework.cpp +++ b/android/app/src/main/cpp/app/organicmaps/Framework.cpp @@ -1144,12 +1144,6 @@ Java_app_organicmaps_Framework_nativeChangeWritableDir(JNIEnv * env, jclass, jst g_framework->AddLocalMaps(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_Framework_nativeSetIsLandscape(JNIEnv * env, jclass, jboolean isLandscape) -{ - return frm()->GetRoutingManager().SetIsLandscape(static_cast(isLandscape)); -} - JNIEXPORT jboolean JNICALL Java_app_organicmaps_Framework_nativeIsRoutingActive(JNIEnv * env, jclass) { diff --git a/android/app/src/main/java/app/organicmaps/Framework.java b/android/app/src/main/java/app/organicmaps/Framework.java index bcfd501db4..c846ddfd7d 100644 --- a/android/app/src/main/java/app/organicmaps/Framework.java +++ b/android/app/src/main/java/app/organicmaps/Framework.java @@ -255,8 +255,6 @@ public class Framework public static native void nativeChangeWritableDir(String newPath); // Routing. - public static native void nativeSetIsLandscape(boolean isLandscape); - public static native boolean nativeIsRoutingActive(); public static native boolean nativeIsRouteBuilt(); diff --git a/android/app/src/main/java/app/organicmaps/MwmActivity.java b/android/app/src/main/java/app/organicmaps/MwmActivity.java index 9eca49b2d3..a65bbb6ea5 100644 --- a/android/app/src/main/java/app/organicmaps/MwmActivity.java +++ b/android/app/src/main/java/app/organicmaps/MwmActivity.java @@ -448,7 +448,7 @@ public class MwmActivity extends BaseMwmFragmentActivity final boolean newUiModeIsCarConnected = newUiMode == Configuration.UI_MODE_TYPE_CAR; final boolean newUiModeIsCarDisconnected = mLastUiMode == Configuration.UI_MODE_TYPE_CAR && newUiMode == Configuration.UI_MODE_TYPE_NORMAL; mLastUiMode = newUiMode; - Framework.nativeSetIsLandscape(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE); + if (newUiModeIsCarConnected || newUiModeIsCarDisconnected) return; recreate(); @@ -568,8 +568,6 @@ public class MwmActivity extends BaseMwmFragmentActivity initMainMenu(); initOnmapDownloader(); initPositionChooser(); - - Framework.nativeSetIsLandscape(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE); } private void initPositionChooser() diff --git a/iphone/Maps/Core/Location/MWMLocationManager.mm b/iphone/Maps/Core/Location/MWMLocationManager.mm index 78b8200604..9a3eca9a37 100644 --- a/iphone/Maps/Core/Location/MWMLocationManager.mm +++ b/iphone/Maps/Core/Location/MWMLocationManager.mm @@ -354,8 +354,6 @@ void setShowLocationAlert(BOOL needShow) { - (void)orientationChanged { - GetFramework().GetRoutingManager().SetIsLandscape((CLDeviceOrientation)UIDevice.currentDevice.orientation == landscapeLeft - || (CLDeviceOrientation)UIDevice.currentDevice.orientation == landscapeRight); self.locationManager.headingOrientation = (CLDeviceOrientation)UIDevice.currentDevice.orientation; } diff --git a/iphone/Maps/UI/AvailableArea/AvailableArea.swift b/iphone/Maps/UI/AvailableArea/AvailableArea.swift index 44991f4afe..3e17cd5318 100644 --- a/iphone/Maps/UI/AvailableArea/AvailableArea.swift +++ b/iphone/Maps/UI/AvailableArea/AvailableArea.swift @@ -59,8 +59,6 @@ class AvailableArea: UIView { let orientation = UIDevice.current.orientation guard !orientation.isFlat && orientation != .portraitUpsideDown else { return } self.orientation = orientation - GetFramework().GetRoutingManager().SetIsLandscape(orientation == landscapeLeft - || orientation == landscapeRight); } } diff --git a/iphone/Maps/UI/PlacePage/DirectionView/DirectionView.swift b/iphone/Maps/UI/PlacePage/DirectionView/DirectionView.swift index 33ae42a8ea..16dbdf8c80 100644 --- a/iphone/Maps/UI/PlacePage/DirectionView/DirectionView.swift +++ b/iphone/Maps/UI/PlacePage/DirectionView/DirectionView.swift @@ -29,10 +29,7 @@ class DirectionView: SolidTouchView { override func layoutSubviews() { var textAlignment = NSTextAlignment.center if UIDevice.current.orientation == .landscapeLeft || UIDevice.current.orientation == .landscapeRight { - GetFramework().GetRoutingManager().SetIsLandscape(true); textAlignment = alternative(iPhone: .left, iPad: .center) - } else { - GetFramework().GetRoutingManager().SetIsLandscape(false); } titleLabel.textAlignment = textAlignment typeLabel.textAlignment = textAlignment diff --git a/map/framework.cpp b/map/framework.cpp index e11a5fa94d..829ae5706e 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -265,6 +265,7 @@ void Framework::OnViewportChanged(ScreenBase const & screen) m_trafficManager.UpdateViewport(m_currentModelView); m_transitManager.UpdateViewport(m_currentModelView); m_isolinesManager.UpdateViewport(m_currentModelView); + m_routingManager.SetIsLandscape(m_currentModelView.GetWidth() > m_currentModelView.GetHeight()); if (m_viewportChangedFn != nullptr) m_viewportChangedFn(screen); -- 2.45.3 From 73bd65983a67f5ab802d5d623dd465e962eef8ba Mon Sep 17 00:00:00 2001 From: Jeremiah Miller Date: Sat, 20 Jan 2024 06:39:10 -0700 Subject: [PATCH 5/8] Address review comments Signed-off-by: Jeremiah Miller --- map/framework.cpp | 2 +- map/routing_manager.hpp | 5 ----- routing/routing_session.cpp | 16 +++++++++++----- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/map/framework.cpp b/map/framework.cpp index 829ae5706e..31aae8ae45 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -265,7 +265,7 @@ void Framework::OnViewportChanged(ScreenBase const & screen) m_trafficManager.UpdateViewport(m_currentModelView); m_transitManager.UpdateViewport(m_currentModelView); m_isolinesManager.UpdateViewport(m_currentModelView); - m_routingManager.SetIsLandscape(m_currentModelView.GetWidth() > m_currentModelView.GetHeight()); + m_routingManager.RoutingSession().SetIsLandscape(m_currentModelView.GetWidth() > m_currentModelView.GetHeight()); if (m_viewportChangedFn != nullptr) m_viewportChangedFn(screen); diff --git a/map/routing_manager.hpp b/map/routing_manager.hpp index ba1c9a02ae..65f4b7176c 100644 --- a/map/routing_manager.hpp +++ b/map/routing_manager.hpp @@ -260,11 +260,6 @@ public: m_routingSession.SetTurnNotificationsUnits(units); } - void SetIsLandscape(bool isLandscape) - { - m_routingSession.SetIsLandscape(isLandscape); - } - void SetDrapeEngine(ref_ptr engine, bool is3dAllowed); /// \returns true if altitude information along |m_route| is available and /// false otherwise. diff --git a/routing/routing_session.cpp b/routing/routing_session.cpp index bac984f7c3..ee9be6639a 100644 --- a/routing/routing_session.cpp +++ b/routing/routing_session.cpp @@ -427,10 +427,11 @@ void RoutingSession::GetRouteFollowingInfo(FollowingInfo & info) const // Lane information and next street name. info.m_lanes.clear(); - info.m_displayedStreetName = info.m_targetName; - if (distanceToTurnMeters < kShowLanesMinDistInMeters - || m_route->GetCurrentTimeToNearestTurnSec() < 60.0) + if (distanceToTurnMeters < kShowLanesMinDistInMeters || m_route->GetCurrentTimeToNearestTurnSec() < 60.0) { + // Always show next turn street name within a certain distance or a certain time before getting to it + info.m_displayedStreetName = info.m_targetName; + // There are two nested loops below. Outer one is for lanes and inner one (ctor of // SingleLaneInfo) is // for each lane's directions. The size of turn.m_lanes is relatively small. Less than 10 in @@ -439,10 +440,16 @@ void RoutingSession::GetRouteFollowingInfo(FollowingInfo & info) const for (size_t j = 0; j < turn.m_lanes.size(); ++j) info.m_lanes.emplace_back(turn.m_lanes[j]); } - else if(m_isLandscape) + else if (m_isLandscape) { + // In landscape mode, don't show the next turn street name by default info.m_displayedStreetName = ""; } + else + { + // In portrait mode, always show the next turn street name + info.m_displayedStreetName = info.m_targetName; + } // Pedestrian info. info.m_pedestrianTurn = (distanceToTurnMeters < kShowPedestrianTurnInMeters) @@ -739,7 +746,6 @@ void RoutingSession::SetIsLandscape(bool isLandscape) m_isLandscape = isLandscape; } - void RoutingSession::SetTurnNotificationsLocale(std::string const & locale) { CHECK_THREAD_CHECKER(m_threadChecker, ()); -- 2.45.3 From dd0fbc1d0e3aefabf4ce8f10388b76e13995567a Mon Sep 17 00:00:00 2001 From: Jeremiah Miller Date: Tue, 30 Jan 2024 08:33:26 -0700 Subject: [PATCH 6/8] Always show next turn string, make the top bar take up less space in landscape mode Signed-off-by: Jeremiah Miller --- .../main/res/layout-land/layout_nav_top.xml | 125 ++++++++++++++++++ routing/routing_session.cpp | 14 +- 2 files changed, 126 insertions(+), 13 deletions(-) create mode 100644 android/app/src/main/res/layout-land/layout_nav_top.xml diff --git a/android/app/src/main/res/layout-land/layout_nav_top.xml b/android/app/src/main/res/layout-land/layout_nav_top.xml new file mode 100644 index 0000000000..681ec9c838 --- /dev/null +++ b/android/app/src/main/res/layout-land/layout_nav_top.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/routing/routing_session.cpp b/routing/routing_session.cpp index ee9be6639a..8be2445aa1 100644 --- a/routing/routing_session.cpp +++ b/routing/routing_session.cpp @@ -426,12 +426,10 @@ void RoutingSession::GetRouteFollowingInfo(FollowingInfo & info) const info.m_completionPercent = GetCompletionPercent(); // Lane information and next street name. + info.m_displayedStreetName = info.m_targetName; info.m_lanes.clear(); if (distanceToTurnMeters < kShowLanesMinDistInMeters || m_route->GetCurrentTimeToNearestTurnSec() < 60.0) { - // Always show next turn street name within a certain distance or a certain time before getting to it - info.m_displayedStreetName = info.m_targetName; - // There are two nested loops below. Outer one is for lanes and inner one (ctor of // SingleLaneInfo) is // for each lane's directions. The size of turn.m_lanes is relatively small. Less than 10 in @@ -440,16 +438,6 @@ void RoutingSession::GetRouteFollowingInfo(FollowingInfo & info) const for (size_t j = 0; j < turn.m_lanes.size(); ++j) info.m_lanes.emplace_back(turn.m_lanes[j]); } - else if (m_isLandscape) - { - // In landscape mode, don't show the next turn street name by default - info.m_displayedStreetName = ""; - } - else - { - // In portrait mode, always show the next turn street name - info.m_displayedStreetName = info.m_targetName; - } // Pedestrian info. info.m_pedestrianTurn = (distanceToTurnMeters < kShowPedestrianTurnInMeters) -- 2.45.3 From 2489694e58baf46e639c915c7f52aa7564403952 Mon Sep 17 00:00:00 2001 From: Jeremiah Miller Date: Tue, 30 Jan 2024 08:39:39 -0700 Subject: [PATCH 7/8] Remove unecessary landscape check Signed-off-by: Jeremiah Miller --- map/framework.cpp | 1 - routing/routing_session.cpp | 6 ------ routing/routing_session.hpp | 3 --- 3 files changed, 10 deletions(-) diff --git a/map/framework.cpp b/map/framework.cpp index 31aae8ae45..e11a5fa94d 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -265,7 +265,6 @@ void Framework::OnViewportChanged(ScreenBase const & screen) m_trafficManager.UpdateViewport(m_currentModelView); m_transitManager.UpdateViewport(m_currentModelView); m_isolinesManager.UpdateViewport(m_currentModelView); - m_routingManager.RoutingSession().SetIsLandscape(m_currentModelView.GetWidth() > m_currentModelView.GetHeight()); if (m_viewportChangedFn != nullptr) m_viewportChangedFn(screen); diff --git a/routing/routing_session.cpp b/routing/routing_session.cpp index 8be2445aa1..798cd2eabe 100644 --- a/routing/routing_session.cpp +++ b/routing/routing_session.cpp @@ -728,12 +728,6 @@ void RoutingSession::SetTurnNotificationsUnits(measurement_utils::Units const un m_turnNotificationsMgr.SetLengthUnits(units); } -void RoutingSession::SetIsLandscape(bool isLandscape) -{ - CHECK_THREAD_CHECKER(m_threadChecker, ()); - m_isLandscape = isLandscape; -} - void RoutingSession::SetTurnNotificationsLocale(std::string const & locale) { CHECK_THREAD_CHECKER(m_threadChecker, ()); diff --git a/routing/routing_session.hpp b/routing/routing_session.hpp index 67f575f9fd..bca11b368f 100644 --- a/routing/routing_session.hpp +++ b/routing/routing_session.hpp @@ -143,8 +143,6 @@ public: std::string GetTurnNotificationsLocale() const; void SetLocaleWithJsonForTesting(std::string const & json, std::string const & locale); - void SetIsLandscape(bool isLandscape); - void EmitCloseRoutingEvent() const; void RouteCall(RouteCallback const & callback) const; @@ -210,7 +208,6 @@ private: m2::PointD m_userCurrentPosition; bool m_userCurrentPositionValid = false; - bool m_isLandscape = false; // Sound turn notification parameters. turns::sound::NotificationManager m_turnNotificationsMgr; -- 2.45.3 From eb069bf18ff2cb0ef0bc39d1d5f5d5bded866a2c Mon Sep 17 00:00:00 2001 From: Jerry <4341884+jm355@users.noreply.github.com> Date: Mon, 18 Mar 2024 21:12:53 +0000 Subject: [PATCH 8/8] Update routing_manager.hpp Signed-off-by: Jerry <4341884+jm355@users.noreply.github.com> --- map/routing_manager.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/map/routing_manager.hpp b/map/routing_manager.hpp index 65f4b7176c..2b42c5781d 100644 --- a/map/routing_manager.hpp +++ b/map/routing_manager.hpp @@ -259,7 +259,6 @@ public: { m_routingSession.SetTurnNotificationsUnits(units); } - void SetDrapeEngine(ref_ptr engine, bool is3dAllowed); /// \returns true if altitude information along |m_route| is available and /// false otherwise. -- 2.45.3