Merge branch 'r3.3'

This commit is contained in:
Chumva 2019-04-01 18:53:11 +03:00
commit a70272582c
9 changed files with 118 additions and 36 deletions

View file

@ -3,7 +3,7 @@
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="@color/active_buttons_and_links_dark" />
<corners android:radius="18dp" />
<corners android:radius="@dimen/route_info_button_bg_line_radius" />
</shape>
</item>
</ripple>

View file

@ -3,7 +3,7 @@
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="@color/active_buttons_and_links_light" />
<corners android:radius="18dp" />
<corners android:radius="@dimen/route_info_button_bg_line_radius" />
</shape>
</item>
</ripple>

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:osmand="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/route_details_legend"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/route_info_legend_item_size"
android:orientation="horizontal"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding">
<ImageView
android:id="@+id/legend_icon_color"
android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
tools:src="@drawable/ic_action_circle" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/legend_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:maxLines="2"
android:textColor="?attr/main_font_color_basic"
android:textSize="@dimen/default_list_text_size"
osmand:typeface="@string/font_roboto_regular"
tools:text="Unpaved 13.4 km" />
</LinearLayout>

View file

@ -10,12 +10,14 @@
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/content_padding">
android:paddingTop="@dimen/route_info_card_details_margin"
android:paddingBottom="@dimen/route_info_card_details_margin">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/info_type_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:gravity="center"
android:letterSpacing="@dimen/text_button_letter_spacing"
@ -23,26 +25,49 @@
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding"
android:textColor="?attr/main_font_color_basic"
android:textSize="@dimen/text_button_text_size"
android:textSize="@dimen/default_list_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:ignore="UnusedAttribute"
tools:text="@string/route_class_stat_container" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/info_type_details"
<LinearLayout
android:id="@+id/info_type_details_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:gravity="center"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:maxLines="1"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding"
android:text="@string/rendering_category_details"
android:textSize="@dimen/text_button_text_size"
android:textColor="?attr/active_color_basic"
osmand:typeface="@string/font_roboto_medium"
tools:ignore="UnusedAttribute" />
android:background="?attr/selectableItemBackground"
android:orientation="horizontal"
android:paddingStart="@dimen/bottom_sheet_content_margin_small"
android:paddingLeft="@dimen/bottom_sheet_content_margin_small"
android:paddingEnd="@dimen/content_padding"
android:paddingRight="@dimen/content_padding">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/info_type_details"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:letterSpacing="@dimen/text_button_letter_spacing"
android:maxLines="1"
android:paddingLeft="@dimen/bottom_sheet_content_margin_small"
android:paddingTop="@dimen/bottom_sheet_image_text_margin_start"
android:paddingRight="@dimen/bottom_sheet_content_margin_small"
android:paddingBottom="@dimen/bottom_sheet_image_text_margin_start"
android:text="@string/rendering_category_details"
android:textColor="?attr/active_color_basic"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:ignore="UnusedAttribute" />
<ImageView
android:id="@+id/up_down_icon"
android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size"
android:layout_gravity="center"
tools:src="@drawable/ic_action_arrow_down"
tools:tint="@color/description_font_and_bottom_sheet_icons" />
</LinearLayout>
</FrameLayout>

View file

@ -191,9 +191,11 @@
<dimen name="route_info_list_text_padding">78dp</dimen>
<dimen name="route_info_legend_padding">12dp</dimen>
<dimen name="route_info_warning_padding">27dp</dimen>
<dimen name="route_info_chart_height">78dp</dimen>
<dimen name="route_info_chart_height">106dp</dimen>
<dimen name="route_info_control_buttons_height">72dp</dimen>
<dimen name="route_info_button_bg_line_radius">27dp</dimen>
<dimen name="route_info_card_details_margin">13dp</dimen>
<dimen name="route_info_legend_item_size">60dp</dimen>
<dimen name="multi_selection_header_height">78dp</dimen>

View file

@ -284,10 +284,12 @@
<dimen name="route_info_list_text_padding">54dp</dimen>
<dimen name="route_info_legend_padding">8dp</dimen>
<dimen name="route_info_warning_padding">18dp</dimen>
<dimen name="route_info_chart_height">52dp</dimen>
<dimen name="route_info_chart_height">71dp</dimen>
<dimen name="route_info_toolbar_button_size">40dp</dimen>
<dimen name="route_info_control_buttons_height">48dp</dimen>
<dimen name="route_info_button_bg_line_radius">18dp</dimen>
<dimen name="route_info_card_details_margin">9dp</dimen>
<dimen name="route_info_legend_item_size">40dp</dimen>
<dimen name="multi_selection_header_height">52dp</dimen>

View file

@ -179,7 +179,7 @@ public abstract class MenuBottomSheetDialogFragment extends BottomSheetDialogFra
}
final int screenHeight = AndroidUtils.getScreenHeight(activity);
final int statusBarHeight = AndroidUtils.getStatusBarHeight(activity);
final int contentHeight = getContentHeight(screenHeight - statusBarHeight - AndroidUtils.getNavBarHeight(activity));
final int contentHeight = getContentHeight(screenHeight - statusBarHeight);
mainView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override

View file

@ -363,6 +363,7 @@ public class RouteDetailsFragment extends ContextMenuFragment implements PublicT
private void createRouteCard(LinearLayout cardsContainer, RouteInfoCard routeInfoCard) {
OsmandApplication app = requireMyApplication();
menuCards.add(routeInfoCard);
routeInfoCard.setListener(this);
cardsContainer.addView(routeInfoCard.build(app));
buildRowDivider(cardsContainer, false);
}
@ -1499,6 +1500,7 @@ public class RouteDetailsFragment extends ContextMenuFragment implements PublicT
@Override
public void onCardLayoutNeeded(@NonNull BaseCard card) {
runLayoutListener();
}
@Override

View file

@ -1,19 +1,20 @@
package net.osmand.plus.routepreparationmenu.cards;
import android.graphics.drawable.Drawable;
import android.support.v4.content.ContextCompat;
import android.support.v7.view.ContextThemeWrapper;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.StyleSpan;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.github.mikephil.charting.charts.HorizontalBarChart;
import com.github.mikephil.charting.data.BarData;
import net.osmand.AndroidUtils;
import net.osmand.GPXUtilities;
import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.R;
@ -39,6 +40,8 @@ public class RouteInfoCard extends BaseCard {
private Statistics routeStatistics;
private GPXUtilities.GPXTrackAnalysis analysis;
private boolean showLegend;
public RouteInfoCard(MapActivity mapActivity, Statistics routeStatistics, GPXUtilities.GPXTrackAnalysis analysis) {
super(mapActivity);
this.routeStatistics = routeStatistics;
@ -54,11 +57,28 @@ public class RouteInfoCard extends BaseCard {
protected void updateContent() {
updateHeader();
final HorizontalBarChart chart = (HorizontalBarChart) view.findViewById(R.id.chart);
GpxUiHelper.setupHorizontalGPXChart(app, chart, 5, 10, 10, true, nightMode);
GpxUiHelper.setupHorizontalGPXChart(app, chart, 5, 9, 24, true, nightMode);
BarData barData = GpxUiHelper.buildStatisticChart(app, chart, routeStatistics, analysis, true, nightMode);
chart.setData(barData);
LinearLayout container = view.findViewById(R.id.route_items);
attachLegend(container, routeStatistics);
final LinearLayout container = (LinearLayout) view.findViewById(R.id.route_items);
container.removeAllViews();
if (showLegend) {
attachLegend(container, routeStatistics);
}
final ImageView iconViewCollapse = (ImageView) view.findViewById(R.id.up_down_icon);
iconViewCollapse.setImageDrawable(getCollapseIcon(!showLegend));
view.findViewById(R.id.info_type_details_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showLegend = !showLegend;
updateContent();
setLayoutNeeded();
}
});
}
private Drawable getCollapseIcon(boolean collapsed) {
return collapsed ? getContentIcon(R.drawable.ic_action_arrow_down) : getActiveIcon(R.drawable.ic_action_arrow_up);
}
private void updateHeader() {
@ -85,24 +105,21 @@ public class RouteInfoCard extends BaseCard {
Map<E, RouteSegmentAttribute<E>> partition = routeStatistics.getPartition();
List<E> list = new ArrayList<E>(partition.keySet());
sortRouteSegmentAttributes(list);
ContextThemeWrapper ctx = new ContextThemeWrapper(mapActivity, !nightMode ? R.style.OsmandLightTheme : R.style.OsmandDarkTheme);
LayoutInflater inflater = LayoutInflater.from(ctx);
for (E key : list) {
RouteSegmentAttribute<E> segment = partition.get(key);
int color = segment.getColor();
Drawable circle = app.getUIUtilities().getPaintedIcon(R.drawable.ic_action_circle, color);
View view = inflater.inflate(R.layout.route_details_legend, container, false);
Drawable circle = app.getUIUtilities().getPaintedIcon(R.drawable.ic_action_circle, segment.getColor());
ImageView legendIcon = (ImageView) view.findViewById(R.id.legend_icon_color);
legendIcon.setImageDrawable(circle);
String propertyName = segment.getPropertyName();
String name = SettingsNavigationActivity.getStringPropertyName(app, propertyName, propertyName.replaceAll("_", " "));
Spannable text = getSpanLegend(name, segment);
TextView legend = new TextView(app);
legend.setTextColor(getMainFontColor());
legend.setTextSize(15);
legend.setGravity(Gravity.CENTER_VERTICAL);
legend.setCompoundDrawablePadding(AndroidUtils.dpToPx(app, 16));
legend.setPadding(AndroidUtils.dpToPx(app, 16), AndroidUtils.dpToPx(app, 4), AndroidUtils.dpToPx(app, 16), AndroidUtils.dpToPx(app, 4));
legend.setCompoundDrawablesWithIntrinsicBounds(circle, null, null, null);
TextView legend = (TextView) view.findViewById(R.id.legend_text);
legend.setText(text);
container.addView(legend);
container.addView(view);
}
}