summaryrefslogtreecommitdiff
path: root/src/de/danoeh
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-09-21 18:40:56 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-09-21 18:40:56 +0200
commitcc18f609d0f2eab6327cf186b6c636b066135377 (patch)
treef59291dc0f33f076ae42167f6f8f3d92789dc410 /src/de/danoeh
parent81fbf3bcb67669c6320228912b7b4512ead10c24 (diff)
downloadAntennaPod-cc18f609d0f2eab6327cf186b6c636b066135377.zip
Created abstract Chapter class to support other chapter types
Diffstat (limited to 'src/de/danoeh')
-rw-r--r--src/de/danoeh/antennapod/activity/AudioplayerActivity.java4
-rw-r--r--src/de/danoeh/antennapod/adapter/SCListAdapter.java9
-rw-r--r--src/de/danoeh/antennapod/feed/Chapter.java37
-rw-r--r--src/de/danoeh/antennapod/feed/FeedItem.java22
-rw-r--r--src/de/danoeh/antennapod/feed/FeedManager.java23
-rw-r--r--src/de/danoeh/antennapod/feed/FeedSearcher.java4
-rw-r--r--src/de/danoeh/antennapod/feed/SimpleChapter.java23
-rw-r--r--src/de/danoeh/antennapod/storage/PodDBAdapter.java20
-rw-r--r--src/de/danoeh/antennapod/syndication/namespace/simplechapters/NSSimpleChapters.java14
9 files changed, 101 insertions, 55 deletions
diff --git a/src/de/danoeh/antennapod/activity/AudioplayerActivity.java b/src/de/danoeh/antennapod/activity/AudioplayerActivity.java
index 3587775a5..7764b3429 100644
--- a/src/de/danoeh/antennapod/activity/AudioplayerActivity.java
+++ b/src/de/danoeh/antennapod/activity/AudioplayerActivity.java
@@ -62,7 +62,7 @@ public class AudioplayerActivity extends MediaplayerActivity {
FeedMedia media = controller.getMedia();
int tabcount = 2;
- if (media != null && media.getItem().getSimpleChapters() != null) {
+ if (media != null && media.getItem().getChapters() != null) {
tabcount = 3;
}
pagerAdapter = new MediaPlayerPagerAdapter(getSupportFragmentManager(),
@@ -132,7 +132,7 @@ public class AudioplayerActivity extends MediaplayerActivity {
sCChapterFragment.setListAdapter(new SCListAdapter(
activity, 0, media.getItem()
- .getSimpleChapters()));
+ .getChapters()));
return sCChapterFragment;
default:
diff --git a/src/de/danoeh/antennapod/adapter/SCListAdapter.java b/src/de/danoeh/antennapod/adapter/SCListAdapter.java
index 0174b4848..3479cdc39 100644
--- a/src/de/danoeh/antennapod/adapter/SCListAdapter.java
+++ b/src/de/danoeh/antennapod/adapter/SCListAdapter.java
@@ -20,15 +20,16 @@ import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.feed.Chapter;
import de.danoeh.antennapod.feed.SimpleChapter;
import de.danoeh.antennapod.util.Converter;
-public class SCListAdapter extends ArrayAdapter<SimpleChapter> {
+public class SCListAdapter extends ArrayAdapter<Chapter> {
private static final String TAG = "SCListAdapter";
public SCListAdapter(Context context, int textViewResourceId,
- List<SimpleChapter> objects) {
+ List<Chapter> objects) {
super(context, textViewResourceId, objects);
}
@@ -36,7 +37,7 @@ public class SCListAdapter extends ArrayAdapter<SimpleChapter> {
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
- SimpleChapter sc = getItem(position);
+ Chapter sc = getItem(position);
// Inflate Layout
if (convertView == null) {
@@ -114,7 +115,7 @@ public class SCListAdapter extends ArrayAdapter<SimpleChapter> {
}
});
- SimpleChapter current = sc.getItem().getCurrentChapter();
+ Chapter current = sc.getItem().getCurrentChapter();
if (current != null) {
if (current == sc) {
holder.title.setTextColor(convertView.getResources().getColor(
diff --git a/src/de/danoeh/antennapod/feed/Chapter.java b/src/de/danoeh/antennapod/feed/Chapter.java
new file mode 100644
index 000000000..b44723d8e
--- /dev/null
+++ b/src/de/danoeh/antennapod/feed/Chapter.java
@@ -0,0 +1,37 @@
+package de.danoeh.antennapod.feed;
+
+public abstract class Chapter extends FeedComponent{
+
+ /** Defines starting point in milliseconds. */
+ protected long start;
+ protected String title;
+ protected FeedItem item;
+ protected String link;
+
+ public Chapter(long start, String title, FeedItem item, String link) {
+ super();
+ this.start = start;
+ this.title = title;
+ this.item = item;
+ this.link = link;
+ }
+
+ public abstract int getChapterType();
+
+ public long getStart() {
+ return start;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public FeedItem getItem() {
+ return item;
+ }
+
+ public String getLink() {
+ return link;
+ }
+
+}
diff --git a/src/de/danoeh/antennapod/feed/FeedItem.java b/src/de/danoeh/antennapod/feed/FeedItem.java
index 209426b5e..59702c6ff 100644
--- a/src/de/danoeh/antennapod/feed/FeedItem.java
+++ b/src/de/danoeh/antennapod/feed/FeedItem.java
@@ -22,7 +22,7 @@ public class FeedItem extends FeedComponent {
private Feed feed;
protected boolean read;
private String paymentLink;
- private ArrayList<SimpleChapter> simpleChapters;
+ private ArrayList<Chapter> chapters;
public FeedItem() {
this.read = true;
@@ -41,11 +41,11 @@ public class FeedItem extends FeedComponent {
}
/** Get the chapter that fits the position. */
- public SimpleChapter getCurrentChapter(int position) {
- SimpleChapter current = null;
- if (simpleChapters != null) {
- current = simpleChapters.get(0);
- for (SimpleChapter sc : simpleChapters) {
+ public Chapter getCurrentChapter(int position) {
+ Chapter current = null;
+ if (chapters != null) {
+ current = chapters.get(0);
+ for (Chapter sc : chapters) {
if (sc.getStart() > position) {
break;
} else {
@@ -57,7 +57,7 @@ public class FeedItem extends FeedComponent {
}
/** Calls getCurrentChapter with current position. */
- public SimpleChapter getCurrentChapter() {
+ public Chapter getCurrentChapter() {
return getCurrentChapter(media.getPosition());
}
@@ -144,12 +144,12 @@ public class FeedItem extends FeedComponent {
this.paymentLink = paymentLink;
}
- public ArrayList<SimpleChapter> getSimpleChapters() {
- return simpleChapters;
+ public ArrayList<Chapter> getChapters() {
+ return chapters;
}
- public void setSimpleChapters(ArrayList<SimpleChapter> simpleChapters) {
- this.simpleChapters = simpleChapters;
+ public void setChapters(ArrayList<Chapter> chapters) {
+ this.chapters = chapters;
}
public String getItemIdentifier() {
diff --git a/src/de/danoeh/antennapod/feed/FeedManager.java b/src/de/danoeh/antennapod/feed/FeedManager.java
index a3ab901f9..bd6f7c544 100644
--- a/src/de/danoeh/antennapod/feed/FeedManager.java
+++ b/src/de/danoeh/antennapod/feed/FeedManager.java
@@ -919,19 +919,22 @@ public class FeedManager {
Cursor chapterCursor = adapter
.getSimpleChaptersOfFeedItemCursor(item);
if (chapterCursor.moveToFirst()) {
- item.setSimpleChapters(new ArrayList<SimpleChapter>());
+ item.setChapters(new ArrayList<Chapter>());
do {
- SimpleChapter chapter = new SimpleChapter(
- item,
- chapterCursor
- .getLong(PodDBAdapter.KEY_SC_START_INDEX),
- chapterCursor
- .getString(PodDBAdapter.KEY_TITLE_INDEX),
- chapterCursor
- .getString(PodDBAdapter.KEY_SC_LINK_INDEX));
+ int chapterType = chapterCursor.getInt(PodDBAdapter.KEY_CHAPTER_TYPE_INDEX);
+ Chapter chapter = null;
+ long start = chapterCursor.getLong(PodDBAdapter.KEY_SC_START_INDEX);
+ String title = chapterCursor.getString(PodDBAdapter.KEY_TITLE_INDEX);
+ String link = chapterCursor.getString(PodDBAdapter.KEY_SC_LINK_INDEX);
+
+ switch (chapterType) {
+ case SimpleChapter.CHAPTERTYPE_SIMPLECHAPTER:
+ chapter = new SimpleChapter(start, title, item, link);
+ break;
+ }
chapter.setId(chapterCursor
.getLong(PodDBAdapter.KEY_ID_INDEX));
- item.getSimpleChapters().add(chapter);
+ item.getChapters().add(chapter);
} while (chapterCursor.moveToNext());
}
chapterCursor.close();
diff --git a/src/de/danoeh/antennapod/feed/FeedSearcher.java b/src/de/danoeh/antennapod/feed/FeedSearcher.java
index cb98e3bee..0948af71b 100644
--- a/src/de/danoeh/antennapod/feed/FeedSearcher.java
+++ b/src/de/danoeh/antennapod/feed/FeedSearcher.java
@@ -114,8 +114,8 @@ public class FeedSearcher {
private static void searchFeedItemChaptersSingleFeed(String query,
ArrayList<SearchResult> destination, Feed feed) {
for (FeedItem item : feed.getItems()) {
- if (item.getSimpleChapters() != null) {
- for (SimpleChapter sc : item.getSimpleChapters()) {
+ if (item.getChapters() != null) {
+ for (Chapter sc : item.getChapters()) {
SearchResult result = createSearchResult(item, query, sc
.getTitle().toLowerCase(), VALUE_ITEM_CHAPTER);
if (result != null) {
diff --git a/src/de/danoeh/antennapod/feed/SimpleChapter.java b/src/de/danoeh/antennapod/feed/SimpleChapter.java
index 96731d6e0..2462497ef 100644
--- a/src/de/danoeh/antennapod/feed/SimpleChapter.java
+++ b/src/de/danoeh/antennapod/feed/SimpleChapter.java
@@ -1,18 +1,10 @@
package de.danoeh.antennapod.feed;
-public class SimpleChapter extends FeedComponent {
- /** Defines starting point in milliseconds. */
- private long start;
- private String title;
- private FeedItem item;
- private String link;
-
- public SimpleChapter(FeedItem item, long start, String title, String link) {
- super();
- this.item = item;
- this.start = start;
- this.title = title;
- this.link = link;
+public class SimpleChapter extends Chapter {
+ public static final int CHAPTERTYPE_SIMPLECHAPTER = 0;
+
+ public SimpleChapter(long start, String title, FeedItem item, String link) {
+ super(start, title, item, link);
}
public String getTitle() {
@@ -35,4 +27,9 @@ public class SimpleChapter extends FeedComponent {
return link;
}
+ @Override
+ public int getChapterType() {
+ return CHAPTERTYPE_SIMPLECHAPTER;
+ }
+
}
diff --git a/src/de/danoeh/antennapod/storage/PodDBAdapter.java b/src/de/danoeh/antennapod/storage/PodDBAdapter.java
index 3ce4a94aa..f5efd4cc9 100644
--- a/src/de/danoeh/antennapod/storage/PodDBAdapter.java
+++ b/src/de/danoeh/antennapod/storage/PodDBAdapter.java
@@ -14,6 +14,7 @@ import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.asynctask.DownloadStatus;
+import de.danoeh.antennapod.feed.Chapter;
import de.danoeh.antennapod.feed.Feed;
import de.danoeh.antennapod.feed.FeedImage;
import de.danoeh.antennapod.feed.FeedItem;
@@ -25,7 +26,7 @@ import de.danoeh.antennapod.feed.SimpleChapter;
* */
public class PodDBAdapter {
private static final String TAG = "PodDBAdapter";
- private static final int DATABASE_VERSION = 6;
+ private static final int DATABASE_VERSION = 7;
private static final String DATABASE_NAME = "Antennapod.db";
/** Maximum number of arguments for IN-operator. */
@@ -72,10 +73,11 @@ public class PodDBAdapter {
// --------- Queue indices
public static final int KEY_FEEDITEM_INDEX = 1;
public static final int KEY_QUEUE_FEED_INDEX = 2;
- // --------- Simplechapters indices
+ // --------- Chapters indices
public static final int KEY_SC_START_INDEX = 2;
public static final int KEY_SC_FEEDITEM_INDEX = 3;
public static final int KEY_SC_LINK_INDEX = 4;
+ public static final int KEY_CHAPTER_TYPE_INDEX = 5;
// Key-constants
public static final String KEY_ID = "id";
@@ -113,6 +115,7 @@ public class PodDBAdapter {
public static final String KEY_FEED_IDENTIFIER = "feed_identifier";
public static final String KEY_REASON_DETAILED = "reason_detailed";
public static final String KEY_DOWNLOADSTATUS_TITLE = "title";
+ public static final String KEY_CHAPTER_TYPE = "type";
// Table names
public static final String TABLE_NAME_FEEDS = "Feeds";
@@ -170,7 +173,7 @@ public class PodDBAdapter {
private static final String CREATE_TABLE_SIMPLECHAPTERS = "CREATE TABLE "
+ TABLE_NAME_SIMPLECHAPTERS + " (" + TABLE_PRIMARY_KEY + KEY_TITLE
+ " TEXT," + KEY_START + " INTEGER," + KEY_FEEDITEM + " INTEGER,"
- + KEY_LINK + " TEXT)";
+ + KEY_LINK + " TEXT," + KEY_CHAPTER_TYPE + " INTEGER)";
private SQLiteDatabase db;
private final Context context;
@@ -330,7 +333,7 @@ public class PodDBAdapter {
}
values.put(KEY_FEED, item.getFeed().getId());
values.put(KEY_READ, item.isRead());
- values.put(KEY_HAS_SIMPLECHAPTERS, item.getSimpleChapters() != null);
+ values.put(KEY_HAS_SIMPLECHAPTERS, item.getChapters() != null);
values.put(KEY_ITEM_IDENTIFIER, item.getItemIdentifier());
if (item.getId() == 0) {
item.setId(db.insert(TABLE_NAME_FEED_ITEMS, null, values));
@@ -338,7 +341,7 @@ public class PodDBAdapter {
db.update(TABLE_NAME_FEED_ITEMS, values, KEY_ID + "=?",
new String[] { String.valueOf(item.getId()) });
}
- if (item.getSimpleChapters() != null) {
+ if (item.getChapters() != null) {
setSimpleChapters(item);
}
return item.getId();
@@ -346,11 +349,12 @@ public class PodDBAdapter {
public void setSimpleChapters(FeedItem item) {
ContentValues values = new ContentValues();
- for (SimpleChapter chapter : item.getSimpleChapters()) {
+ for (Chapter chapter : item.getChapters()) {
values.put(KEY_TITLE, chapter.getTitle());
values.put(KEY_START, chapter.getStart());
values.put(KEY_FEEDITEM, item.getId());
values.put(KEY_LINK, chapter.getLink());
+ values.put(KEY_CHAPTER_TYPE, chapter.getChapterType());
if (chapter.getId() == 0) {
chapter.setId(db
.insert(TABLE_NAME_SIMPLECHAPTERS, null, values));
@@ -670,6 +674,10 @@ public class PodDBAdapter {
db.execSQL("ALTER TABLE " + TABLE_NAME_DOWNLOAD_LOG
+ " ADD COLUMN " + KEY_DOWNLOADSTATUS_TITLE + " TEXT");
}
+ if (oldVersion <= 6) {
+ db.execSQL("ALTER TABLE " + TABLE_NAME_SIMPLECHAPTERS
+ + " ADD COLUMN " + KEY_CHAPTER_TYPE + " INTEGER");
+ }
}
}
diff --git a/src/de/danoeh/antennapod/syndication/namespace/simplechapters/NSSimpleChapters.java b/src/de/danoeh/antennapod/syndication/namespace/simplechapters/NSSimpleChapters.java
index f1fecf513..f6918231c 100644
--- a/src/de/danoeh/antennapod/syndication/namespace/simplechapters/NSSimpleChapters.java
+++ b/src/de/danoeh/antennapod/syndication/namespace/simplechapters/NSSimpleChapters.java
@@ -4,6 +4,7 @@ import java.util.ArrayList;
import org.xml.sax.Attributes;
+import de.danoeh.antennapod.feed.Chapter;
import de.danoeh.antennapod.feed.SimpleChapter;
import de.danoeh.antennapod.syndication.handler.HandlerState;
import de.danoeh.antennapod.syndication.namespace.Namespace;
@@ -24,15 +25,14 @@ public class NSSimpleChapters extends Namespace {
public SyndElement handleElementStart(String localName, HandlerState state,
Attributes attributes) {
if (localName.equals(CHAPTERS)) {
- state.getCurrentItem().setSimpleChapters(
- new ArrayList<SimpleChapter>());
+ state.getCurrentItem().setChapters(new ArrayList<Chapter>());
} else if (localName.equals(CHAPTER)) {
state.getCurrentItem()
- .getSimpleChapters()
- .add(new SimpleChapter(state.getCurrentItem(),
- SyndDateUtils.parseTimeString(attributes
- .getValue(START)), attributes
- .getValue(TITLE), attributes.getValue(HREF)));
+ .getChapters()
+ .add(new SimpleChapter(SyndDateUtils
+ .parseTimeString(attributes.getValue(START)),
+ attributes.getValue(TITLE), state.getCurrentItem(),
+ attributes.getValue(HREF)));
}
return new SyndElement(localName, this);