diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerBottomSheetFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerBottomSheetFragment.java index 435a4d06..36b4d3bf 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerBottomSheetFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerBottomSheetFragment.java @@ -240,6 +240,10 @@ public class PlayerBottomSheetFragment extends Fragment { } } + public void goToQueuePage() { + bind.playerBodyLayout.playerBodyBottomSheetViewPager.setCurrentItem(1, true); + } + private void defineProgressBarHandler(MediaBrowser mediaBrowser) { progressBarHandler = new Handler(); progressBarRunnable = () -> { diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerControllerFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerControllerFragment.java index 917573f6..53bece5b 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerControllerFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerControllerFragment.java @@ -6,12 +6,14 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import android.widget.ToggleButton; import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; import androidx.media3.common.MediaMetadata; @@ -35,6 +37,7 @@ import com.cappielloantonio.tempo.util.MusicUtil; import com.cappielloantonio.tempo.util.Preferences; import com.cappielloantonio.tempo.viewmodel.PlayerBottomSheetViewModel; import com.google.android.material.chip.Chip; +import com.google.android.material.elevation.SurfaceColors; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; @@ -55,6 +58,8 @@ public class PlayerControllerFragment extends Fragment { private ImageView playerMediaTranscodingPriorityIcon; private Chip playerMediaTranscodedExtension; private TextView playerMediaTranscodedBitrate; + private ConstraintLayout playerQuickActionView; + private ImageButton playerOpenQueueButton; private MainActivity activity; private PlayerBottomSheetViewModel playerBottomSheetViewModel; @@ -70,6 +75,7 @@ public class PlayerControllerFragment extends Fragment { playerBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PlayerBottomSheetViewModel.class); init(); + initQuickActionView(); initCoverLyricsSlideView(); initMediaListenable(); initArtistLabelButton(); @@ -110,6 +116,19 @@ public class PlayerControllerFragment extends Fragment { playerMediaTranscodingPriorityIcon = bind.getRoot().findViewById(R.id.player_media_server_transcode_priority); playerMediaTranscodedExtension = bind.getRoot().findViewById(R.id.player_media_transcoded_extension); playerMediaTranscodedBitrate = bind.getRoot().findViewById(R.id.player_media_transcoded_bitrate); + playerQuickActionView = bind.getRoot().findViewById(R.id.player_quick_action_view); + playerOpenQueueButton = bind.getRoot().findViewById(R.id.player_open_queue_button); + } + + private void initQuickActionView() { + playerQuickActionView.setBackgroundColor(SurfaceColors.getColorForElevation(requireContext(), 8)); + + playerOpenQueueButton.setOnClickListener(view -> { + PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) requireActivity().getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet"); + if (playerBottomSheetFragment != null) { + playerBottomSheetFragment.goToQueuePage(); + } + }); } private void initializeBrowser() { @@ -160,9 +179,7 @@ public class PlayerControllerFragment extends Fragment { private void setMediaInfo(MediaMetadata mediaMetadata) { if (mediaMetadata.extras != null) { String extension = mediaMetadata.extras.getString("suffix", "Unknown format"); - String bitrate = mediaMetadata.extras.getInt("bitrate", 0) != 0 - ? mediaMetadata.extras.getInt("bitrate", 0) + "kbps" - : "Original"; + String bitrate = mediaMetadata.extras.getInt("bitrate", 0) != 0 ? mediaMetadata.extras.getInt("bitrate", 0) + "kbps" : "Original"; playerMediaExtension.setText(extension); @@ -175,9 +192,7 @@ public class PlayerControllerFragment extends Fragment { } String transcodingExtension = MusicUtil.getTranscodingFormatPreference(); - String transcodingBitrate = Integer.parseInt(MusicUtil.getBitratePreference()) != 0 - ? Integer.parseInt(MusicUtil.getBitratePreference()) + "kbps" - : "Original"; + String transcodingBitrate = Integer.parseInt(MusicUtil.getBitratePreference()) != 0 ? Integer.parseInt(MusicUtil.getBitratePreference()) + "kbps" : "Original"; if (transcodingExtension.equals("raw") && transcodingBitrate.equals("Original")) { playerMediaTranscodingPriorityIcon.setVisibility(View.GONE); diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerCoverFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerCoverFragment.java index 561449d4..63c2b46f 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerCoverFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerCoverFragment.java @@ -97,6 +97,7 @@ public class PlayerCoverFragment extends Fragment { TransitionManager.beginDelayedTransition(bind.getRoot(), transition); bind.nowPlayingSongCoverButtonGroup.setVisibility(isVisible ? View.VISIBLE : View.GONE); + bind.nowPlayingTapButton.setVisibility(isVisible ? View.GONE : View.VISIBLE); bind.innerButtonBottomRight.setVisibility(Preferences.isSyncronizationEnabled() ? View.VISIBLE : View.GONE); bind.innerButtonBottomRightAlternative.setVisibility(Preferences.isSyncronizationEnabled() ? View.GONE : View.VISIBLE); diff --git a/app/src/main/res/drawable/ic_queue.xml b/app/src/main/res/drawable/ic_queue.xml new file mode 100644 index 00000000..6a04876d --- /dev/null +++ b/app/src/main/res/drawable/ic_queue.xml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/inner_fragment_player_controller_layout.xml b/app/src/main/res/layout/inner_fragment_player_controller_layout.xml index 750c61e8..1ada38b3 100644 --- a/app/src/main/res/layout/inner_fragment_player_controller_layout.xml +++ b/app/src/main/res/layout/inner_fragment_player_controller_layout.xml @@ -83,7 +83,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" - app:layout_constraintGuide_percent="0.60" /> + app:layout_constraintGuide_percent="0.575" /> + app:layout_constraintVertical_bias=".45" /> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index c7939075..4ea5611c 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -3,6 +3,7 @@ 24dp 136dp 56dp + 64dp 164dp 2dp 2dp