diff options
Diffstat (limited to 'ui')
13 files changed, 119 insertions, 137 deletions
diff --git a/ui/app-start-intent/src/main/java/de/danoeh/antennapod/ui/appstartintent/DownloadAuthenticationActivityStarter.java b/ui/app-start-intent/src/main/java/de/danoeh/antennapod/ui/appstartintent/DownloadAuthenticationActivityStarter.java new file mode 100644 index 000000000..03c5e915e --- /dev/null +++ b/ui/app-start-intent/src/main/java/de/danoeh/antennapod/ui/appstartintent/DownloadAuthenticationActivityStarter.java @@ -0,0 +1,39 @@ +package de.danoeh.antennapod.ui.appstartintent; + +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.os.Build; +import android.os.Parcelable; + +/** + * Launches the download authentication activity of the app with specific arguments. + * Does not require a dependency on the actual implementation of the activity. + */ +public class DownloadAuthenticationActivityStarter { + public static final String INTENT = "de.danoeh.antennapod.intents.DOWNLOAD_AUTH_ACTIVITY"; + public static final String EXTRA_DOWNLOAD_REQUEST = "download_request"; + + private final Intent intent; + private final Context context; + private final long feedFileId; + + public DownloadAuthenticationActivityStarter(Context context, long feedFileId, Parcelable downloadRequest) { + this.context = context; + this.feedFileId = feedFileId; + intent = new Intent(INTENT); + intent.setAction("request" + feedFileId); + intent.putExtra(EXTRA_DOWNLOAD_REQUEST, downloadRequest); + intent.setPackage(context.getPackageName()); + } + + public Intent getIntent() { + return intent; + } + + public PendingIntent getPendingIntent() { + return PendingIntent.getActivity(context.getApplicationContext(), + ("downloadAuth" + feedFileId).hashCode(), getIntent(), + PendingIntent.FLAG_ONE_SHOT | (Build.VERSION.SDK_INT >= 23 ? PendingIntent.FLAG_IMMUTABLE : 0)); + } +} diff --git a/ui/app-start-intent/src/main/java/de/danoeh/antennapod/ui/appstartintent/MainActivityStarter.java b/ui/app-start-intent/src/main/java/de/danoeh/antennapod/ui/appstartintent/MainActivityStarter.java index f91bb9244..1463978ee 100644 --- a/ui/app-start-intent/src/main/java/de/danoeh/antennapod/ui/appstartintent/MainActivityStarter.java +++ b/ui/app-start-intent/src/main/java/de/danoeh/antennapod/ui/appstartintent/MainActivityStarter.java @@ -4,6 +4,7 @@ import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Build; +import android.os.Bundle; /** * Launches the main activity of the app with specific arguments. @@ -14,9 +15,13 @@ public class MainActivityStarter { public static final String EXTRA_OPEN_PLAYER = "open_player"; public static final String EXTRA_FEED_ID = "fragment_feed_id"; public static final String EXTRA_ADD_TO_BACK_STACK = "add_to_back_stack"; + public static final String EXTRA_FRAGMENT_TAG = "fragment_tag"; + public static final String EXTRA_OPEN_DRAWER = "open_drawer"; + public static final String EXTRA_FRAGMENT_ARGS = "fragment_args"; private final Intent intent; private final Context context; + private Bundle fragmentArgs = null; public MainActivityStarter(Context context) { this.context = context; @@ -51,4 +56,22 @@ public class MainActivityStarter { intent.putExtra(EXTRA_ADD_TO_BACK_STACK, true); return this; } + + public MainActivityStarter withFragmentLoaded(String fragmentName) { + intent.putExtra(EXTRA_FRAGMENT_TAG, fragmentName); + return this; + } + + public MainActivityStarter withDrawerOpen() { + intent.putExtra(EXTRA_OPEN_DRAWER, true); + return this; + } + + public MainActivityStarter withFragmentArgs(String name, boolean value) { + if (fragmentArgs == null) { + fragmentArgs = new Bundle(); + } + fragmentArgs.putBoolean(name, value); + return this; + } } diff --git a/ui/app-start-intent/src/main/res/values/pending_intent.xml b/ui/app-start-intent/src/main/res/values/pending_intent.xml index ed7e9b2cd..30b35d926 100644 --- a/ui/app-start-intent/src/main/res/values/pending_intent.xml +++ b/ui/app-start-intent/src/main/res/values/pending_intent.xml @@ -1,6 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <resources> <item name="pending_intent_download_service_notification" type="id"/> + <item name="pending_intent_download_service_retry" type="id"/> + <item name="pending_intent_download_cancel_all" type="id"/> <item name="pending_intent_download_service_auth" type="id"/> <item name="pending_intent_download_service_report" type="id"/> <item name="pending_intent_download_service_autodownload_report" type="id"/> diff --git a/ui/common/src/main/res/layout/pager_fragment.xml b/ui/common/src/main/res/layout/pager_fragment.xml index 3987b871d..e479259d5 100644 --- a/ui/common/src/main/res/layout/pager_fragment.xml +++ b/ui/common/src/main/res/layout/pager_fragment.xml @@ -26,7 +26,7 @@ android:layout_height="wrap_content" android:background="?android:attr/windowBackground" app:tabBackground="?attr/selectableItemBackground" - app:tabMode="fixed" + app:tabMode="auto" app:tabGravity="fill" /> <androidx.viewpager2.widget.ViewPager2 diff --git a/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/ApGlideModule.java b/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/ApGlideModule.java index d233fba14..132ed4901 100644 --- a/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/ApGlideModule.java +++ b/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/ApGlideModule.java @@ -2,7 +2,6 @@ package de.danoeh.antennapod.ui.glide; import android.annotation.SuppressLint; import android.content.Context; -import android.graphics.Bitmap; import android.util.Log; import androidx.annotation.NonNull; @@ -51,6 +50,5 @@ public class ApGlideModule extends AppGlideModule { registry.append(String.class, InputStream.class, new NoHttpStringLoader.StreamFactory()); registry.append(EmbeddedChapterImage.class, ByteBuffer.class, new ChapterImageModelLoader.Factory()); - registry.register(Bitmap.class, PaletteBitmap.class, new PaletteBitmapTranscoder()); } } diff --git a/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/PaletteBitmap.java b/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/PaletteBitmap.java deleted file mode 100644 index a3b590ba2..000000000 --- a/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/PaletteBitmap.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Source: https://github.com/bumptech/glide/wiki/Custom-targets#palette-example - */ - -package de.danoeh.antennapod.ui.glide; - -import android.graphics.Bitmap; - -import androidx.annotation.NonNull; -import androidx.palette.graphics.Palette; - -public class PaletteBitmap { - public final Palette palette; - public final Bitmap bitmap; - - public PaletteBitmap(@NonNull Bitmap bitmap, Palette palette) { - this.bitmap = bitmap; - this.palette = palette; - } -}
\ No newline at end of file diff --git a/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/PaletteBitmapResource.java b/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/PaletteBitmapResource.java deleted file mode 100644 index 2fd18a0cb..000000000 --- a/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/PaletteBitmapResource.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Source: https://github.com/bumptech/glide/wiki/Custom-targets#palette-example - */ - -package de.danoeh.antennapod.ui.glide; - -import androidx.annotation.NonNull; - -import com.bumptech.glide.load.engine.Resource; -import com.bumptech.glide.util.Util; - -public class PaletteBitmapResource implements Resource<PaletteBitmap> { - private final PaletteBitmap paletteBitmap; - - public PaletteBitmapResource(@NonNull PaletteBitmap paletteBitmap) { - this.paletteBitmap = paletteBitmap; - } - - @NonNull - @Override - public Class<PaletteBitmap> getResourceClass() { - return PaletteBitmap.class; - } - - @NonNull - @Override - public PaletteBitmap get() { - return paletteBitmap; - } - - @Override - public int getSize() { - return Util.getBitmapByteSize(paletteBitmap.bitmap); - } - - @Override - public void recycle() { - paletteBitmap.bitmap.recycle(); - } -}
\ No newline at end of file diff --git a/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/PaletteBitmapTranscoder.java b/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/PaletteBitmapTranscoder.java deleted file mode 100644 index bcb5f590a..000000000 --- a/ui/glide/src/main/java/de/danoeh/antennapod/ui/glide/PaletteBitmapTranscoder.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Source: https://github.com/bumptech/glide/wiki/Custom-targets#palette-example - */ - -package de.danoeh.antennapod.ui.glide; - -import android.graphics.Bitmap; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.palette.graphics.Palette; - -import com.bumptech.glide.load.Options; -import com.bumptech.glide.load.engine.Resource; -import com.bumptech.glide.load.resource.transcode.ResourceTranscoder; -import de.danoeh.antennapod.storage.preferences.UserPreferences; - -public class PaletteBitmapTranscoder implements ResourceTranscoder<Bitmap, PaletteBitmap> { - - @Nullable - @Override - public Resource<PaletteBitmap> transcode(@NonNull Resource<Bitmap> toTranscode, @NonNull Options options) { - Bitmap bitmap = toTranscode.get(); - Palette palette = null; - if (UserPreferences.shouldShowSubscriptionTitle()) { - palette = new Palette.Builder(bitmap).generate(); - } - PaletteBitmap result = new PaletteBitmap(bitmap, palette); - return new PaletteBitmapResource(result); - } -} diff --git a/ui/i18n/build.gradle b/ui/i18n/build.gradle index a1ace417b..4f5370662 100644 --- a/ui/i18n/build.gradle +++ b/ui/i18n/build.gradle @@ -4,7 +4,7 @@ plugins { apply from: "../../common.gradle" android { - lintOptions { + lint { disable "Typos", "ExtraTranslation", "ImpliedQuantity", "PluralsCandidate", "UnusedQuantity", "TypographyEllipsis" } diff --git a/ui/i18n/src/main/res/values/strings.xml b/ui/i18n/src/main/res/values/strings.xml index f072ea673..59fc8b4e5 100644 --- a/ui/i18n/src/main/res/values/strings.xml +++ b/ui/i18n/src/main/res/values/strings.xml @@ -38,6 +38,7 @@ <string name="swipe_left">Swipe Left</string> <string name="enable_swipeactions">Enable Swipe Actions for this Screen</string> <string name="change_setting">Change</string> + <string name="individual_subscription">Individual subscription</string> <!-- Statistics fragment --> <string name="statistics_include_marked">Include duration of episodes that are just marked as played</string> @@ -60,6 +61,9 @@ <string name="home_downloads_title">Manage downloads</string> <string name="home_welcome_title">Welcome to AntennaPod!</string> <string name="home_welcome_text">You are not subscribed to any podcasts yet. Open the side menu to add a podcast.</string> + <string name="notification_permission_text">AntennaPod needs your permission to show notifications while downloading episodes.</string> + <string name="notification_permission_denied">You denied the permission.</string> + <string name="open_settings">Open settings</string> <string name="configure_home">Configure Home Screen</string> <!-- Download Statistics fragment --> @@ -103,6 +107,7 @@ <string name="yes">Yes</string> <string name="no">No</string> <string name="reset">Reset</string> + <string name="global_default">Global default</string> <string name="url_label">URL</string> <string name="support_funding_label">Support</string> <string name="support_podcast">Support this Podcast</string> @@ -110,6 +115,7 @@ <string name="error_msg_prefix">An error occurred:</string> <string name="refresh_label">Refresh</string> <string name="chapters_label">Chapters</string> + <string name="no_chapters_label">No chapters</string> <string name="chapter_duration">Duration: %1$s</string> <string name="description_label">Description</string> <string name="shownotes_label">Shownotes</string> @@ -125,9 +131,10 @@ <string name="feed_volume_reduction_light">Light</string> <string name="feed_volume_reduction_heavy">Heavy</string> <string name="parallel_downloads">%1$d parallel downloads</string> - <string name="feed_auto_download_global">Global default</string> <string name="feed_auto_download_always">Always</string> <string name="feed_auto_download_never">Never</string> + <string name="feed_new_episodes_action_add_to_inbox">Add to Inbox</string> + <string name="feed_new_episodes_action_nothing">Nothing</string> <string name="send_label">Send…</string> <string name="episode_cleanup_never">Never</string> <string name="episode_cleanup_except_favorite_removal">When not favorited</string> @@ -175,9 +182,9 @@ <string name="share_label">Share</string> <string name="share_file_label">Share File</string> <string name="share_rss_address_label">RSS address:</string> - <string name="feed_delete_confirmation_msg">Please confirm that you want to delete the podcast \"%1$s\" and ALL its episodes (including downloaded episodes).</string> - <string name="feed_delete_confirmation_msg_batch">Please confirm that you want to remove the selected podcasts and ALL their episodes (including downloaded episodes).</string> - <string name="feed_delete_confirmation_local_msg">Please confirm that you want to remove the podcast \"%1$s\". The files in the local source folder will not be deleted.</string> + <string name="feed_delete_confirmation_msg">Please confirm that you want to delete the podcast \"%1$s\", ALL its episodes (including downloaded episodes), and its statistics.</string> + <string name="feed_delete_confirmation_msg_batch">Please confirm that you want to remove the selected podcasts, ALL their episodes (including downloaded episodes), and its statistics.</string> + <string name="feed_delete_confirmation_local_msg">Please confirm that you want to remove the podcast \"%1$s\" and its statistics. The files in the local source folder will not be deleted.</string> <string name="feed_remover_msg">Removing podcast</string> <string name="load_complete_feed">Refresh complete podcast</string> <string name="multi_select">Multi select</string> @@ -308,6 +315,7 @@ <string name="confirm_mobile_download_dialog_enable_temporarily">Allow temporarily</string> <!-- Mediaplayer messages --> + <string name="playback_error_generic"><![CDATA[The media file could not be played.\n\n- Try deleting and re-downloading the episode.\n- Check your network connection, and make sure no VPN or login page is blocking access.\n- Try long-pressing and sharing the \"Media address\" to your web browser to see if it can be played there. If not, contact the podcast creators.]]></string> <string name="playback_error_server_died">Server died</string> <string name="playback_error_unsupported">Unsupported media type</string> <string name="playback_error_timeout">Operation timed out</string> @@ -363,9 +371,6 @@ <string name="no_subscriptions_label">To subscribe to a podcast, press the plus icon below.</string> <!-- Preferences --> - <string name="storage_pref">Storage</string> - <string name="storage_sum">Episode auto delete, Import, Export</string> - <string name="statistics_moved">The statistics screen was moved to the subscriptions screen. You can open it from there.</string> <string name="project_pref">Project</string> <string name="synchronization_pref">Synchronization</string> <string name="synchronization_sum">Synchronize with other devices</string> @@ -381,7 +386,6 @@ <string name="preference_search_hint">Search…</string> <string name="preference_search_no_results">No results</string> <string name="preference_search_clear_history">Clear history</string> - <string name="media_player">Media player</string> <string name="pref_episode_cleanup_title">Episode Cleanup</string> <string name="pref_episode_cleanup_summary">Episodes that should be eligible for removal if Auto Download needs space for new episodes</string> <string name="pref_pauseOnDisconnect_sum">Pause playback when headphones or bluetooth are disconnected</string> @@ -406,20 +410,18 @@ <string name="pref_favorite_keeps_episodes_title">Keep Favorite Episodes</string> <string name="playback_pref">Playback</string> <string name="playback_pref_sum">Headphone controls, Skip intervals, Queue</string> - <string name="network_pref">Network</string> - <string name="network_pref_sum">Update interval, Download controls, Mobile data</string> + <string name="downloads_pref">Downloads</string> + <string name="downloads_pref_sum">Update interval, Mobile data, Automatic download, Automatic deletion</string> <string name="feed_refresh_title">Refresh podcasts</string> - <string name="feed_refresh_sum">Specify an interval or a specific time to look for new episodes automatically</string> - <string name="feed_refresh_interval">Interval</string> - <string name="feed_refresh_time">Time</string> + <string name="feed_refresh_sum">Specify an interval at which AntennaPod looks for new episodes automatically</string> <string name="feed_refresh_never">Never</string> - <string name="feed_refresh_interval_at">at %1$s</string> - <plurals name="feed_refresh_every_x_hours"> - <item quantity="one">Every hour</item> - <item quantity="other">Every %d hours</item> - </plurals> - <string name="battery_optimization_pref_title">Battery Optimization</string> - <string name="battery_optimization_pref">For more reliable automatic downloads and automatic refresh, exclude AntennaPod from battery optimization. Tap to add an exception for AntennaPod.</string> + <string name="feed_every_hour">Every hour</string> + <string name="feed_every_2_hours">Every 2 hours</string> + <string name="feed_every_4_hours">Every 4 hours</string> + <string name="feed_every_8_hours">Every 8 hours</string> + <string name="feed_every_12_hours">Every 12 hours</string> + <string name="feed_every_24_hours">Every day</string> + <string name="feed_every_72_hours">Every 3 days</string> <string name="pref_followQueue_title">Continuous Playback</string> <string name="pref_pauseOnHeadsetDisconnect_title">Headphones or Bluetooth disconnect</string> <string name="pref_unpauseOnHeadsetReconnect_title">Headphones Reconnect</string> @@ -435,7 +437,8 @@ <string name="pref_mobileUpdate_streaming">Streaming</string> <string name="user_interface_label">User Interface</string> <string name="user_interface_sum">Appearance, Subscriptions, Lockscreen</string> - <string name="pref_set_theme_title">Select Theme</string> + <string name="pref_black_theme_title">Full Black</string> + <string name="pref_black_theme_message">Use full black for the dark theme</string> <string name="pref_tinted_theme_title">Use dynamic colors</string> <string name="pref_tinted_theme_message">Adapt app colors based on the wallpaper</string> <string name="pref_nav_drawer_items_title">Set Navigation Drawer items</string> @@ -444,7 +447,6 @@ <string name="pref_nav_drawer_feed_order_sum">Change the order of your subscriptions</string> <string name="pref_nav_drawer_feed_counter_title">Set Subscription Counter</string> <string name="pref_nav_drawer_feed_counter_sum">Change the information displayed by the subscription counter. Also affects the sorting of subscriptions if \'Subscription Order\' is set to \'Counter\'.</string> - <string name="pref_set_theme_sum">Change the appearance of AntennaPod.</string> <string name="pref_automatic_download_title">Automatic Download</string> <string name="pref_automatic_download_sum">Configure the automatic download of episodes.</string> <string name="pref_autodl_wifi_filter_title">Enable Wi-Fi filter</string> @@ -458,10 +460,9 @@ <string name="pref_episode_cover_summary">Use the episode specific cover in lists whenever available. If unchecked, the app will always use the podcast cover image.</string> <string name="pref_show_remain_time_title">Show Remaining Time</string> <string name="pref_show_remain_time_summary">Display remaining time of episodes when checked. If unchecked, display total duration of episodes.</string> - <string name="pref_theme_title_use_system">Use system theme</string> + <string name="pref_theme_title_automatic">Automatic</string> <string name="pref_theme_title_light">Light</string> <string name="pref_theme_title_dark">Dark</string> - <string name="pref_theme_title_trueblack">Black (AMOLED ready)</string> <string name="pref_episode_cache_unlimited">Unlimited</string> <string name="pref_playback_speed_sum">Customize the speeds available for variable speed playback</string> <string name="pref_feed_playback_speed_sum">The speed to use when starting audio playback for episodes in this podcast</string> @@ -485,13 +486,12 @@ <string name="pref_compact_notification_buttons_sum">Change the playback buttons when the notification is collapsed. The play/pause button is always included.</string> <string name="pref_compact_notification_buttons_dialog_title">Select a maximum of %1$d items</string> <string name="pref_compact_notification_buttons_dialog_error">You can only select a maximum of %1$d items.</string> - <string name="pref_lockscreen_background_title">Set Lockscreen Background</string> - <string name="pref_lockscreen_background_sum">Set the lockscreen background to the current episode\'s image. As a side effect, this will also show the image in third party apps.</string> <string name="pref_enqueue_location_title">Enqueue Location</string> <string name="pref_enqueue_location_sum">Add episodes to: %1$s</string> <string name="enqueue_location_back">Back</string> <string name="enqueue_location_front">Front</string> <string name="enqueue_location_after_current">After current episode</string> + <string name="enqueue_location_random">Random</string> <string name="pref_smart_mark_as_played_disabled">Disabled</string> <string name="documentation_support">Documentation & Support</string> <string name="visit_user_forum">User forum</string> @@ -499,19 +499,11 @@ <string name="open_bug_tracker">Open bug tracker</string> <string name="copy_to_clipboard">Copy to clipboard</string> <string name="copied_to_clipboard">Copied to clipboard</string> - <string name="experimental_pref">Experimental</string> - <string name="pref_media_player_message">Select which media player to use to play files</string> - <string name="pref_current_value">Current value: %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">Set a network proxy</string> <string name="pref_no_browser_found">No web browser found.</string> <string name="pref_enqueue_downloaded_title">Enqueue Downloaded</string> <string name="pref_enqueue_downloaded_summary">Add downloaded episodes to the queue</string> - <string name="media_player_builtin">Built-in Android player (deprecated) </string> - <string name="media_player_sonic">Sonic Media Player (deprecated) </string> - <string name="media_player_exoplayer_recommended">ExoPlayer (recommended)</string> - <string name="media_player_switch_to_exoplayer">Switch to ExoPlayer</string> - <string name="media_player_switched_to_exoplayer">Switched to ExoPlayer.</string> <string name="pref_skip_silence_title">Skip Silence in Audio</string> <string name="behavior">Behavior</string> <string name="pref_default_page">Default Page</string> @@ -535,6 +527,8 @@ <string name="pref_contribute">Contribute</string> <string name="pref_show_subscription_title">Show Subscription Title</string> <string name="pref_show_subscription_title_summary">Display the subscription title below the cover image.</string> + <string name="pref_new_episodes_action_title">New Episodes Action</string> + <string name="pref_new_episodes_action_sum">Action to take for new episodes</string> <!-- About screen --> <string name="about_pref">About</string> @@ -600,6 +594,7 @@ <string name="set_sleeptimer_label">Set sleep timer</string> <string name="disable_sleeptimer_label">Disable sleep timer</string> <string name="extend_sleep_timer_label">+%d min</string> + <string name="sleep_timer_always">Always</string> <string name="sleep_timer_label">Sleep timer</string> <string name="time_dialog_invalid_input">Invalid input, time has to be an integer</string> <string name="shake_to_reset_label">Shake to reset</string> @@ -619,7 +614,9 @@ <item quantity="one">1 hour</item> <item quantity="other">%d hours</item> </plurals> - <string name="auto_enable_label">Auto-enable</string> + <string name="auto_enable_label">Automatically activate the sleep timer when pressing play</string> + <string name="auto_enable_label_with_times">Automatically activate the sleep timer when pressing play between %s and %s</string> + <string name="auto_enable_change_times">Change times</string> <string name="sleep_timer_enabled_label">Sleep timer enabled</string> <!-- Synchronisation --> @@ -696,7 +693,7 @@ <string name="authentication_descr">Change your username and password for this podcast and its episodes.</string> <string name="feed_tags_label">Tags</string> <string name="feed_tags_summary">Change the tags of this podcast to help organize your subscriptions</string> - <string name="feed_folders_include_root">Show in main list</string> + <string name="feed_folders_include_root">Show this podcast in main list</string> <string name="multi_feed_common_tags_info">{fa-info-circle} Only common tags from all selected subscriptions are shown. Other tags stay unaffected.</string> <string name="auto_download_settings_label">Auto Download Settings</string> <string name="episode_filters_label">Episode Filter</string> @@ -723,8 +720,8 @@ <!-- Add podcast fragment --> <string name="search_podcast_hint">Search podcast…</string> - <string name="search_itunes_label">Search iTunes</string> - <string name="search_podcastindex_label">Search Podcastindex.org</string> + <string name="search_itunes_label">Search Apple Podcasts</string> + <string name="search_podcastindex_label">Search Podcast Index</string> <string name="search_fyyd_label">Search fyyd</string> <string name="gpodnet_search_hint">Search gpodder.net</string> <string name="advanced">Advanced</string> @@ -734,7 +731,7 @@ <string name="discover_hide">Hide</string> <string name="discover_is_hidden">You selected to hide suggestions.</string> <string name="discover_more">more »</string> - <string name="discover_powered_by_itunes">Suggestions by iTunes</string> + <string name="discover_powered_by_itunes">Suggestions by Apple Podcasts</string> <string name="discover_confirm">Show suggestions</string> <string name="search_powered_by">Results by %1$s</string> <string name="select_country">Select country</string> @@ -797,9 +794,6 @@ <string name="audio_controls">Audio controls</string> <string name="playback_speed">Playback Speed</string> <string name="audio_effects">Audio Effects</string> - <string name="stereo_to_mono">Downmix: Stereo to mono</string> - <string name="sonic_only">Sonic only</string> - <string name="exoplayer_only">ExoPlayer only</string> <string name="player_switch_to_audio_only">Switch to audio only</string> <!-- proxy settings --> diff --git a/ui/png-icons/src/main/res/drawable/ic_notification_cancel.xml b/ui/png-icons/src/main/res/drawable/ic_notification_cancel.xml new file mode 100644 index 000000000..a5480c71f --- /dev/null +++ b/ui/png-icons/src/main/res/drawable/ic_notification_cancel.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" + android:viewportHeight="24.0" android:viewportWidth="24.0" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FFFFFFFF" android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2zM17,15.59L15.59,17 12,13.41 8.41,17 7,15.59 10.59,12 7,8.41 8.41,7 12,10.59 15.59,7 17,8.41 13.41,12 17,15.59z"/> +</vector> diff --git a/ui/png-icons/src/main/res/drawable/ic_notification_playback_speed.xml b/ui/png-icons/src/main/res/drawable/ic_notification_playback_speed.xml new file mode 100644 index 000000000..5aad5031a --- /dev/null +++ b/ui/png-icons/src/main/res/drawable/ic_notification_playback_speed.xml @@ -0,0 +1,8 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="30dp" + android:viewportHeight="24.0" + android:viewportWidth="24.0" + android:width="30dp"> + + <path android:fillColor="#ffffff" android:pathData="M 12 15.98 A 2.98 2.98 0 0 1 9.02 12.99 c 0 -1.11 0.61 -2.09 1.49 -2.6 L 20.17 4.81 L 14.67 14.34 C 14.17 15.31 13.16 15.98 12 15.98 M 12 3.05 c 1.8 0 3.48 0.5 4.94 1.31 l -2.09 1.2 C 13.99 5.22 12.99 5.04 12 5.04 a 7.96 7.96 0 0 0 -7.96 7.96 c 0 2.2 0.89 4.19 2.33 5.62 h 0.01 c 0.39 0.39 0.39 1.01 0 1.4 c -0.39 0.39 -1.02 0.39 -1.41 0.01 v 0 C 3.17 18.22 2.05 15.74 2.05 12.99 A 9.95 9.95 0 0 1 12 3.05 m 9.95 9.95 c 0 2.75 -1.11 5.23 -2.91 7.03 v 0 c -0.39 0.38 -1.01 0.38 -1.4 -0.01 c -0.39 -0.39 -0.39 -1.01 0 -1.4 v 0 c 1.44 -1.44 2.33 -3.42 2.33 -5.62 c 0 -0.99 -0.19 -1.99 -0.54 -2.88 L 20.62 8.02 c 0.83 1.49 1.32 3.16 1.32 4.97 z" /> +</vector> diff --git a/ui/statistics/src/main/java/de/danoeh/antennapod/ui/statistics/subscriptions/StatisticsFilterDialog.java b/ui/statistics/src/main/java/de/danoeh/antennapod/ui/statistics/subscriptions/StatisticsFilterDialog.java index 8efdcf603..077883321 100644 --- a/ui/statistics/src/main/java/de/danoeh/antennapod/ui/statistics/subscriptions/StatisticsFilterDialog.java +++ b/ui/statistics/src/main/java/de/danoeh/antennapod/ui/statistics/subscriptions/StatisticsFilterDialog.java @@ -107,6 +107,10 @@ public class StatisticsFilterDialog { private Pair<String[], Long[]> makeMonthlyList(long oldestDate, boolean inclusive) { Calendar date = Calendar.getInstance(); date.setTimeInMillis(oldestDate); + date.set(Calendar.HOUR_OF_DAY, 0); + date.set(Calendar.MINUTE, 0); + date.set(Calendar.SECOND, 0); + date.set(Calendar.MILLISECOND, 0); date.set(Calendar.DAY_OF_MONTH, 1); ArrayList<String> names = new ArrayList<>(); ArrayList<Long> timestamps = new ArrayList<>(); |