forked from organicmaps/organicmaps
[android] Added connection check before showing the date picker for booking
This commit is contained in:
parent
abd3dc2beb
commit
ec230b6191
4 changed files with 60 additions and 5 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Add table
Reference in a new issue