forked from organicmaps/organicmaps
[android] Added progress dialog while bookmark categigory is being zipped
This commit is contained in:
parent
af125ebee6
commit
1e2f02ae37
4 changed files with 58 additions and 63 deletions
android/src/com/mapswithme
maps
util/sharing
|
@ -527,7 +527,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
mSearchController.setVisibilityListener(this);
|
||||
SearchEngine.INSTANCE.addListener(this);
|
||||
|
||||
SharingHelper.prepare();
|
||||
SharingHelper.INSTANCE.initialize();
|
||||
|
||||
//TODO: uncomment after correct visible rect calculation.
|
||||
//mVisibleRectMeasurer = new VisibleRectMeasurer(new VisibleRectListener() {
|
||||
|
|
|
@ -190,7 +190,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment
|
|||
break;
|
||||
|
||||
case R.id.set_share:
|
||||
BookmarkManager.INSTANCE.prepareCategoryForSharing(mSelectedCatId);
|
||||
SharingHelper.INSTANCE.prepareBookmarkCategoryForSharing(getActivity(), mSelectedCatId);
|
||||
break;
|
||||
|
||||
case R.id.set_delete:
|
||||
|
@ -283,7 +283,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment
|
|||
@Override
|
||||
public void onPreparedFileForSharing(@NonNull BookmarkSharingResult result)
|
||||
{
|
||||
SharingHelper.shareBookmarksCategory(getActivity(), result);
|
||||
SharingHelper.INSTANCE.onPreparedFileForSharing(getActivity(), result);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -190,7 +190,7 @@ public class BookmarksListFragment extends BaseMwmListFragment
|
|||
@Override
|
||||
public void onPreparedFileForSharing(@NonNull BookmarkSharingResult result)
|
||||
{
|
||||
SharingHelper.shareBookmarksCategory(getActivity(), result);
|
||||
SharingHelper.INSTANCE.onPreparedFileForSharing(getActivity(), result);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -246,7 +246,7 @@ public class BookmarksListFragment extends BaseMwmListFragment
|
|||
{
|
||||
if (item.getItemId() == R.id.set_share)
|
||||
{
|
||||
BookmarkManager.INSTANCE.prepareCategoryForSharing(mCategoryId);
|
||||
SharingHelper.INSTANCE.prepareBookmarkCategoryForSharing(getActivity(), mCategoryId);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package com.mapswithme.util.sharing;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.ActivityInfo;
|
||||
|
@ -10,6 +10,7 @@ import android.content.pm.PackageManager;
|
|||
import android.content.pm.ResolveInfo;
|
||||
import android.support.annotation.DrawableRes;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.StringRes;
|
||||
import android.text.TextUtils;
|
||||
|
||||
|
@ -29,50 +30,43 @@ import com.mapswithme.util.log.LoggerFactory;
|
|||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public final class SharingHelper
|
||||
public enum SharingHelper
|
||||
{
|
||||
INSTANCE;
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.MISC);
|
||||
private static final String TAG = SharingHelper.class.getSimpleName();
|
||||
private static final String PREFS_STORAGE = "sharing";
|
||||
private static final String PREFS_KEY_ITEMS = "items";
|
||||
|
||||
private static boolean sInitialized;
|
||||
private static final SharingHelper sInstance = new SharingHelper();
|
||||
|
||||
private final SharedPreferences mPrefs = MwmApplication.get().getSharedPreferences(PREFS_STORAGE, Context.MODE_PRIVATE);
|
||||
private final SharedPreferences mPrefs
|
||||
= MwmApplication.get().getSharedPreferences(PREFS_STORAGE, Context.MODE_PRIVATE);
|
||||
private final Map<String, SharingTarget> mItems = new HashMap<>();
|
||||
|
||||
private SharingHelper()
|
||||
{}
|
||||
@Nullable
|
||||
private ProgressDialog mProgressDialog;
|
||||
|
||||
public static void prepare()
|
||||
public void initialize()
|
||||
{
|
||||
if (sInitialized)
|
||||
return;
|
||||
ThreadPool.getStorage().execute(
|
||||
() ->
|
||||
{
|
||||
SharingTarget[] items;
|
||||
String json = INSTANCE.mPrefs.getString(PREFS_KEY_ITEMS, null);
|
||||
items = parse(json);
|
||||
|
||||
sInitialized = true;
|
||||
|
||||
ThreadPool.getStorage().execute(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
SharingTarget[] items;
|
||||
String json = sInstance.mPrefs.getString(PREFS_KEY_ITEMS, null);
|
||||
items = parse(json);
|
||||
|
||||
if (items != null)
|
||||
for (SharingTarget item : items)
|
||||
sInstance.mItems.put(item.packageName, item);
|
||||
}
|
||||
});
|
||||
if (items != null)
|
||||
{
|
||||
for (SharingTarget item : items)
|
||||
INSTANCE.mItems.put(item.packageName, item);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static SharingTarget[] parse(String json)
|
||||
|
@ -139,14 +133,7 @@ public final class SharingHelper
|
|||
res.add(target);
|
||||
}
|
||||
|
||||
Collections.sort(res, new Comparator<SharingTarget>()
|
||||
{
|
||||
@Override
|
||||
public int compare(SharingTarget left, SharingTarget right)
|
||||
{
|
||||
return left.compareTo(right);
|
||||
}
|
||||
});
|
||||
Collections.sort(res, SharingTarget::compareTo);
|
||||
|
||||
for (String item : missed)
|
||||
mItems.remove(item);
|
||||
|
@ -164,7 +151,7 @@ public final class SharingHelper
|
|||
|
||||
public static void shareOutside(final BaseShareable data, @StringRes int titleRes)
|
||||
{
|
||||
shareInternal(data, titleRes, sInstance.findItems(data));
|
||||
shareInternal(data, titleRes, INSTANCE.findItems(data));
|
||||
}
|
||||
|
||||
private static void shareInternal(final BaseShareable data, int titleRes, final List<SharingTarget> items)
|
||||
|
@ -176,29 +163,18 @@ public final class SharingHelper
|
|||
for (SharingTarget item : items)
|
||||
builder.sheet(i++, item.drawableIcon, item.name);
|
||||
|
||||
builder.listener(new DialogInterface.OnClickListener()
|
||||
{
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which)
|
||||
{
|
||||
if (which < 0)
|
||||
return;
|
||||
builder.listener((dialog, which) ->
|
||||
{
|
||||
if (which < 0)
|
||||
return;
|
||||
|
||||
SharingTarget target = items.get(which);
|
||||
sInstance.updateItem(target);
|
||||
SharingTarget target = items.get(which);
|
||||
INSTANCE.updateItem(target);
|
||||
|
||||
data.share(target);
|
||||
}
|
||||
});
|
||||
data.share(target);
|
||||
});
|
||||
|
||||
UiThread.runLater(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
builder.show();
|
||||
}
|
||||
}, 500);
|
||||
UiThread.runLater(builder::show, 500);
|
||||
}
|
||||
|
||||
private void updateItem(SharingTarget item)
|
||||
|
@ -214,7 +190,26 @@ public final class SharingHelper
|
|||
save();
|
||||
}
|
||||
|
||||
public static void shareBookmarksCategory(@NonNull Activity context,
|
||||
public void prepareBookmarkCategoryForSharing(@NonNull Activity context, long catId)
|
||||
{
|
||||
mProgressDialog = new ProgressDialog(context);
|
||||
mProgressDialog.setMessage(context.getString(R.string.please_wait));
|
||||
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
|
||||
mProgressDialog.setIndeterminate(true);
|
||||
mProgressDialog.setCancelable(false);
|
||||
mProgressDialog.show();
|
||||
BookmarkManager.INSTANCE.prepareCategoryForSharing(catId);
|
||||
}
|
||||
|
||||
public void onPreparedFileForSharing(@NonNull Activity context,
|
||||
@NonNull BookmarkSharingResult result)
|
||||
{
|
||||
if (mProgressDialog != null && mProgressDialog.isShowing())
|
||||
mProgressDialog.dismiss();
|
||||
shareBookmarksCategory(context, result);
|
||||
}
|
||||
|
||||
private static void shareBookmarksCategory(@NonNull Activity context,
|
||||
@NonNull BookmarkSharingResult result)
|
||||
{
|
||||
switch (result.getCode())
|
||||
|
|
Loading…
Add table
Reference in a new issue