[android] Added connection check before showing the date picker for booking

This commit is contained in:
alexzatsepin 2020-08-14 17:32:08 +03:00 committed by Tatiana Yan
parent abd3dc2beb
commit ec230b6191
4 changed files with 60 additions and 5 deletions

View file

@ -111,6 +111,7 @@ import com.mapswithme.maps.routing.RoutingPlanFragment;
import com.mapswithme.maps.routing.RoutingPlanInplaceController;
import com.mapswithme.maps.search.BookingFilterParams;
import com.mapswithme.maps.search.FilterActivity;
import com.mapswithme.maps.search.FilterUtils;
import com.mapswithme.maps.search.FloatingSearchToolbarController;
import com.mapswithme.maps.search.HotelsFilter;
import com.mapswithme.maps.search.NativeSearchListener;
@ -2582,6 +2583,8 @@ public class MwmActivity extends BaseMwmFragmentActivity
BookmarkManager.INSTANCE.getCatalogFrontendUrl(UTM.UTM_NONE));
else if (requestCode == REQ_CODE_ISOLINES_ERROR)
startActivity(new Intent(this, DownloaderActivity.class));
else if (requestCode == FilterUtils.REQ_CODE_NO_NETWORK_CONNECTION_DIALOG)
Utils.showSystemSettings(this);
}
@Override

View file

@ -5,12 +5,15 @@ import android.content.Context;
import androidx.annotation.IntDef;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import com.google.android.material.datepicker.CalendarConstraints;
import com.google.android.material.datepicker.CompositeDateValidator;
import com.google.android.material.datepicker.DateValidatorPointBackward;
import com.google.android.material.datepicker.DateValidatorPointForward;
import com.google.android.material.datepicker.MaterialDatePicker;
import com.mapswithme.maps.R;
import com.mapswithme.maps.dialog.AlertDialog;
import com.mapswithme.util.Utils;
import java.lang.annotation.Retention;
@ -27,9 +30,11 @@ import java.util.concurrent.TimeUnit;
public class FilterUtils
{
public static final int REQ_CODE_NO_NETWORK_CONNECTION_DIALOG = 301;
private static final int MAX_STAYING_DAYS = 30;
private static final int MAX_CHECKIN_WINDOW_IN_DAYS = 365;
private static final String DAY_OF_MONTH_PATTERN = "MMM d";
private static final String NO_NETWORK_CONNECTION_DIALOG_TAG = "no_network_connection_dialog";
@Retention(RetentionPolicy.SOURCE)
@IntDef({ RATING_ANY, RATING_GOOD, RATING_VERYGOOD, RATING_EXCELLENT })
@ -260,4 +265,22 @@ public class FilterUtils
dayAfter.add(Calendar.DAY_OF_YEAR, 1);
return dayAfter.getTimeInMillis();
}
public static void showNoNetworkConnectionDialog(@NonNull AppCompatActivity activity)
{
Fragment fragment = activity.getSupportFragmentManager()
.findFragmentByTag(NO_NETWORK_CONNECTION_DIALOG_TAG);
if (fragment != null)
return;
AlertDialog dialog = new AlertDialog.Builder()
.setTitleId(R.string.choose_dates_online_only_dialog_title)
.setMessageId(R.string.choose_dates_online_only_dialog_message)
.setPositiveBtnId(R.string.choose_dates_online_only_dialog_cta)
.setNegativeBtnId(R.string.cancel)
.setFragManagerStrategyType(AlertDialog.FragManagerStrategyType.ACTIVITY_FRAGMENT_MANAGER)
.setReqCode(REQ_CODE_NO_NETWORK_CONNECTION_DIALOG)
.build();
dialog.show(activity, NO_NETWORK_CONNECTION_DIALOG_TAG);
}
}

View file

@ -3,26 +3,29 @@ package com.mapswithme.maps.search;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StyleRes;
import androidx.core.app.NavUtils;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.core.app.NavUtils;
import com.mapswithme.maps.R;
import com.mapswithme.maps.base.CustomNavigateUpListener;
import com.mapswithme.maps.base.BaseMwmFragmentActivity;
import com.mapswithme.maps.base.CustomNavigateUpListener;
import com.mapswithme.maps.base.OnBackPressListener;
import com.mapswithme.maps.purchase.PurchaseCallback;
import com.mapswithme.maps.dialog.AlertDialogCallback;
import com.mapswithme.maps.purchase.AdsRemovalPurchaseControllerProvider;
import com.mapswithme.maps.purchase.PurchaseCallback;
import com.mapswithme.maps.purchase.PurchaseController;
import com.mapswithme.maps.purchase.PurchaseFactory;
import com.mapswithme.util.ThemeUtils;
import com.mapswithme.util.Utils;
public class SearchActivity extends BaseMwmFragmentActivity
implements CustomNavigateUpListener, AdsRemovalPurchaseControllerProvider
implements CustomNavigateUpListener, AdsRemovalPurchaseControllerProvider,
AlertDialogCallback
{
public static final String EXTRA_QUERY = "search_query";
public static final String EXTRA_LOCALE = "locale";
@ -144,4 +147,23 @@ public class SearchActivity extends BaseMwmFragmentActivity
{
return mAdsRemovalPurchaseController;
}
@Override
public void onAlertDialogPositiveClick(int requestCode, int which)
{
if (requestCode == FilterUtils.REQ_CODE_NO_NETWORK_CONNECTION_DIALOG)
Utils.showSystemSettings(this);
}
@Override
public void onAlertDialogNegativeClick(int requestCode, int which)
{
// No op.
}
@Override
public void onAlertDialogCancel(int requestCode)
{
// No op.
}
}

View file

@ -23,6 +23,7 @@ import com.google.android.material.datepicker.MaterialPickerOnPositiveButtonClic
import com.mapswithme.maps.R;
import com.mapswithme.maps.search.BookingFilterParams;
import com.mapswithme.maps.search.FilterUtils;
import com.mapswithme.util.ConnectionState;
import com.mapswithme.util.InputUtils;
import com.mapswithme.util.StringUtils;
import com.mapswithme.util.UiUtils;
@ -68,6 +69,12 @@ public class SearchToolbarController extends ToolbarController
@NonNull
private final View.OnClickListener mChooseDatesClickListener = v -> {
if (!ConnectionState.isConnected())
{
FilterUtils.showNoNetworkConnectionDialog((AppCompatActivity) getActivity());
return;
}
MaterialDatePicker.Builder<Pair<Long, Long>> builder
= MaterialDatePicker.Builder.dateRangePicker();
CalendarConstraints.Builder constraintsBuilder = FilterUtils.createDateConstraintsBuilder();