diff --git a/.tx/config b/.tx/config index d7356e199..ea1c0ccef 100644 --- a/.tx/config +++ b/.tx/config @@ -24,7 +24,7 @@ trans.gl = core/src/main/res/values-gl-rES/strings.xml trans.he_IL = core/src/main/res/values-iw-rIL/strings.xml trans.hi_IN = core/src/main/res/values-hi-rIN/strings.xml trans.hu = core/src/main/res/values-hu/strings.xml -trans.id = core/src/main/res/values-id/strings.xml +trans.id = core/src/main/res/values-in/strings.xml trans.it_IT = core/src/main/res/values-it/strings.xml trans.is = core/src/main/res/values-is-rIS/strings.xml trans.ja = core/src/main/res/values-ja/strings.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e966b997..fb429f026 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,17 @@ Change Log ========== +Version 1.7.3 +------------- +* Display episode image on widget (by @brad) +* Added checkbox to keep queue sorted (by @damoasda) +* New UI for "Add podcast" screen (by @ByteHamster) +* Added batch editing to the queue (by @ByteHamster) +* Added option to adapt remaining time to playback speed (by @CedricCabessa) +* Removed broken Flattr integration (by @ByteHamster) +* Added filter to "All episodes" list (by @jhunnius) +* Tons of bug fixes and performance improvements + Version 1.7.2 ------------- * Added configurable behavior of the back button diff --git a/app/build.gradle b/app/build.gradle index 7545386a2..f9ef8a7ef 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ android { // "1.2.3-SNAPSHOT" -> 1020300 // "1.2.3-RC4" -> 1020304 // "1.2.3" -> 1020395 - versionCode 1070306 - versionName "1.7.3-RC6" + versionCode 1070395 + versionName "1.7.3" testApplicationId "de.test.antennapod" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" generatedDensities = [] diff --git a/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java b/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java index 3d8417bf6..4158fd31c 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java +++ b/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java @@ -72,20 +72,6 @@ public class HTTPBin extends NanoHTTPD { return servedFiles.size() - 1; } - /** - * Removes the file with the given ID from the server. - * - * @return True if a file was removed, false otherwise - */ - public synchronized boolean removeFile(int id) { - if (id < 0) throw new IllegalArgumentException("ID < 0"); - if (id >= servedFiles.size()) { - return false; - } else { - return servedFiles.remove(id) != null; - } - } - public synchronized File accessFile(int id) { if (id < 0 || id >= servedFiles.size()) { return null; diff --git a/app/src/free/java/de/danoeh/antennapod/activity/CastEnabledActivity.java b/app/src/free/java/de/danoeh/antennapod/activity/CastEnabledActivity.java index 79d7e02f2..519d4c61b 100644 --- a/app/src/free/java/de/danoeh/antennapod/activity/CastEnabledActivity.java +++ b/app/src/free/java/de/danoeh/antennapod/activity/CastEnabledActivity.java @@ -7,212 +7,9 @@ import android.support.v7.app.AppCompatActivity; * network. */ public abstract class CastEnabledActivity extends AppCompatActivity { -// implements SharedPreferences.OnSharedPreferenceChangeListener { public static final String TAG = "CastEnabledActivity"; -// protected CastManager castManager; -// protected SwitchableMediaRouteActionProvider mediaRouteActionProvider; -// private final CastButtonVisibilityManager castButtonVisibilityManager = new CastButtonVisibilityManager(); -// -// @Override -// protected void onCreate(Bundle savedInstanceState) { -// super.onCreate(savedInstanceState); -// -// PreferenceManager.getDefaultSharedPreferences(getApplicationContext()). -// registerOnSharedPreferenceChangeListener(this); -// -// castManager = CastManager.getInstance(); -// castManager.addCastConsumer(castConsumer); -// castButtonVisibilityManager.setPrefEnabled(UserPreferences.isCastEnabled()); -// onCastConnectionChanged(castManager.isConnected()); -// } -// -// @Override -// protected void onDestroy() { -// PreferenceManager.getDefaultSharedPreferences(getApplicationContext()) -// .unregisterOnSharedPreferenceChangeListener(this); -// castManager.removeCastConsumer(castConsumer); -// super.onDestroy(); -// } -// -// @Override -// @CallSuper -// public boolean onCreateOptionsMenu(Menu menu) { -// super.onCreateOptionsMenu(menu); -// getMenuInflater().inflate(R.menu.cast_enabled, menu); -// castButtonVisibilityManager.setMenu(menu); -// return true; -// } -// -// @Override -// @CallSuper -// public boolean onPrepareOptionsMenu(Menu menu) { -// super.onPrepareOptionsMenu(menu); -// mediaRouteActionProvider = castManager -// .addMediaRouterButton(menu.findItem(R.id.media_route_menu_item)); -// mediaRouteActionProvider.setEnabled(castButtonVisibilityManager.shouldEnable()); -// return true; -// } -// -// @Override -// protected void onResume() { -// super.onResume(); -// castButtonVisibilityManager.setResumed(true); -// } -// -// @Override -// protected void onPause() { -// super.onPause(); -// castButtonVisibilityManager.setResumed(false); -// } -// -// @Override -// public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { -// if (UserPreferences.PREF_CAST_ENABLED.equals(key)) { -// boolean newValue = UserPreferences.isCastEnabled(); -// Log.d(TAG, "onSharedPreferenceChanged(), isCastEnabled set to " + newValue); -// castButtonVisibilityManager.setPrefEnabled(newValue); -// // PlaybackService has its own listener, so if it's active we don't have to take action here. -// if (!newValue && !PlaybackService.isRunning) { -// CastManager.getInstance().disconnect(); -// } -// } -// } -// -// CastConsumer castConsumer = new DefaultCastConsumer() { -// @Override -// public void onApplicationConnected(ApplicationMetadata appMetadata, String sessionId, boolean wasLaunched) { -// onCastConnectionChanged(true); -// } -// -// @Override -// public void onDisconnected() { -// onCastConnectionChanged(false); -// } -// }; -// -// private void onCastConnectionChanged(boolean connected) { -// if (connected) { -// castButtonVisibilityManager.onConnected(); -// setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE); -// } else { -// castButtonVisibilityManager.onDisconnected(); -// setVolumeControlStream(AudioManager.STREAM_MUSIC); -// } -// } -// -// /** -// * Should be called by any activity or fragment for which the cast button should be shown. -// * -// * @param showAsAction refer to {@link MenuItem#setShowAsAction(int)} -// */ public final void requestCastButton(int showAsAction) { // no-op } - -// private class CastButtonVisibilityManager { -// private volatile boolean prefEnabled = false; -// private volatile boolean viewRequested = false; -// private volatile boolean resumed = false; -// private volatile boolean connected = false; -// private volatile int showAsAction = MenuItem.SHOW_AS_ACTION_IF_ROOM; -// private Menu menu; -// -// public synchronized void setPrefEnabled(boolean newValue) { -// if (prefEnabled != newValue && resumed && (viewRequested || connected)) { -// if (newValue) { -// castManager.incrementUiCounter(); -// } else { -// castManager.decrementUiCounter(); -// } -// } -// prefEnabled = newValue; -// if (mediaRouteActionProvider != null) { -// mediaRouteActionProvider.setEnabled(prefEnabled && (viewRequested || connected)); -// } -// } -// -// public synchronized void setResumed(boolean newValue) { -// if (resumed == newValue) { -// Log.e(TAG, "resumed should never change to the same value"); -// return; -// } -// resumed = newValue; -// if (prefEnabled && (viewRequested || connected)) { -// if (resumed) { -// castManager.incrementUiCounter(); -// } else { -// castManager.decrementUiCounter(); -// } -// } -// } -// -// public synchronized void setViewRequested(boolean newValue) { -// if (viewRequested != newValue && resumed && prefEnabled && !connected) { -// if (newValue) { -// castManager.incrementUiCounter(); -// } else { -// castManager.decrementUiCounter(); -// } -// } -// viewRequested = newValue; -// if (mediaRouteActionProvider != null) { -// mediaRouteActionProvider.setEnabled(prefEnabled && (viewRequested || connected)); -// } -// } -// -// public synchronized void setConnected(boolean newValue) { -// if (connected != newValue && resumed && prefEnabled && !prefEnabled) { -// if (newValue) { -// castManager.incrementUiCounter(); -// } else { -// castManager.decrementUiCounter(); -// } -// } -// connected = newValue; -// if (mediaRouteActionProvider != null) { -// mediaRouteActionProvider.setEnabled(prefEnabled && (viewRequested || connected)); -// } -// } -// -// public synchronized boolean shouldEnable() { -// return prefEnabled && viewRequested; -// } -// -// public void setMenu(Menu menu) { -// setViewRequested(false); -// showAsAction = MenuItem.SHOW_AS_ACTION_IF_ROOM; -// this.menu = menu; -// setShowAsAction(); -// } -// -// public void requestCastButton(int showAsAction) { -// setViewRequested(true); -// this.showAsAction = showAsAction; -// setShowAsAction(); -// } -// -// public void onConnected() { -// setConnected(true); -// setShowAsAction(); -// } -// -// public void onDisconnected() { -// setConnected(false); -// setShowAsAction(); -// } -// -// private void setShowAsAction() { -// if (menu == null) { -// Log.d(TAG, "setShowAsAction() without a menu"); -// return; -// } -// MenuItem item = menu.findItem(R.id.media_route_menu_item); -// if (item == null) { -// Log.e(TAG, "setShowAsAction(), but cast button not inflated"); -// return; -// } -// MenuItemCompat.setShowAsAction(item, connected? MenuItem.SHOW_AS_ACTION_ALWAYS : showAsAction); -// } -// } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 73af654e9..707850837 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -36,7 +36,7 @@ android:usesCleartextTraffic="true" android:logo="@mipmap/ic_launcher"> + android:resource="@drawable/ic_antenna" /> diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index 339ce01c2..a0a3c85c2 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -240,7 +240,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi SharedPreferences.Editor edit = prefs.edit(); edit.putBoolean(PREF_IS_FIRST_LAUNCH, false); - edit.commit(); + edit.apply(); } } diff --git a/app/src/main/java/de/danoeh/antennapod/config/PlaybackServiceCallbacksImpl.java b/app/src/main/java/de/danoeh/antennapod/config/PlaybackServiceCallbacksImpl.java index eb70d8e0b..c3f5d898c 100644 --- a/app/src/main/java/de/danoeh/antennapod/config/PlaybackServiceCallbacksImpl.java +++ b/app/src/main/java/de/danoeh/antennapod/config/PlaybackServiceCallbacksImpl.java @@ -35,6 +35,6 @@ public class PlaybackServiceCallbacksImpl implements PlaybackServiceCallbacks { @Override public int getNotificationIconResource(Context context) { - return R.drawable.ic_stat_antenna_default; + return R.drawable.ic_antenna; } } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java index 4bebfe4c9..bb8f4df9a 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java @@ -87,11 +87,10 @@ public class ChaptersFragment extends ListFragment { controller = null; } - private void scrollTo(int position) { - getListView().setSelection(position); - } - private int getCurrentChapter(Playable media) { + if (media == null || media.getChapters() == null || media.getChapters().size() == 0 || controller == null) { + return -1; + } int currentPosition = controller.getPosition(); List chapters = media.getChapters(); @@ -126,8 +125,10 @@ public class ChaptersFragment extends ListFragment { if (adapter != null) { adapter.setMedia(media); adapter.notifyDataSetChanged(); - if (media != null && media.getChapters() != null && media.getChapters().size() != 0) { - scrollTo(getCurrentChapter(media)); + + int positionOfCurrentChapter = getCurrentChapter(media); + if (positionOfCurrentChapter != -1) { + getListView().setSelection(positionOfCurrentChapter); } } } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java index 1cedb5a91..951dad38e 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java @@ -149,7 +149,7 @@ public abstract class EpisodesListFragment extends Fragment { SharedPreferences.Editor editor = prefs.edit(); editor.putInt(PREF_SCROLL_POSITION, firstItem); editor.putFloat(PREF_SCROLL_OFFSET, topOffset); - editor.commit(); + editor.apply(); } private void restoreScrollPosition() { @@ -162,7 +162,7 @@ public abstract class EpisodesListFragment extends Fragment { SharedPreferences.Editor editor = prefs.edit(); editor.putInt(PREF_SCROLL_POSITION, 0); editor.putFloat(PREF_SCROLL_OFFSET, 0.0f); - editor.commit(); + editor.apply(); } } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java index f8ef7f7a3..4e4b40096 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java @@ -17,7 +17,6 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; -import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ImageButton; import android.widget.ImageView; @@ -140,13 +139,6 @@ public class FeedItemlistFragment extends ListFragment { feedID = args.getLong(ARGUMENT_FEED_ID); } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = super.onCreateView(inflater, container, savedInstanceState); - ((ListView) view.findViewById(android.R.id.list)).setFastScrollEnabled(true); - return view; - } - @Override public void onStart() { super.onStart(); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/StoragePreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/StoragePreferencesFragment.java index b4226b546..87d436eda 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/StoragePreferencesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/StoragePreferencesFragment.java @@ -171,7 +171,9 @@ public class StoragePreferencesFragment extends PreferenceFragmentCompat { return true; } - public void unsubscribeExportSubscription() { + @Override + public void onStop() { + super.onStop(); if (disposable != null) { disposable.dispose(); } diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceUpgrader.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceUpgrader.java index 7ca43547a..a33faeb69 100644 --- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceUpgrader.java +++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceUpgrader.java @@ -42,10 +42,8 @@ public class PreferenceUpgrader { } } if (oldVersion < 1070300) { - if (UserPreferences.getMediaPlayer().equals("builtin")) { - prefs.edit().putString(UserPreferences.PREF_MEDIA_PLAYER, - UserPreferences.PREF_MEDIA_PLAYER_EXOPLAYER).apply(); - } + prefs.edit().putString(UserPreferences.PREF_MEDIA_PLAYER, + UserPreferences.PREF_MEDIA_PLAYER_EXOPLAYER).apply(); if (prefs.getBoolean("prefEnableAutoDownloadOnMobile", false)) { UserPreferences.setAllowMobileAutoDownload(true); diff --git a/app/src/main/java/de/danoeh/antennapod/spa/SPAUtil.java b/app/src/main/java/de/danoeh/antennapod/spa/SPAUtil.java index 03958508d..5fa6588d9 100644 --- a/app/src/main/java/de/danoeh/antennapod/spa/SPAUtil.java +++ b/app/src/main/java/de/danoeh/antennapod/spa/SPAUtil.java @@ -46,7 +46,7 @@ public class SPAUtil { SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean(PREF_HAS_QUERIED_SP_APPS, true); - editor.commit(); + editor.apply(); return true; } else { @@ -63,7 +63,7 @@ public class SPAUtil { SharedPreferences.Editor editor = PreferenceManager .getDefaultSharedPreferences(c.getApplicationContext()).edit(); editor.putBoolean(PREF_HAS_QUERIED_SP_APPS, false); - editor.commit(); + editor.apply(); } } } diff --git a/app/src/main/res/layout/downloaded_episodeslist_item.xml b/app/src/main/res/layout/downloaded_episodeslist_item.xml index 65a08251f..3f8065466 100644 --- a/app/src/main/res/layout/downloaded_episodeslist_item.xml +++ b/app/src/main/res/layout/downloaded_episodeslist_item.xml @@ -17,7 +17,7 @@ android:layout_marginTop="@dimen/listitem_threeline_verticalpadding" android:contentDescription="@string/cover_label" android:scaleType="centerCrop" - tools:src="@drawable/ic_stat_antenna_default" + tools:src="@drawable/ic_antenna" tools:background="@android:color/holo_green_dark"/> diff --git a/app/src/main/res/layout/feeditem_fragment.xml b/app/src/main/res/layout/feeditem_fragment.xml index 78c0b3b16..b047b3da0 100644 --- a/app/src/main/res/layout/feeditem_fragment.xml +++ b/app/src/main/res/layout/feeditem_fragment.xml @@ -36,7 +36,8 @@ android:layout_marginBottom="16dp" android:contentDescription="@string/cover_label" android:gravity="center_vertical" - tools:src="@drawable/ic_stat_antenna_default" + android:foreground="?attr/selectableItemBackground" + tools:src="@drawable/ic_antenna" tools:background="@android:color/holo_green_dark" /> diff --git a/app/src/main/res/layout/feeditemlist_header.xml b/app/src/main/res/layout/feeditemlist_header.xml index ba39307b0..596135d88 100644 --- a/app/src/main/res/layout/feeditemlist_header.xml +++ b/app/src/main/res/layout/feeditemlist_header.xml @@ -27,7 +27,7 @@ android:layout_marginStart="16dp" android:layout_marginTop="16dp" android:contentDescription="@string/cover_label" - tools:src="@drawable/ic_stat_antenna_default" + tools:src="@drawable/ic_antenna" tools:background="@android:color/holo_green_dark"/> @@ -92,8 +88,8 @@ android:layout_marginBottom="16dp" android:layout_marginLeft="16dp" android:layout_marginStart="16dp" - android:layout_marginRight="8dp" - android:layout_marginEnd="8dp" + android:layout_marginRight="16dp" + android:layout_marginEnd="16dp" android:layout_toLeftOf="@id/butShowSettings" android:layout_toStartOf="@id/butShowSettings" android:layout_toRightOf="@id/imgvCover" diff --git a/app/src/main/res/layout/gpodnet_podcast_listitem.xml b/app/src/main/res/layout/gpodnet_podcast_listitem.xml index 27a8bbdca..6e02fa090 100644 --- a/app/src/main/res/layout/gpodnet_podcast_listitem.xml +++ b/app/src/main/res/layout/gpodnet_podcast_listitem.xml @@ -23,7 +23,7 @@ android:contentDescription="@string/cover_label" android:cropToPadding="true" android:scaleType="fitXY" - tools:src="@drawable/ic_stat_antenna_default" + tools:src="@drawable/ic_antenna" tools:background="@android:color/holo_green_dark" /> + tools:src="@drawable/ic_antenna" /> diff --git a/app/src/main/res/layout/searchlist_item.xml b/app/src/main/res/layout/searchlist_item.xml index 50374c737..4a055fea9 100644 --- a/app/src/main/res/layout/searchlist_item.xml +++ b/app/src/main/res/layout/searchlist_item.xml @@ -18,7 +18,7 @@ android:layout_marginStart="@dimen/listitem_threeline_horizontalpadding" android:contentDescription="@string/cover_label" android:scaleType="centerCrop" - tools:src="@drawable/ic_stat_antenna_default" + tools:src="@drawable/ic_antenna" tools:background="@android:color/holo_green_dark"/> + + 0 && duration > 0) { - TimeSpeedConverter converter = new TimeSpeedConverter(playbackService.getCurrentPlaybackSpeed()); + TimeSpeedConverter converter = new TimeSpeedConverter(speed); position = converter.convert(position); duration = converter.convert(duration); return Converter.getDurationStringLong(position) + " / " diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java index 5debc6d05..d88eb63f4 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java @@ -193,10 +193,6 @@ public class DownloadStatus { this.cancelled = true; } - public void setCompletionDate(Date completionDate) { - this.completionDate = (Date) completionDate.clone(); - } - public void setId(long id) { this.id = id; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index e479a7711..ace89e40a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -1086,7 +1086,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { editor.putInt( PlaybackPreferences.PREF_CURRENT_PLAYER_STATUS, playerStatus); - editor.commit(); + editor.apply(); } private void writePlayerStatusPlaybackPreferences() { @@ -1095,11 +1095,8 @@ public class PlaybackService extends MediaBrowserServiceCompat { SharedPreferences.Editor editor = PreferenceManager .getDefaultSharedPreferences(getApplicationContext()).edit(); int playerStatus = getCurrentPlayerStatusAsInt(mediaPlayer.getPlayerStatus()); - - editor.putInt( - PlaybackPreferences.PREF_CURRENT_PLAYER_STATUS, playerStatus); - - editor.commit(); + editor.putInt(PlaybackPreferences.PREF_CURRENT_PLAYER_STATUS, playerStatus); + editor.apply(); } private void sendNotificationBroadcast(int type, int code) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java index e68bff16e..0fb181299 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java @@ -193,11 +193,6 @@ public final class DBTasks { }).start(); } - public static long getLastRefreshAllFeedsTimeMillis(final Context context) { - SharedPreferences prefs = context.getSharedPreferences(DBTasks.PREF_NAME, MODE_PRIVATE); - return prefs.getLong(DBTasks.PREF_LAST_REFRESH, 0); - } - /** * @param context * @param feedList the list of feeds to refresh diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java index 892a4675a..9c48f31dd 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java @@ -34,7 +34,6 @@ import de.danoeh.antennapod.core.util.URLChecker; public class DownloadRequester { private static final String TAG = "DownloadRequester"; - public static final String IMAGE_DOWNLOADPATH = "images/"; private static final String FEED_DOWNLOADPATH = "cache/"; private static final String MEDIA_DOWNLOADPATH = "media/"; @@ -274,10 +273,6 @@ public class DownloadRequester { return item.getDownload_url() != null && downloads.containsKey(item.getDownload_url()); } - public synchronized DownloadRequest getDownload(String downloadUrl) { - return downloads.get(downloadUrl); - } - /** * Checks if feedfile with the given download url is in the downloads list */ diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java index 13ea9daf0..a3271bcf9 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java @@ -55,16 +55,10 @@ public class PodDBAdapter { */ private static final int IN_OPERATOR_MAXIMUM = 800; - /** - * Maximum number of entries per search request. - */ - public static final int SEARCH_LIMIT = 30; - // Key-constants public static final String KEY_ID = "id"; public static final String KEY_TITLE = "title"; public static final String KEY_CUSTOM_TITLE = "custom_title"; - public static final String KEY_NAME = "name"; public static final String KEY_LINK = "link"; public static final String KEY_DESCRIPTION = "description"; public static final String KEY_FILE_URL = "file_url"; @@ -1400,13 +1394,6 @@ public class PodDBAdapter { return db.rawQuery(query, null); } - - public static final int IDX_FEEDSTATISTICS_FEED = 0; - public static final int IDX_FEEDSTATISTICS_NUM_ITEMS = 1; - public static final int IDX_FEEDSTATISTICS_NEW_ITEMS = 2; - public static final int IDX_FEEDSTATISTICS_LATEST_EPISODE = 3; - public static final int IDX_FEEDSTATISTICS_IN_PROGRESS_EPISODES = 4; - /** * Select number of items, new items, the date of the latest episode and the number of episodes in progress. The result * is sorted by the title of the feed. diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java b/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java deleted file mode 100644 index 69dc38895..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java +++ /dev/null @@ -1,117 +0,0 @@ -/* Adapted from: http://thinking-in-code.blogspot.com/2008/11/duck-typing-in-java-using-dynamic.html */ - -package de.danoeh.antennapod.core.util; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; - -import de.danoeh.antennapod.core.BuildConfig; - -/** - * Allows "duck typing" or dynamic invocation based on method signature rather - * than type hierarchy. In other words, rather than checking whether something - * IS-a duck, check whether it WALKS-like-a duck or QUACKS-like a duck. - * - * To use first use the coerce static method to indicate the object you want to - * do Duck Typing for, then specify an interface to the to method which you want - * to coerce the type to, e.g: - * - * public interface Foo { void aMethod(); } class Bar { ... public void - * aMethod() { ... } ... } Bar bar = ...; Foo foo = - * DuckType.coerce(bar).to(Foo.class); foo.aMethod(); - * - * - */ -public class DuckType { - - private final Object objectToCoerce; - - private DuckType(Object objectToCoerce) { - this.objectToCoerce = objectToCoerce; - } - - private class CoercedProxy implements InvocationHandler { - @Override - public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - Method delegateMethod = findMethodBySignature(method); - assert delegateMethod != null; - return delegateMethod.invoke(DuckType.this.objectToCoerce, args); - } - } - - /** - * Specify the duck typed object to coerce. - * - * @param object - * the object to coerce - * @return - */ - public static DuckType coerce(Object object) { - return new DuckType(object); - } - - /** - * Coerce the Duck Typed object to the given interface providing it - * implements all the necessary methods. - * - * @param - * @param iface - * @return an instance of the given interface that wraps the duck typed - * class - * @throws ClassCastException - * if the object being coerced does not implement all the - * methods in the given interface. - */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - public T to(Class iface) { - if (BuildConfig.DEBUG && !iface.isInterface()) throw new AssertionError("cannot coerce object to a class, must be an interface"); - if (isA(iface)) { - return (T) iface.cast(objectToCoerce); - } - if (quacksLikeA(iface)) { - return generateProxy(iface); - } - throw new ClassCastException("Could not coerce object of type " + objectToCoerce.getClass() + " to " + iface); - } - - @SuppressWarnings("rawtypes") - private boolean isA(Class iface) { - return objectToCoerce.getClass().isInstance(iface); - } - - /** - * Determine whether the duck typed object can be used with the given - * interface. - * - * @param Type - * of the interface to check. - * @param iface - * Interface class to check - * @return true if the object will support all the methods in the interface, - * false otherwise. - */ - @SuppressWarnings("rawtypes") - private boolean quacksLikeA(Class iface) { - for (Method method : iface.getMethods()) { - if (findMethodBySignature(method) == null) { - return false; - } - } - return true; - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - private T generateProxy(Class iface) { - return (T) Proxy.newProxyInstance(iface.getClassLoader(), new Class[] { iface }, new CoercedProxy()); - } - - private Method findMethodBySignature(Method method) { - try { - return objectToCoerce.getClass().getMethod(method.getName(), method.getParameterTypes()); - } catch (NoSuchMethodException e) { - return null; - } - } - -} \ No newline at end of file diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java index 826c06822..a8206d3bd 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java @@ -7,19 +7,6 @@ import de.danoeh.antennapod.core.feed.FeedItem; public class FeedItemUtil { private FeedItemUtil(){} - public static int indexOfItemWithDownloadUrl(List items, String downloadUrl) { - if(items == null) { - return -1; - } - for(int i=0; i < items.size(); i++) { - FeedItem item = items.get(i); - if(item.hasMedia() && item.getMedia().getDownload_url().equals(downloadUrl)) { - return i; - } - } - return -1; - } - public static int indexOfItemWithId(List items, long id) { for(int i=0; i < items.size(); i++) { FeedItem item = items.get(i); @@ -40,17 +27,6 @@ public class FeedItemUtil { return -1; } - public static long[] getIds(FeedItem... items) { - if(items == null || items.length == 0) { - return new long[0]; - } - long[] result = new long[items.length]; - for(int i=0; i < items.length; i++) { - result[i] = items[i].getId(); - } - return result; - } - public static long[] getIds(List items) { if(items == null || items.size() == 0) { return new long[0]; @@ -62,20 +38,6 @@ public class FeedItemUtil { return result; } - public static boolean containsAnyId(List items, long[] ids) { - if(items == null || items.size() == 0) { - return false; - } - for(FeedItem item : items) { - for(long id : ids) { - if(item.getId() == id) { - return true; - } - } - } - return false; - } - /** * Get the link for the feed item for the purpose of Share. It fallbacks to * use the feed's link if the named feed item has no link. diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java deleted file mode 100644 index 29d095cd2..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.danoeh.antennapod.core.util; - -import java.util.Comparator; - -import de.danoeh.antennapod.core.feed.Feed; - -/** Compares the title of two feeds for sorting. */ -class FeedtitleComparator implements Comparator { - - @Override - public int compare(Feed lhs, Feed rhs) { - return lhs.getTitle().compareToIgnoreCase(rhs.getTitle()); - } - -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/SearchResultValueComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/SearchResultValueComparator.java deleted file mode 100644 index 56a684475..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/SearchResultValueComparator.java +++ /dev/null @@ -1,27 +0,0 @@ -package de.danoeh.antennapod.core.util.comparator; - -import java.util.Comparator; - -import de.danoeh.antennapod.core.feed.FeedItem; -import de.danoeh.antennapod.core.feed.SearchResult; - -public class SearchResultValueComparator implements Comparator { - - /** - * Compare items based, first, on where they were found (ie. title, chapters, or show notes). - * If they were found in the same section, then compare based on the title, in lexicographic - * order. This is still not ideal since, for example, "#12 Example A" would be considered - * before "#8 Example B" due to the fact that "8" has a larger unicode value than "1" - */ - @Override - public int compare(SearchResult lhs, SearchResult rhs) { - int value = rhs.getValue() - lhs.getValue(); - if (value == 0 && lhs.getComponent() instanceof FeedItem && rhs.getComponent() instanceof FeedItem) { - String lhsTitle = ((FeedItem) lhs.getComponent()).getTitle(); - String rhsTitle = ((FeedItem) rhs.getComponent()).getTitle(); - return lhsTitle.compareTo(rhsTitle); - } - return value; - } - -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java index 645bae5f3..9b644c3ba 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java @@ -182,7 +182,7 @@ public class ExternalMedia implements Playable { editor.putLong(PREF_LAST_PLAYED_TIME, timestamp); position = newPosition; lastPlayedTime = timestamp; - editor.commit(); + editor.apply(); } @Override diff --git a/core/src/main/res/drawable-hdpi/ic_cast_disabled_light.png b/core/src/main/res/drawable-hdpi/ic_cast_disabled_light.png deleted file mode 100644 index c0a55d555..000000000 Binary files a/core/src/main/res/drawable-hdpi/ic_cast_disabled_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-hdpi/ic_cast_light.png b/core/src/main/res/drawable-hdpi/ic_cast_light.png deleted file mode 100644 index b0c581a0e..000000000 Binary files a/core/src/main/res/drawable-hdpi/ic_cast_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-hdpi/ic_cast_off_light.png b/core/src/main/res/drawable-hdpi/ic_cast_off_light.png deleted file mode 100644 index 5f3c0179c..000000000 Binary files a/core/src/main/res/drawable-hdpi/ic_cast_off_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-hdpi/ic_cast_on_0_light.png b/core/src/main/res/drawable-hdpi/ic_cast_on_0_light.png deleted file mode 100644 index e872693a4..000000000 Binary files a/core/src/main/res/drawable-hdpi/ic_cast_on_0_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-hdpi/ic_cast_on_1_light.png b/core/src/main/res/drawable-hdpi/ic_cast_on_1_light.png deleted file mode 100644 index d8be1ebc6..000000000 Binary files a/core/src/main/res/drawable-hdpi/ic_cast_on_1_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-hdpi/ic_cast_on_2_light.png b/core/src/main/res/drawable-hdpi/ic_cast_on_2_light.png deleted file mode 100644 index 27cda9e9d..000000000 Binary files a/core/src/main/res/drawable-hdpi/ic_cast_on_2_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-hdpi/ic_cast_on_light.png b/core/src/main/res/drawable-hdpi/ic_cast_on_light.png deleted file mode 100644 index 4ee525875..000000000 Binary files a/core/src/main/res/drawable-hdpi/ic_cast_on_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-hdpi/ic_close_light.png b/core/src/main/res/drawable-hdpi/ic_close_light.png deleted file mode 100644 index 93187e450..000000000 Binary files a/core/src/main/res/drawable-hdpi/ic_close_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-hdpi/ic_pause_light.png b/core/src/main/res/drawable-hdpi/ic_pause_light.png deleted file mode 100644 index 0c505d1c8..000000000 Binary files a/core/src/main/res/drawable-hdpi/ic_pause_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-hdpi/ic_play_light.png b/core/src/main/res/drawable-hdpi/ic_play_light.png deleted file mode 100644 index 7957dff5b..000000000 Binary files a/core/src/main/res/drawable-hdpi/ic_play_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png deleted file mode 100644 index af99f4b3b..000000000 Binary files a/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png and /dev/null differ diff --git a/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png deleted file mode 100644 index ddf545c0b..000000000 Binary files a/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png and /dev/null differ diff --git a/core/src/main/res/drawable-mdpi/ic_cast_disabled_light.png b/core/src/main/res/drawable-mdpi/ic_cast_disabled_light.png deleted file mode 100644 index 7940a0332..000000000 Binary files a/core/src/main/res/drawable-mdpi/ic_cast_disabled_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-mdpi/ic_cast_light.png b/core/src/main/res/drawable-mdpi/ic_cast_light.png deleted file mode 100644 index 1f5bec20b..000000000 Binary files a/core/src/main/res/drawable-mdpi/ic_cast_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-mdpi/ic_cast_off_light.png b/core/src/main/res/drawable-mdpi/ic_cast_off_light.png deleted file mode 100644 index 963db27d4..000000000 Binary files a/core/src/main/res/drawable-mdpi/ic_cast_off_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-mdpi/ic_cast_on_0_light.png b/core/src/main/res/drawable-mdpi/ic_cast_on_0_light.png deleted file mode 100644 index a90d9e305..000000000 Binary files a/core/src/main/res/drawable-mdpi/ic_cast_on_0_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-mdpi/ic_cast_on_1_light.png b/core/src/main/res/drawable-mdpi/ic_cast_on_1_light.png deleted file mode 100644 index bb2cf30bf..000000000 Binary files a/core/src/main/res/drawable-mdpi/ic_cast_on_1_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-mdpi/ic_cast_on_2_light.png b/core/src/main/res/drawable-mdpi/ic_cast_on_2_light.png deleted file mode 100644 index 3ed59e55b..000000000 Binary files a/core/src/main/res/drawable-mdpi/ic_cast_on_2_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-mdpi/ic_cast_on_light.png b/core/src/main/res/drawable-mdpi/ic_cast_on_light.png deleted file mode 100644 index 713427b97..000000000 Binary files a/core/src/main/res/drawable-mdpi/ic_cast_on_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-mdpi/ic_close_light.png b/core/src/main/res/drawable-mdpi/ic_close_light.png deleted file mode 100644 index 2c52c9b0f..000000000 Binary files a/core/src/main/res/drawable-mdpi/ic_close_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-mdpi/ic_pause_light.png b/core/src/main/res/drawable-mdpi/ic_pause_light.png deleted file mode 100644 index 6218a774f..000000000 Binary files a/core/src/main/res/drawable-mdpi/ic_pause_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-mdpi/ic_play_light.png b/core/src/main/res/drawable-mdpi/ic_play_light.png deleted file mode 100644 index 1e0ccaf80..000000000 Binary files a/core/src/main/res/drawable-mdpi/ic_play_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png deleted file mode 100644 index 41fd20655..000000000 Binary files a/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png and /dev/null differ diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_disabled_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_disabled_light.png deleted file mode 100644 index fbb3e062c..000000000 Binary files a/core/src/main/res/drawable-xhdpi/ic_cast_disabled_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_light.png deleted file mode 100644 index f2713e20e..000000000 Binary files a/core/src/main/res/drawable-xhdpi/ic_cast_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_off_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_off_light.png deleted file mode 100644 index f4f8aaea8..000000000 Binary files a/core/src/main/res/drawable-xhdpi/ic_cast_off_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_on_0_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_on_0_light.png deleted file mode 100644 index 247fc95ba..000000000 Binary files a/core/src/main/res/drawable-xhdpi/ic_cast_on_0_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_on_1_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_on_1_light.png deleted file mode 100644 index ecf4b4723..000000000 Binary files a/core/src/main/res/drawable-xhdpi/ic_cast_on_1_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_on_2_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_on_2_light.png deleted file mode 100644 index 60e3afa5d..000000000 Binary files a/core/src/main/res/drawable-xhdpi/ic_cast_on_2_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xhdpi/ic_cast_on_light.png b/core/src/main/res/drawable-xhdpi/ic_cast_on_light.png deleted file mode 100644 index 40ce9d4f2..000000000 Binary files a/core/src/main/res/drawable-xhdpi/ic_cast_on_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xhdpi/ic_close_light.png b/core/src/main/res/drawable-xhdpi/ic_close_light.png deleted file mode 100644 index 49faa429a..000000000 Binary files a/core/src/main/res/drawable-xhdpi/ic_close_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xhdpi/ic_pause_light.png b/core/src/main/res/drawable-xhdpi/ic_pause_light.png deleted file mode 100644 index 40cd79f14..000000000 Binary files a/core/src/main/res/drawable-xhdpi/ic_pause_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xhdpi/ic_play_light.png b/core/src/main/res/drawable-xhdpi/ic_play_light.png deleted file mode 100644 index 33f6a5919..000000000 Binary files a/core/src/main/res/drawable-xhdpi/ic_play_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png deleted file mode 100644 index 30431ed6a..000000000 Binary files a/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_disabled_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_disabled_light.png deleted file mode 100644 index e94df3889..000000000 Binary files a/core/src/main/res/drawable-xxhdpi/ic_cast_disabled_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_light.png deleted file mode 100644 index c5722a6eb..000000000 Binary files a/core/src/main/res/drawable-xxhdpi/ic_cast_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_off_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_off_light.png deleted file mode 100644 index 92ac67b34..000000000 Binary files a/core/src/main/res/drawable-xxhdpi/ic_cast_off_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_on_0_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_on_0_light.png deleted file mode 100644 index 2742fcb4a..000000000 Binary files a/core/src/main/res/drawable-xxhdpi/ic_cast_on_0_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_on_1_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_on_1_light.png deleted file mode 100644 index 405178e64..000000000 Binary files a/core/src/main/res/drawable-xxhdpi/ic_cast_on_1_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_on_2_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_on_2_light.png deleted file mode 100644 index dfe52428d..000000000 Binary files a/core/src/main/res/drawable-xxhdpi/ic_cast_on_2_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxhdpi/ic_cast_on_light.png b/core/src/main/res/drawable-xxhdpi/ic_cast_on_light.png deleted file mode 100644 index 7e69a0864..000000000 Binary files a/core/src/main/res/drawable-xxhdpi/ic_cast_on_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxhdpi/ic_close_light.png b/core/src/main/res/drawable-xxhdpi/ic_close_light.png deleted file mode 100644 index be519bfcb..000000000 Binary files a/core/src/main/res/drawable-xxhdpi/ic_close_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxhdpi/ic_pause_light.png b/core/src/main/res/drawable-xxhdpi/ic_pause_light.png deleted file mode 100644 index a36d4d11e..000000000 Binary files a/core/src/main/res/drawable-xxhdpi/ic_pause_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxhdpi/ic_play_light.png b/core/src/main/res/drawable-xxhdpi/ic_play_light.png deleted file mode 100644 index b1424874a..000000000 Binary files a/core/src/main/res/drawable-xxhdpi/ic_play_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.png b/core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24dp.png old mode 100755 new mode 100644 similarity index 100% rename from core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.png rename to core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_close_light.png b/core/src/main/res/drawable-xxxhdpi/ic_close_light.png deleted file mode 100644 index 679c2a4d5..000000000 Binary files a/core/src/main/res/drawable-xxxhdpi/ic_close_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxxhdpi/ic_pause_light.png b/core/src/main/res/drawable-xxxhdpi/ic_pause_light.png deleted file mode 100644 index 7de2ef4ed..000000000 Binary files a/core/src/main/res/drawable-xxxhdpi/ic_pause_light.png and /dev/null differ diff --git a/core/src/main/res/drawable-xxxhdpi/ic_play_light.png b/core/src/main/res/drawable-xxxhdpi/ic_play_light.png deleted file mode 100644 index 4428c8477..000000000 Binary files a/core/src/main/res/drawable-xxxhdpi/ic_play_light.png and /dev/null differ diff --git a/core/src/main/res/drawable/ic_antenna.xml b/core/src/main/res/drawable/ic_antenna.xml new file mode 100644 index 000000000..9fcfab000 --- /dev/null +++ b/core/src/main/res/drawable/ic_antenna.xml @@ -0,0 +1,6 @@ + + + diff --git a/core/src/main/res/drawable/ic_notification.png b/core/src/main/res/drawable/ic_notification.png deleted file mode 100644 index 8bd22b54a..000000000 Binary files a/core/src/main/res/drawable/ic_notification.png and /dev/null differ diff --git a/core/src/main/res/drawable/white_circle.xml b/core/src/main/res/drawable/white_circle.xml deleted file mode 100644 index 597b70a2d..000000000 --- a/core/src/main/res/drawable/white_circle.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/core/src/main/res/values-de/strings.xml b/core/src/main/res/values-de/strings.xml index b2b70575c..d191f4059 100644 --- a/core/src/main/res/values-de/strings.xml +++ b/core/src/main/res/values-de/strings.xml @@ -422,7 +422,7 @@ Jetzt komplett synchronisieren Kompletten Abonnement- und Episoden-Status mit gpodder.net synchronisieren. Letzter Synchronisierungsversuch: %1$s (%2$s) - Synchronisation starten + Synchronisation gestartet Komplette Synchronisierung gestartet %1$s mit dem Gerät %2$s]]> Zeige Benachrichtungen bei Synchronisierungsfehlern @@ -617,7 +617,7 @@ Audio Video Nach oben navigieren - Episode wird gerade heruntergeladen + Episode wird heruntergeladen Episode befindet sich in der Abspielliste Ziehe, um die Position dieses Objekts zu verändern Nächste Seite laden @@ -726,7 +726,7 @@ Handlung notwendig Wird gezeigt, wenn deine Handlung notwendig ist, zum Beispiel wenn du ein Passwort eingeben musst. - Lädt herunter + Herunterladen Wird gezeigt beim Herunterladen. Jetzt spielt Erlaubt es, die Wiedergabe zu steuern. Dies ist die Hauptbenachrichtigung, die du siehst, während ein Podcast abgespielt wird. diff --git a/core/src/main/res/values-hu/strings.xml b/core/src/main/res/values-hu/strings.xml index 4a42da4c3..706b13b79 100644 --- a/core/src/main/res/values-hu/strings.xml +++ b/core/src/main/res/values-hu/strings.xml @@ -107,6 +107,7 @@ Podcast keresése mappában Új podcastokat kereshetsz iTunes-on vagy fyyd-en, vagy a gpodder.net-en név, kategória vagy cím alapján. gpodder.net böngészése + Felfedezés Az összes megjelölése lejátszottként Az összes epizód lejátszottként megjelölve diff --git a/core/src/main/res/values-id/strings.xml b/core/src/main/res/values-in/strings.xml similarity index 100% rename from core/src/main/res/values-id/strings.xml rename to core/src/main/res/values-in/strings.xml diff --git a/core/src/main/res/values-land/styles.xml b/core/src/main/res/values-land/styles.xml deleted file mode 100644 index d964ef3d4..000000000 --- a/core/src/main/res/values-land/styles.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/core/src/main/res/values-large/dimens.xml b/core/src/main/res/values-large/dimens.xml index 2da283c5b..2d107eef0 100644 --- a/core/src/main/res/values-large/dimens.xml +++ b/core/src/main/res/values-large/dimens.xml @@ -4,5 +4,4 @@ 170dp 64dp 64dp - @dimen/text_size_medium \ No newline at end of file diff --git a/core/src/main/res/values-pl-rPL/strings.xml b/core/src/main/res/values-pl-rPL/strings.xml index 405bfeaa7..3ebdbe487 100644 --- a/core/src/main/res/values-pl-rPL/strings.xml +++ b/core/src/main/res/values-pl-rPL/strings.xml @@ -7,6 +7,7 @@ Dodaj podcast Odcinki Wszystkie + Nowe Ulubione Nowy Ustawienia @@ -104,6 +105,7 @@ Znajdź podcast w folderze Możesz wyszukiwać nowe podcasty ze względu na nazwę, kategorię lub popularność na gpodder.net, Itunes lub fyyd Przeglądaj gpodder.net + więcej » Oznacz wszystkie jako odtworzone Wszystkie odcinki zaznaczono jako odtworzone @@ -134,7 +136,7 @@ Ma media Przefiltrowany {fa-exclamation-circle} Ostatnie odświerzanie nie powiodło się - Otwarty Podcast + Otwórz Podcast Pobierz Odtwórz @@ -249,6 +251,8 @@ Nie subskrybowałeś jeszcze żadnego podcastu. Ten epizod nie ma notatek. + Brak pobranych odcinków + Brak ulubionych odcinków Ten odcinek nie ma rozdziałów. Pamięć @@ -258,6 +262,8 @@ Kolejka Szczegóły Wygląd + Brak wyników + Wyczyść historię Usuwanie odcinków Odcinki niebędące w kolejce i niebędące na liście ulubiobych powinny nadawać się do usunięcia, jeśli Automatyczne Pobieranie potrzebuje miejsca na nowe odcinki. Wstrzymaj odtwarzanie po rozłączeniu słuchawek lub Bluetooth @@ -292,6 +298,7 @@ Słuchawki podłączone ponownie Bluetooth podłączony ponownie Aktualizacje mobilne + Automatyczne pobieranie Odświeżanie Interfejs użytkownika Wybierz motyw @@ -374,6 +381,9 @@ Chromecast wymagadodatkowych bibliotek, które są zablokowane w tej wersji AntennaPod Rzeczy z kolejki pobrane Dodaj pobrane odcinki do kolejki + Zachowanie + Domyślne + Otwórz panel nawigacyjny Szukaj odcinków Znalezione w notatkach dotyczących show diff --git a/core/src/main/res/values-v16/styles.xml b/core/src/main/res/values-v16/styles.xml index a92790152..947e43f38 100644 --- a/core/src/main/res/values-v16/styles.xml +++ b/core/src/main/res/values-v16/styles.xml @@ -6,12 +6,4 @@ ?android:attr/textColorPrimary sans-serif-light - - \ No newline at end of file diff --git a/core/src/main/res/values-v19/colors.xml b/core/src/main/res/values-v19/colors.xml index 16c065d75..4154280e8 100644 --- a/core/src/main/res/values-v19/colors.xml +++ b/core/src/main/res/values-v19/colors.xml @@ -1,5 +1,4 @@ #484B4D - #E3E3E3 \ No newline at end of file diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml index 0eaf0e5e7..7c9811bc7 100644 --- a/core/src/main/res/values/arrays.xml +++ b/core/src/main/res/values/arrays.xml @@ -156,13 +156,6 @@ 4.00 - - N/A - - - 0 - - @string/pref_theme_title_light @string/pref_theme_title_dark diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml index 0e4533977..fea7da4a4 100644 --- a/core/src/main/res/values/colors.xml +++ b/core/src/main/res/values/colors.xml @@ -2,22 +2,16 @@ #FFFFFF - #808080 #757575 #bfbfbf #000000 #33B5E5 #0099CC - #858585 - #DDDDDD #669900 #CC0000 #E033B5E5 - #E0EE5F52 #2C2C2C #FFFFFF - #EDEDED - #060708 #669900 #80000000 #50000000 diff --git a/core/src/main/res/values/dimens.xml b/core/src/main/res/values/dimens.xml index cdde0027d..02c398b62 100644 --- a/core/src/main/res/values/dimens.xml +++ b/core/src/main/res/values/dimens.xml @@ -10,7 +10,6 @@ 16sp 18sp 22sp - 32dp 64dp 64dp 64dp @@ -21,7 +20,6 @@ 280dp 48dp 16dp - 16dp 16dp 8dp @@ -29,7 +27,6 @@ 16dp 8dp - 8dp 16dp 16dp diff --git a/core/src/main/res/values/integers.xml b/core/src/main/res/values/integers.xml index 33501d9fb..73d90cf98 100644 --- a/core/src/main/res/values/integers.xml +++ b/core/src/main/res/values/integers.xml @@ -1,4 +1,3 @@ - 5000 -1 diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 52f2d014d..b9793151c 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -27,10 +27,8 @@ gpodder.net Synchronize with other devices gpodder.net Login - %1$s free Episode cache full The episode cache limit has been reached. You can increase the cache size in the Settings. - Synchronizing… Total time of podcasts played: @@ -73,7 +71,6 @@ Author(s) Language URL - Settings Picture Error An error occurred: @@ -82,14 +79,9 @@ No external storage is available. Please make sure that external storage is mounted so that the app can work properly. Chapters Duration: %1$s - Shownotes Description - Most recent episode:\u0020 \u0020episodes - Length:\u0020 - Size:\u0020 Processing - Loading… Save username and password Close Retry @@ -119,8 +111,6 @@ Feed URL www.example.com/feed Add Podcast by URL - Find Podcast in Directory - For new podcasts, you can search iTunes or fyyd, or browse gpodder.net by name, category or popularity. Browse gpodder.net Discover more » @@ -149,7 +139,6 @@ Please confirm that you want to delete the podcast \"%1$s\" and ALL its episodes (including downloaded episodes). Removing podcast Refresh complete podcast - Hide Episodes Batch edit Select all above Select all below @@ -174,9 +163,7 @@ Play Pause - Stop Stream - Remove Delete Unable to delete file. Rebooting the device could help. Delete Episode @@ -221,14 +208,12 @@ successful - failed Download pending Download running Details %1$s \n\nFile URL:\n%2$s Storage Device not found Insufficient Space - File Error HTTP Data Error Unknown Error Parser Exception @@ -238,7 +223,6 @@ Authentication Error File Type Error Forbidden - Cancel all downloads Download canceled Download canceled\nDisabled Auto Download for this item Downloads completed with error(s) @@ -257,7 +241,6 @@ Unknown Title Feed Media file - Image An error occurred when trying to download the file:\u0020 No podcast was provided that could be shown. Authentication required @@ -285,7 +268,6 @@ 00:00:00 Buffering Picture-in-picture mode - Playing podcast AntennaPod - Unknown media key: %1$d @@ -297,7 +279,6 @@ Do not show again Clear Queue Undo - Item removed Move to top Move to bottom Sort @@ -324,7 +305,6 @@ No queued episodes Add an episode by downloading it, or long press an episode and select \"Add to queue\". - You haven\'t subscribed to any podcasts yet. This episode has no shownotes. No downloads running You can download episodes on the podcast details screen. @@ -346,7 +326,6 @@ Storage Project - Other About Queue Integrations @@ -390,9 +369,7 @@ Set Time of Day every %1$s at %1$s - Download media files only over WiFi Continuous Playback - WiFi media download Headphones Disconnect Headphones Reconnect Bluetooth Reconnect @@ -403,11 +380,8 @@ Auto download Episode download Streaming - Refreshing User Interface Select Theme - Customize Navigation Drawer - Customize the appearance of the navigation drawer. Set Navigation Drawer items Change which items appear in the navigation drawer. Set Subscription Order @@ -419,8 +393,6 @@ Configure the automatic download of episodes. Enable Wi-Fi filter Allow automatic download only for selected Wi-Fi networks. - Download on mobile connection - Allow automatic download over the mobile data connection. Download when not charging Allow automatic download when the battery is not charging Parallel Downloads @@ -445,7 +417,6 @@ Sync all subscriptions and episode states with gpodder.net. Last sync attempt: %1$s (%2$s) Sync started - Full sync started %1$s with device %2$s]]> Show sync error notifications This setting does not apply to authentication errors. @@ -527,21 +498,16 @@ No results were found for \"%1$s\" - OPML files allow you to move your podcasts from one podcatcher to another. Option %1$d Choose a specific file path from the local filesystem. - Use an external applications like Dropbox, Google Drive or your favourite file manager to open an OPML file. - Many applications like Google Mail, Dropbox, Google Drive and most file managers can open OPML files with AntennaPod. Start import + Many applications like Google Mail, Dropbox, Google Drive and most file managers can open OPML files with AntennaPod. OPML Import - ERROR! Reading OPML file An error has occurred while reading the OPML document: No file selected! Select all Deselect all - Select… From local filesystem - Use external application OPML export HTML export Exporting… @@ -640,7 +606,6 @@ Subscribe - Subscribed Downloading… @@ -763,7 +728,6 @@ Failed to set the volume No connection to the cast device is present Connection to the cast device has been lost. Application is trying to re-establish the connection, if possible. Please wait for a few seconds and try again. - Failed to perform the action Failed to sync up with the cast device Failed to seek to the new position on the cast device Receiver player has encountered a severe error diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml index fb69e54e7..a107d3082 100644 --- a/core/src/main/res/values/styles.xml +++ b/core/src/main/res/values/styles.xml @@ -258,13 +258,6 @@ end - - - -