diff --git a/OsmAnd/src/net/osmand/plus/activities/LocalIndexInfo.java b/OsmAnd/src/net/osmand/plus/activities/LocalIndexInfo.java index 753e0af019..4b9c8fa3ac 100644 --- a/OsmAnd/src/net/osmand/plus/activities/LocalIndexInfo.java +++ b/OsmAnd/src/net/osmand/plus/activities/LocalIndexInfo.java @@ -1,8 +1,5 @@ package net.osmand.plus.activities; -import android.os.Parcel; -import android.os.Parcelable; - import androidx.annotation.NonNull; import net.osmand.GPXUtilities.GPXFile; @@ -10,9 +7,8 @@ import net.osmand.plus.OsmandApplication; import net.osmand.plus.activities.LocalIndexHelper.LocalIndexType; import java.io.File; -import java.io.Serializable; -public class LocalIndexInfo implements Comparable, Parcelable { +public class LocalIndexInfo implements Comparable { private LocalIndexType type; private String description = ""; @@ -47,22 +43,6 @@ public class LocalIndexInfo implements Comparable, Parcelable { this.backupedData = backuped; } - protected LocalIndexInfo(Parcel in) { - readFromParcel(in); - } - - public static final Creator CREATOR = new Creator() { - @Override - public LocalIndexInfo createFromParcel(Parcel in) { - return new LocalIndexInfo(in); - } - - @Override - public LocalIndexInfo[] newArray(int size) { - return new LocalIndexInfo[size]; - } - }; - public void setAttachedObject(Object attachedObject) { this.attachedObject = attachedObject; } @@ -196,46 +176,4 @@ public class LocalIndexInfo implements Comparable, Parcelable { public int compareTo(LocalIndexInfo o) { return getFileName().compareTo(o.getFileName()); } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeSerializable(type); - dest.writeString(description); - dest.writeString(name); - dest.writeByte((byte) (backupedData ? 1 : 0)); - dest.writeByte((byte) (corrupted ? 1 : 0)); - dest.writeByte((byte) (notSupported ? 1 : 0)); - dest.writeByte((byte) (loaded ? 1 : 0)); - dest.writeString(subfolder); - dest.writeString(pathToData); - dest.writeString(fileName); - dest.writeByte((byte) (singleFile ? 1 : 0)); - dest.writeInt(kbSize); - dest.writeSerializable((Serializable) attachedObject); - dest.writeByte((byte) (expanded ? 1 : 0)); - dest.writeValue(gpxFile); - } - - private void readFromParcel(Parcel in) { - type = (LocalIndexType) in.readSerializable(); - description = in.readString(); - name = in.readString(); - backupedData = in.readByte() != 0; - corrupted = in.readByte() != 0; - notSupported = in.readByte() != 0; - loaded = in.readByte() != 0; - subfolder = in.readString(); - pathToData = in.readString(); - fileName = in.readString(); - singleFile = in.readByte() != 0; - kbSize = in.readInt(); - attachedObject = in.readSerializable(); - expanded = in.readByte() != 0; - gpxFile = (GPXFile) in.readSerializable(); - } - - @Override - public int describeContents() { - return 0; - } -} +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/download/ui/UpdatesIndexFragment.java b/OsmAnd/src/net/osmand/plus/download/ui/UpdatesIndexFragment.java index 89eb840cb8..1dbd8782ba 100644 --- a/OsmAnd/src/net/osmand/plus/download/ui/UpdatesIndexFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/ui/UpdatesIndexFragment.java @@ -29,6 +29,7 @@ import androidx.appcompat.content.res.AppCompatResources; import androidx.cardview.widget.CardView; import androidx.core.content.ContextCompat; import androidx.core.view.MenuItemCompat; +import androidx.fragment.app.Fragment; import net.osmand.AndroidUtils; import net.osmand.Collator; @@ -40,6 +41,7 @@ import net.osmand.plus.activities.LocalIndexInfo; import net.osmand.plus.helpers.AndroidUiHelper; import net.osmand.plus.liveupdates.LiveUpdatesClearBottomSheet.RefreshLiveUpdates; import net.osmand.plus.liveupdates.LiveUpdatesFragment; +import net.osmand.plus.liveupdates.LiveUpdatesHelper.LiveUpdateListener; import net.osmand.plus.liveupdates.LoadLiveMapsTask; import net.osmand.plus.liveupdates.LoadLiveMapsTask.LocalIndexInfoAdapter; import net.osmand.plus.chooseplan.ChoosePlanDialogFragment.ChoosePlanDialogType; @@ -52,7 +54,6 @@ import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents; import net.osmand.plus.download.DownloadResources; import net.osmand.plus.download.IndexItem; import net.osmand.plus.inapp.InAppPurchaseHelper; -import net.osmand.plus.widgets.TextViewEx; import net.osmand.util.Algorithms; import java.util.ArrayList; @@ -62,7 +63,7 @@ import java.util.List; import static net.osmand.plus.liveupdates.LiveUpdatesFragment.showUpdateDialog; import static net.osmand.plus.liveupdates.LiveUpdatesFragment.updateCountEnabled; -public class UpdatesIndexFragment extends OsmAndListFragment implements DownloadEvents, RefreshLiveUpdates { +public class UpdatesIndexFragment extends OsmAndListFragment implements DownloadEvents, RefreshLiveUpdates, LiveUpdateListener { private static final int RELOAD_ID = 5; private UpdateIndexAdapter listAdapter; private String errorMessage; @@ -398,8 +399,7 @@ public class UpdatesIndexFragment extends OsmAndListFragment implements Download @Override public void onClick(View v) { if (!listAdapter.isShowOsmLivePurchaseBanner()) { - showUpdateDialog(getActivity(), getFragmentManager(), - settings, listAdapter.mapsList, null); + showUpdateDialog(getActivity(), getFragmentManager(), UpdatesIndexFragment.this); } } }); @@ -417,9 +417,22 @@ public class UpdatesIndexFragment extends OsmAndListFragment implements Download } } + @Override + public void processFinish() { + } + + @Override + public List getMapsToUpdate() { + return LiveUpdatesFragment.getMapsToUpdate(listAdapter.mapsList, settings); + } + + @Override + public Fragment currentFragment() { + return this; + } + @ColorRes public static int getDefaultIconColorId(boolean nightMode) { return nightMode ? R.color.icon_color_default_dark : R.color.icon_color_default_light; } - } diff --git a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesAlarmReceiver.java b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesAlarmReceiver.java index 78d84bf220..a51140fbab 100644 --- a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesAlarmReceiver.java +++ b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesAlarmReceiver.java @@ -32,7 +32,8 @@ public class LiveUpdatesAlarmReceiver extends BroadcastReceiver { final OsmandSettings settings = application.getSettings(); if (!preferenceDownloadViaWiFi(localIndexInfoFile, settings).get() || wifi.isWifiEnabled()) { - new PerformLiveUpdateAsyncTask(context, localIndexInfoFile, false, null).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, fileName); + new PerformLiveUpdateAsyncTask(context, localIndexInfoFile, false) + .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, fileName); } else { PerformLiveUpdateAsyncTask.tryRescheduleDownload(context, settings, localIndexInfoFile); } diff --git a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesFragment.java b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesFragment.java index 1ba3a06563..7885ce051c 100644 --- a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesFragment.java +++ b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesFragment.java @@ -24,7 +24,6 @@ import android.widget.TextView; import androidx.annotation.ColorRes; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.appcompat.content.res.AppCompatResources; import androidx.appcompat.widget.AppCompatImageButton; import androidx.appcompat.widget.AppCompatImageView; @@ -56,7 +55,7 @@ import net.osmand.plus.liveupdates.LiveUpdatesHelper.TimeOfDay; import net.osmand.plus.liveupdates.LiveUpdatesHelper.UpdateFrequency; import net.osmand.plus.liveupdates.LiveUpdatesSettingsBottomSheet.OnLiveUpdatesForLocalChange; import net.osmand.plus.liveupdates.LoadLiveMapsTask.LocalIndexInfoAdapter; -import net.osmand.plus.liveupdates.PerformLiveUpdateAsyncTask.LiveUpdateListener; +import net.osmand.plus.liveupdates.LiveUpdatesHelper.LiveUpdateListener; import net.osmand.plus.settings.backend.CommonPreference; import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.widgets.TextViewEx; @@ -92,7 +91,7 @@ import static net.osmand.plus.monitoring.TripRecordingBottomSheet.getActiveTextC import static net.osmand.plus.monitoring.TripRecordingBottomSheet.getOsmandIconColorId; import static net.osmand.plus.monitoring.TripRecordingBottomSheet.getSecondaryIconColorId; -public class LiveUpdatesFragment extends BaseOsmAndDialogFragment implements OnLiveUpdatesForLocalChange { +public class LiveUpdatesFragment extends BaseOsmAndDialogFragment implements OnLiveUpdatesForLocalChange, LiveUpdateListener { public static final String URL = "https://osmand.net/api/osmlive_status"; public static final String TAG = LiveUpdatesFragment.class.getSimpleName(); @@ -111,13 +110,6 @@ public class LiveUpdatesFragment extends BaseOsmAndDialogFragment implements OnL private GetLastUpdateDateTask getLastUpdateDateTask; private LoadLiveMapsTask loadLiveMapsTask; - private final LiveUpdateListener liveUpdateListener = new LiveUpdateListener() { - @Override - public void processFinish() { - adapter.notifyDataSetChanged(); - } - }; - public static void showInstance(@NonNull FragmentManager fragmentManager, Fragment target) { if (!fragmentManager.isStateSaved()) { LiveUpdatesFragment fragment = new LiveUpdatesFragment(); @@ -126,6 +118,23 @@ public class LiveUpdatesFragment extends BaseOsmAndDialogFragment implements OnL } } + public static void showUpdateDialog(Activity context, FragmentManager fragmentManager, final LiveUpdateListener listener) { + List mapsToUpdate = listener.getMapsToUpdate(); + if (!Algorithms.isEmpty(mapsToUpdate)) { + int countEnabled = listener.getMapsToUpdate().size(); + if (countEnabled == 1) { + runLiveUpdate(context, mapsToUpdate.get(0).getFileName(), false, new Runnable() { + @Override + public void run() { + listener.processFinish(); + } + }); + } else if (countEnabled > 1) { + LiveUpdatesUpdateAllBottomSheet.showInstance(fragmentManager, listener.currentFragment()); + } + } + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -170,7 +179,7 @@ public class LiveUpdatesFragment extends BaseOsmAndDialogFragment implements OnL @Override public void onRefresh() { if (settings.IS_LIVE_UPDATES_ON.get()) { - showUpdateDialog(getActivity(), getFragmentManager(), settings, adapter.mapsList, liveUpdateListener); + showUpdateDialog(getActivity(), getFragmentManager(), LiveUpdatesFragment.this); startUpdateDateAsyncTask(); } swipeRefresh.setRefreshing(false); @@ -326,23 +335,10 @@ public class LiveUpdatesFragment extends BaseOsmAndDialogFragment implements OnL private void switchOnLiveUpdates() { settings.IS_LIVE_UPDATES_ON.set(true); enableLiveUpdates(true); - showUpdateDialog(getMyActivity(), getFragmentManager(), settings, adapter.mapsList, liveUpdateListener); + showUpdateDialog(getMyActivity(), getFragmentManager(), this); startUpdateDateAsyncTask(); } - public static void showUpdateDialog(Activity context, FragmentManager fragmentManager, OsmandSettings settings, - List mapsList, @Nullable LiveUpdateListener listener) { - if (!Algorithms.isEmpty(mapsList)) { - int countEnabled = updateCountEnabled(null, mapsList, settings); - if (countEnabled == 1) { - LocalIndexInfo li = mapsList.get(0); - runLiveUpdate(context, li.getFileName(), false, listener); - } else if (countEnabled > 1) { - LiveUpdatesUpdateAllBottomSheet.showInstance(fragmentManager, getMapsToUpdate(mapsList, settings), listener); - } - } - } - private void enableLiveUpdates(boolean enable) { if (!Algorithms.isEmpty(adapter.mapsList)) { AlarmManager alarmMgr = (AlarmManager) app.getSystemService(Context.ALARM_SERVICE); @@ -562,7 +558,12 @@ public class LiveUpdatesFragment extends BaseOsmAndDialogFragment implements OnL compoundButton.setOnCheckedChangeListener(new SwitchCompat.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - onUpdateLocalIndex(item, isChecked, null); + onUpdateLocalIndex(item, isChecked, new Runnable() { + @Override + public void run() { + runSort(); + } + }); } }); } else { @@ -639,6 +640,21 @@ public class LiveUpdatesFragment extends BaseOsmAndDialogFragment implements OnL return description; } + @Override + public void processFinish() { + adapter.notifyDataSetChanged(); + } + + @Override + public List getMapsToUpdate() { + return getMapsToUpdate(adapter.mapsList, settings); + } + + @Override + public Fragment currentFragment() { + return this; + } + @Override public boolean onUpdateLocalIndex(String fileName, boolean newValue, final Runnable callback) { @@ -650,15 +666,7 @@ public class LiveUpdatesFragment extends BaseOsmAndDialogFragment implements OnL final CommonPreference liveUpdatePreference = preferenceForLocalIndex(fileName, settings); liveUpdatePreference.set(newValue); if (settings.IS_LIVE_UPDATES_ON.get() && liveUpdatePreference.get()) { - runLiveUpdate(getActivity(), fileName, true, new LiveUpdateListener() { - @Override - public void processFinish() { - runSort(); - if (callback != null) { - callback.run(); - } - } - }); + runLiveUpdate(getActivity(), fileName, true, callback); UpdateFrequency updateFrequency = UpdateFrequency.values()[frequencyId]; TimeOfDay timeOfDayToUpdate = TimeOfDay.values()[timeOfDateToUpdateId]; setAlarmForPendingIntent(alarmIntent, alarmManager, updateFrequency, timeOfDayToUpdate); @@ -673,15 +681,7 @@ public class LiveUpdatesFragment extends BaseOsmAndDialogFragment implements OnL @Override public void forceUpdateLocal(String fileName, boolean userRequested, final Runnable callback) { if (settings.IS_LIVE_UPDATES_ON.get()) { - runLiveUpdate(getActivity(), fileName, userRequested, new LiveUpdateListener() { - @Override - public void processFinish() { - updateList(); - if (callback != null) { - callback.run(); - } - } - }); + runLiveUpdate(getActivity(), fileName, userRequested, callback); } } @@ -703,5 +703,4 @@ public class LiveUpdatesFragment extends BaseOsmAndDialogFragment implements OnL public static int getDefaultIconColorId(boolean nightMode) { return nightMode ? R.color.icon_color_default_dark : R.color.icon_color_default_light; } - } diff --git a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesHelper.java b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesHelper.java index afcb313217..c8e4c42fdf 100644 --- a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesHelper.java +++ b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesHelper.java @@ -9,9 +9,10 @@ import android.text.format.DateUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; import net.osmand.plus.OsmandApplication; -import net.osmand.plus.liveupdates.PerformLiveUpdateAsyncTask.LiveUpdateListener; +import net.osmand.plus.activities.LocalIndexInfo; import net.osmand.plus.settings.backend.CommonPreference; import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.R; @@ -20,6 +21,7 @@ import net.osmand.util.Algorithms; import java.io.File; import java.util.Calendar; +import java.util.List; import java.util.concurrent.TimeUnit; public class LiveUpdatesHelper { @@ -254,8 +256,29 @@ public class LiveUpdatesHelper { } } - public static void runLiveUpdate(Context context, final String fileName, boolean userRequested, @Nullable final LiveUpdateListener listener) { + public static void runLiveUpdate(Context context, final String fileName, boolean userRequested, @Nullable final Runnable runOnSuccess) { final String fnExt = Algorithms.getFileNameWithoutExtension(new File(fileName)); - new PerformLiveUpdateAsyncTask(context, fileName, userRequested, listener).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, fnExt); + PerformLiveUpdateAsyncTask task = new PerformLiveUpdateAsyncTask(context, fileName, userRequested); + task.setRunOnSuccess(runOnSuccess); + task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, fnExt); + } + + public static void runLiveUpdate(Context context, boolean userRequested, final LiveUpdateListener listener) { + for (LocalIndexInfo mapToUpdate : listener.getMapsToUpdate()) { + runLiveUpdate(context, mapToUpdate.getFileName(), userRequested, new Runnable() { + @Override + public void run() { + listener.processFinish(); + } + }); + } + } + + public interface LiveUpdateListener { + void processFinish(); + + List getMapsToUpdate(); + + Fragment currentFragment(); } } diff --git a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesSettingsBottomSheet.java b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesSettingsBottomSheet.java index e91d5d9f3c..a40d0e956c 100644 --- a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesSettingsBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesSettingsBottomSheet.java @@ -157,6 +157,10 @@ public class LiveUpdatesSettingsBottomSheet extends MenuBottomSheetDialogFragmen updateLastCheck(); updateFrequencyHelpMessage(); updateFileSize(); + Fragment target = getTargetFragment(); + if (target instanceof LiveUpdatesFragment) { + ((LiveUpdatesFragment) target).runSort(); + } } })) { item.setTitle(getStateText(!checked)); @@ -276,6 +280,10 @@ public class LiveUpdatesSettingsBottomSheet extends MenuBottomSheetDialogFragmen updateLastCheck(); updateFrequencyHelpMessage(); updateFileSize(); + Fragment target = getTargetFragment(); + if (target instanceof LiveUpdatesFragment) { + ((LiveUpdatesFragment) target).updateList(); + } } }); } diff --git a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesUpdateAllBottomSheet.java b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesUpdateAllBottomSheet.java index 9357210328..a8adc5e9ce 100644 --- a/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesUpdateAllBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/liveupdates/LiveUpdatesUpdateAllBottomSheet.java @@ -1,7 +1,6 @@ package net.osmand.plus.liveupdates; import android.os.Bundle; -import android.os.Parcelable; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; @@ -9,24 +8,21 @@ import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import net.osmand.PlatformUtil; import net.osmand.plus.R; import net.osmand.plus.UiUtilities.DialogButtonType; -import net.osmand.plus.activities.LocalIndexInfo; import net.osmand.plus.base.MenuBottomSheetDialogFragment; import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem; import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; import net.osmand.plus.base.bottomsheetmenu.simpleitems.LongDescriptionItem; -import net.osmand.plus.liveupdates.PerformLiveUpdateAsyncTask.LiveUpdateListener; +import net.osmand.plus.liveupdates.LiveUpdatesHelper.LiveUpdateListener; import net.osmand.plus.widgets.TextViewEx; import org.apache.commons.logging.Log; -import java.util.ArrayList; -import java.util.List; - import static net.osmand.AndroidUtils.getPrimaryTextColorId; import static net.osmand.plus.liveupdates.LiveUpdatesHelper.runLiveUpdate; @@ -34,40 +30,20 @@ public class LiveUpdatesUpdateAllBottomSheet extends MenuBottomSheetDialogFragme public static final String TAG = LiveUpdatesUpdateAllBottomSheet.class.getSimpleName(); private static final Log LOG = PlatformUtil.getLog(LiveUpdatesUpdateAllBottomSheet.class); - private static final String MAPS_TO_UPDATE = "maps_to_update"; - private static final String LIVE_UPDATE_LISTENER = "live_update_listener"; private BaseBottomSheetItem itemTitle; private BaseBottomSheetItem itemDescription; - private List mapsList; - private LiveUpdateListener listener; - - public void setMapsList(List mapsList) { - this.mapsList = mapsList; - } - - public void setListener(LiveUpdateListener listener) { - this.listener = listener; - } - - public static void showInstance(@NonNull FragmentManager fragmentManager, - List mapsList, LiveUpdateListener listener) { + public static void showInstance(@NonNull FragmentManager fragmentManager, Fragment target) { if (!fragmentManager.isStateSaved()) { LiveUpdatesUpdateAllBottomSheet fragment = new LiveUpdatesUpdateAllBottomSheet(); - fragment.setMapsList(mapsList); - fragment.setListener(listener); + fragment.setTargetFragment(target, 0); fragment.show(fragmentManager, TAG); } } @Override public void createMenuItems(Bundle savedInstanceState) { - if (savedInstanceState != null) { - mapsList = savedInstanceState.getParcelableArrayList(MAPS_TO_UPDATE); - listener = (LiveUpdateListener) savedInstanceState.getSerializable(LIVE_UPDATE_LISTENER); - } - updateBottomButtons(); itemTitle = new SimpleBottomSheetItem.Builder() @@ -97,17 +73,10 @@ public class LiveUpdatesUpdateAllBottomSheet extends MenuBottomSheetDialogFragme return view; } - @Override - @SuppressWarnings("unchecked") - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - outState.putParcelableArrayList(MAPS_TO_UPDATE, (ArrayList) mapsList); - outState.putSerializable(LIVE_UPDATE_LISTENER, listener); - } - private void updateAll() { - for (LocalIndexInfo li : mapsList) { - runLiveUpdate(getActivity(), li.getFileName(), false, listener); + Fragment target = getTargetFragment(); + if (target instanceof LiveUpdateListener) { + runLiveUpdate(getActivity(), false, (LiveUpdateListener) target); } } diff --git a/OsmAnd/src/net/osmand/plus/liveupdates/PerformLiveUpdateAsyncTask.java b/OsmAnd/src/net/osmand/plus/liveupdates/PerformLiveUpdateAsyncTask.java index d60470107d..9729cd9b3a 100644 --- a/OsmAnd/src/net/osmand/plus/liveupdates/PerformLiveUpdateAsyncTask.java +++ b/OsmAnd/src/net/osmand/plus/liveupdates/PerformLiveUpdateAsyncTask.java @@ -6,7 +6,6 @@ import android.content.Context; import android.os.AsyncTask; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import net.osmand.AndroidNetworkUtils; import net.osmand.AndroidNetworkUtils.OnRequestResultListener; @@ -25,7 +24,6 @@ import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; -import java.io.Serializable; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -47,20 +45,18 @@ public class PerformLiveUpdateAsyncTask @NonNull private final String localIndexFileName; private final boolean userRequested; - private final LiveUpdateListener listener; - - public interface LiveUpdateListener extends Serializable { - void processFinish(); - } + private Runnable runOnSuccess; public PerformLiveUpdateAsyncTask(@NonNull Context context, @NonNull String localIndexFileName, - boolean userRequested, - @Nullable LiveUpdateListener listener) { + boolean userRequested) { this.context = context; this.localIndexFileName = localIndexFileName; this.userRequested = userRequested; - this.listener = listener; + } + + public void setRunOnSuccess(Runnable runOnSuccess) { + this.runOnSuccess = runOnSuccess; } @Override @@ -150,9 +146,6 @@ public class PerformLiveUpdateAsyncTask ((DownloadIndexesThread.DownloadEvents) context).downloadInProgress(); } updateLatestAvailability(application, localIndexFileName); - if (listener != null) { - listener.processFinish(); - } } else { LOG.debug("onPostExecute: Not enough space for updates"); } @@ -164,9 +157,6 @@ public class PerformLiveUpdateAsyncTask ((DownloadIndexesThread.DownloadEvents) context).downloadInProgress(); if (userRequested && context instanceof DownloadActivity) { updateLatestAvailability(application, localIndexFileName); - if (listener != null) { - listener.processFinish(); - } application.showShortToastMessage(R.string.no_updates_available); } } @@ -214,6 +204,9 @@ public class PerformLiveUpdateAsyncTask long dateTime = parsed.getTime(); preferenceLatestUpdateAvailable(settings).set(dateTime); preferenceLatestUpdateAvailable(localIndexFileName, settings).set(dateTime); + if (runOnSuccess != null) { + runOnSuccess.run(); + } } } catch (ParseException e) { long dateTime = preferenceLatestUpdateAvailable(settings).get();