Added indeterminate progress bar for public transport routing

This commit is contained in:
crimean 2019-04-11 11:05:35 +03:00
parent 052d976b08
commit 83a2f7abef
7 changed files with 79 additions and 71 deletions

View file

@ -412,9 +412,9 @@ dependencies {
// turn off for now
//implementation 'com.atilika.kuromoji:kuromoji-ipadic:0.9.0'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'me.zhanghai.android.materialprogressbar:library:1.4.2'
// JS core
implementation group: 'org.mozilla', name: 'rhino', version: '1.7.9'
// size restrictions
// implementation 'com.ibm.icu:icu4j:50.1'
// implementation 'net.sf.trove4j:trove4j:3.0.3'

View file

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical">
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:osmand="http://schemas.android.com/apk/res-auto"
android:layout_gravity="bottom"
android:orientation="vertical">
<LinearLayout
android:id="@+id/bottom_controls_container"
@ -184,18 +185,20 @@
android:layout_gravity="center"/>
</LinearLayout>
<ProgressBar
android:id="@+id/map_horizontal_progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_gravity="bottom"
android:layout_height="4dp"
android:max="100"
android:visibility="gone"
tools:progress="60"
tools:visibility="visible" />
<me.zhanghai.android.materialprogressbar.MaterialProgressBar
android:id="@+id/map_horizontal_progress"
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_gravity="bottom"
android:max="100"
android:visibility="gone"
osmand:mpb_progressStyle="horizontal"
osmand:mpb_useIntrinsicPadding="false"
osmand:mpb_setBothDrawables="true"
style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal"
tools:progress="60"
tools:visibility="visible" />
</FrameLayout>

View file

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical">
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:osmand="http://schemas.android.com/apk/res-auto"
android:layout_gravity="bottom"
android:orientation="vertical">
<!--<net.osmand.plus.quickaction.QuickActionsWidget
android:id="@+id/quick_action_widget"
@ -224,16 +225,20 @@
</LinearLayout>
</LinearLayout>
<ProgressBar
<me.zhanghai.android.materialprogressbar.MaterialProgressBar
android:id="@+id/map_horizontal_progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_gravity="bottom"
android:max="100"
android:visibility="gone"
osmand:mpb_progressStyle="horizontal"
osmand:mpb_useIntrinsicPadding="false"
osmand:mpb_setBothDrawables="true"
style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal"
tools:progress="60"
tools:visibility="visible" />
</FrameLayout>

View file

@ -501,16 +501,17 @@
</LinearLayout>
<ProgressBar
<me.zhanghai.android.materialprogressbar.MaterialProgressBar
android:id="@+id/progress_bar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_gravity="bottom"
android:max="100"
android:visibility="gone"
tools:progress="60"
tools:visibility="visible" />
osmand:mpb_progressStyle="horizontal"
osmand:mpb_useIntrinsicPadding="false"
osmand:mpb_setBothDrawables="true"
style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal" />
</FrameLayout>

View file

@ -540,6 +540,8 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
: ContextCompat.getColor(this, R.color.wikivoyage_active_light);
pb.setProgressDrawable(AndroidUtils.createProgressDrawable(bgColor, progressColor));
pb.setIndeterminate(getRoutingHelper().getAppMode() == ApplicationMode.PUBLIC_TRANSPORT);
pb.getIndeterminateDrawable().setColorFilter(progressColor, android.graphics.PorterDuff.Mode.SRC_IN);
}
public ImportHelper getImportHelper() {

View file

@ -383,7 +383,6 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
if (fragmentRef != null && fragment.isVisible()) {
setRouteCalculationInProgress(true);
fragment.updateRouteCalculationProgress(0);
fragment.updateControlButtons();
fragment.updateInfo();
}
}
@ -396,7 +395,6 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
fragment.updateInfo();
}
fragment.updateRouteCalculationProgress(progress);
fragment.updateControlButtons();
}
}
@ -407,7 +405,6 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
if (app != null && fragmentRef != null && fragment.isVisible()) {
boolean routeCalculating = app.getRoutingHelper().isRouteBeingCalculated() || app.getTransportRoutingHelper().isRouteBeingCalculated();
if (setRouteCalculationInProgress(routeCalculating)) {
fragment.updateControlButtons();
fragment.updateInfo();
if (!routeCalculationInProgress) {
fragment.hideRouteCalculationProgressBar();
@ -870,17 +867,33 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
View startButton = mainView.findViewById(R.id.start_button);
TextViewExProgress startButtonText = (TextViewExProgress) mainView.findViewById(R.id.start_button_descr);
boolean publicTransportMode = helper.getAppMode() == ApplicationMode.PUBLIC_TRANSPORT;
boolean routeCalculated = isRouteCalculated();
int iconId = publicTransportMode ? R.drawable.ic_map : R.drawable.ic_action_start_navigation;
int color;
if (isRouteCalculated()) {
AndroidUtils.setBackground(app, startButton, nightMode, R.color.active_buttons_and_links_light, R.color.active_buttons_and_links_dark);
color = nightMode ? R.color.main_font_dark : R.color.card_and_list_background_light;
int color1;
int color2;
if (publicTransportMode) {
if (routeCalculated) {
color1 = nightMode ? R.color.active_buttons_and_links_dark : R.color.active_buttons_and_links_light;
AndroidUtils.setBackground(app, startButton, nightMode, R.color.card_and_list_background_light, R.color.card_and_list_background_dark);
color2 = color1;
} else {
color1 = R.color.description_font_and_bottom_sheet_icons;
AndroidUtils.setBackground(app, startButton, nightMode, R.color.activity_background_light, R.color.activity_background_dark);
color2 = color1;
}
} else {
AndroidUtils.setBackground(app, startButton, nightMode, R.color.activity_background_light, R.color.activity_background_dark);
color = R.color.description_font_and_bottom_sheet_icons;
color1 = nightMode ? R.color.main_font_dark : R.color.card_and_list_background_light;
if (routeCalculated) {
AndroidUtils.setBackground(app, startButton, nightMode, R.color.active_buttons_and_links_light, R.color.active_buttons_and_links_dark);
color2 = nightMode ? R.color.main_font_dark : R.color.card_and_list_background_light;
} else {
AndroidUtils.setBackground(app, startButton, nightMode, R.color.activity_background_light, R.color.activity_background_dark);
color2 = R.color.description_font_and_bottom_sheet_icons;
}
}
startButtonText.color2 = ContextCompat.getColor(app, color);
startButtonText.setCompoundDrawablesWithIntrinsicBounds(app.getUIUtilities().getIcon(iconId, color), null, null, null);
startButtonText.color1 = ContextCompat.getColor(mapActivity, color1);
startButtonText.color2 = ContextCompat.getColor(mapActivity, color2);
startButtonText.setCompoundDrawablesWithIntrinsicBounds(app.getUIUtilities().getIcon(iconId, color2), null, null, null);
if (publicTransportMode) {
startButtonText.setText(R.string.shared_string_show_on_map);
} else if (helper.isFollowingMode() || helper.isPauseNavigation()) {

View file

@ -152,7 +152,6 @@ public class MapRouteInfoMenuFragment extends ContextMenuFragment {
dismiss();
return;
}
updateControlButtons();
updateInfo();
View mainView = getMainView();
if (mainView != null) {
@ -355,6 +354,11 @@ public class MapRouteInfoMenuFragment extends ContextMenuFragment {
}
}
private boolean isPublicTransportMode() {
OsmandApplication app = getMyApplication();
return app != null && app.getRoutingHelper().getAppMode() == ApplicationMode.PUBLIC_TRANSPORT;
}
public void updateRouteCalculationProgress(int progress) {
MapActivity mapActivity = getMapActivity();
View mainView = getMainView();
@ -362,9 +366,12 @@ public class MapRouteInfoMenuFragment extends ContextMenuFragment {
if (mapActivity == null || mainView == null || view == null) {
return;
}
boolean publicTransportMode = isPublicTransportMode();
ProgressBar progressBar = (ProgressBar) mainView.findViewById(R.id.progress_bar);
if (progressBar != null) {
if (progress == 0) {
progressBar.setIndeterminate(publicTransportMode);
}
if (progressBar.getVisibility() != View.VISIBLE) {
progressBar.setVisibility(View.VISIBLE);
}
@ -372,8 +379,9 @@ public class MapRouteInfoMenuFragment extends ContextMenuFragment {
}
ProgressBar progressBarButton = (ProgressBar) view.findViewById(R.id.progress_bar_button);
if (progressBarButton != null) {
if (progressBarButton.getVisibility() != View.VISIBLE) {
progressBarButton.setVisibility(View.VISIBLE);
int visibility = publicTransportMode ? View.GONE : View.VISIBLE;
if (progressBarButton.getVisibility() != visibility) {
progressBarButton.setVisibility(visibility);
}
progressBarButton.setProgress(progress);
}
@ -398,31 +406,8 @@ public class MapRouteInfoMenuFragment extends ContextMenuFragment {
if (progressBarButton != null) {
progressBarButton.setVisibility(View.GONE);
}
int color = isNightMode() ? R.color.main_font_dark : R.color.card_and_list_background_light;
((TextView) view.findViewById(R.id.start_button_descr)).setTextColor(ContextCompat.getColor(mapActivity, color));
}
public void updateControlButtons() {
OsmandApplication app = getMyApplication();
MapActivity mapActivity = getMapActivity();
View view = getView();
if (app != null && mapActivity != null && view != null) {
TextViewExProgress textViewExProgress = (TextViewExProgress) view.findViewById(R.id.start_button_descr);
textViewExProgress.color1 = ContextCompat.getColor(mapActivity, isNightMode() ? R.color.main_font_dark : R.color.card_and_list_background_light);
textViewExProgress.color2 = ContextCompat.getColor(mapActivity, R.color.description_font_and_bottom_sheet_icons);
boolean publicTransportMode = app.getRoutingHelper().getAppMode() == ApplicationMode.PUBLIC_TRANSPORT;
if (menu != null && menu.isRouteCalculated()) {
if (publicTransportMode) {
AndroidUtils.setBackground(app, view.findViewById(R.id.start_button), isNightMode(), R.color.card_and_list_background_light, R.color.card_and_list_background_dark);
textViewExProgress.color1 = ContextCompat.getColor(mapActivity, isNightMode() ? R.color.active_buttons_and_links_dark : R.color.active_buttons_and_links_light);
} else {
AndroidUtils.setBackground(app, view.findViewById(R.id.start_button), isNightMode(), R.color.active_buttons_and_links_light, R.color.active_buttons_and_links_dark);
textViewExProgress.color1 = ContextCompat.getColor(mapActivity, isNightMode() ? R.color.main_font_dark : R.color.card_and_list_background_light);
}
textViewExProgress.percent = 1;
}
}
TextViewExProgress textViewExProgress = (TextViewExProgress) view.findViewById(R.id.start_button_descr);
textViewExProgress.percent = 1;
}
public void show(MapActivity mapActivity) {
@ -495,8 +480,6 @@ public class MapRouteInfoMenuFragment extends ContextMenuFragment {
ctx.setupRouteCalculationProgressBar((ProgressBar) mainView.findViewById(R.id.progress_bar));
setupRouteCalculationButtonProgressBar((ProgressBar) view.findViewById(R.id.progress_bar_button));
updateControlButtons();
}
public static boolean showInstance(final MapActivity mapActivity, int initialMenuState) {
@ -540,6 +523,7 @@ public class MapRouteInfoMenuFragment extends ContextMenuFragment {
int bgColor = ContextCompat.getColor(mapActivity, isNightMode() ? R.color.activity_background_dark : R.color.activity_background_light);
int progressColor = ContextCompat.getColor(mapActivity, isNightMode() ? R.color.active_buttons_and_links_dark : R.color.active_buttons_and_links_light);
pb.setProgressDrawable(AndroidUtils.createProgressDrawable(bgColor, progressColor));
pb.getIndeterminateDrawable().setColorFilter(progressColor, android.graphics.PorterDuff.Mode.SRC_IN);
}
}
}