forked from organicmaps/organicmaps
[android] Added isoLines error ui
This commit is contained in:
parent
d0f84e0597
commit
53d20deb95
5 changed files with 75 additions and 7 deletions
|
@ -69,6 +69,8 @@ import com.mapswithme.maps.location.LocationHelper;
|
|||
import com.mapswithme.maps.maplayer.MapLayerCompositeController;
|
||||
import com.mapswithme.maps.maplayer.Mode;
|
||||
import com.mapswithme.maps.maplayer.OnIsolinesLayerToggleListener;
|
||||
import com.mapswithme.maps.maplayer.isolines.IsolinesManager;
|
||||
import com.mapswithme.maps.maplayer.isolines.IsolinesState;
|
||||
import com.mapswithme.maps.maplayer.subway.OnSubwayLayerToggleListener;
|
||||
import com.mapswithme.maps.maplayer.subway.SubwayManager;
|
||||
import com.mapswithme.maps.maplayer.traffic.OnTrafficLayerToggleListener;
|
||||
|
@ -200,8 +202,10 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
public static final int REQ_CODE_ERROR_DRIVING_OPTIONS_DIALOG = 5;
|
||||
public static final int REQ_CODE_DRIVING_OPTIONS = 6;
|
||||
public static final int REQ_CODE_CATALOG_UNLIMITED_ACCESS = 7;
|
||||
private static final int REQ_CODE_ISOLINES_ERROR = 8;
|
||||
public static final String ERROR_DRIVING_OPTIONS_DIALOG_TAG = "error_driving_options_dialog_tag";
|
||||
public static final String CATALOG_UNLIMITED_ACCESS_DIALOG_TAG = "catalog_unlimited_access_dialog_tag";
|
||||
private static final String ISOLINES_ERROR_DIALOG_TAG = "isolines_dialog_tag";
|
||||
|
||||
// Map tasks that we run AFTER rendering initialized
|
||||
private final Stack<MapTask> mTasks = new Stack<>();
|
||||
|
@ -1223,6 +1227,25 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
mToggleMapLayerController.toggleMode(Mode.ISOLINES);
|
||||
}
|
||||
|
||||
private void onIsolinesStateChanged(@NonNull IsolinesState type)
|
||||
{
|
||||
if (type != IsolinesState.EXPIREDDATA)
|
||||
{
|
||||
type.activate(getApplicationContext());
|
||||
return;
|
||||
}
|
||||
|
||||
com.mapswithme.maps.dialog.AlertDialog dialog = new com.mapswithme.maps.dialog.AlertDialog.Builder()
|
||||
.setTitleId(R.string.title_error_downloading_bookmarks)
|
||||
.setMessageId(R.string.isolines_activation_error_dialog)
|
||||
.setPositiveBtnId(R.string.ok)
|
||||
.setNegativeBtnId(R.string.cancel)
|
||||
.setFragManagerStrategyType(com.mapswithme.maps.dialog.AlertDialog.FragManagerStrategyType.ACTIVITY_FRAGMENT_MANAGER)
|
||||
.setReqCode(REQ_CODE_ISOLINES_ERROR)
|
||||
.build();
|
||||
dialog.show(this, ISOLINES_ERROR_DIALOG_TAG);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onImportStarted(@NonNull String serverId)
|
||||
{
|
||||
|
@ -1406,6 +1429,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
BookmarkManager.INSTANCE.addLoadingListener(this);
|
||||
BookmarkManager.INSTANCE.addCatalogListener(this);
|
||||
RoutingController.get().attach(this);
|
||||
IsolinesManager.from(getApplicationContext()).attach(this::onIsolinesStateChanged);
|
||||
if (MapFragment.nativeIsEngineCreated())
|
||||
LocationHelper.INSTANCE.attach(this);
|
||||
mPlacePageController.onActivityStarted(this);
|
||||
|
@ -1423,6 +1447,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
RoutingController.get().detach();
|
||||
mPlacePageController.onActivityStopped(this);
|
||||
MwmApplication.backgroundTracker(getActivity()).removeListener(this);
|
||||
IsolinesManager.from(getApplicationContext()).detach();
|
||||
}
|
||||
|
||||
@CallSuper
|
||||
|
@ -2453,6 +2478,8 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
BookmarksCatalogActivity.startForResult(this,
|
||||
BookmarkCategoriesActivity.REQ_CODE_DOWNLOAD_BOOKMARK_CATEGORY,
|
||||
BookmarkManager.INSTANCE.getCatalogFrontendUrl(UTM.UTM_NONE));
|
||||
else if (requestCode == REQ_CODE_ISOLINES_ERROR)
|
||||
startActivity(new Intent(this, DownloaderActivity.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
package com.mapswithme.maps.maplayer.isolines;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
public interface IsolinesErrorDialogListener
|
||||
{
|
||||
void onStateChanged(@NonNull IsolinesState type);
|
||||
}
|
|
@ -7,13 +7,14 @@ import androidx.annotation.NonNull;
|
|||
import androidx.annotation.Nullable;
|
||||
import com.mapswithme.maps.Framework;
|
||||
import com.mapswithme.maps.MwmApplication;
|
||||
import com.mapswithme.maps.base.Detachable;
|
||||
import com.mapswithme.maps.base.Initializable;
|
||||
import com.mapswithme.maps.maplayer.subway.OnIsolinesChangedListener;
|
||||
|
||||
public class IsolinesManager implements Initializable<Void>
|
||||
public class IsolinesManager implements Initializable<Void>, Detachable<IsolinesErrorDialogListener>
|
||||
{
|
||||
@NonNull
|
||||
private final OnIsolinesChangedListener mListener;
|
||||
private final OnIsolinesChangedListenerImpl mListener;
|
||||
|
||||
public IsolinesManager(@NonNull Application application)
|
||||
{
|
||||
|
@ -64,4 +65,16 @@ public class IsolinesManager implements Initializable<Void>
|
|||
|
||||
private static native void nativeAddListener(@NonNull OnIsolinesChangedListener listener);
|
||||
private static native void nativeRemoveListener(@NonNull OnIsolinesChangedListener listener);
|
||||
|
||||
@Override
|
||||
public void attach(@NonNull IsolinesErrorDialogListener listener)
|
||||
{
|
||||
mListener.attach(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detach()
|
||||
{
|
||||
mListener.detach();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ public enum IsolinesState
|
|||
EXPIREDDATA
|
||||
{
|
||||
@Override
|
||||
void activate(@NonNull Context context)
|
||||
public void activate(@NonNull Context context)
|
||||
{
|
||||
Toast.makeText(context, R.string.isolines_activation_error_dialog, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -22,14 +22,14 @@ public enum IsolinesState
|
|||
NODATA
|
||||
{
|
||||
@Override
|
||||
void activate(@NonNull Context context)
|
||||
public void activate(@NonNull Context context)
|
||||
{
|
||||
Toast.makeText(context, R.string.isolines_location_error_dialog, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
};
|
||||
|
||||
void activate(@NonNull Context context)
|
||||
public void activate(@NonNull Context context)
|
||||
{
|
||||
/* Do nothing by default */
|
||||
}
|
||||
|
|
|
@ -3,12 +3,14 @@ package com.mapswithme.maps.maplayer.isolines;
|
|||
import android.app.Application;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import com.mapswithme.maps.base.Detachable;
|
||||
import com.mapswithme.maps.maplayer.subway.OnIsolinesChangedListener;
|
||||
|
||||
class OnIsolinesChangedListenerImpl implements OnIsolinesChangedListener
|
||||
class OnIsolinesChangedListenerImpl implements OnIsolinesChangedListener, Detachable<IsolinesErrorDialogListener>
|
||||
{
|
||||
@NonNull
|
||||
private final Application mApp;
|
||||
private IsolinesErrorDialogListener mListener;
|
||||
|
||||
OnIsolinesChangedListenerImpl(@NonNull Application app)
|
||||
{
|
||||
|
@ -19,6 +21,24 @@ class OnIsolinesChangedListenerImpl implements OnIsolinesChangedListener
|
|||
public void onStateChanged(int type)
|
||||
{
|
||||
IsolinesState state = IsolinesState.values()[type];
|
||||
state.activate(mApp);
|
||||
if (mListener == null)
|
||||
{
|
||||
state.activate(mApp);
|
||||
return;
|
||||
}
|
||||
|
||||
mListener.onStateChanged(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attach(@NonNull IsolinesErrorDialogListener listener)
|
||||
{
|
||||
mListener = listener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detach()
|
||||
{
|
||||
mListener = null;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue