Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean up search and android auto screens #18793

Merged
merged 2 commits into from
Dec 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion OsmAnd/res/layout/map_view_with_layers.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
android:contentDescription="@string/shared_string_map"
android:visibility="gone" />

<net.osmand.plus.auto.AndroidAutoMapPlaceholderView
<net.osmand.plus.auto.views.AndroidAutoMapPlaceholderView
android:id="@+id/AndroidAutoPlaceholder"
android:layout_width="match_parent"
android:layout_height="match_parent"
Expand Down
2 changes: 1 addition & 1 deletion OsmAnd/src/net/osmand/plus/NavigationService.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

import net.osmand.Location;
import net.osmand.StateChangedListener;
import net.osmand.plus.auto.NavigationScreen;
import net.osmand.plus.auto.screens.NavigationScreen;
import net.osmand.plus.auto.NavigationSession;
import net.osmand.plus.auto.TripHelper;
import net.osmand.plus.helpers.LocationServiceHelper;
Expand Down
2 changes: 1 addition & 1 deletion OsmAnd/src/net/osmand/plus/OsmandApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
import net.osmand.plus.api.SQLiteAPI;
import net.osmand.plus.api.SQLiteAPIImpl;
import net.osmand.plus.auto.NavigationCarAppService;
import net.osmand.plus.auto.NavigationScreen;
import net.osmand.plus.auto.screens.NavigationScreen;
import net.osmand.plus.auto.NavigationSession;
import net.osmand.plus.backup.BackupHelper;
import net.osmand.plus.backup.NetworkSettingsHelper;
Expand Down
2 changes: 1 addition & 1 deletion OsmAnd/src/net/osmand/plus/activities/MapActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@
import net.osmand.plus.routing.RouteCalculationProgressListener;
import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.routing.TransportRoutingHelper.TransportRouteCalculationProgressCallback;
import net.osmand.plus.search.QuickSearchDialogFragment;
import net.osmand.plus.search.dialogs.QuickSearchDialogFragment;
import net.osmand.plus.search.ShowQuickSearchMode;
import net.osmand.plus.settings.backend.ApplicationMode;
import net.osmand.plus.settings.backend.OsmAndAppCustomization.OsmAndAppCustomizationListener;
Expand Down

This file was deleted.

8 changes: 7 additions & 1 deletion OsmAnd/src/net/osmand/plus/auto/NavigationSession.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,13 @@
import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.auto.RequestPermissionScreen.LocationPermissionCheckCallback;
import net.osmand.plus.auto.screens.RequestPermissionScreen;
import net.osmand.plus.auto.screens.RequestPermissionScreen.LocationPermissionCheckCallback;
import net.osmand.plus.auto.screens.LandingScreen;
import net.osmand.plus.auto.screens.NavigationScreen;
import net.osmand.plus.auto.screens.RequestPurchaseScreen;
import net.osmand.plus.auto.screens.SearchResultsScreen;
import net.osmand.plus.auto.screens.SettingsScreen;
import net.osmand.plus.inapp.InAppPurchaseUtils;
import net.osmand.plus.routing.IRouteInformationListener;
import net.osmand.plus.settings.backend.ApplicationMode;
Expand Down
47 changes: 9 additions & 38 deletions OsmAnd/src/net/osmand/plus/auto/SearchHelper.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package net.osmand.plus.auto;

import static android.text.Spanned.SPAN_INCLUSIVE_INCLUSIVE;
import static net.osmand.search.core.SearchCoreFactory.SEARCH_AMENITY_TYPE_PRIORITY;

import android.graphics.drawable.Drawable;
import android.text.SpannableString;
Expand All @@ -19,18 +18,13 @@

import net.osmand.Location;
import net.osmand.data.LatLon;
import net.osmand.osm.AbstractPoiType;
import net.osmand.osm.PoiType;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.helpers.SearchHistoryHelper;
import net.osmand.plus.poi.PoiUIFilter;
import net.osmand.plus.search.SearchUtils;
import net.osmand.plus.search.listitems.QuickSearchListItem;
import net.osmand.plus.settings.enums.HistorySource;
import net.osmand.plus.utils.AndroidUtils;
import net.osmand.plus.utils.OsmAndFormatter;
import net.osmand.search.SearchUICore;
import net.osmand.search.core.ObjectType;
import net.osmand.search.core.SearchPhrase;
import net.osmand.search.core.SearchResult;
import net.osmand.search.core.SearchSettings;
Expand Down Expand Up @@ -70,11 +64,11 @@ public interface SearchHelperListener {
void onClickSearchMore();

void onSearchDone(@NonNull SearchPhrase phrase, @Nullable List<SearchResult> searchResults,
@Nullable ItemList itemList, int resultsCount);
@Nullable ItemList itemList, int resultsCount);
}

