Skip to content

Commit

Permalink
[android-auto] New UI
Browse files Browse the repository at this point in the history
Signed-off-by: Andrew Shkrob <[email protected]>
  • Loading branch information
AndrewShkrob authored and rtsisyk committed May 16, 2024
1 parent a7127cc commit 93db820
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 18 deletions.
2 changes: 1 addition & 1 deletion android/app/src/main/java/app/organicmaps/Map.java
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ private void setupWidgets(final Context context, int width, int height)
}
else
{
nativeSetupWidget(WIDGET_SCALE_FPS_LABEL, UiUtils.dimen(context, R.dimen.margin_base), mHeight - UiUtils.dimen(context, R.dimen.margin_base) * 5, ANCHOR_LEFT_TOP);
nativeSetupWidget(WIDGET_SCALE_FPS_LABEL, (float) mWidth / 2 + UiUtils.dimen(context, R.dimen.margin_base) * 2, UiUtils.dimen(context, R.dimen.margin_base), ANCHOR_LEFT_TOP);
updateCompassOffset(context, mWidth, mCurrentCompassOffsetY, true);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
import androidx.car.app.constraints.ConstraintManager;
import androidx.car.app.model.Action;
import androidx.car.app.model.CarIcon;
import androidx.car.app.model.GridItem;
import androidx.car.app.model.GridTemplate;
import androidx.car.app.model.Header;
import androidx.car.app.model.ItemList;
import androidx.car.app.model.ListTemplate;
import androidx.car.app.model.Row;
import androidx.car.app.model.Template;
import androidx.car.app.navigation.model.MapWithContentTemplate;
import androidx.core.graphics.drawable.IconCompat;
Expand Down Expand Up @@ -70,14 +70,14 @@ private Header createHeader()
}

@NonNull
private ListTemplate createCategoriesListTemplate()
private GridTemplate createCategoriesListTemplate()
{
final boolean isNightMode = ThemeUtils.isNightMode(getCarContext());
final ItemList.Builder builder = new ItemList.Builder();
final int categoriesSize = Math.min(CATEGORIES.size(), MAX_CATEGORIES_SIZE);
for (int i = 0; i < categoriesSize; ++i)
{
final Row.Builder itemBuilder = new Row.Builder();
final GridItem.Builder itemBuilder = new GridItem.Builder();
final String title = getCarContext().getString(CATEGORIES.get(i).nameResId);
@DrawableRes final int iconResId = isNightMode ? CATEGORIES.get(i).iconNightResId : CATEGORIES.get(i).iconResId;

Expand All @@ -86,6 +86,6 @@ private ListTemplate createCategoriesListTemplate()
itemBuilder.setOnClickListener(() -> getScreenManager().push(new SearchOnMapScreen.Builder(getCarContext(), getSurfaceRenderer()).setCategory(title).build()));
builder.addItem(itemBuilder.build());
}
return new ListTemplate.Builder().setHeader(createHeader()).setSingleList(builder.build()).build();
return new GridTemplate.Builder().setHeader(createHeader()).setSingleList(builder.build()).build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
import androidx.car.app.model.Action;
import androidx.car.app.model.ActionStrip;
import androidx.car.app.model.CarIcon;
import androidx.car.app.model.GridItem;
import androidx.car.app.model.GridTemplate;
import androidx.car.app.model.Header;
import androidx.car.app.model.Item;
import androidx.car.app.model.ItemList;
import androidx.car.app.model.ListTemplate;
import androidx.car.app.model.Row;
import androidx.car.app.model.Template;
import androidx.car.app.navigation.model.MapWithContentTemplate;
import androidx.core.graphics.drawable.IconCompat;
Expand All @@ -19,6 +19,7 @@
import app.organicmaps.car.screens.base.BaseMapScreen;
import app.organicmaps.car.screens.bookmarks.BookmarkCategoriesScreen;
import app.organicmaps.car.screens.search.SearchScreen;
import app.organicmaps.car.screens.settings.SettingsScreen;
import app.organicmaps.car.util.SuggestionsHelpers;
import app.organicmaps.car.util.UiHelpers;

Expand All @@ -38,7 +39,7 @@ public Template onGetTemplate()
final MapWithContentTemplate.Builder builder = new MapWithContentTemplate.Builder();
builder.setMapController(UiHelpers.createMapController(getCarContext(), getSurfaceRenderer()));
builder.setActionStrip(createActionStrip());
builder.setContentTemplate(createListTemplate());
builder.setContentTemplate(createGridTemplate());
return builder.build();
}

