diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2013-08-16 20:15:48 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2013-08-16 20:15:48 +0200 |
commit | f6c5251b98b5ae1bc31a1d1940530174588c3e27 (patch) | |
tree | ce31e7712455739b5e3149c2607b712763a375b2 /src/de/danoeh/antennapod/activity/OrganizeQueueActivity.java | |
parent | d94e2a7670f20b60ef42435753da118b364fdbab (diff) | |
parent | 3994d02ddfb52a4418951a22bb72f55f85a76fbb (diff) | |
download | AntennaPod-f6c5251b98b5ae1bc31a1d1940530174588c3e27.zip |
Merge branch 'develop' into playback-speed
Conflicts:
pom.xml
src/de/danoeh/antennapod/service/PlaybackService.java
src/de/danoeh/antennapod/util/playback/PlaybackController.java
Diffstat (limited to 'src/de/danoeh/antennapod/activity/OrganizeQueueActivity.java')
-rw-r--r-- | src/de/danoeh/antennapod/activity/OrganizeQueueActivity.java | 112 |
1 files changed, 72 insertions, 40 deletions
diff --git a/src/de/danoeh/antennapod/activity/OrganizeQueueActivity.java b/src/de/danoeh/antennapod/activity/OrganizeQueueActivity.java index 7269f7549..e376b08b8 100644 --- a/src/de/danoeh/antennapod/activity/OrganizeQueueActivity.java +++ b/src/de/danoeh/antennapod/activity/OrganizeQueueActivity.java @@ -1,10 +1,13 @@ package de.danoeh.antennapod.activity; import android.content.Context; -import android.content.res.TypedArray; +import android.os.AsyncTask; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; +import android.support.v7.app.ActionBarActivity; +import android.view.*; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,28 +15,32 @@ import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; -import com.actionbarsherlock.app.SherlockListActivity; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuItem; import com.mobeta.android.dslv.DragSortListView; - import de.danoeh.antennapod.R; import de.danoeh.antennapod.asynctask.ImageLoader; import de.danoeh.antennapod.feed.EventDistributor; import de.danoeh.antennapod.feed.FeedItem; -import de.danoeh.antennapod.feed.FeedManager; import de.danoeh.antennapod.preferences.UserPreferences; +import de.danoeh.antennapod.storage.DBReader; +import de.danoeh.antennapod.storage.DBTasks; +import de.danoeh.antennapod.storage.DBWriter; import de.danoeh.antennapod.util.UndoBarController; -public class OrganizeQueueActivity extends SherlockListActivity implements +import java.util.List; + +public class OrganizeQueueActivity extends ActionBarActivity implements UndoBarController.UndoListener { private static final String TAG = "OrganizeQueueActivity"; private static final int MENU_ID_ACCEPT = 2; + private List<FeedItem> queue; + private OrganizeAdapter adapter; private UndoBarController undoBarController; + private DragSortListView listView; + @Override protected void onCreate(Bundle savedInstanceState) { setTheme(UserPreferences.getTheme()); @@ -41,17 +48,42 @@ public class OrganizeQueueActivity extends SherlockListActivity implements setContentView(R.layout.organize_queue); getSupportActionBar().setDisplayHomeAsUpEnabled(true); - DragSortListView listView = (DragSortListView) getListView(); + listView = (DragSortListView) findViewById(android.R.id.list); listView.setDropListener(dropListener); listView.setRemoveListener(removeListener); + listView.setEmptyView(findViewById(android.R.id.empty)); - adapter = new OrganizeAdapter(this); - setListAdapter(adapter); - + loadData(); undoBarController = new UndoBarController(findViewById(R.id.undobar), this); } + private void loadData() { + AsyncTask<Void, Void, List<FeedItem>> loadTask = new AsyncTask<Void, Void, List<FeedItem>>() { + + @Override + protected List<FeedItem> doInBackground(Void... voids) { + return DBReader.getQueue(OrganizeQueueActivity.this); + } + + @Override + protected void onPostExecute(List<FeedItem> feedItems) { + super.onPostExecute(feedItems); + if (feedItems != null) { + queue = feedItems; + if (adapter == null) { + adapter = new OrganizeAdapter(OrganizeQueueActivity.this); + listView.setAdapter(adapter); + } + adapter.notifyDataSetChanged(); + } else { + Log.e(TAG, "Queue was null"); + } + } + }; + loadTask.execute(); + } + @Override protected void onPause() { super.onPause(); @@ -61,8 +93,7 @@ public class OrganizeQueueActivity extends SherlockListActivity implements @Override protected void onStop() { super.onStop(); - FeedManager.getInstance().autodownloadUndownloadedItems( - getApplicationContext()); + DBTasks.autodownloadUndownloadedItems(getApplicationContext()); } @Override @@ -76,9 +107,7 @@ public class OrganizeQueueActivity extends SherlockListActivity implements @Override public void update(EventDistributor eventDistributor, Integer arg) { if (((EventDistributor.QUEUE_UPDATE | EventDistributor.FEED_LIST_UPDATE) & arg) != 0) { - if (adapter != null) { - adapter.notifyDataSetChanged(); - } + loadData(); } } }; @@ -87,9 +116,10 @@ public class OrganizeQueueActivity extends SherlockListActivity implements @Override public void drop(int from, int to) { - FeedManager manager = FeedManager.getInstance(); - manager.moveQueueItem(OrganizeQueueActivity.this, from, to, false); - adapter.notifyDataSetChanged(); + final FeedItem item = queue.remove(from); + queue.add(to, item); + adapter.notifyDataSetChanged(); + DBWriter.moveQueueItem(OrganizeQueueActivity.this, from, to, true); } }; @@ -97,9 +127,8 @@ public class OrganizeQueueActivity extends SherlockListActivity implements @Override public void remove(int which) { - FeedManager manager = FeedManager.getInstance(); - FeedItem item = (FeedItem) getListAdapter().getItem(which); - manager.removeQueueItem(OrganizeQueueActivity.this, item, false); + FeedItem item = (FeedItem) listView.getAdapter().getItem(which); + DBWriter.removeQueueItem(OrganizeQueueActivity.this, item.getId(), true); undoBarController.showUndoBar(false, getString(R.string.removed_from_queue), new UndoToken(item, which)); @@ -127,22 +156,20 @@ public class OrganizeQueueActivity extends SherlockListActivity implements public void onUndo(Parcelable token) { // Perform the undo UndoToken undoToken = (UndoToken) token; - FeedItem feedItem = undoToken.getFeedItem(); - int position = undoToken.getPosition(); - - FeedManager manager = FeedManager.getInstance(); - manager.addQueueItemAt(OrganizeQueueActivity.this, feedItem, position, - false); + if (token != null) { + long itemId = undoToken.getFeedItemId(); + int position = undoToken.getPosition(); + DBWriter.addQueueItemAt(OrganizeQueueActivity.this, itemId, position, false); + } } private static class OrganizeAdapter extends BaseAdapter { - private Context context; - private FeedManager manager = FeedManager.getInstance(); + private OrganizeQueueActivity organizeQueueActivity; - public OrganizeAdapter(Context context) { + public OrganizeAdapter(OrganizeQueueActivity organizeQueueActivity) { super(); - this.context = context; + this.organizeQueueActivity = organizeQueueActivity; } @Override @@ -152,7 +179,7 @@ public class OrganizeQueueActivity extends SherlockListActivity implements if (convertView == null) { holder = new Holder(); - LayoutInflater inflater = (LayoutInflater) context + LayoutInflater inflater = (LayoutInflater) organizeQueueActivity .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate( R.layout.organize_queue_listitem, null); @@ -189,13 +216,20 @@ public class OrganizeQueueActivity extends SherlockListActivity implements @Override public int getCount() { - int queueSize = manager.getQueueSize(true); - return queueSize; + if (organizeQueueActivity.queue != null) { + return organizeQueueActivity.queue.size(); + } else { + return 0; + } } @Override public FeedItem getItem(int position) { - return manager.getQueueItemAtIndex(position, true); + if (organizeQueueActivity.queue != null) { + return organizeQueueActivity.queue.get(position); + } else { + return null; + } } @Override @@ -211,7 +245,6 @@ public class OrganizeQueueActivity extends SherlockListActivity implements private int position; public UndoToken(FeedItem item, int position) { - FeedManager manager = FeedManager.getInstance(); this.itemId = item.getId(); this.feedId = item.getFeed().getId(); this.position = position; @@ -243,9 +276,8 @@ public class OrganizeQueueActivity extends SherlockListActivity implements out.writeInt(position); } - public FeedItem getFeedItem() { - FeedManager manager = FeedManager.getInstance(); - return manager.getFeedItem(itemId, feedId); + public long getFeedItemId() { + return itemId; } public int getPosition() { |