diff --git a/app/src/main/java/com/cappielloantonio/tempo/interfaces/ClickCallback.java b/app/src/main/java/com/cappielloantonio/tempo/interfaces/ClickCallback.java index 281bcac7..c87e7179 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/interfaces/ClickCallback.java +++ b/app/src/main/java/com/cappielloantonio/tempo/interfaces/ClickCallback.java @@ -20,6 +20,7 @@ public interface ClickCallback { default void onServerClick(Bundle bundle) {} default void onServerLongClick(Bundle bundle) {} default void onPodcastEpisodeClick(Bundle bundle) {} + default void onPodcastEpisodeAltClick(Bundle bundle) {} default void onPodcastEpisodeLongClick(Bundle bundle) {} default void onPodcastChannelClick(Bundle bundle) {} default void onPodcastChannelLongClick(Bundle bundle) {} diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/PodcastRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/PodcastRepository.java index 084d9229..5552772f 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/repository/PodcastRepository.java +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/PodcastRepository.java @@ -133,4 +133,21 @@ public class PodcastRepository { } }); } + + public void downloadPodcastEpisode(String episodeId) { + App.getSubsonicClientInstance(false) + .getPodcastClient() + .downloadPodcastEpisode(episodeId) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } } diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastClient.java index 62cbb65b..766c7e62 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastClient.java +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastClient.java @@ -48,4 +48,9 @@ public class PodcastClient { Log.d(TAG, "deletePodcastEpisode()"); return podcastService.deletePodcastEpisode(subsonic.getParams(), episodeId); } + + public Call downloadPodcastEpisode(String episodeId) { + Log.d(TAG, "downloadPodcastEpisode()"); + return podcastService.downloadPodcastEpisode(subsonic.getParams(), episodeId); + } } diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastService.java index feb06e7d..be819f8c 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastService.java +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/podcast/PodcastService.java @@ -27,4 +27,7 @@ public interface PodcastService { @GET("deletePodcastEpisode") Call deletePodcastEpisode(@QueryMap Map params, @Query("id") String id); + + @GET("downloadPodcastEpisode") + Call downloadPodcastEpisode(@QueryMap Map params, @Query("id") String id); } diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastEpisodeAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastEpisodeAdapter.java index 956da56a..9894dd1f 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastEpisodeAdapter.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/PodcastEpisodeAdapter.java @@ -57,6 +57,7 @@ public class PodcastEpisodeAdapter extends RecyclerView.Adapter onClick()); item.podcastMoreButton.setOnClickListener(v -> openMore()); + item.podcastDownloadRequestButton.setOnClickListener(v -> requestDownload()); } public void onClick() { @@ -120,6 +122,17 @@ public class PodcastEpisodeAdapter extends RecyclerView.Adapter + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_podcast_episode.xml b/app/src/main/res/layout/item_home_podcast_episode.xml index ef7b4ee7..d2596721 100644 --- a/app/src/main/res/layout/item_home_podcast_episode.xml +++ b/app/src/main/res/layout/item_home_podcast_episode.xml @@ -20,9 +20,9 @@ style="@style/LabelMedium" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginStart="12dp" android:ellipsize="end" android:maxLines="5" - android:layout_marginStart="12dp" android:text="@string/label_placeholder" app:layout_constraintBottom_toTopOf="@+id/podcast_subtitle_label" app:layout_constraintEnd_toEndOf="parent" @@ -36,9 +36,9 @@ style="@style/LabelSmall" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginStart="12dp" android:ellipsize="end" android:maxLines="2" - android:layout_marginStart="12dp" android:text="@string/label_placeholder" app:layout_constraintBottom_toTopOf="@id/podcast_upper_divider" app:layout_constraintEnd_toEndOf="parent" @@ -100,9 +100,21 @@ style="@style/Widget.Material3.Button.IconButton" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:visibility="gone" app:icon="@drawable/ic_more_vert" app:layout_constraintBottom_toBottomOf="@+id/podcast_play_button" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@+id/podcast_play_button" /> +