From c190e8777e1a27a2d84f9ac48adc0e940defee7c Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Fri, 16 Apr 2021 10:08:31 +0200 Subject: [PATCH] Removed cardview overlay where possible --- .../play/adapter/PlayerSongQueueAdapter.java | 4 + .../play/database/dao/QueueDao.java | 3 + .../play/repository/QueueRepository.java | 21 ++++ .../fragment/PlayerBottomSheetFragment.java | 32 ++++++ .../AlbumBottomSheetDialog.java | 1 + .../ArtistBottomSheetDialog.java | 1 + .../SongBottomSheetDialog.java | 1 + .../viewmodel/PlayerBottomSheetViewModel.java | 4 + .../res/layout/bottom_sheet_album_dialog.xml | 41 +++---- .../res/layout/bottom_sheet_artist_dialog.xml | 34 +++--- .../res/layout/bottom_sheet_song_dialog.xml | 41 +++---- .../res/layout/item_artist_page_album.xml | 38 +++---- app/src/main/res/layout/item_home_track.xml | 49 ++++----- .../main/res/layout/item_library_album.xml | 51 ++++----- .../main/res/layout/item_library_artist.xml | 42 +++---- .../layout/item_library_catalogue_album.xml | 35 ++---- .../layout/item_library_catalogue_artist.xml | 32 ++---- .../layout/item_player_now_playing_song.xml | 16 +-- .../res/layout/item_player_queue_song.xml | 103 ++++++++---------- .../res/layout/item_search_result_song.xml | 100 ++++++++--------- .../res/layout/player_header_bottom_sheet.xml | 26 ++--- 21 files changed, 312 insertions(+), 363 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/PlayerSongQueueAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/PlayerSongQueueAdapter.java index 810c3d69..0efbf547 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/PlayerSongQueueAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/PlayerSongQueueAdapter.java @@ -91,6 +91,10 @@ public class PlayerSongQueueAdapter extends RecyclerView.Adapter getItems() { + return this.songs; + } + public Song getItem(int id) { return songs.get(id); } diff --git a/app/src/main/java/com/cappielloantonio/play/database/dao/QueueDao.java b/app/src/main/java/com/cappielloantonio/play/database/dao/QueueDao.java index 1b59b954..03583360 100644 --- a/app/src/main/java/com/cappielloantonio/play/database/dao/QueueDao.java +++ b/app/src/main/java/com/cappielloantonio/play/database/dao/QueueDao.java @@ -41,6 +41,9 @@ public interface QueueDao { @Delete void delete(Queue songQueueObject); + @Query("DELETE FROM queue WHERE queue.rowid = :position") + void deleteByPosition(int position); + @Query("DELETE FROM queue") void deleteAll(); diff --git a/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java index cb45b9db..76b12a82 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java @@ -108,6 +108,12 @@ public class QueueRepository { thread.start(); } + public void deleteByPosition(int position) { + DeleteByPositionThreadSafe delete = new DeleteByPositionThreadSafe(queueDao, position); + Thread thread = new Thread(delete); + thread.start(); + } + public void deleteAll() { DeleteAllThreadSafe delete = new DeleteAllThreadSafe(queueDao); Thread thread = new Thread(delete); @@ -189,6 +195,21 @@ public class QueueRepository { } } + private static class DeleteByPositionThreadSafe implements Runnable { + private QueueDao queueDao; + private int position; + + public DeleteByPositionThreadSafe(QueueDao queueDao,int position) { + this.queueDao = queueDao; + this.position = position; + } + + @Override + public void run() { + queueDao.deleteByPosition(position); + } + } + private static class CountThreadSafe implements Runnable { private QueueDao queueDao; private int count = 0; diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java index 3e771ea6..121b892c 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java @@ -14,7 +14,9 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager2.widget.ViewPager2; import com.cappielloantonio.play.R; @@ -31,6 +33,8 @@ import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.PreferenceUtil; import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel; +import java.util.Collections; + public class PlayerBottomSheetFragment extends Fragment implements MusicServiceEventListener, MusicProgressViewUpdateHelper.Callback { private static final String TAG = "PlayerBottomSheetFragment"; @@ -139,6 +143,34 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE playerSongQueueAdapter = new PlayerSongQueueAdapter(requireContext(), this); bind.playerBodyLayout.playerQueueRecyclerView.setAdapter(playerSongQueueAdapter); playerBottomSheetViewModel.getQueueSong().observe(requireActivity(), songs -> playerSongQueueAdapter.setItems(songs)); + + new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT) { + @Override + public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { + int fromPosition = viewHolder.getBindingAdapterPosition(); + int toPosition = target.getBindingAdapterPosition(); + + Collections.swap(playerSongQueueAdapter.getItems(), fromPosition, toPosition); + + bind.playerBodyLayout.playerQueueRecyclerView.getAdapter().notifyItemMoved(fromPosition, toPosition); + // bind.playerBodyLayout.playerSongCoverViewPager.getAdapter().notifyItemMoved(fromPosition, toPosition); + + // bind.playerBodyLayout.playerQueueRecyclerView.getAdapter().notifyDataSetChanged(); + // bind.playerBodyLayout.playerSongCoverViewPager.getAdapter().notifyDataSetChanged(); + + // MusicPlayerRemote.moveSong(fromPosition, toPosition); + return false; + } + + @Override + public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { + Log.i(TAG, "onSwiped: " + viewHolder.getBindingAdapterPosition()); + Log.i(TAG, "onSwiped: " + MusicPlayerRemote.getPlayingQueue().get(viewHolder.getBindingAdapterPosition()).getTitle()); + + playerBottomSheetViewModel.removeSong(viewHolder.getBindingAdapterPosition()); + } + } + ).attachToRecyclerView(bind.playerBodyLayout.playerQueueRecyclerView); } private void initFavoriteButtonClick() { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java index 217c2e6c..cf690345 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java @@ -61,6 +61,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements titleAlbum = view.findViewById(R.id.album_title_text_view); titleAlbum.setText(albumBottomSheetViewModel.getAlbum().getTitle()); + titleAlbum.setSelected(true); artistAlbum = view.findViewById(R.id.album_artist_text_view); artistAlbum.setText(albumBottomSheetViewModel.getAlbum().getArtistName()); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java index e988b4df..a70ebb46 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java @@ -53,6 +53,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement nameArtist = view.findViewById(R.id.song_title_text_view); nameArtist.setText(artistBottomSheetViewModel.getArtist().getName()); + nameArtist.setSelected(true); playRadio = view.findViewById(R.id.play_radio_text_view); playRadio.setOnClickListener(v -> { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java index 74b72e3e..3ad0dbbe 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java @@ -64,6 +64,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements titleSong = view.findViewById(R.id.song_title_text_view); titleSong.setText(songBottomSheetViewModel.getSong().getTitle()); + titleSong.setSelected(true); artistSong = view.findViewById(R.id.song_artist_text_view); artistSong.setText(songBottomSheetViewModel.getSong().getArtistName()); diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/PlayerBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/PlayerBottomSheetViewModel.java index c902d21f..cedc4e65 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/PlayerBottomSheetViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/PlayerBottomSheetViewModel.java @@ -49,4 +49,8 @@ public class PlayerBottomSheetViewModel extends AndroidViewModel { public void setSong(Song song) { this.song = song; } + + public void removeSong(int position) { + queueRepository.deleteByPosition(position); + } } diff --git a/app/src/main/res/layout/bottom_sheet_album_dialog.xml b/app/src/main/res/layout/bottom_sheet_album_dialog.xml index fd8be142..dde68ac8 100644 --- a/app/src/main/res/layout/bottom_sheet_album_dialog.xml +++ b/app/src/main/res/layout/bottom_sheet_album_dialog.xml @@ -2,7 +2,6 @@ - - - - + app:layout_constraintTop_toTopOf="parent"/> diff --git a/app/src/main/res/layout/bottom_sheet_artist_dialog.xml b/app/src/main/res/layout/bottom_sheet_artist_dialog.xml index 2438cc8e..99c6c24e 100644 --- a/app/src/main/res/layout/bottom_sheet_artist_dialog.xml +++ b/app/src/main/res/layout/bottom_sheet_artist_dialog.xml @@ -16,35 +16,27 @@ android:paddingEnd="20dp"> - - - - + app:layout_constraintTop_toTopOf="parent"/> diff --git a/app/src/main/res/layout/bottom_sheet_song_dialog.xml b/app/src/main/res/layout/bottom_sheet_song_dialog.xml index a563dd5a..da3ca667 100644 --- a/app/src/main/res/layout/bottom_sheet_song_dialog.xml +++ b/app/src/main/res/layout/bottom_sheet_song_dialog.xml @@ -2,7 +2,6 @@ - - - - + app:layout_constraintTop_toTopOf="parent"/> diff --git a/app/src/main/res/layout/item_artist_page_album.xml b/app/src/main/res/layout/item_artist_page_album.xml index 62be3621..4621d7a0 100644 --- a/app/src/main/res/layout/item_artist_page_album.xml +++ b/app/src/main/res/layout/item_artist_page_album.xml @@ -1,40 +1,34 @@ - - - - - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"/> - \ No newline at end of file + android:textStyle="bold" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/artist_page_album_cover_image_view"/> + \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_track.xml b/app/src/main/res/layout/item_home_track.xml index 80a66725..c78b6667 100644 --- a/app/src/main/res/layout/item_home_track.xml +++ b/app/src/main/res/layout/item_home_track.xml @@ -1,51 +1,46 @@ - - - - - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"/> + android:textStyle="bold" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/track_cover_image_view"/> - \ No newline at end of file + android:textSize="12sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/title_track_label"/> + \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_album.xml b/app/src/main/res/layout/item_library_album.xml index f37860f6..38f534de 100644 --- a/app/src/main/res/layout/item_library_album.xml +++ b/app/src/main/res/layout/item_library_album.xml @@ -1,53 +1,46 @@ - - - - - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"/> + android:textStyle="bold" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_cover_image_view"/> - \ No newline at end of file + android:textSize="12sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/album_name_label"/> + \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_artist.xml b/app/src/main/res/layout/item_library_artist.xml index 1cbd7eb5..693c3eed 100644 --- a/app/src/main/res/layout/item_library_artist.xml +++ b/app/src/main/res/layout/item_library_artist.xml @@ -1,42 +1,34 @@ - - - - - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"/> - - \ No newline at end of file + android:textStyle="bold" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/artist_cover_image_view"/> + \ No newline at end of file diff --git a/app/src/main/res/layout/item_library_catalogue_album.xml b/app/src/main/res/layout/item_library_catalogue_album.xml index e15a4870..c8b50774 100644 --- a/app/src/main/res/layout/item_library_catalogue_album.xml +++ b/app/src/main/res/layout/item_library_catalogue_album.xml @@ -2,59 +2,44 @@ + android:layout_height="wrap_content"> - - - - + app:layout_constraintTop_toTopOf="parent"/> + app:layout_constraintTop_toBottomOf="@+id/album_catalogue_cover_image_view" /> diff --git a/app/src/main/res/layout/item_library_catalogue_artist.xml b/app/src/main/res/layout/item_library_catalogue_artist.xml index 13a8a990..40cda393 100644 --- a/app/src/main/res/layout/item_library_catalogue_artist.xml +++ b/app/src/main/res/layout/item_library_catalogue_artist.xml @@ -1,46 +1,34 @@ - + android:layout_height="wrap_content"> - - - - + app:layout_constraintTop_toTopOf="parent"/> + app:layout_constraintTop_toBottomOf="@+id/artist_catalogue_cover_image_view" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_player_now_playing_song.xml b/app/src/main/res/layout/item_player_now_playing_song.xml index cac25736..1fc8a241 100644 --- a/app/src/main/res/layout/item_player_now_playing_song.xml +++ b/app/src/main/res/layout/item_player_now_playing_song.xml @@ -1,16 +1,8 @@ - - - - - \ No newline at end of file + android:foreground="?android:attr/selectableItemBackground"/> \ No newline at end of file diff --git a/app/src/main/res/layout/item_player_queue_song.xml b/app/src/main/res/layout/item_player_queue_song.xml index 9d3c2c0a..6bab220c 100644 --- a/app/src/main/res/layout/item_player_queue_song.xml +++ b/app/src/main/res/layout/item_player_queue_song.xml @@ -1,6 +1,6 @@ - + android:background="@color/cardColor" + android:foreground="?attr/selectableItemBackground"> - + app:layout_constraintTop_toTopOf="parent"/> - - - - + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit ="marquee_forever" + android:focusable="true" + android:focusableInTouchMode="true" + android:scrollHorizontally="true" + android:fontFamily="@font/open_sans_font_family" + android:paddingStart="12dp" + android:paddingTop="10dp" + android:paddingEnd="12dp" + android:text="@string/label_placeholder" + android:textColor="@color/titleTextColor" + android:textSize="14sp" + android:textStyle="bold" + app:layout_constraintStart_toEndOf="@+id/queue_song_cover_image_view" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toStartOf="@+id/queue_song_dragger_image"/> - - - - + - \ No newline at end of file + android:src="@drawable/ic_drag_handle" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent"/> + \ No newline at end of file diff --git a/app/src/main/res/layout/item_search_result_song.xml b/app/src/main/res/layout/item_search_result_song.xml index d00ee828..91160100 100644 --- a/app/src/main/res/layout/item_search_result_song.xml +++ b/app/src/main/res/layout/item_search_result_song.xml @@ -1,6 +1,6 @@ - - + app:layout_constraintTop_toTopOf="parent"/> - - - - + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit ="marquee_forever" + android:focusable="true" + android:focusableInTouchMode="true" + android:scrollHorizontally="true" + android:fontFamily="@font/open_sans_font_family" + android:paddingStart="12dp" + android:paddingTop="10dp" + android:paddingEnd="12dp" + android:text="@string/label_placeholder" + android:textColor="@color/titleTextColor" + android:textSize="14sp" + android:textStyle="bold" + app:layout_constraintStart_toEndOf="@+id/song_cover_image_view" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toStartOf="@+id/search_result_song_duration_text_view"/> - - - - + - \ No newline at end of file + android:textSize="12sp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent"/> + \ No newline at end of file diff --git a/app/src/main/res/layout/player_header_bottom_sheet.xml b/app/src/main/res/layout/player_header_bottom_sheet.xml index 2291b4e2..d5cbc58a 100644 --- a/app/src/main/res/layout/player_header_bottom_sheet.xml +++ b/app/src/main/res/layout/player_header_bottom_sheet.xml @@ -8,27 +8,15 @@ android:background="@color/almostCardColor" android:clipChildren="false"> - - - - + app:layout_constraintTop_toTopOf="parent"/>