Skip to content

Commit

Permalink
Merge pull request #18793 from osmandapp/search_aa
Browse files Browse the repository at this point in the history
Clean up search and android auto screens
  • Loading branch information
Chumva committed Dec 21, 2023
2 parents 2588255 + e193d5e commit b735bd5
Show file tree
Hide file tree
Showing 60 changed files with 465 additions and 386 deletions.
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

0 comments on commit b735bd5

Please sign in to comment.