Expand All @@ -60,19 +61,19 @@ private ActionStrip createActionStrip()

final ActionStrip.Builder builder = new ActionStrip.Builder();
builder.addAction(freeDriveScreenBuilder.build());
builder.addAction(UiHelpers.createSettingsAction(this, getSurfaceRenderer()));
return builder.build();
}

@NonNull
private ListTemplate createListTemplate()
private GridTemplate createGridTemplate()
{
final ListTemplate.Builder builder = new ListTemplate.Builder();
final GridTemplate.Builder builder = new GridTemplate.Builder();

final ItemList.Builder itemsBuilder = new ItemList.Builder();
itemsBuilder.addItem(createSearchItem());
itemsBuilder.addItem(createCategoriesItem());
itemsBuilder.addItem(createBookmarksItem());
itemsBuilder.addItem(createSettingsItem());

builder.setHeader(createHeader());
builder.setSingleList(itemsBuilder.build());
Expand All @@ -84,34 +85,49 @@ private Item createSearchItem()
{
final CarIcon iconSearch = new CarIcon.Builder(IconCompat.createWithResource(getCarContext(), R.drawable.ic_search)).build();

final Row.Builder builder = new Row.Builder();
final GridItem.Builder builder = new GridItem.Builder();
builder.setTitle(getCarContext().getString(R.string.search));
builder.setImage(iconSearch);
builder.setBrowsable(true);
builder.setOnClickListener(this::openSearch);
return builder.build();
}

@NonNull
private Item createCategoriesItem()
{
final Row.Builder builder = new Row.Builder();
final CarIcon iconCategories = new CarIcon.Builder(IconCompat.createWithResource(getCarContext(), R.drawable.ic_address)).build();

final GridItem.Builder builder = new GridItem.Builder();
builder.setImage(iconCategories);
builder.setTitle(getCarContext().getString(R.string.categories));
builder.setBrowsable(true);
builder.setOnClickListener(this::openCategories);
return builder.build();
}

@NonNull
private Item createBookmarksItem()
{
final Row.Builder builder = new Row.Builder();
final CarIcon iconBookmarks = new CarIcon.Builder(IconCompat.createWithResource(getCarContext(), R.drawable.ic_bookmarks)).build();

final GridItem.Builder builder = new GridItem.Builder();
builder.setImage(iconBookmarks);
builder.setTitle(getCarContext().getString(R.string.bookmarks));
builder.setBrowsable(true);
builder.setOnClickListener(this::openBookmarks);
return builder.build();
}

@NonNull
private Item createSettingsItem()
{
final CarIcon iconSettings = new CarIcon.Builder(IconCompat.createWithResource(getCarContext(), R.drawable.ic_settings)).build();

final GridItem.Builder builder = new GridItem.Builder();
builder.setImage(iconSettings);
builder.setTitle(getCarContext().getString(R.string.settings));
builder.setOnClickListener(this::openSettings);
return builder.build();
}

private void openSearch()
{
// Details in UiHelpers.createSettingsAction()
Expand All @@ -135,4 +151,12 @@ private void openBookmarks()
return;
getScreenManager().push(new BookmarkCategoriesScreen(getCarContext(), getSurfaceRenderer()));
}

private void openSettings()
{
// Details in UiHelpers.createSettingsAction()
if (getScreenManager().getTop() != this)
return;
getScreenManager().push(new SettingsScreen(getCarContext(), getSurfaceRenderer()));
}
}

0 comments on commit 93db820

Please sign in to comment.