Merge branch 'develop' of https://github.com/danieloeh/AntennaPod into move-to-top
This commit is contained in:
commit
82bdfe05ac
@ -3,7 +3,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:0.5.5'
|
classpath 'com.android.tools.build:gradle:0.5.6'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
apply plugin: 'android'
|
apply plugin: 'android'
|
||||||
|
10
proguard.cfg
10
proguard.cfg
@ -52,10 +52,12 @@
|
|||||||
public static <fields>;
|
public static <fields>;
|
||||||
}
|
}
|
||||||
|
|
||||||
-keep class android.support.v4.app.** { *; }
|
-keep class android.support.v4.** { *; }
|
||||||
-keep interface android.support.v4.app.** { *; }
|
-keep interface android.support.v4.** { *; }
|
||||||
-keep class com.actionbarsherlock.** { *; }
|
-keep class android.support.v7.** { *; }
|
||||||
-keep interface com.actionbarsherlock.** { *; }
|
-keep interface android.support.v7.** { *; }
|
||||||
|
-dontwarn android.support.v4.**
|
||||||
|
-dontwarn android.support.v7.**
|
||||||
|
|
||||||
-keepattributes *Annotation*
|
-keepattributes *Annotation*
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ public class DownloadLogActivity extends ActionBarActivity {
|
|||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
|
|
||||||
listview = (ListView) findViewById(R.layout.listview_activity);
|
listview = (ListView) findViewById(R.id.listview);
|
||||||
|
|
||||||
dla = new DownloadLogAdapter(this, itemAccess);
|
dla = new DownloadLogAdapter(this, itemAccess);
|
||||||
listview.setAdapter(dla);
|
listview.setAdapter(dla);
|
||||||
|
@ -7,6 +7,7 @@ import android.content.Context;
|
|||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
|
import android.media.AudioManager;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.FragmentManager;
|
import android.support.v4.app.FragmentManager;
|
||||||
@ -57,6 +58,7 @@ public class FeedItemlistActivity extends ActionBarActivity {
|
|||||||
|
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
setContentView(R.layout.feeditemlist_activity);
|
setContentView(R.layout.feeditemlist_activity);
|
||||||
|
setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
||||||
|
|
||||||
long feedId = getIntent().getLongExtra(
|
long feedId = getIntent().getLongExtra(
|
||||||
FeedlistFragment.EXTRA_SELECTED_FEED, -1);
|
FeedlistFragment.EXTRA_SELECTED_FEED, -1);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package de.danoeh.antennapod.activity;
|
package de.danoeh.antennapod.activity;
|
||||||
|
|
||||||
|
import android.media.AudioManager;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.FragmentManager;
|
import android.support.v4.app.FragmentManager;
|
||||||
@ -45,6 +46,7 @@ public class ItemviewActivity extends ActionBarActivity {
|
|||||||
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
|
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
|
||||||
getSupportActionBar().setDisplayShowTitleEnabled(false);
|
getSupportActionBar().setDisplayShowTitleEnabled(false);
|
||||||
EventDistributor.getInstance().register(contentUpdate);
|
EventDistributor.getInstance().register(contentUpdate);
|
||||||
|
setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
||||||
|
|
||||||
long itemId = getIntent().getLongExtra(
|
long itemId = getIntent().getLongExtra(
|
||||||
ItemlistFragment.EXTRA_SELECTED_FEEDITEM, -1);
|
ItemlistFragment.EXTRA_SELECTED_FEEDITEM, -1);
|
||||||
|
@ -6,6 +6,7 @@ import android.app.SearchManager;
|
|||||||
import android.app.SearchableInfo;
|
import android.app.SearchableInfo;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.media.AudioManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.support.v4.app.FragmentPagerAdapter;
|
import android.support.v4.app.FragmentPagerAdapter;
|
||||||
@ -55,8 +56,9 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
StorageUtils.checkStorageAvailability(this);
|
StorageUtils.checkStorageAvailability(this);
|
||||||
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
|
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
|
||||||
setContentView(R.layout.main);
|
setContentView(R.layout.main);
|
||||||
|
setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
||||||
|
|
||||||
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
|
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
|
||||||
|
|
||||||
viewpager = (ViewPager) findViewById(R.id.viewpager);
|
viewpager = (ViewPager) findViewById(R.id.viewpager);
|
||||||
pagerAdapter = new TabsAdapter(this, viewpager);
|
pagerAdapter = new TabsAdapter(this, viewpager);
|
||||||
|
@ -4,6 +4,7 @@ import android.app.AlertDialog;
|
|||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.PixelFormat;
|
import android.graphics.PixelFormat;
|
||||||
|
import android.media.AudioManager;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.app.ActionBarActivity;
|
import android.support.v7.app.ActionBarActivity;
|
||||||
@ -143,8 +144,9 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||||||
if (AppConfig.DEBUG)
|
if (AppConfig.DEBUG)
|
||||||
Log.d(TAG, "Creating Activity");
|
Log.d(TAG, "Creating Activity");
|
||||||
StorageUtils.checkStorageAvailability(this);
|
StorageUtils.checkStorageAvailability(this);
|
||||||
|
setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
||||||
|
|
||||||
orientation = getResources().getConfiguration().orientation;
|
orientation = getResources().getConfiguration().orientation;
|
||||||
getWindow().setFormat(PixelFormat.TRANSPARENT);
|
getWindow().setFormat(PixelFormat.TRANSPARENT);
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
}
|
}
|
||||||
|
@ -51,6 +51,7 @@ public class OrganizeQueueActivity extends ActionBarActivity implements
|
|||||||
listView = (DragSortListView) findViewById(android.R.id.list);
|
listView = (DragSortListView) findViewById(android.R.id.list);
|
||||||
listView.setDropListener(dropListener);
|
listView.setDropListener(dropListener);
|
||||||
listView.setRemoveListener(removeListener);
|
listView.setRemoveListener(removeListener);
|
||||||
|
listView.setEmptyView(findViewById(android.R.id.empty));
|
||||||
|
|
||||||
loadData();
|
loadData();
|
||||||
undoBarController = new UndoBarController(findViewById(R.id.undobar),
|
undoBarController = new UndoBarController(findViewById(R.id.undobar),
|
||||||
@ -155,9 +156,11 @@ public class OrganizeQueueActivity extends ActionBarActivity implements
|
|||||||
public void onUndo(Parcelable token) {
|
public void onUndo(Parcelable token) {
|
||||||
// Perform the undo
|
// Perform the undo
|
||||||
UndoToken undoToken = (UndoToken) token;
|
UndoToken undoToken = (UndoToken) token;
|
||||||
long itemId = undoToken.getFeedItemId();
|
if (token != null) {
|
||||||
int position = undoToken.getPosition();
|
long itemId = undoToken.getFeedItemId();
|
||||||
DBWriter.addQueueItemAt(OrganizeQueueActivity.this, itemId, position, false);
|
int position = undoToken.getPosition();
|
||||||
|
DBWriter.addQueueItemAt(OrganizeQueueActivity.this, itemId, position, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class OrganizeAdapter extends BaseAdapter {
|
private static class OrganizeAdapter extends BaseAdapter {
|
||||||
|
@ -314,13 +314,6 @@ public class Feed extends FeedFile {
|
|||||||
this.items = list;
|
this.items = list;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an array that contains all the feeditems of this feed.
|
|
||||||
*/
|
|
||||||
public FeedItem[] getItemsArray() {
|
|
||||||
return items.toArray(new FeedItem[items.size()]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getLastUpdate() {
|
public Date getLastUpdate() {
|
||||||
return lastUpdate;
|
return lastUpdate;
|
||||||
}
|
}
|
||||||
|
@ -304,7 +304,7 @@ public class FeedMedia extends FeedFile implements Playable {
|
|||||||
@Override
|
@Override
|
||||||
public void saveCurrentPosition(SharedPreferences pref, int newPosition) {
|
public void saveCurrentPosition(SharedPreferences pref, int newPosition) {
|
||||||
position = newPosition;
|
position = newPosition;
|
||||||
DBWriter.setFeedMediaPosition(PodcastApp.getInstance(), this);
|
DBWriter.setFeedMediaPlaybackInformation(PodcastApp.getInstance(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -3,6 +3,7 @@ package de.danoeh.antennapod.fragment;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
@ -29,9 +30,9 @@ import de.danoeh.antennapod.storage.FeedItemStatistics;
|
|||||||
import de.danoeh.antennapod.util.menuhandler.FeedMenuHandler;
|
import de.danoeh.antennapod.util.menuhandler.FeedMenuHandler;
|
||||||
|
|
||||||
public class FeedlistFragment extends Fragment implements
|
public class FeedlistFragment extends Fragment implements
|
||||||
ActionMode.Callback, AdapterView.OnItemClickListener,
|
ActionMode.Callback, AdapterView.OnItemClickListener,
|
||||||
AdapterView.OnItemLongClickListener {
|
AdapterView.OnItemLongClickListener {
|
||||||
private static final String TAG = "FeedlistFragment";
|
private static final String TAG = "FeedlistFragment";
|
||||||
|
|
||||||
private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED
|
private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED
|
||||||
| EventDistributor.DOWNLOAD_QUEUED
|
| EventDistributor.DOWNLOAD_QUEUED
|
||||||
@ -94,12 +95,16 @@ public class FeedlistFragment extends Fragment implements
|
|||||||
AsyncTask<Void, Void, List[]> loadTask = new AsyncTask<Void, Void, List[]>() {
|
AsyncTask<Void, Void, List[]> loadTask = new AsyncTask<Void, Void, List[]>() {
|
||||||
@Override
|
@Override
|
||||||
protected List[] doInBackground(Void... params) {
|
protected List[] doInBackground(Void... params) {
|
||||||
return new List[]{DBReader.getFeedList(getActivity()),
|
Context context = getActivity();
|
||||||
DBReader.getFeedStatisticsList(getActivity())};
|
if (context != null) {
|
||||||
|
return new List[]{DBReader.getFeedList(context),
|
||||||
|
DBReader.getFeedStatisticsList(context)};
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(List[] result) {
|
protected void onPostExecute(List[] result) {
|
||||||
super.onPostExecute(result);
|
super.onPostExecute(result);
|
||||||
@ -159,10 +164,15 @@ public class FeedlistFragment extends Fragment implements
|
|||||||
EventDistributor.getInstance().register(contentUpdate);
|
EventDistributor.getInstance().register(contentUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
EventDistributor.getInstance().unregister(contentUpdate);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
EventDistributor.getInstance().unregister(contentUpdate);
|
|
||||||
if (mActionMode != null) {
|
if (mActionMode != null) {
|
||||||
mActionMode.finish();
|
mActionMode.finish();
|
||||||
}
|
}
|
||||||
|
@ -561,7 +561,7 @@ public class DownloadService extends Service {
|
|||||||
Log.d(TAG, numberOfDownloads.get() + " downloads left");
|
Log.d(TAG, numberOfDownloads.get() + " downloads left");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (numberOfDownloads.get() <= 0) {
|
if (numberOfDownloads.get() <= 0 && DownloadRequester.getInstance().hasNoDownloads()) {
|
||||||
if (AppConfig.DEBUG)
|
if (AppConfig.DEBUG)
|
||||||
Log.d(TAG, "Number of downloads is " + numberOfDownloads.get() + ", attempting shutdown");
|
Log.d(TAG, "Number of downloads is " + numberOfDownloads.get() + ", attempting shutdown");
|
||||||
stopSelf();
|
stopSelf();
|
||||||
@ -647,28 +647,21 @@ public class DownloadService extends Service {
|
|||||||
Log.d(TAG, "Feed has image; Downloading....");
|
Log.d(TAG, "Feed has image; Downloading....");
|
||||||
savedFeed.getImage().setFeed(savedFeed);
|
savedFeed.getImage().setFeed(savedFeed);
|
||||||
final Feed savedFeedRef = savedFeed;
|
final Feed savedFeedRef = savedFeed;
|
||||||
handler.post(new Runnable() {
|
try {
|
||||||
|
requester.downloadImage(DownloadService.this,
|
||||||
@Override
|
savedFeedRef.getImage());
|
||||||
public void run() {
|
} catch (DownloadRequestException e) {
|
||||||
try {
|
e.printStackTrace();
|
||||||
requester.downloadImage(DownloadService.this,
|
DBWriter.addDownloadStatus(
|
||||||
savedFeedRef.getImage());
|
DownloadService.this,
|
||||||
} catch (DownloadRequestException e) {
|
new DownloadStatus(
|
||||||
e.printStackTrace();
|
savedFeedRef.getImage(),
|
||||||
DBWriter.addDownloadStatus(
|
savedFeedRef
|
||||||
DownloadService.this,
|
.getImage()
|
||||||
new DownloadStatus(
|
.getHumanReadableIdentifier(),
|
||||||
savedFeedRef.getImage(),
|
DownloadError.ERROR_REQUEST_ERROR,
|
||||||
savedFeedRef
|
false, e.getMessage()));
|
||||||
.getImage()
|
}
|
||||||
.getHumanReadableIdentifier(),
|
|
||||||
DownloadError.ERROR_REQUEST_ERROR,
|
|
||||||
false, e.getMessage()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (SAXException e) {
|
} catch (SAXException e) {
|
||||||
@ -730,7 +723,7 @@ public class DownloadService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean hasValidFeedItems(Feed feed) {
|
private boolean hasValidFeedItems(Feed feed) {
|
||||||
for (FeedItem item : feed.getItemsArray()) {
|
for (FeedItem item : feed.getItems()) {
|
||||||
if (item.getTitle() == null) {
|
if (item.getTitle() == null) {
|
||||||
Log.e(TAG, "Item has no title");
|
Log.e(TAG, "Item has no title");
|
||||||
return false;
|
return false;
|
||||||
|
@ -73,7 +73,10 @@ public class DBWriter {
|
|||||||
}
|
}
|
||||||
media.setDownloaded(false);
|
media.setDownloaded(false);
|
||||||
media.setFile_url(null);
|
media.setFile_url(null);
|
||||||
setFeedMedia(context, media);
|
PodDBAdapter adapter = new PodDBAdapter(context);
|
||||||
|
adapter.open();
|
||||||
|
adapter.setMedia(media);
|
||||||
|
adapter.close();
|
||||||
|
|
||||||
// If media is currently being played, change playback
|
// If media is currently being played, change playback
|
||||||
// type to 'stream' and shutdown playback service
|
// type to 'stream' and shutdown playback service
|
||||||
@ -688,18 +691,18 @@ public class DBWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Saves only value of the 'position'-attribute of a FeedMedia object.
|
* Saves the 'position' and 'duration' attributes of a FeedMedia object
|
||||||
*
|
*
|
||||||
* @param context A context that is used for opening a database connection.
|
* @param context A context that is used for opening a database connection.
|
||||||
* @param media The FeedMedia object.
|
* @param media The FeedMedia object.
|
||||||
*/
|
*/
|
||||||
public static Future<?> setFeedMediaPosition(final Context context, final FeedMedia media) {
|
public static Future<?> setFeedMediaPlaybackInformation(final Context context, final FeedMedia media) {
|
||||||
return dbExec.submit(new Runnable() {
|
return dbExec.submit(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
PodDBAdapter adapter = new PodDBAdapter(context);
|
PodDBAdapter adapter = new PodDBAdapter(context);
|
||||||
adapter.open();
|
adapter.open();
|
||||||
adapter.setFeedMediaPosition(media);
|
adapter.setFeedMediaPlaybackInformation(media);
|
||||||
adapter.close();
|
adapter.close();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -361,6 +361,7 @@ public class PodDBAdapter {
|
|||||||
values.put(KEY_DOWNLOAD_URL, media.getDownload_url());
|
values.put(KEY_DOWNLOAD_URL, media.getDownload_url());
|
||||||
values.put(KEY_DOWNLOADED, media.isDownloaded());
|
values.put(KEY_DOWNLOADED, media.isDownloaded());
|
||||||
values.put(KEY_FILE_URL, media.getFile_url());
|
values.put(KEY_FILE_URL, media.getFile_url());
|
||||||
|
|
||||||
if (media.getPlaybackCompletionDate() != null) {
|
if (media.getPlaybackCompletionDate() != null) {
|
||||||
values.put(KEY_PLAYBACK_COMPLETION_DATE, media
|
values.put(KEY_PLAYBACK_COMPLETION_DATE, media
|
||||||
.getPlaybackCompletionDate().getTime());
|
.getPlaybackCompletionDate().getTime());
|
||||||
@ -379,14 +380,15 @@ public class PodDBAdapter {
|
|||||||
return media.getId();
|
return media.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFeedMediaPosition(FeedMedia media) {
|
public void setFeedMediaPlaybackInformation(FeedMedia media) {
|
||||||
if (media.getId() != 0) {
|
if (media.getId() != 0) {
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
values.put(KEY_POSITION, media.getPosition());
|
values.put(KEY_POSITION, media.getPosition());
|
||||||
|
values.put(KEY_DURATION, media.getDuration());
|
||||||
db.update(TABLE_NAME_FEED_MEDIA, values, KEY_ID + "=?",
|
db.update(TABLE_NAME_FEED_MEDIA, values, KEY_ID + "=?",
|
||||||
new String[]{String.valueOf(media.getId())});
|
new String[]{String.valueOf(media.getId())});
|
||||||
} else {
|
} else {
|
||||||
Log.e(TAG, "setFeedMediaPosition: ID of media was 0");
|
Log.e(TAG, "setFeedMediaPlaybackInformation: ID of media was 0");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -397,8 +399,10 @@ public class PodDBAdapter {
|
|||||||
public void setCompleteFeed(Feed feed) {
|
public void setCompleteFeed(Feed feed) {
|
||||||
db.beginTransaction();
|
db.beginTransaction();
|
||||||
setFeed(feed);
|
setFeed(feed);
|
||||||
for (FeedItem item : feed.getItemsArray()) {
|
if (feed.getItems() != null) {
|
||||||
setFeedItem(item);
|
for (FeedItem item : feed.getItems()) {
|
||||||
|
setFeedItem(item, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
db.endTransaction();
|
db.endTransaction();
|
||||||
@ -407,7 +411,7 @@ public class PodDBAdapter {
|
|||||||
public void setFeedItemlist(List<FeedItem> items) {
|
public void setFeedItemlist(List<FeedItem> items) {
|
||||||
db.beginTransaction();
|
db.beginTransaction();
|
||||||
for (FeedItem item : items) {
|
for (FeedItem item : items) {
|
||||||
setFeedItem(item);
|
setFeedItem(item, true);
|
||||||
}
|
}
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
db.endTransaction();
|
db.endTransaction();
|
||||||
@ -415,7 +419,7 @@ public class PodDBAdapter {
|
|||||||
|
|
||||||
public long setSingleFeedItem(FeedItem item) {
|
public long setSingleFeedItem(FeedItem item) {
|
||||||
db.beginTransaction();
|
db.beginTransaction();
|
||||||
long result = setFeedItem(item);
|
long result = setFeedItem(item, true);
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
db.endTransaction();
|
db.endTransaction();
|
||||||
return result;
|
return result;
|
||||||
@ -423,10 +427,12 @@ public class PodDBAdapter {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Inserts or updates a feeditem entry
|
* Inserts or updates a feeditem entry
|
||||||
*
|
* @param item The FeedItem
|
||||||
|
* @param saveFeed true if the Feed of the item should also be saved. This should be set to
|
||||||
|
* false if the method is executed on a list of FeedItems of the same Feed.
|
||||||
* @return the id of the entry
|
* @return the id of the entry
|
||||||
*/
|
*/
|
||||||
private long setFeedItem(FeedItem item) {
|
private long setFeedItem(FeedItem item, boolean saveFeed) {
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
values.put(KEY_TITLE, item.getTitle());
|
values.put(KEY_TITLE, item.getTitle());
|
||||||
values.put(KEY_LINK, item.getLink());
|
values.put(KEY_LINK, item.getLink());
|
||||||
@ -438,7 +444,7 @@ public class PodDBAdapter {
|
|||||||
}
|
}
|
||||||
values.put(KEY_PUBDATE, item.getPubDate().getTime());
|
values.put(KEY_PUBDATE, item.getPubDate().getTime());
|
||||||
values.put(KEY_PAYMENT_LINK, item.getPaymentLink());
|
values.put(KEY_PAYMENT_LINK, item.getPaymentLink());
|
||||||
if (item.getFeed() != null) {
|
if (saveFeed && item.getFeed() != null) {
|
||||||
setFeed(item.getFeed());
|
setFeed(item.getFeed());
|
||||||
}
|
}
|
||||||
values.put(KEY_FEED, item.getFeed().getId());
|
values.put(KEY_FEED, item.getFeed().getId());
|
||||||
@ -603,8 +609,10 @@ public class PodDBAdapter {
|
|||||||
if (feed.getImage() != null) {
|
if (feed.getImage() != null) {
|
||||||
removeFeedImage(feed.getImage());
|
removeFeedImage(feed.getImage());
|
||||||
}
|
}
|
||||||
for (FeedItem item : feed.getItemsArray()) {
|
if (feed.getItems() != null) {
|
||||||
removeFeedItem(item);
|
for (FeedItem item : feed.getItems()) {
|
||||||
|
removeFeedItem(item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
db.delete(TABLE_NAME_FEEDS, KEY_ID + "=?",
|
db.delete(TABLE_NAME_FEEDS, KEY_ID + "=?",
|
||||||
new String[]{String.valueOf(feed.getId())});
|
new String[]{String.valueOf(feed.getId())});
|
||||||
|
@ -51,9 +51,8 @@ public abstract class QueueAccess {
|
|||||||
if (items == null) {
|
if (items == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Iterator<FeedItem> it = items.iterator();
|
for (FeedItem item : items) {
|
||||||
for (FeedItem i = it.next(); it.hasNext(); i = it.next()) {
|
if (item.getId() == id) {
|
||||||
if (i.getId() == id) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -63,8 +62,10 @@ public abstract class QueueAccess {
|
|||||||
@Override
|
@Override
|
||||||
public boolean remove(long id) {
|
public boolean remove(long id) {
|
||||||
Iterator<FeedItem> it = items.iterator();
|
Iterator<FeedItem> it = items.iterator();
|
||||||
for (FeedItem i = it.next(); it.hasNext(); i = it.next()) {
|
FeedItem item;
|
||||||
if (i.getId() == id) {
|
while (it.hasNext()) {
|
||||||
|
item = it.next();
|
||||||
|
if (item.getId() == id) {
|
||||||
it.remove();
|
it.remove();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -84,37 +84,6 @@ public class DBWriterTest extends InstrumentationTestCase {
|
|||||||
assertNull(media.getFile_url());
|
assertNull(media.getFile_url());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDeleteFeedMediaOfItemFileDoesNotExists() throws IOException, ExecutionException, InterruptedException {
|
|
||||||
File dest = new File(getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER), "testFile");
|
|
||||||
|
|
||||||
Feed feed = new Feed("url", new Date(), "title");
|
|
||||||
List<FeedItem> items = new ArrayList<FeedItem>();
|
|
||||||
feed.setItems(items);
|
|
||||||
FeedItem item = new FeedItem();
|
|
||||||
item.setTitle("title");
|
|
||||||
item.setPubDate(new Date());
|
|
||||||
item.setFeed(feed);
|
|
||||||
|
|
||||||
FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", dest.getAbsolutePath(), "download_url", false, null);
|
|
||||||
item.setMedia(media);
|
|
||||||
|
|
||||||
items.add(item);
|
|
||||||
|
|
||||||
PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext());
|
|
||||||
adapter.open();
|
|
||||||
adapter.setCompleteFeed(feed);
|
|
||||||
adapter.close();
|
|
||||||
assertTrue(media.getId() != 0);
|
|
||||||
assertTrue(item.getId() != 0);
|
|
||||||
|
|
||||||
DBWriter.deleteFeedMediaOfItem(getInstrumentation().getTargetContext(), media.getId()).get();
|
|
||||||
media = DBReader.getFeedMedia(getInstrumentation().getTargetContext(), media.getId());
|
|
||||||
assertNotNull(media);
|
|
||||||
assertFalse(dest.exists());
|
|
||||||
assertFalse(media.isDownloaded());
|
|
||||||
assertNull(media.getFile_url());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testDeleteFeed() throws IOException, ExecutionException, InterruptedException, TimeoutException {
|
public void testDeleteFeed() throws IOException, ExecutionException, InterruptedException, TimeoutException {
|
||||||
File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER);
|
File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER);
|
||||||
assertNotNull(destFolder);
|
assertNotNull(destFolder);
|
||||||
|
@ -124,7 +124,7 @@ public class FeedHandlerTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean hasValidFeedItems(Feed feed) {
|
private boolean hasValidFeedItems(Feed feed) {
|
||||||
for (FeedItem item : feed.getItemsArray()) {
|
for (FeedItem item : feed.getItems()) {
|
||||||
if (item.getTitle() == null) {
|
if (item.getTitle() == null) {
|
||||||
Log.e(TAG, "Item has no title");
|
Log.e(TAG, "Item has no title");
|
||||||
return false;
|
return false;
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit c56bf97269d5dc90df1c428fd18df0e7619eff0e
|
Subproject commit 643cc2a1afd4f849d5a33f014f877f7d7c10b2db
|
Loading…
x
Reference in New Issue
Block a user