diff options
Diffstat (limited to 'app/src/main/res')
33 files changed, 673 insertions, 620 deletions
diff --git a/app/src/main/res/layout-sw720dp/main.xml b/app/src/main/res/layout-sw720dp/main.xml index 79b7213e0..fe5a86d24 100644 --- a/app/src/main/res/layout-sw720dp/main.xml +++ b/app/src/main/res/layout-sw720dp/main.xml @@ -1,28 +1,29 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="match_parent"> + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="horizontal" + tools:viewBindingIgnore="true"> <FrameLayout - android:id="@+id/navDrawerFragment" - android:layout_width="300dp" - android:layout_height="match_parent" - android:layout_gravity="start" - android:orientation="vertical" /> + android:id="@+id/navDrawerFragment" + android:layout_width="300dp" + android:layout_height="match_parent" + android:layout_gravity="start" + android:orientation="vertical" /> <View - android:layout_width="1dp" - android:layout_height="match_parent" - android:background="?android:attr/listDivider" /> + android:layout_width="1dp" + android:layout_height="match_parent" + android:background="?android:attr/listDivider" /> <androidx.coordinatorlayout.widget.CoordinatorLayout - android:id="@+id/overview_coordinator_layout" - android:layout_width="match_parent" - android:layout_height="match_parent"> + android:id="@+id/overview_coordinator_layout" + android:layout_width="match_parent" + android:layout_height="match_parent"> <FrameLayout android:id="@+id/main_view" @@ -33,14 +34,14 @@ tools:background="@android:color/holo_red_dark" /> <FrameLayout - android:elevation="8dp" android:id="@+id/audioplayerFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:background="?android:attr/windowBackground" + android:elevation="8dp" android:visibility="gone" app:layout_behavior="de.danoeh.antennapod.view.LockableBottomSheetBehavior" /> </androidx.coordinatorlayout.widget.CoordinatorLayout> -</LinearLayout>
\ No newline at end of file +</LinearLayout> diff --git a/app/src/main/res/layout/audio_controls.xml b/app/src/main/res/layout/audio_controls.xml index 2c9665aad..0bfa4f521 100644 --- a/app/src/main/res/layout/audio_controls.xml +++ b/app/src/main/res/layout/audio_controls.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" + android:orientation="vertical" android:padding="16dp"> <LinearLayout @@ -17,7 +17,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone" - android:layout_marginBottom="8dp"/> + android:layout_marginBottom="8dp" /> <LinearLayout android:layout_width="match_parent" @@ -27,9 +27,9 @@ <TextView android:layout_width="0dp" android:layout_height="wrap_content" - style="@style/AntennaPod.TextView.ListItemPrimaryTitle" android:layout_weight="1" - android:text="@string/playback_speed" /> + android:text="@string/playback_speed" + style="@style/AntennaPod.TextView.ListItemPrimaryTitle" /> <TextView android:id="@+id/txtvPlaybackSpeed" @@ -42,67 +42,14 @@ <de.danoeh.antennapod.view.PlaybackSpeedSeekBar android:id="@+id/speed_seek_bar" android:layout_width="match_parent" - android:layout_height="wrap_content"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="12dp" - android:layout_marginBottom="4dp" - style="@style/AntennaPod.TextView.ListItemPrimaryTitle" - android:text="@string/volume" /> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginLeft="8dp" - android:layout_marginStart="8dp" - android:orientation="horizontal" - android:gravity="center"> - - <TextView - android:id="@+id/txtvLeft" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/left_short" /> - - <SeekBar - android:id="@+id/volume_left" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:max="100" /> - - </LinearLayout> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:layout_marginLeft="8dp" - android:layout_marginStart="8dp" - android:orientation="horizontal" - android:gravity="center"> - - <TextView - android:id="@+id/txtvRight" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/right_short" /> - - <SeekBar - android:id="@+id/volume_right" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:max="100" /> - - </LinearLayout> + android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" - style="@style/AntennaPod.TextView.ListItemPrimaryTitle" - android:text="@string/audio_effects" /> + android:text="@string/audio_effects" + style="@style/AntennaPod.TextView.ListItemPrimaryTitle" /> <CheckBox android:id="@+id/skipSilence" @@ -115,5 +62,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/stereo_to_mono" /> + </LinearLayout> + </ScrollView> diff --git a/app/src/main/res/layout/episode_filter_dialog.xml b/app/src/main/res/layout/episode_filter_dialog.xml index 43d074bfb..9661a8e72 100644 --- a/app/src/main/res/layout/episode_filter_dialog.xml +++ b/app/src/main/res/layout/episode_filter_dialog.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" @@ -7,7 +8,7 @@ <RadioGroup android:id="@+id/radio_filter_group" - android:layout_width="fill_parent" + android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> @@ -22,19 +23,21 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/episode_filters_exclude" /> + </RadioGroup> <EditText android:id="@+id/etxtEpisodeFilterText" - android:layout_width="fill_parent" + android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" - android:lines="8" - android:minLines="1" - android:maxLines="20" - android:scrollbars="vertical" - android:hint="@string/episode_filters_hint" + android:cursorVisible="true" android:focusable="true" android:focusableInTouchMode="true" - android:cursorVisible="true" /> + android:hint="@string/episode_filters_hint" + android:lines="8" + android:maxLines="20" + android:minLines="1" + android:scrollbars="vertical" /> + </LinearLayout> diff --git a/app/src/main/res/layout/episodes_apply_action_fragment.xml b/app/src/main/res/layout/episodes_apply_action_fragment.xml deleted file mode 100644 index 78827a12a..000000000 --- a/app/src/main/res/layout/episodes_apply_action_fragment.xml +++ /dev/null @@ -1,59 +0,0 @@ -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <androidx.appcompat.widget.Toolbar - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="?attr/actionBarSize" - android:theme="?attr/actionBarTheme" - android:layout_alignParentTop="true" - app:navigationIcon="?homeAsUpIndicator" - android:id="@+id/toolbar"/> - - <ListView - android:id="@android:id/list" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_below="@id/toolbar" - android:layout_marginTop="0dp" /> - - <com.leinardi.android.speeddial.SpeedDialOverlayLayout - android:id="@+id/fabSDOverlay" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:importantForAccessibility="no" - android:layout_below="@id/toolbar" /> - <!-- The FAB SpeedDial - 1. MUST be placed at the bottom of the layout xml to ensure it is at the front, - clickable on Pre-Lollipop devices (that do not support elevation). - See: https://stackoverflow.com/a/2614402 - 2. ScrollView is needed to ensure the vertical list of speed dials are - accessible when screen height is small, eg., landscape mode on most phones. - --> - <ScrollView - android:id="@+id/fabSDScrollCtr" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" - android:elevation="@dimen/sd_open_elevation" - tools:ignore="UnusedAttribute" > - - <com.leinardi.android.speeddial.SpeedDialView - android:id="@+id/fabSD" - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:sdMainFabClosedSrc="@drawable/ic_fab_edit" - app:sdOverlayLayout="@id/fabSDOverlay" - android:layout_marginEnd="16dp" - android:layout_marginRight="16dp" - android:layout_marginBottom="16dp" - android:accessibilityTraversalBefore="@android:id/list" - android:contentDescription="@string/apply_action" /> - </ScrollView> - -</RelativeLayout> diff --git a/app/src/main/res/layout/feed_item_list_fragment.xml b/app/src/main/res/layout/feed_item_list_fragment.xml index 6dc484e2f..734ce64dd 100644 --- a/app/src/main/res/layout/feed_item_list_fragment.xml +++ b/app/src/main/res/layout/feed_item_list_fragment.xml @@ -1,51 +1,53 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="match_parent"> + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent"> <com.google.android.material.appbar.AppBarLayout - android:id="@+id/appBar" - android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:id="@+id/appBar" + android:layout_width="match_parent" + android:layout_height="wrap_content"> <com.google.android.material.appbar.CollapsingToolbarLayout - android:id="@+id/collapsing_toolbar" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="?android:attr/windowBackground" - app:contentScrim="?android:attr/windowBackground" - app:scrimAnimationDuration="200" - app:layout_scrollFlags="scroll|exitUntilCollapsed"> + android:id="@+id/collapsing_toolbar" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="?android:attr/windowBackground" + app:contentScrim="?android:attr/windowBackground" + app:scrimAnimationDuration="200" + app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView - android:id="@+id/imgvBackground" - style="@style/BigBlurryBackground" - android:background="@color/image_readability_tint" - android:layout_width="match_parent" - android:layout_height="232dp" - app:layout_collapseMode="parallax" - app:layout_collapseParallaxMultiplier="0.6"/> + android:id="@+id/imgvBackground" + android:layout_width="match_parent" + android:layout_height="232dp" + android:background="@color/image_readability_tint" + style="@style/BigBlurryBackground" + app:layout_collapseMode="parallax" + app:layout_collapseParallaxMultiplier="0.6" /> - <include layout="@layout/feeditemlist_header" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="bottom" - app:layout_collapseMode="parallax" - app:layout_collapseParallaxMultiplier="0.6" /> + <include + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + layout="@layout/feeditemlist_header" + app:layout_collapseMode="parallax" + app:layout_collapseParallaxMultiplier="0.6" /> <androidx.appcompat.widget.Toolbar - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="?attr/actionBarSize" - android:theme="?attr/actionBarTheme" - android:layout_alignParentTop="true" - android:id="@+id/toolbar" - app:navigationIcon="?homeAsUpIndicator" - app:layout_collapseMode="pin"/> + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="?attr/actionBarSize" + android:theme="?attr/actionBarTheme" + android:layout_alignParentTop="true" + app:navigationIcon="?homeAsUpIndicator" + app:layout_collapseMode="pin" /> </com.google.android.material.appbar.CollapsingToolbarLayout> + </com.google.android.material.appbar.AppBarLayout> <androidx.swiperefreshlayout.widget.SwipeRefreshLayout @@ -54,27 +56,30 @@ android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> - <de.danoeh.antennapod.view.EpisodeItemListRecyclerView - android:id="@+id/recyclerView" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingHorizontal="@dimen/additional_horizontal_spacing" /> + <de.danoeh.antennapod.view.EpisodeItemListRecyclerView + android:id="@+id/recyclerView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingHorizontal="@dimen/additional_horizontal_spacing" /> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> <ProgressBar - android:id="@+id/progLoading" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:indeterminateOnly="true" - android:visibility="gone"/> + android:id="@+id/progLoading" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:indeterminateOnly="true" + android:visibility="gone" /> <include - layout="@layout/more_content_list_footer" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="bottom" - android:visibility="gone"/> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + android:visibility="gone" + layout="@layout/more_content_list_footer" /> + + <include + layout="@layout/multi_select_speed_dial" /> </androidx.coordinatorlayout.widget.CoordinatorLayout> diff --git a/app/src/main/res/layout/feeditemlist_item.xml b/app/src/main/res/layout/feeditemlist_item.xml index 37b88d1b5..b876f079d 100644 --- a/app/src/main/res/layout/feeditemlist_item.xml +++ b/app/src/main/res/layout/feeditemlist_item.xml @@ -1,177 +1,187 @@ <?xml version="1.0" encoding="utf-8"?> <FrameLayout - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="wrap_content"> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:ignore="MergeRootFrame"> <!-- This parent FrameLayout is necessary because RecyclerView's ItemAnimator changes alpha values, which conflicts with our played state indicator. --> - <LinearLayout - android:id="@+id/container" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:gravity="center_vertical" - android:baselineAligned="false" - android:paddingStart="12dp" - android:paddingLeft="12dp" - android:paddingEnd="0dp" - android:paddingRight="0dp" - tools:ignore="UselessParent"> + android:id="@+id/container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center_vertical" + android:baselineAligned="false" + android:paddingStart="12dp" + android:paddingLeft="12dp" + android:paddingEnd="0dp" + android:paddingRight="0dp" + tools:ignore="UselessParent"> <LinearLayout - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:id="@+id/left_padding" - android:minWidth="4dp"> + android:id="@+id/left_padding" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:minWidth="4dp"> + <ImageView - android:id="@+id/drag_handle" - android:layout_width="16dp" - android:layout_height="match_parent" - android:importantForAccessibility="no" - android:scaleType="fitCenter" - app:srcCompat="?attr/dragview_background" - android:paddingStart="0dp" - android:paddingLeft="0dp" - android:paddingEnd="4dp" - android:paddingRight="4dp" - tools:src="@drawable/ic_drag_darktheme" - tools:background="@android:color/holo_green_dark"/> + android:id="@+id/drag_handle" + android:layout_width="16dp" + android:layout_height="match_parent" + android:importantForAccessibility="no" + android:scaleType="fitCenter" + android:paddingStart="0dp" + android:paddingLeft="0dp" + android:paddingEnd="4dp" + android:paddingRight="4dp" + app:srcCompat="?attr/dragview_background" + tools:src="@drawable/ic_drag_darktheme" + tools:background="@android:color/holo_green_dark" /> + + <!-- Needs to have the same width as the action button. Otherwise, the screen jumps around. --> + <CheckBox + android:id="@+id/selectCheckBox" + android:layout_width="60dp" + android:layout_height="match_parent" + android:visibility="gone" /> </LinearLayout> <androidx.cardview.widget.CardView - android:layout_width="@dimen/thumbnail_length_queue_item" - android:layout_height="@dimen/thumbnail_length_queue_item" - android:layout_marginBottom="@dimen/listitem_threeline_verticalpadding" - android:layout_marginTop="@dimen/listitem_threeline_verticalpadding" - android:layout_marginRight="@dimen/listitem_threeline_textleftpadding" - android:layout_marginEnd="@dimen/listitem_threeline_textleftpadding" - android:id="@+id/coverHolder" - app:cardBackgroundColor="@color/non_square_icon_background" - app:cardCornerRadius="4dp" - app:cardPreventCornerOverlap="false" - app:cardElevation="0dp"> + android:id="@+id/coverHolder" + android:layout_width="@dimen/thumbnail_length_queue_item" + android:layout_height="@dimen/thumbnail_length_queue_item" + android:layout_marginBottom="@dimen/listitem_threeline_verticalpadding" + android:layout_marginTop="@dimen/listitem_threeline_verticalpadding" + android:layout_marginRight="@dimen/listitem_threeline_textleftpadding" + android:layout_marginEnd="@dimen/listitem_threeline_textleftpadding" + app:cardBackgroundColor="@color/non_square_icon_background" + app:cardCornerRadius="4dp" + app:cardPreventCornerOverlap="false" + app:cardElevation="0dp"> <RelativeLayout - android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_width="match_parent" + android:layout_height="match_parent"> <TextView - android:id="@+id/txtvPlaceholder" - android:layout_width="@dimen/thumbnail_length_queue_item" - android:layout_height="@dimen/thumbnail_length_queue_item" - android:layout_centerVertical="true" - android:gravity="center" - android:background="@color/light_gray" - android:maxLines="3" - android:padding="2dp" - android:ellipsize="end"/> + android:id="@+id/txtvPlaceholder" + android:layout_width="@dimen/thumbnail_length_queue_item" + android:layout_height="@dimen/thumbnail_length_queue_item" + android:layout_centerVertical="true" + android:gravity="center" + android:background="@color/light_gray" + android:maxLines="3" + android:padding="2dp" + android:ellipsize="end" /> + <ImageView - android:id="@+id/imgvCover" - android:layout_width="@dimen/thumbnail_length_queue_item" - android:layout_height="@dimen/thumbnail_length_queue_item" - android:layout_centerVertical="true" - android:importantForAccessibility="no" - tools:src="@tools:sample/avatars"/> + android:id="@+id/imgvCover" + android:layout_width="@dimen/thumbnail_length_queue_item" + android:layout_height="@dimen/thumbnail_length_queue_item" + android:layout_centerVertical="true" + android:importantForAccessibility="no" + tools:src="@tools:sample/avatars" /> </RelativeLayout> + </androidx.cardview.widget.CardView> <LinearLayout - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginBottom="@dimen/listitem_threeline_verticalpadding" - android:layout_marginRight="@dimen/listitem_threeline_textrightpadding" - android:layout_marginEnd="@dimen/listitem_threeline_textrightpadding" - android:layout_marginTop="@dimen/listitem_threeline_verticalpadding" - android:layout_weight="1" - tools:background="@android:color/holo_red_dark" - android:orientation="vertical"> + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginBottom="@dimen/listitem_threeline_verticalpadding" + android:layout_marginRight="@dimen/listitem_threeline_textrightpadding" + android:layout_marginEnd="@dimen/listitem_threeline_textrightpadding" + android:layout_marginTop="@dimen/listitem_threeline_verticalpadding" + android:layout_weight="1" + android:orientation="vertical" + tools:background="@android:color/holo_red_dark"> <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/status" - android:orientation="horizontal" - android:gravity="center_vertical"> + android:id="@+id/status" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center_vertical"> <TextView - android:text="@string/new_label" - style="@style/AntennaPod.TextView.UnreadIndicator" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/statusUnread" - android:layout_marginRight="4dp" - android:layout_marginEnd="4dp" - tools:text="@sample/episodes.json/data/status_label"/> + android:id="@+id/statusUnread" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/new_label" + android:layout_marginRight="4dp" + android:layout_marginEnd="4dp" + style="@style/AntennaPod.TextView.UnreadIndicator" + tools:text="@sample/episodes.json/data/status_label" /> <ImageView - android:layout_width="14sp" - android:layout_height="14sp" - app:srcCompat="@drawable/ic_videocam" - android:contentDescription="@string/media_type_video_label" - android:id="@+id/ivIsVideo"/> + android:id="@+id/ivIsVideo" + android:layout_width="14sp" + android:layout_height="14sp" + android:contentDescription="@string/media_type_video_label" + app:srcCompat="@drawable/ic_videocam" /> <ImageView - android:layout_width="14sp" - android:layout_height="14sp" - app:srcCompat="@drawable/ic_star" - android:contentDescription="@string/is_favorite_label" - android:id="@+id/isFavorite"/> + android:id="@+id/isFavorite" + android:layout_width="14sp" + android:layout_height="14sp" + android:contentDescription="@string/is_favorite_label" + app:srcCompat="@drawable/ic_star" /> <ImageView - android:layout_width="14sp" - android:layout_height="14sp" - app:srcCompat="@drawable/ic_playlist" - android:contentDescription="@string/in_queue_label" - android:id="@+id/ivInPlaylist"/> + android:id="@+id/ivInPlaylist" + android:layout_width="14sp" + android:layout_height="14sp" + android:contentDescription="@string/in_queue_label" + app:srcCompat="@drawable/ic_playlist" /> <TextView - android:id="@+id/separatorIcons" - style="@style/AntennaPod.TextView.ListItemSecondaryTitle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="4dp" - android:layout_marginStart="4dp" - android:layout_marginRight="4dp" - android:layout_marginEnd="4dp" - android:text="·" - android:importantForAccessibility="no" - tools:background="@android:color/holo_blue_light"/> + android:id="@+id/separatorIcons" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="4dp" + android:layout_marginStart="4dp" + android:layout_marginRight="4dp" + android:layout_marginEnd="4dp" + android:text="·" + android:importantForAccessibility="no" + style="@style/AntennaPod.TextView.ListItemSecondaryTitle" + tools:background="@android:color/holo_blue_light" /> <TextView - android:id="@+id/txtvPubDate" - style="@style/AntennaPod.TextView.ListItemSecondaryTitle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginRight="4dp" - android:layout_marginEnd="4dp" - tools:text="@sample/episodes.json/data/published_at"/> + android:id="@+id/txtvPubDate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginRight="4dp" + android:layout_marginEnd="4dp" + style="@style/AntennaPod.TextView.ListItemSecondaryTitle" + tools:text="@sample/episodes.json/data/published_at" /> <TextView - style="@style/AntennaPod.TextView.ListItemSecondaryTitle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginRight="4dp" - android:layout_marginEnd="4dp" - android:text="·" - android:importantForAccessibility="no" - tools:background="@android:color/holo_blue_light"/> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginRight="4dp" + android:layout_marginEnd="4dp" + android:text="·" + android:importantForAccessibility="no" + style="@style/AntennaPod.TextView.ListItemSecondaryTitle" + tools:background="@android:color/holo_blue_light" /> <TextView - android:id="@+id/size" - style="@style/AntennaPod.TextView.ListItemSecondaryTitle" - android:layout_marginRight="4dp" - android:layout_marginEnd="4dp" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - tools:text="10 MB"/> + android:id="@+id/size" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginRight="4dp" + android:layout_marginEnd="4dp" + style="@style/AntennaPod.TextView.ListItemSecondaryTitle" + tools:text="10 MB" /> </LinearLayout> @@ -181,55 +191,58 @@ Keep this in mind when changing the order of this layout! --> <TextView - android:id="@+id/txtvTitle" - style="@style/AntennaPod.TextView.ListItemPrimaryTitle" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:text="@sample/episodes.json/data/title" - android:importantForAccessibility="no" - android:ellipsize="end" - tools:background="@android:color/holo_blue_light"/> + android:id="@+id/txtvTitle" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:importantForAccessibility="no" + android:ellipsize="end" + style="@style/AntennaPod.TextView.ListItemPrimaryTitle" + tools:text="@sample/episodes.json/data/title" + tools:background="@android:color/holo_blue_light" /> <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/progress" - android:orientation="horizontal" - android:gravity="center_vertical"> + android:id="@+id/progress" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center_vertical"> <TextView - android:id="@+id/txtvPosition" - style="@style/AntennaPod.TextView.ListItemSecondaryTitle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="0dp" - tools:text="00:42:23" - tools:background="@android:color/holo_blue_light"/> + android:id="@+id/txtvPosition" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="0dp" + style="@style/AntennaPod.TextView.ListItemSecondaryTitle" + tools:text="00:42:23" + tools:background="@android:color/holo_blue_light" /> <ProgressBar - android:id="@+id/progressBar" - style="?attr/progressBarTheme" - android:layout_width="0dp" - android:layout_weight="1" - android:layout_height="4dp" - android:max="100" - android:layout_margin="4dp" - tools:background="@android:color/holo_blue_light"/> + android:id="@+id/progressBar" + android:layout_width="0dp" + android:layout_height="4dp" + android:layout_weight="1" + android:max="100" + android:layout_margin="4dp" + style="?attr/progressBarTheme" + tools:background="@android:color/holo_blue_light" /> <TextView - android:id="@+id/txtvDuration" - style="@style/AntennaPod.TextView.ListItemSecondaryTitle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="0dp" - tools:text="@sample/episodes.json/data/duration" - tools:background="@android:color/holo_blue_light"/> + android:id="@+id/txtvDuration" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="0dp" + style="@style/AntennaPod.TextView.ListItemSecondaryTitle" + tools:text="@sample/episodes.json/data/duration" + tools:background="@android:color/holo_blue_light" /> </LinearLayout> </LinearLayout> - <include layout="@layout/secondary_action"/> + <include + android:id="@+id/secondaryActionButton" + layout="@layout/secondary_action" /> </LinearLayout> + </FrameLayout> diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index 48195a176..10b560faf 100644 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -1,18 +1,21 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.drawerlayout.widget.DrawerLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:id="@+id/drawer_layout" - android:layout_width="match_parent" - android:layout_height="match_parent" - tools:ignore="InconsistentLayout"> - <!-- InconsistentLayout: Tablet layout does not have a drawer --> + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/drawer_layout" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:ignore="InconsistentLayout" + tools:viewBindingIgnore="true"> + <!-- InconsistentLayout: Tablet layout does not have a drawer --> + <!-- viewBindingIgnore: Configurations for main.xml must + agree on the root element's ID --> <androidx.coordinatorlayout.widget.CoordinatorLayout - android:id="@+id/overview_coordinator_layout" - android:layout_width="match_parent" - android:layout_height="match_parent"> + android:id="@+id/overview_coordinator_layout" + android:layout_width="match_parent" + android:layout_height="match_parent"> <FrameLayout android:id="@+id/main_view" @@ -23,21 +26,21 @@ tools:background="@android:color/holo_red_dark" /> <FrameLayout - android:elevation="8dp" android:id="@+id/audioplayerFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:background="?android:attr/windowBackground" + android:elevation="8dp" android:visibility="gone" app:layout_behavior="de.danoeh.antennapod.view.LockableBottomSheetBehavior" /> </androidx.coordinatorlayout.widget.CoordinatorLayout> <FrameLayout - android:id="@+id/navDrawerFragment" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_gravity="start" - android:orientation="vertical" /> + android:id="@+id/navDrawerFragment" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="start" + android:orientation="vertical" /> -</androidx.drawerlayout.widget.DrawerLayout>
\ No newline at end of file +</androidx.drawerlayout.widget.DrawerLayout> diff --git a/app/src/main/res/layout/multi_select_speed_dial.xml b/app/src/main/res/layout/multi_select_speed_dial.xml new file mode 100644 index 000000000..0451471bc --- /dev/null +++ b/app/src/main/res/layout/multi_select_speed_dial.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<merge + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + <com.leinardi.android.speeddial.SpeedDialOverlayLayout + android:id="@+id/fabSDOverlay" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:importantForAccessibility="no" /> + + <!-- The FAB SpeedDial + 1. MUST be placed at the bottom of the layout xml to ensure it is at the front, + clickable on Pre-Lollipop devices (that do not support elevation). + See: https://stackoverflow.com/a/2614402 + 2. ScrollView is needed to ensure the vertical list of speed dials are + accessible when screen height is small, eg., landscape mode on most phones. + --> + <ScrollView + android:id="@+id/fabSDScrollCtr" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="bottom|right" + android:layout_alignParentBottom="true" + android:layout_alignParentEnd="true" + android:layout_alignParentRight="true" + android:elevation="@dimen/sd_open_elevation"> + + <com.leinardi.android.speeddial.SpeedDialView + android:id="@+id/fabSD" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:accessibilityTraversalBefore="@android:id/list" + android:contentDescription="@string/apply_action" + android:visibility="gone" + app:sdMainFabClosedSrc="@drawable/ic_fab_edit" + app:sdOverlayLayout="@id/fabSDOverlay" /> + + </ScrollView> + +</merge> diff --git a/app/src/main/res/layout/opml_selection.xml b/app/src/main/res/layout/opml_selection.xml index 1f1d72d76..735c7f87e 100644 --- a/app/src/main/res/layout/opml_selection.xml +++ b/app/src/main/res/layout/opml_selection.xml @@ -1,39 +1,44 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent"> + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent"> <Button - android:id="@+id/butConfirm" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_alignParentRight="true" - android:layout_alignParentEnd="true" - style="@style/Widget.MaterialComponents.Button.TextButton" - android:layout_margin="8dp" - android:text="@string/confirm_label"/> + android:id="@+id/butConfirm" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" + android:layout_margin="8dp" + android:text="@string/confirm_label" + style="@style/Widget.MaterialComponents.Button.TextButton" /> <Button - android:id="@+id/butCancel" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_toLeftOf="@+id/butConfirm" - android:layout_toStartOf="@+id/butConfirm" - style="@style/Widget.MaterialComponents.Button.TextButton" - android:layout_margin="8dp" - android:text="@string/cancel_label"/> + android:id="@+id/butCancel" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:layout_toLeftOf="@+id/butConfirm" + android:layout_toStartOf="@+id/butConfirm" + android:layout_margin="8dp" + android:text="@string/cancel_label" + style="@style/Widget.MaterialComponents.Button.TextButton" /> <ListView - android:id="@+id/feedlist" - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_above="@id/butConfirm" - android:layout_alignParentTop="true" - tools:listitem="@android:layout/simple_list_item_multiple_choice"> - </ListView> + android:id="@+id/feedlist" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_above="@id/butConfirm" + android:layout_alignParentTop="true" + tools:listitem="@android:layout/simple_list_item_multiple_choice" /> + + <ProgressBar + android:id="@+id/progressBar" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" /> </RelativeLayout> diff --git a/app/src/main/res/layout/queue_fragment.xml b/app/src/main/res/layout/queue_fragment.xml index 3bcd4819f..292b1bb45 100644 --- a/app/src/main/res/layout/queue_fragment.xml +++ b/app/src/main/res/layout/queue_fragment.xml @@ -1,42 +1,44 @@ <?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools"> +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent"> <androidx.appcompat.widget.Toolbar + android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:theme="?attr/actionBarTheme" android:layout_alignParentTop="true" - app:title="@string/queue_label" - android:id="@+id/toolbar"/> + app:title="@string/queue_label" /> <TextView - android:layout_below="@id/toolbar" android:id="@+id/info_bar" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_below="@id/toolbar" android:textSize="12sp" android:layout_marginTop="-8dp" android:layout_marginLeft="72dp" android:layout_marginStart="72dp" android:layout_marginBottom="4dp" - tools:text="12 Episodes - Time remaining: 12 hours"/> + tools:text="12 Episodes - Time remaining: 12 hours" /> <View android:id="@+id/divider" android:layout_width="match_parent" android:layout_height="1dp" android:layout_below="@id/info_bar" - android:background="?android:attr/listDivider"/> + android:background="?android:attr/listDivider" /> <androidx.swiperefreshlayout.widget.SwipeRefreshLayout - android:id="@+id/swipeRefresh" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_below="@id/divider"> + android:id="@+id/swipeRefresh" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_below="@id/divider"> <de.danoeh.antennapod.view.EpisodeItemListRecyclerView android:id="@+id/recyclerView" @@ -54,4 +56,7 @@ android:indeterminateOnly="true" android:visibility="gone" /> + <include + layout="@layout/multi_select_speed_dial" /> + </RelativeLayout> diff --git a/app/src/main/res/layout/search_fragment.xml b/app/src/main/res/layout/search_fragment.xml index 28d4778f7..5745cf655 100644 --- a/app/src/main/res/layout/search_fragment.xml +++ b/app/src/main/res/layout/search_fragment.xml @@ -1,51 +1,54 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_height="match_parent" - android:layout_width="match_parent"> + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent"> <androidx.appcompat.widget.Toolbar - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="?attr/actionBarSize" - android:theme="?attr/actionBarTheme" - app:navigationIcon="?homeAsUpIndicator" - app:title="@string/search_label" - android:id="@+id/toolbar"/> + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="?attr/actionBarSize" + android:theme="?attr/actionBarTheme" + app:navigationIcon="?homeAsUpIndicator" + app:title="@string/search_label" /> <com.google.android.material.chip.Chip - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_below="@id/toolbar" - android:id="@+id/feed_title_chip" - android:layout_marginLeft="10dp" - android:layout_marginRight="0dp" - app:closeIconVisible="true"/> + android:id="@+id/feed_title_chip" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@id/toolbar" + android:layout_marginLeft="10dp" + android:layout_marginRight="0dp" + android:visibility="gone" + app:closeIconVisible="true" /> <ProgressBar - android:layout_centerInParent="true" - android:id="@+id/progressBar" - style="?android:attr/progressBarStyle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center"/> + android:id="@+id/progressBar" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:layout_gravity="center" + android:visibility="gone" + style="?android:attr/progressBarStyle" /> <androidx.recyclerview.widget.RecyclerView - android:layout_below="@id/feed_title_chip" - android:id="@+id/recyclerViewFeeds" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingLeft="12dp" - android:paddingRight="12dp" - android:clipToPadding="false"/> + android:id="@+id/recyclerViewFeeds" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@id/feed_title_chip" + android:paddingLeft="12dp" + android:paddingRight="12dp" + android:clipToPadding="false" /> <de.danoeh.antennapod.view.EpisodeItemListRecyclerView - android:id="@+id/recyclerView" - android:layout_below="@id/recyclerViewFeeds" - android:layout_marginTop="-4dp" - android:paddingTop="12dp" - android:paddingHorizontal="@dimen/additional_horizontal_spacing" - android:layout_width="match_parent" - android:layout_height="match_parent"/> + android:id="@+id/recyclerView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_below="@id/recyclerViewFeeds" + android:layout_marginTop="-4dp" + android:paddingTop="12dp" + android:paddingHorizontal="@dimen/additional_horizontal_spacing" /> + </RelativeLayout> diff --git a/app/src/main/res/layout/simple_list_fragment.xml b/app/src/main/res/layout/simple_list_fragment.xml index 989566499..6ea3ab54b 100644 --- a/app/src/main/res/layout/simple_list_fragment.xml +++ b/app/src/main/res/layout/simple_list_fragment.xml @@ -1,29 +1,33 @@ <?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent"> +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> <androidx.appcompat.widget.Toolbar - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="?attr/actionBarSize" - android:theme="?attr/actionBarTheme" - android:layout_alignParentTop="true" - android:id="@+id/toolbar"/> + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="?attr/actionBarSize" + android:theme="?attr/actionBarTheme" + android:layout_alignParentTop="true" /> <de.danoeh.antennapod.view.EpisodeItemListRecyclerView - android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingHorizontal="@dimen/additional_horizontal_spacing" - android:layout_below="@id/toolbar" - android:id="@+id/recyclerView"/> + android:id="@+id/recyclerView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingHorizontal="@dimen/additional_horizontal_spacing" + android:layout_below="@id/toolbar" /> <ProgressBar - android:id="@+id/progLoading" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:indeterminateOnly="true" - android:visibility="gone"/> + android:id="@+id/progLoading" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:indeterminateOnly="true" + android:visibility="gone" /> + + <include + layout="@layout/multi_select_speed_dial" /> </RelativeLayout> diff --git a/app/src/main/res/layout/subscription_item.xml b/app/src/main/res/layout/subscription_item.xml index 7fa738f12..ec918fdac 100644 --- a/app/src/main/res/layout/subscription_item.xml +++ b/app/src/main/res/layout/subscription_item.xml @@ -2,32 +2,32 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" xmlns:squareImageView="http://schemas.android.com/apk/de.danoeh.antennapod" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:foreground="?attr/selectableItemBackground"> <de.danoeh.antennapod.ui.common.SquareImageView android:id="@+id/imgvCover" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:scaleType="fitCenter" + android:layout_width="match_parent" + android:layout_height="match_parent" android:background="@color/non_square_icon_background" - tools:src="@mipmap/ic_launcher_round" - squareImageView:direction="width"/> + android:scaleType="fitCenter" + squareImageView:direction="width" + tools:src="@mipmap/ic_launcher_round" /> <com.joanzapata.iconify.widget.IconTextView android:id="@+id/txtvTitle" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/non_square_icon_background" - android:layout_alignLeft="@+id/imgvCover" - android:layout_alignRight="@+id/imgvCover" android:layout_alignStart="@+id/imgvCover" - android:layout_alignEnd="@+id/imgvCover" + android:layout_alignLeft="@+id/imgvCover" android:layout_alignTop="@+id/imgvCover" + android:layout_alignEnd="@+id/imgvCover" + android:layout_alignRight="@+id/imgvCover" android:layout_alignBottom="@+id/imgvCover" + android:background="@color/non_square_icon_background" android:ellipsize="end" android:gravity="center" android:textColor="?android:attr/textColorPrimary" @@ -37,12 +37,13 @@ android:id="@+id/triangleCountView" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_alignParentRight="true" - android:layout_alignParentEnd="true" android:layout_alignParentTop="true" + android:layout_alignParentEnd="true" + android:layout_alignParentRight="true" app:backgroundColor="?attr/colorSecondary" app:corner="rightTop" app:primaryText="Test" app:primaryTextColor="?attr/colorOnSecondary" app:primaryTextSize="12sp" /> + </RelativeLayout> diff --git a/app/src/main/res/layout/swipeactions_dialog.xml b/app/src/main/res/layout/swipeactions_dialog.xml new file mode 100644 index 000000000..a1f0b7ae6 --- /dev/null +++ b/app/src/main/res/layout/swipeactions_dialog.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:padding="16dp"> + + <androidx.appcompat.widget.SwitchCompat + android:id="@+id/enableSwitch" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:checked="true" + android:text="@string/enable_swipeactions" /> + + <include + android:id="@+id/actionLeftContainer" + layout="@layout/swipeactions_row" /> + + <include + android:id="@+id/actionRightContainer" + layout="@layout/swipeactions_row" /> + +</LinearLayout> diff --git a/app/src/main/res/layout/swipeactions_picker.xml b/app/src/main/res/layout/swipeactions_picker.xml new file mode 100644 index 000000000..e473888b2 --- /dev/null +++ b/app/src/main/res/layout/swipeactions_picker.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.gridlayout.widget.GridLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:grid="http://schemas.android.com/apk/res-auto" + android:id="@+id/pickerGridLayout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:padding="16dp" + grid:columnCount="2" + grid:alignmentMode="alignBounds" /> diff --git a/app/src/main/res/layout/swipeactions_picker_item.xml b/app/src/main/res/layout/swipeactions_picker_item.xml new file mode 100644 index 000000000..b497efb14 --- /dev/null +++ b/app/src/main/res/layout/swipeactions_picker_item.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:grid="http://schemas.android.com/apk/res-auto" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center" + android:background="?attr/selectableItemBackground" + android:padding="8dp"> + + <ImageView + android:id="@+id/swipeIcon" + android:layout_width="48dp" + android:layout_height="48dp" + android:padding="8dp" + app:srcCompat="@drawable/ic_add" /> + + <TextView + android:id="@+id/swipeActionLabel" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/add_to_queue_label" + android:textSize="14sp" + android:textAlignment="center" + android:textColor="?android:attr/textColorPrimary" /> + +</LinearLayout> diff --git a/app/src/main/res/layout/swipeactions_row.xml b/app/src/main/res/layout/swipeactions_row.xml new file mode 100644 index 000000000..df55d3f89 --- /dev/null +++ b/app/src/main/res/layout/swipeactions_row.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:layout_marginBottom="8dp"> + + <TextView + android:id="@+id/swipeDirectionLabel" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/swipe_left" + android:layout_alignParentTop="true" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:textColor="?android:attr/textColorPrimary" + android:textSize="18sp" /> + + <TextView + android:id="@+id/swipeActionLabel" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:layout_below="@+id/swipeDirectionLabel" + android:textSize="14sp" + tools:text="@string/add_to_queue_label" /> + + <Button + android:id="@+id/changeButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" + android:text="@string/change_setting" + style="@style/Widget.MaterialComponents.Button.TextButton" /> + + </RelativeLayout> + + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?attr/background_elevated" /> + + <LinearLayout + android:id="@+id/previewContainer" + android:layout_width="match_parent" + android:layout_height="76dp" + android:gravity="center" + android:foreground="?attr/selectableItemBackground" + android:orientation="horizontal"> + + <include + android:id="@+id/mockEpisode" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="0.7" + layout="@layout/feeditemlist_item" /> + + <ImageView + android:id="@+id/swipeIcon" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="0.3" + android:background="?attr/background_elevated" + android:padding="22dp" + app:srcCompat="@drawable/ic_add" /> + + </LinearLayout> + + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?attr/background_elevated" /> + +</LinearLayout> diff --git a/app/src/main/res/menu/downloads.xml b/app/src/main/res/menu/downloads.xml index 142f251fc..54469a101 100644 --- a/app/src/main/res/menu/downloads.xml +++ b/app/src/main/res/menu/downloads.xml @@ -2,13 +2,6 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item - android:id="@+id/episode_actions" - android:menuCategory="container" - android:title="@string/multi_select" - android:icon="@drawable/ic_check_multiple" - android:visible="false" - app:showAsAction="ifRoom" /> - <item android:id="@+id/clear_logs_item" android:menuCategory="container" android:title="@string/clear_history_label" diff --git a/app/src/main/res/menu/episodes.xml b/app/src/main/res/menu/episodes.xml index 22121c905..7a311aedb 100644 --- a/app/src/main/res/menu/episodes.xml +++ b/app/src/main/res/menu/episodes.xml @@ -6,8 +6,7 @@ <item android:id="@+id/action_search" android:icon="@drawable/ic_search" - custom:showAsAction="collapseActionView|always" - custom:actionViewClass="androidx.appcompat.widget.SearchView" + custom:showAsAction="always" android:title="@string/search_label"/> <item diff --git a/app/src/main/res/menu/episodes_apply_action_options.xml b/app/src/main/res/menu/episodes_apply_action_options.xml deleted file mode 100644 index 221ec4d59..000000000 --- a/app/src/main/res/menu/episodes_apply_action_options.xml +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<menu xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto"> - - <item - android:id="@+id/sort" - android:icon="@drawable/ic_sort" - android:title="@string/sort" - app:showAsAction="always"> - <menu> - <item android:id="@+id/sort_title_a_z" - android:title="@string/sort_title_a_z"/> - <item android:id="@+id/sort_title_z_a" - android:title="@string/sort_title_z_a"/> - <item android:id="@+id/sort_date_new_old" - android:title="@string/sort_date_new_old"/> - <item android:id="@+id/sort_date_old_new" - android:title="@string/sort_date_old_new"/> - <item android:id="@+id/sort_duration_short_long" - android:title="@string/sort_duration_short_long"/> - <item android:id="@+id/sort_duration_long_short" - android:title="@string/sort_duration_long_short"/> - </menu> - </item> - - <item - android:id="@+id/select_options" - android:icon="@drawable/ic_filter" - android:title="@string/filter" - app:showAsAction="always"> - - <menu> - <item android:id="@+id/check_all" - android:title="@string/all_label"/> - <item android:id="@+id/check_none" - android:title="@string/select_none_label"/> - <item android:id="@+id/check_played" - android:title="@string/played_label"/> - <item android:id="@+id/check_unplayed" - android:title="@string/unplayed_label"/> - <item android:id="@+id/check_downloaded" - android:title="@string/downloaded_label"/> - <item android:id="@+id/check_not_downloaded" - android:title="@string/not_downloaded_label"/> - <item android:id="@+id/check_queued" - android:title="@string/queued_label"/> - <item android:id="@+id/check_not_queued" - android:title="@string/not_queued_label"/> - <item android:id="@+id/check_has_media" - android:title="@string/has_media"/> - </menu> - </item> - - <item - android:id="@+id/select_toggle" - android:title="@string/select_all_label" - app:showAsAction="always"/> -</menu> diff --git a/app/src/main/res/menu/episodes_apply_action_speeddial.xml b/app/src/main/res/menu/episodes_apply_action_speeddial.xml index a2f509ec5..c9bc4b4df 100644 --- a/app/src/main/res/menu/episodes_apply_action_speeddial.xml +++ b/app/src/main/res/menu/episodes_apply_action_speeddial.xml @@ -14,21 +14,21 @@ android:title="@string/download_label" /> <item android:id="@+id/mark_unread_batch" - android:icon="@drawable/ic_cancel" + android:icon="@drawable/ic_mark_unplayed" android:title="@string/mark_unread_label" /> <item android:id="@+id/mark_read_batch" - android:icon="@drawable/ic_check" + android:icon="@drawable/ic_mark_played" android:title="@string/mark_read_label" /> <item android:id="@+id/remove_from_queue_batch" - android:icon="@drawable/ic_remove" + android:icon="@drawable/ic_playlist_remove" android:title="@string/remove_from_queue_label" /> <item android:id="@+id/add_to_queue_batch" - android:icon="@drawable/ic_add" + android:icon="@drawable/ic_playlist" android:title="@string/add_to_queue_label" /> </menu> diff --git a/app/src/main/res/menu/feeditem_options.xml b/app/src/main/res/menu/feeditem_options.xml index 5b33539e1..70400fe55 100644 --- a/app/src/main/res/menu/feeditem_options.xml +++ b/app/src/main/res/menu/feeditem_options.xml @@ -50,18 +50,6 @@ custom:showAsAction="collapseActionView" android:title="@string/reset_position"> </item> - - <item - android:id="@+id/activate_auto_download" - custom:showAsAction="collapseActionView" - android:title="@string/activate_auto_download"> - </item> - <item - android:id="@+id/deactivate_auto_download" - custom:showAsAction="collapseActionView" - android:title="@string/deactivate_auto_download"> - </item> - <item android:id="@+id/visit_website_item" android:icon="@drawable/ic_web" diff --git a/app/src/main/res/menu/feeditemlist_context.xml b/app/src/main/res/menu/feeditemlist_context.xml index 84e45d4c9..f6edec0b4 100644 --- a/app/src/main/res/menu/feeditemlist_context.xml +++ b/app/src/main/res/menu/feeditemlist_context.xml @@ -1,7 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> - <menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:id="@id/skip_episode_item" android:menuCategory="container" @@ -16,6 +14,7 @@ android:id="@+id/mark_read_item" android:menuCategory="container" android:title="@string/mark_read_label" /> + <item android:id="@+id/mark_unread_item" android:menuCategory="container" @@ -25,10 +24,12 @@ android:id="@+id/add_to_queue_item" android:menuCategory="container" android:title="@string/add_to_queue_label" /> + <item android:id="@+id/remove_from_queue_item" android:menuCategory="container" android:title="@string/remove_from_queue_label" /> + <item android:id="@+id/remove_item" android:menuCategory="container" @@ -38,6 +39,7 @@ android:id="@+id/add_to_favorites_item" android:menuCategory="container" android:title="@string/add_to_favorite_label" /> + <item android:id="@+id/remove_from_favorites_item" android:menuCategory="container" @@ -49,20 +51,13 @@ android:title="@string/reset_position" /> <item - android:id="@+id/activate_auto_download" - android:menuCategory="container" - android:title="@string/activate_auto_download" /> - <item - android:id="@+id/deactivate_auto_download" + android:id="@+id/share_item" android:menuCategory="container" - android:title="@string/deactivate_auto_download" /> + android:title="@string/share_label" /> <item - android:id="@+id/visit_website_item" + android:id="@+id/multi_select" android:menuCategory="container" - android:title="@string/visit_website_label" /> - <item - android:id="@+id/share_item" - android:menuCategory="container" - android:title="@string/share_label" /> + android:title="@string/multi_select" + android:visible="false" /> </menu>
\ No newline at end of file diff --git a/app/src/main/res/menu/feedlist.xml b/app/src/main/res/menu/feedlist.xml index 85e7a95ba..12cbc2e5e 100644 --- a/app/src/main/res/menu/feedlist.xml +++ b/app/src/main/res/menu/feedlist.xml @@ -33,18 +33,10 @@ <item android:id="@+id/action_search" android:icon="@drawable/ic_search" - custom:showAsAction="always|collapseActionView" - custom:actionViewClass="androidx.appcompat.widget.SearchView" + custom:showAsAction="always" android:title="@string/search_label"/> <item - android:id="@+id/episode_actions" - android:menuCategory="container" - android:icon="@drawable/ic_check_multiple" - android:title="@string/multi_select" - custom:showAsAction="collapseActionView"> - </item> - <item android:id="@+id/visit_website_item" android:icon="@drawable/ic_web" android:menuCategory="container" diff --git a/app/src/main/res/menu/multi_select_context_popup.xml b/app/src/main/res/menu/multi_select_context_popup.xml new file mode 100644 index 000000000..730b01016 --- /dev/null +++ b/app/src/main/res/menu/multi_select_context_popup.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/select_all_above" + android:title="@string/select_all_above"> + </item> + <item + android:id="@+id/select_all_below" + android:title="@string/select_all_below"> + </item> +</menu>
\ No newline at end of file diff --git a/app/src/main/res/menu/multi_select_options.xml b/app/src/main/res/menu/multi_select_options.xml new file mode 100644 index 000000000..5cb2b7602 --- /dev/null +++ b/app/src/main/res/menu/multi_select_options.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + <item + android:id="@+id/select_toggle" + android:title="@string/select_all_label" + app:showAsAction="always"/> +</menu> diff --git a/app/src/main/res/menu/queue.xml b/app/src/main/res/menu/queue.xml index adf44b8b1..2d341d8e4 100644 --- a/app/src/main/res/menu/queue.xml +++ b/app/src/main/res/menu/queue.xml @@ -19,8 +19,7 @@ <item android:id="@+id/action_search" android:icon="@drawable/ic_search" - custom:showAsAction="collapseActionView|ifRoom" - custom:actionViewClass="androidx.appcompat.widget.SearchView" + custom:showAsAction="ifRoom" android:title="@string/search_label"/> <item @@ -115,10 +114,4 @@ android:title="@string/clear_queue_label" custom:showAsAction="collapseActionView" android:icon="@drawable/ic_check"/> - - <item - android:id="@+id/episode_actions" - custom:showAsAction="collapseActionView" - android:title="@string/multi_select" /> - </menu> diff --git a/app/src/main/res/menu/subscriptions.xml b/app/src/main/res/menu/subscriptions.xml index b1cc89eb6..9276db562 100644 --- a/app/src/main/res/menu/subscriptions.xml +++ b/app/src/main/res/menu/subscriptions.xml @@ -1,15 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.com/apk/res-auto"> - + <item + android:id="@+id/action_search" + android:icon="@drawable/ic_search" + custom:showAsAction="always" + android:title="@string/search_label"/> <item android:id="@+id/refresh_item" android:title="@string/refresh_label" android:menuCategory="container" custom:showAsAction="always" android:icon="@drawable/ic_refresh"/> - - <item android:id="@+id/subscriptions_filter" android:title="@string/filter" diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml index cb8f9e082..03da6c669 100644 --- a/app/src/main/res/values/integers.xml +++ b/app/src/main/res/values/integers.xml @@ -3,4 +3,5 @@ <integer name="subscriptions_default_num_of_columns">3</integer> <integer name="nav_drawer_screen_size_percent">80</integer> <integer name="swipe_to_refresh_duration_in_ms">750</integer> + <integer name="swipe_refresh_distance">300</integer> </resources>
\ No newline at end of file diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 523c7cd0f..d528945c7 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -31,7 +31,7 @@ android:key="prefScreenGpodder" android:title="@string/synchronization_pref" android:summary="@string/synchronization_sum" - android:icon="@drawable/ic_star" /> + android:icon="@drawable/ic_cloud" /> <Preference android:key="prefScreenStorage" diff --git a/app/src/main/res/xml/preferences_storage.xml b/app/src/main/res/xml/preferences_storage.xml index d3d570e6c..89e8c4cf5 100644 --- a/app/src/main/res/xml/preferences_storage.xml +++ b/app/src/main/res/xml/preferences_storage.xml @@ -6,13 +6,6 @@ <Preference android:title="@string/choose_data_directory" android:key="prefChooseDataDir"/> - <ListPreference - android:entryValues="@array/image_cache_size_values" - android:entries="@array/image_cache_size_options" - android:title="@string/pref_image_cache_size_title" - android:key="prefImageCacheSize" - android:summary="@string/pref_image_cache_size_sum" - android:defaultValue="100"/> <SwitchPreferenceCompat android:defaultValue="false" android:enabled="true" diff --git a/app/src/main/res/xml/preferences_swipe.xml b/app/src/main/res/xml/preferences_swipe.xml new file mode 100644 index 000000000..eb238ac14 --- /dev/null +++ b/app/src/main/res/xml/preferences_swipe.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> + + <Preference + android:key="prefSwipeFeed" + android:title="@string/feeds_label"/> + <Preference + android:key="prefSwipeQueue" + android:title="@string/queue_label"/> + +</PreferenceScreen> diff --git a/app/src/main/res/xml/preferences_user_interface.xml b/app/src/main/res/xml/preferences_user_interface.xml index f8e80cdff..0b2707a18 100644 --- a/app/src/main/res/xml/preferences_user_interface.xml +++ b/app/src/main/res/xml/preferences_user_interface.xml @@ -78,5 +78,9 @@ android:title="@string/pref_back_button_behavior_title" android:summary="@string/pref_back_button_behavior_sum" android:defaultValue="default"/> + <Preference + android:key="prefSwipe" + android:summary="@string/swipeactions_summary" + android:title="@string/swipeactions_label"/> </PreferenceCategory> </PreferenceScreen> |