SearchHelper(@NonNull OsmandApplication app, boolean showDescription, int contentLimit,
int minSearchRadiusLevel, int maxSearchRadiusLevel, boolean silentRadiusSearchIncrement) {
public SearchHelper(@NonNull OsmandApplication app, boolean showDescription, int contentLimit,
int minSearchRadiusLevel, int maxSearchRadiusLevel, boolean silentRadiusSearchIncrement) {
this.app = app;
this.searchUICore = app.getSearchUICore().getCore();
this.showDescription = showDescription;
Expand Down Expand Up @@ -125,6 +119,7 @@ public void setListener(SearchHelperListener listener) {
this.listener = listener;
}

@NonNull
public SearchSettings setupSearchSettings(boolean resetPhrase) {
Location location = app.getLocationProvider().getLastKnownLocation();
SearchUICore core = app.getSearchUICore().getCore();
Expand Down Expand Up @@ -247,33 +242,9 @@ public void runSearch(@NonNull String query) {
searchUICore.search(searchQuery, true, null, searchSettings);
}

public void completeQueryWithObject(@NonNull SearchResult sr) {
if (sr.object instanceof AbstractPoiType) {
SearchHistoryHelper.getInstance(app).addNewItemToHistory((AbstractPoiType) sr.object, HistorySource.SEARCH);
} else if (sr.object instanceof PoiUIFilter) {
SearchHistoryHelper.getInstance(app).addNewItemToHistory((PoiUIFilter) sr.object, HistorySource.SEARCH);
}
if (sr.object instanceof PoiType && ((PoiType) sr.object).isAdditional()) {
PoiType additional = (PoiType) sr.object;
AbstractPoiType parent = additional.getParentType();
if (parent != null) {
PoiUIFilter custom = app.getPoiFilters().getFilterById(PoiUIFilter.STD_PREFIX + parent.getKeyName());
if (custom != null) {
custom.clearFilter();
custom.updateTypesToAccept(parent);
custom.setFilterByName(additional.getKeyName().replace('_', ':').toLowerCase());

SearchPhrase phrase = searchUICore.getPhrase();
sr = new SearchResult(phrase);
sr.localeName = custom.getName();
sr.object = custom;
sr.priority = SEARCH_AMENITY_TYPE_PRIORITY;
sr.priorityDistance = 0;
sr.objectType = ObjectType.POI_TYPE;
}
}
}
searchUICore.selectSearchResult(sr);
public void completeQueryWithObject(@NonNull SearchResult result) {
SearchUtils.selectSearchResult(app, result);

String searchQuery = searchUICore.getPhrase().getText(true);
if (searchRadiusLevel != 1) {
searchRadiusLevel = minSearchRadiusLevel;
Expand All @@ -283,7 +254,7 @@ public void completeQueryWithObject(@NonNull SearchResult sr) {

@Nullable
public Row.Builder buildSearchRow(@Nullable LatLon searchLocation, @Nullable LatLon placeLocation,
@NonNull String name, @Nullable Drawable icon, @Nullable String typeName) {
@NonNull String name, @Nullable Drawable icon, @Nullable String typeName) {
Row.Builder builder = new Row.Builder();
if (icon != null) {
builder.setImage(new CarIcon.Builder(IconCompat.createWithBitmap(AndroidUtils.drawableToBitmap(icon))).build());
Expand Down
3 changes: 2 additions & 1 deletion OsmAnd/src/net/osmand/plus/auto/SurfaceRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import net.osmand.plus.AppInitializer;
import net.osmand.plus.OsmAndConstants;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.auto.views.CarSurfaceView;
import net.osmand.plus.helpers.MapDisplayPositionManager;
import net.osmand.plus.plugins.PluginsHelper;
import net.osmand.plus.views.OsmandMapTileView;
Expand Down Expand Up @@ -67,7 +68,7 @@ public void setCallback(@Nullable SurfaceRendererCallback callback) {
this.callback = callback;
}

interface SurfaceRendererCallback {
public interface SurfaceRendererCallback {
void onFrameRendered(@NonNull Canvas canvas, @NonNull Rect visibleArea, @NonNull Rect stableArea);
}

Expand Down
2 changes: 1 addition & 1 deletion OsmAnd/src/net/osmand/plus/auto/TripHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ private Bitmap drawableToBitmap(@NonNull Drawable drawable, int width, int heigh
return bitmap;
}

static Distance getDistance(@NonNull OsmandApplication app, double meters) {
public static Distance getDistance(@NonNull OsmandApplication app, double meters) {
MetricsConstants mc = app.getSettings().METRIC_SYSTEM.get();
int displayUnit;
float mainUnitInMeters;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package net.osmand.plus.auto
package net.osmand.plus.auto.screens

import androidx.car.app.CarContext
import androidx.car.app.Screen
Expand All @@ -13,8 +13,7 @@ import net.osmand.plus.R
import net.osmand.search.core.SearchResult
import net.osmand.util.Algorithms

abstract class BaseOsmAndAndroidAutoScreen(
carContext: CarContext) : Screen(carContext) {
abstract class BaseAndroidAutoScreen(carContext: CarContext) : Screen(carContext) {

protected val app: OsmandApplication
get() {
Expand All @@ -30,9 +29,11 @@ abstract class BaseOsmAndAndroidAutoScreen(

private fun initContentLimit() {
val manager = carContext.getCarService(
ConstraintManager::class.java)
ConstraintManager::class.java
)
contentLimit = DEFAULT_CONTENT_LIMIT.coerceAtMost(
manager.getContentLimit(getConstraintLimitType()))
manager.getContentLimit(getConstraintLimitType())
)
}

protected open fun getConstraintLimitType(): Int {
Expand All @@ -41,7 +42,8 @@ abstract class BaseOsmAndAndroidAutoScreen(

protected fun openRoutePreview(
settingsAction: Action,
result: SearchResult) {
result: SearchResult
) {
screenManager.pushForResult(
RoutePreviewScreen(carContext, settingsAction, result)
) { obj: Any? ->
Expand All @@ -68,7 +70,10 @@ abstract class BaseOsmAndAndroidAutoScreen(
.setIcon(
CarIcon.Builder(
IconCompat.createWithResource(
carContext, R.drawable.ic_action_search_dark)).build())
carContext, R.drawable.ic_action_search_dark
)
).build()
)
.setOnClickListener { openSearch() }
.build()

Expand All @@ -77,7 +82,9 @@ abstract class BaseOsmAndAndroidAutoScreen(
screenManager.pushForResult(
SearchScreen(
carContext,
navigationSession.settingsAction)) { _: Any? -> }
navigationSession.settingsAction
)
) { _: Any? -> }
}
}

Expand All @@ -98,7 +105,8 @@ abstract class BaseOsmAndAndroidAutoScreen(
mapRect.bottom,
tileBox.pixWidth,
tileBox.pixHeight,
0)
0
)
mapView.refreshMap()
}
}
Expand Down
28 changes: 28 additions & 0 deletions OsmAnd/src/net/osmand/plus/auto/screens/BaseSearchScreen.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package net.osmand.plus.auto.screens

import androidx.car.app.CarContext
import androidx.car.app.constraints.ConstraintManager
import net.osmand.plus.auto.SearchHelper
import net.osmand.plus.auto.SearchHelper.SearchHelperListener
import net.osmand.search.core.SearchCoreFactory.MAX_DEFAULT_SEARCH_RADIUS

abstract class BaseSearchScreen(carContext: CarContext) : BaseAndroidAutoScreen(carContext),
SearchHelperListener {

protected var loading = false
protected val searchHelper: SearchHelper by lazy(::createSearchHelper)

override fun getConstraintLimitType(): Int {
return ConstraintManager.CONTENT_LIMIT_TYPE_PLACE_LIST
}

private fun createSearchHelper(): SearchHelper {
val searchHelper = SearchHelper(
app, true, contentLimit, 2,
MAX_DEFAULT_SEARCH_RADIUS, false
)
searchHelper.listener = this
searchHelper.setupSearchSettings(true)
return searchHelper
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package net.osmand.plus.auto
package net.osmand.plus.auto.screens

import androidx.car.app.CarContext
import androidx.car.app.constraints.ConstraintManager
Expand All @@ -13,7 +13,7 @@ import net.osmand.plus.utils.AndroidUtils

class FavoriteGroupsScreen(
carContext: CarContext,
private val settingsAction: Action) : BaseOsmAndAndroidAutoScreen(carContext) {
private val settingsAction: Action) : BaseAndroidAutoScreen(carContext) {

init {
lifecycle.addObserver(object : DefaultLifecycleObserver {
Expand Down Expand Up @@ -79,7 +79,8 @@ class FavoriteGroupsScreen(
FavoritesScreen(
carContext,
settingsAction,
group))
group)
)
}

private val favoriteGroups: List<FavoriteGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package net.osmand.plus.auto;
package net.osmand.plus.auto.screens;

import static android.text.Spanned.SPAN_INCLUSIVE_INCLUSIVE;

Expand Down Expand Up @@ -28,11 +28,12 @@
import net.osmand.data.LatLon;
import net.osmand.data.QuadRect;
import net.osmand.plus.R;
import net.osmand.plus.auto.NavigationSession;
import net.osmand.plus.auto.TripHelper;
import net.osmand.plus.myplaces.favorites.FavoriteGroup;
import net.osmand.plus.settings.backend.OsmandSettings;
import net.osmand.plus.settings.enums.CompassMode;
import net.osmand.plus.utils.AndroidUtils;
import net.osmand.plus.views.MapLayers;
import net.osmand.plus.views.PointImageDrawable;
import net.osmand.plus.views.layers.FavouritesLayer;
import net.osmand.plus.views.layers.base.OsmandMapLayer;
Expand All @@ -48,7 +49,7 @@
/**
* Screen for showing a list of favorite places.
*/
public final class FavoritesScreen extends BaseOsmAndAndroidAutoScreen {
public final class FavoritesScreen extends BaseAndroidAutoScreen {
private static final String TAG = "NavigationDemo";

@NonNull
Expand Down