diff options
-rw-r--r-- | AndroidManifest.xml | 5 | ||||
-rw-r--r-- | res/values/arrays.xml | 16 | ||||
-rw-r--r-- | res/values/strings.xml | 6 | ||||
-rw-r--r-- | res/xml/preferences.xml | 2 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/activity/PreferenceActivity.java | 30 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/feed/FeedManager.java | 15 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java | 26 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/service/PlaybackService.java | 6 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/syndication/namespace/NSRSS20.java | 15 | ||||
-rw-r--r-- | tests/src/de/danoeh/antennapod/test/TestFeeds.java | 1 |
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", |