summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml5
-rw-r--r--res/values/arrays.xml16
-rw-r--r--res/values/strings.xml6
-rw-r--r--res/xml/preferences.xml2
-rw-r--r--src/de/danoeh/antennapod/activity/PreferenceActivity.java30
-rw-r--r--src/de/danoeh/antennapod/feed/FeedManager.java15
-rw-r--r--src/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java26
-rw-r--r--src/de/danoeh/antennapod/service/PlaybackService.java6
-rw-r--r--src/de/danoeh/antennapod/syndication/namespace/NSRSS20.java15
-rw-r--r--tests/src/de/danoeh/antennapod/test/TestFeeds.java1
10 files changed, 83 insertions, 39 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 888aa026a..fae6b862d 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -23,6 +23,9 @@
<uses-feature
android:name="android.hardware.screen.portrait"
android:required="false" />
+ <uses-feature
+ android:name="android.hardware.touchscreen"
+ android:required="false" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
@@ -368,4 +371,4 @@
</receiver>
</application>
-</manifest> \ No newline at end of file
+</manifest>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index b8cef4ab2..4036ff0f4 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -1,16 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string-array name="update_intervall_options">
- <item>Manual</item>
- <item>1 hour</item>
- <item>2 hours</item>
- <item>4 hours</item>
- <item>8 hours</item>
- <item>12 hours</item>
- <item>24 hours</item>
- </string-array>
-
<string-array name="update_intervall_values">
<item>0</item>
<item>1</item>
@@ -20,7 +10,6 @@
<item>12</item>
<item>24</item>
</string-array>
-
<string-array name="episode_cache_size_entries">
<item>@string/pref_episode_cache_unlimited</item>
<item>10</item>
@@ -30,7 +19,6 @@
<item>80</item>
<item>100</item>
</string-array>
-
<string-array name="episode_cache_size_values">
<item>-1</item>
<item>10</item>
@@ -40,20 +28,16 @@
<item>80</item>
<item>100</item>
</string-array>
-
<string-array name="autodl_select_networks_default_entries">
<item>N/A</item>
</string-array>
-
<string-array name="autodl_select_networks_default_values">
<item>0</item>
</string-array>
-
<string-array name="theme_options">
<item>@string/pref_theme_title_light</item>
<item>@string/pref_theme_title_dark</item>
</string-array>
-
<string-array name="theme_values">
<item>0</item>
<item>1</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 54438b9cc..b79c561f4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -182,6 +182,10 @@
<string name="pref_theme_title_light">Light</string>
<string name="pref_theme_title_dark">Dark</string>
<string name="pref_episode_cache_unlimited">Unlimited</string>
+ <string name="pref_update_interval_hours_plural">hours</string>
+ <string name="pref_update_interval_hours_singular">hour</string>
+ <string name="pref_update_interval_hours_manual">Manual</string>
+
<!-- Search -->
<string name="search_hint">Search for Feeds or Episodes</string>
@@ -244,4 +248,4 @@
<string name="folder_not_empty_dialog_msg">The folder you have selected is not empty. Media downloads and other files will be placed directly in this folder. Continue anyway?</string>
<string name="set_to_default_folder">Choose default folder</string>
-</resources>
+</resources> \ No newline at end of file
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index b0968b79a..e94d1c47e 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -22,7 +22,7 @@
<PreferenceCategory android:title="@string/network_pref" >
<ListPreference
android:defaultValue="0"
- android:entries="@array/update_intervall_options"
+ android:entries="@array/update_intervall_values"
android:entryValues="@array/update_intervall_values"
android:key="prefAutoUpdateIntervall"
android:summary="@string/pref_autoUpdateIntervall_sum"
diff --git a/src/de/danoeh/antennapod/activity/PreferenceActivity.java b/src/de/danoeh/antennapod/activity/PreferenceActivity.java
index c59b14c03..9fcf57ac2 100644
--- a/src/de/danoeh/antennapod/activity/PreferenceActivity.java
+++ b/src/de/danoeh/antennapod/activity/PreferenceActivity.java
@@ -12,6 +12,7 @@ import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
@@ -166,13 +167,40 @@ public class PreferenceActivity extends SherlockPreferenceActivity {
return true;
}
});
-
+ buildUpdateIntervalPreference();
buildAutodownloadSelectedNetworsPreference();
setSelectedNetworksEnabled(UserPreferences
.isEnableAutodownloadWifiFilter());
}
+ private void buildUpdateIntervalPreference() {
+ ListPreference pref = (ListPreference) findPreference(UserPreferences.PREF_UPDATE_INTERVAL);
+ String[] values = getResources().getStringArray(
+ R.array.update_intervall_values);
+ String[] entries = new String[values.length];
+ for (int x = 0; x < values.length; x++) {
+ Integer v = Integer.parseInt(values[x]);
+ switch (v) {
+ case 0:
+ entries[x] = getString(R.string.pref_update_interval_hours_manual);
+ break;
+ case 1:
+ entries[x] = v
+ + " "
+ + getString(R.string.pref_update_interval_hours_singular);
+ break;
+ default:
+ entries[x] = v + " "
+ + getString(R.string.pref_update_interval_hours_plural);
+ break;
+
+ }
+ }
+ pref.setEntries(entries);
+
+ }
+
private void setSelectedNetworksEnabled(boolean b) {
if (selectedNetworks != null) {
for (Preference p : selectedNetworks) {
diff --git a/src/de/danoeh/antennapod/feed/FeedManager.java b/src/de/danoeh/antennapod/feed/FeedManager.java
index b2d97a311..a1a8c6c32 100644
--- a/src/de/danoeh/antennapod/feed/FeedManager.java
+++ b/src/de/danoeh/antennapod/feed/FeedManager.java
@@ -677,8 +677,12 @@ public class FeedManager {
int deletedEpisodes = performAutoCleanup(context,
getPerformAutoCleanupArgs(undownloadedEpisodes));
int episodeSpaceLeft = undownloadedEpisodes;
- if (UserPreferences.getEpisodeCacheSize() < downloadedEpisodes
- + undownloadedEpisodes) {
+ boolean cacheIsUnlimited = UserPreferences.getEpisodeCacheSize() == UserPreferences
+ .getEpisodeCacheSizeUnlimited();
+
+ if (!cacheIsUnlimited
+ && UserPreferences.getEpisodeCacheSize() < downloadedEpisodes
+ + undownloadedEpisodes) {
episodeSpaceLeft = UserPreferences.getEpisodeCacheSize()
- (downloadedEpisodes - deletedEpisodes);
}
@@ -733,7 +737,9 @@ public class FeedManager {
* that the number of episodes fits into the episode cache.
* */
private int getPerformAutoCleanupArgs(final int episodeNumber) {
- if (episodeNumber >= 0 && UserPreferences.getEpisodeCacheSize() != UserPreferences.getEpisodeCacheSizeUnlimited()) {
+ if (episodeNumber >= 0
+ && UserPreferences.getEpisodeCacheSize() != UserPreferences
+ .getEpisodeCacheSizeUnlimited()) {
int downloadedEpisodes = getNumberOfDownloadedEpisodes();
if (downloadedEpisodes + episodeNumber >= UserPreferences
.getEpisodeCacheSize()) {
@@ -765,7 +771,8 @@ public class FeedManager {
List<FeedItem> delete;
for (Feed feed : feeds) {
for (FeedItem item : feed.getItems()) {
- if (item.hasMedia() && item.getMedia().isDownloaded() && !isInQueue(item) && item.isRead()) {
+ if (item.hasMedia() && item.getMedia().isDownloaded()
+ && !isInQueue(item) && item.isRead()) {
candidates.add(item);
}
}
diff --git a/src/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java b/src/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java
index 160784a90..10f43718f 100644
--- a/src/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java
+++ b/src/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java
@@ -446,17 +446,21 @@ public class ItemDescriptionFragment extends SherlockFragment {
if (saveState) {
if (AppConfig.DEBUG)
Log.d(TAG, "Restoring from preferences");
- SharedPreferences prefs = getActivity().getSharedPreferences(PREF,
- Activity.MODE_PRIVATE);
- String id = prefs.getString(PREF_PLAYABLE_ID, "");
- int scrollY = prefs.getInt(PREF_SCROLL_Y, -1);
- if (scrollY != -1 && media != null
- && id.equals(media.getIdentifier().toString())
- && webvDescription != null) {
- if (AppConfig.DEBUG)
- Log.d(TAG, "Restored scroll Position: " + scrollY);
- webvDescription.scrollTo(webvDescription.getScrollX(), scrollY);
- return true;
+ Activity activity = getActivity();
+ if (activity != null) {
+ SharedPreferences prefs = activity.getSharedPreferences(
+ PREF, Activity.MODE_PRIVATE);
+ String id = prefs.getString(PREF_PLAYABLE_ID, "");
+ int scrollY = prefs.getInt(PREF_SCROLL_Y, -1);
+ if (scrollY != -1 && media != null
+ && id.equals(media.getIdentifier().toString())
+ && webvDescription != null) {
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "Restored scroll Position: " + scrollY);
+ webvDescription.scrollTo(webvDescription.getScrollX(),
+ scrollY);
+ return true;
+ }
}
}
return false;
diff --git a/src/de/danoeh/antennapod/service/PlaybackService.java b/src/de/danoeh/antennapod/service/PlaybackService.java
index 1d6d1448c..56bdce375 100644
--- a/src/de/danoeh/antennapod/service/PlaybackService.java
+++ b/src/de/danoeh/antennapod/service/PlaybackService.java
@@ -387,12 +387,14 @@ public class PlaybackService extends Service {
}
// Intent values appear to be valid
// check if already playing and playbackType is the same
- } else if (media == null || playable != media
+ } else if (media == null
+ || !playable.getIdentifier().equals(media.getIdentifier())
|| playbackType != shouldStream) {
pause(true, false);
sendNotificationBroadcast(NOTIFICATION_TYPE_RELOAD, 0);
if (media == null
- || playable.getIdentifier() != media.getIdentifier()) {
+ || !playable.getIdentifier().equals(
+ media.getIdentifier())) {
media = playable;
}
diff --git a/src/de/danoeh/antennapod/syndication/namespace/NSRSS20.java b/src/de/danoeh/antennapod/syndication/namespace/NSRSS20.java
index 4d0b42132..5a2c6005e 100644
--- a/src/de/danoeh/antennapod/syndication/namespace/NSRSS20.java
+++ b/src/de/danoeh/antennapod/syndication/namespace/NSRSS20.java
@@ -78,6 +78,15 @@ public class NSRSS20 extends Namespace {
@Override
public void handleElementEnd(String localName, HandlerState state) {
if (localName.equals(ITEM)) {
+ if (state.getCurrentItem() != null) {
+ // the title tag is optional in RSS 2.0. The description is used
+ // as a
+ // title if the item has no title-tag.
+ if (state.getCurrentItem().getTitle() == null) {
+ state.getCurrentItem().setTitle(
+ state.getCurrentItem().getDescription());
+ }
+ }
state.setCurrentItem(null);
} else if (state.getTagstack().size() >= 2
&& state.getContentBuf() != null) {
@@ -98,7 +107,8 @@ public class NSRSS20 extends Namespace {
state.getCurrentItem().setTitle(content);
} else if (second.equals(CHANNEL)) {
state.getFeed().setTitle(content);
- } else if (second.equals(IMAGE) && third != null && third.equals(CHANNEL)) {
+ } else if (second.equals(IMAGE) && third != null
+ && third.equals(CHANNEL)) {
state.getFeed().getImage().setTitle(content);
}
} else if (top.equals(LINK)) {
@@ -110,7 +120,8 @@ public class NSRSS20 extends Namespace {
} else if (top.equals(PUBDATE) && second.equals(ITEM)) {
state.getCurrentItem().setPubDate(
SyndDateUtils.parseRFC822Date(content));
- } else if (top.equals(URL) && second.equals(IMAGE) && third != null && third.equals(CHANNEL)) {
+ } else if (top.equals(URL) && second.equals(IMAGE) && third != null
+ && third.equals(CHANNEL)) {
state.getFeed().getImage().setDownload_url(content);
} else if (localName.equals(DESCR)) {
if (second.equals(CHANNEL)) {
diff --git a/tests/src/de/danoeh/antennapod/test/TestFeeds.java b/tests/src/de/danoeh/antennapod/test/TestFeeds.java
index 576a8ddd9..8b754fea6 100644
--- a/tests/src/de/danoeh/antennapod/test/TestFeeds.java
+++ b/tests/src/de/danoeh/antennapod/test/TestFeeds.java
@@ -3,6 +3,7 @@ package de.danoeh.antennapod.test;
public class TestFeeds {
public static final String[] urls = {
+ "http://savoirsenmultimedia.ens.fr/podcast.php?id=30",
"http://bitlove.org/apollo40/ps3newsroom/feed",
"http://bitlove.org/beapirate/hauptstadtpiraten/feed",
"http://bitlove.org/benni/besondereumstaende/feed",