From 628103de45194d7bb126b6fbaffda07b1b0a0ae7 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Sun, 13 Apr 2014 20:06:42 +0200 Subject: Sorting via drag and drop was interrupted by download observer --- .../antennapod/asynctask/DownloadObserver.java | 2 +- .../danoeh/antennapod/fragment/QueueFragment.java | 49 +++++++++++++++------- 2 files changed, 36 insertions(+), 15 deletions(-) (limited to 'src/de') diff --git a/src/de/danoeh/antennapod/asynctask/DownloadObserver.java b/src/de/danoeh/antennapod/asynctask/DownloadObserver.java index adcac1569..1e4234aaa 100644 --- a/src/de/danoeh/antennapod/asynctask/DownloadObserver.java +++ b/src/de/danoeh/antennapod/asynctask/DownloadObserver.java @@ -23,7 +23,7 @@ public class DownloadObserver { /** * Time period between update notifications. */ - public static final int WAITING_INTERVAL_MS = 1000; + public static final int WAITING_INTERVAL_MS = 3000; private volatile Activity activity; private final Handler handler; diff --git a/src/de/danoeh/antennapod/fragment/QueueFragment.java b/src/de/danoeh/antennapod/fragment/QueueFragment.java index a18994af5..73764df36 100644 --- a/src/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/src/de/danoeh/antennapod/fragment/QueueFragment.java @@ -7,6 +7,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Parcelable; import android.support.v4.app.Fragment; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -54,12 +55,16 @@ public class QueueFragment extends Fragment { private DownloadObserver downloadObserver = null; + /** + * Download observer updates won't result in an upate of the list adapter if this is true. + */ + private boolean blockDownloadObserverUpdate = false; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); - startItemLoader(); } @@ -98,6 +103,7 @@ public class QueueFragment extends Fragment { undoBarController = null; activity.set(null); viewsCreated = false; + blockDownloadObserverUpdate = false; if (downloadObserver != null) { downloadObserver.onPause(); } @@ -112,16 +118,6 @@ public class QueueFragment extends Fragment { progLoading = (ProgressBar) root.findViewById(R.id.progLoading); listView.setEmptyView(txtvEmpty); - listView.setDropListener(new DragSortListView.DropListener() { - @Override - public void drop(int from, int to) { - stopItemLoader(); - final FeedItem item = queue.remove(from); - queue.add(to, item); - listAdapter.notifyDataSetChanged(); - DBWriter.moveQueueItem(getActivity(), from, to, true); - } - }); listView.setRemoveListener(new DragSortListView.RemoveListener() { @Override @@ -131,7 +127,8 @@ public class QueueFragment extends Fragment { DBWriter.removeQueueItem(getActivity(), item.getId(), true); undoBarController.showUndoBar(false, getString(R.string.removed_from_queue), new FeedItemUndoToken(item, - which)); + which) + ); } }); @@ -148,6 +145,30 @@ public class QueueFragment extends Fragment { } }); + listView.setDragSortListener(new DragSortListView.DragSortListener() { + @Override + public void drag(int from, int to) { + Log.d(TAG, "drag"); + blockDownloadObserverUpdate = true; + } + + @Override + public void drop(int from, int to) { + Log.d(TAG, "drop"); + blockDownloadObserverUpdate = false; + stopItemLoader(); + final FeedItem item = queue.remove(from); + queue.add(to, item); + listAdapter.notifyDataSetChanged(); + DBWriter.moveQueueItem(getActivity(), from, to, true); + } + + @Override + public void remove(int which) { + + } + }); + if (!itemsLoaded) { progLoading.setVisibility(View.VISIBLE); txtvEmpty.setVisibility(View.GONE); @@ -175,7 +196,7 @@ public class QueueFragment extends Fragment { private DownloadObserver.Callback downloadObserverCallback = new DownloadObserver.Callback() { @Override public void onContentChanged() { - if (listAdapter != null) { + if (listAdapter != null && !blockDownloadObserverUpdate) { listAdapter.notifyDataSetChanged(); } } @@ -183,7 +204,7 @@ public class QueueFragment extends Fragment { @Override public void onDownloadDataAvailable(List downloaderList) { QueueFragment.this.downloaderList = downloaderList; - if (listAdapter != null) { + if (listAdapter != null && !blockDownloadObserverUpdate) { listAdapter.notifyDataSetChanged(); } } -- cgit v1.2.3