diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c8f91147..a73fb094 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -120,6 +120,7 @@ + diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt new file mode 100644 index 00000000..e6ed156d --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt @@ -0,0 +1,240 @@ +/* + * Copyright (c) 2020 Hemanth Savarala. + * + * Licensed under the GNU General Public License v3 + * + * This is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by + * the Free Software Foundation either version 3 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + */ + +package code.name.monkey.retromusic.activities + +import android.animation.ObjectAnimator +import android.graphics.Color +import android.graphics.PorterDuff +import android.os.Bundle +import android.view.animation.LinearInterpolator +import android.widget.SeekBar +import code.name.monkey.appthemehelper.ThemeStore +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity +import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment +import code.name.monkey.retromusic.glide.BlurTransformation +import code.name.monkey.retromusic.glide.RetroMusicColoredTarget +import code.name.monkey.retromusic.glide.SongGlideRequest +import code.name.monkey.retromusic.helper.MusicPlayerRemote +import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper +import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback +import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener +import code.name.monkey.retromusic.service.MusicService +import code.name.monkey.retromusic.util.MusicUtil +import com.bumptech.glide.Glide +import kotlinx.android.synthetic.main.activity_drive_mode.close +import kotlinx.android.synthetic.main.activity_drive_mode.image +import kotlinx.android.synthetic.main.activity_drive_mode.nextButton +import kotlinx.android.synthetic.main.activity_drive_mode.playPauseButton +import kotlinx.android.synthetic.main.activity_drive_mode.previousButton +import kotlinx.android.synthetic.main.activity_drive_mode.progressSlider +import kotlinx.android.synthetic.main.activity_drive_mode.repeatButton +import kotlinx.android.synthetic.main.activity_drive_mode.shuffleButton +import kotlinx.android.synthetic.main.activity_drive_mode.songCurrentProgress +import kotlinx.android.synthetic.main.activity_drive_mode.songFavourite +import kotlinx.android.synthetic.main.activity_drive_mode.songText +import kotlinx.android.synthetic.main.activity_drive_mode.songTitle +import kotlinx.android.synthetic.main.activity_drive_mode.songTotalTime +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +/** + * Created by hemanths on 2020-02-02. + */ + +class DriveModeActivity : AbsMusicServiceActivity(), Callback { + + private var lastPlaybackControlsColor: Int = Color.GRAY + private var lastDisabledPlaybackControlsColor: Int = Color.GRAY + private lateinit var progressViewUpdateHelper: MusicProgressViewUpdateHelper + + override fun onCreate(savedInstanceState: Bundle?) { + setDrawUnderStatusBar() + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_drive_mode) + setUpMusicControllers() + + progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) + lastPlaybackControlsColor = ThemeStore.accentColor(this) + close.setOnClickListener { + onBackPressed() + } + } + + private fun setUpMusicControllers() { + setUpPlayPauseFab() + setUpPrevNext() + setUpRepeatButton() + setUpShuffleButton() + setUpProgressSlider() + setupFavouriteToggle() + } + + private fun setupFavouriteToggle() { + songFavourite.setOnClickListener { + MusicUtil.toggleFavorite( + this@DriveModeActivity, + MusicPlayerRemote.currentSong + ) + } + } + + private fun toggleFavourite() { + CoroutineScope(Dispatchers.IO).launch { + val isFavourite = MusicUtil.isFavorite(this@DriveModeActivity, MusicPlayerRemote.currentSong) + withContext(Dispatchers.Main) { + songFavourite.setImageResource(if (isFavourite) R.drawable.ic_favorite_white_24dp else R.drawable.ic_favorite_border_white_24dp) + } + } + } + + private fun setUpProgressSlider() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) + } + + override fun onPause() { + super.onPause() + progressViewUpdateHelper.stop() + } + + override fun onResume() { + super.onResume() + progressViewUpdateHelper.start() + } + + private fun setUpPrevNext() { + + nextButton.setOnClickListener { MusicPlayerRemote.playNextSong() } + previousButton.setOnClickListener { MusicPlayerRemote.back() } + } + + private fun setUpShuffleButton() { + shuffleButton.setOnClickListener { MusicPlayerRemote.toggleShuffleMode() } + } + + private fun setUpRepeatButton() { + repeatButton.setOnClickListener { MusicPlayerRemote.cycleRepeatMode() } + } + + private fun setUpPlayPauseFab() { + playPauseButton.setOnClickListener(PlayPauseButtonOnClickHandler()) + } + + override fun onRepeatModeChanged() { + super.onRepeatModeChanged() + updateRepeatState() + } + + override fun onShuffleModeChanged() { + super.onShuffleModeChanged() + updateShuffleState() + } + + override fun onPlayStateChanged() { + super.onPlayStateChanged() + updatePlayPauseDrawableState() + } + override fun onServiceConnected() { + super.onServiceConnected() + updatePlayPauseDrawableState() + updateSong() + updateRepeatState() + updateShuffleState() + toggleFavourite() + } + + private fun updatePlayPauseDrawableState() { + if (MusicPlayerRemote.isPlaying) { + playPauseButton.setImageResource(R.drawable.ic_pause_white_24dp) + } else { + playPauseButton.setImageResource(R.drawable.ic_play_arrow_white_24dp) + } + } + + fun updateShuffleState() { + when (MusicPlayerRemote.shuffleMode) { + MusicService.SHUFFLE_MODE_SHUFFLE -> shuffleButton.setColorFilter( + lastPlaybackControlsColor, + PorterDuff.Mode.SRC_IN + ) + else -> shuffleButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + } + } + + private fun updateRepeatState() { + when (MusicPlayerRemote.repeatMode) { + MusicService.REPEAT_MODE_NONE -> { + repeatButton.setImageResource(R.drawable.ic_repeat_white_24dp) + repeatButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + } + MusicService.REPEAT_MODE_ALL -> { + repeatButton.setImageResource(R.drawable.ic_repeat_white_24dp) + repeatButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + } + MusicService.REPEAT_MODE_THIS -> { + repeatButton.setImageResource(R.drawable.ic_repeat_one_white_24dp) + repeatButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + } + } + } + + override fun onPlayingMetaChanged() { + super.onPlayingMetaChanged() + updateSong() + toggleFavourite() + } + + private fun updateSong() { + val song = MusicPlayerRemote.currentSong + + songTitle.text = song.title + songText.text = song.artistName + + SongGlideRequest.Builder.from(Glide.with(this), song) + .checkIgnoreMediaStore(this) + .generatePalette(this) + .build() + .transform(BlurTransformation.Builder(this).build()) + .into(object : RetroMusicColoredTarget(image) { + override fun onColorReady(color: Int) { + } + }) + } + + override fun onUpdateProgressViews(progress: Int, total: Int) { + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) + songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) + } +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/GenreDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/GenreDetailsActivity.kt index 13e9a8f1..23d0b851 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/GenreDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/GenreDetailsActivity.kt @@ -21,7 +21,6 @@ import code.name.monkey.retromusic.mvp.presenter.GenreDetailsPresenter import code.name.monkey.retromusic.mvp.presenter.GenreDetailsView import code.name.monkey.retromusic.util.DensityUtil import code.name.monkey.retromusic.util.RetroColorUtil -import code.name.monkey.retromusic.util.ViewUtil import com.afollestad.materialcab.MaterialCab import kotlinx.android.synthetic.main.activity_playlist_detail.empty import kotlinx.android.synthetic.main.activity_playlist_detail.emptyEmoji @@ -115,7 +114,7 @@ class GenreDetailsActivity : AbsSlidingMusicPanelActivity(), CabHolder, GenreDet } private fun setupRecyclerView() { - ViewUtil.setUpFastScrollRecyclerViewColor(this, recyclerView) + //ViewUtil.setUpFastScrollRecyclerViewColor(this, recyclerView) songAdapter = ShuffleButtonSongAdapter(this, ArrayList(), R.layout.item_list, this) recyclerView.apply { itemAnimator = DefaultItemAnimator() diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt index 7377fd93..712e20e3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt @@ -14,7 +14,6 @@ import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter import code.name.monkey.retromusic.extensions.applyToolbar import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.util.MusicUtil -import code.name.monkey.retromusic.util.ViewUtil import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager @@ -107,7 +106,7 @@ open class PlayingQueueActivity : AbsMusicServiceActivity() { } } }) - ViewUtil.setUpFastScrollRecyclerViewColor(this, recyclerView) + //ViewUtil.setUpFastScrollRecyclerViewColor(this, recyclerView) } private fun checkForPadding() { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/PlaylistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/PlaylistDetailActivity.kt index a8fee264..f09afd9a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/PlaylistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/PlaylistDetailActivity.kt @@ -24,7 +24,6 @@ import code.name.monkey.retromusic.mvp.presenter.PlaylistSongsView import code.name.monkey.retromusic.util.DensityUtil import code.name.monkey.retromusic.util.PlaylistsUtil import code.name.monkey.retromusic.util.RetroColorUtil -import code.name.monkey.retromusic.util.ViewUtil import com.afollestad.materialcab.MaterialCab import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager @@ -114,8 +113,6 @@ class PlaylistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder, Playli checkIsEmpty() } }) - - ViewUtil.setUpFastScrollRecyclerViewColor(this, recyclerView) } override fun onResume() { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/ShareInstagramStory.kt b/app/src/main/java/code/name/monkey/retromusic/activities/ShareInstagramStory.kt index a926ccb7..6e8f7624 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/ShareInstagramStory.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/ShareInstagramStory.kt @@ -107,9 +107,9 @@ class ShareInstagramStory : AbsBaseActivity() { } private fun setColors(colorLight: Boolean, color: Int) { - setLightStatusbar(ColorUtil.isColorLight(color)) + setLightStatusbar(colorLight) toolbar.setTitleTextColor(MaterialValueHelper.getPrimaryTextColor(this@ShareInstagramStory, colorLight)) - toolbar.navigationIcon?.setTintList(ColorStateList.valueOf(Color.WHITE)) + toolbar.navigationIcon?.setTintList(ColorStateList.valueOf(MaterialValueHelper.getPrimaryTextColor(this@ShareInstagramStory, colorLight))) mainContent.background = GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, intArrayOf(color, Color.BLACK)) } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt index a0970bcf..1a722bd3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt @@ -22,6 +22,7 @@ import com.h6ah4i.android.widget.advrecyclerview.swipeable.action.SwipeResultAct import com.h6ah4i.android.widget.advrecyclerview.swipeable.action.SwipeResultActionDefault import com.h6ah4i.android.widget.advrecyclerview.swipeable.action.SwipeResultActionRemoveItem import com.h6ah4i.android.widget.advrecyclerview.swipeable.annotation.SwipeableItemResults +import me.zhanghai.android.fastscroll.PopupTextProvider import java.util.ArrayList class PlayingQueueAdapter( @@ -31,7 +32,8 @@ class PlayingQueueAdapter( itemLayoutRes: Int ) : SongAdapter( activity, dataSet, itemLayoutRes, null -), DraggableItemAdapter, SwipeableItemAdapter { +), DraggableItemAdapter, SwipeableItemAdapter, + PopupTextProvider { private var color = -1 private var songToRemove: Song? = null @@ -100,6 +102,10 @@ class PlayingQueueAdapter( holder.menu?.alpha = alpha } + override fun getPopupText(position: Int): String { + return MusicUtil.getSectionName(dataSet[position].title) + } + override fun onCheckCanStartDrag(holder: ViewHolder, position: Int, x: Int, y: Int): Boolean { return ViewUtil.hitTest(holder.imageText!!, x, y) || ViewUtil.hitTest(holder.dragView!!, x, y) } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt index 35d55ab0..adda7308 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt @@ -144,7 +144,7 @@ open class SongAdapter( return "" } } - println("File name -> $sectionName") + return MusicUtil.getSectionName(sectionName) } diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/OptionsSheetDialogFragment.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/OptionsSheetDialogFragment.kt index d0314ef3..18d3a2a9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/OptionsSheetDialogFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/OptionsSheetDialogFragment.kt @@ -38,6 +38,7 @@ class OptionsSheetDialogFragment : DialogFragment(), View.OnClickListener { R.id.actionFolders -> mainActivity.setMusicChooser(MainActivity.FOLDER) R.id.actionLibrary -> mainActivity.setMusicChooser(MainActivity.LIBRARY) R.id.actionSettings -> NavigationUtil.goToSettings(mainActivity) + R.id.actionDriveMode -> NavigationUtil.gotoDriveMode(mainActivity) R.id.actionRate -> NavigationUtil.goToPlayStore(mainActivity) } materialDialog.dismiss() @@ -47,6 +48,7 @@ class OptionsSheetDialogFragment : DialogFragment(), View.OnClickListener { private lateinit var actionLibrary: OptionMenuItemView private lateinit var actionFolders: OptionMenuItemView private lateinit var actionRate: OptionMenuItemView + private lateinit var actionDriveMode: OptionMenuItemView private lateinit var materialDialog: MaterialDialog override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { @@ -56,6 +58,7 @@ class OptionsSheetDialogFragment : DialogFragment(), View.OnClickListener { actionRate = layout.findViewById(R.id.actionRate) actionLibrary = layout.findViewById(R.id.actionLibrary) actionFolders = layout.findViewById(R.id.actionFolders) + actionDriveMode = layout.findViewById(R.id.actionDriveMode) when (arguments?.getInt(WHICH_ONE)) { @@ -67,7 +70,7 @@ class OptionsSheetDialogFragment : DialogFragment(), View.OnClickListener { actionRate.setOnClickListener(this) actionLibrary.setOnClickListener(this) actionFolders.setOnClickListener(this) - + actionDriveMode.setOnClickListener(this) materialDialog = MaterialDialog(requireActivity(), BottomSheet(LayoutMode.WRAP_CONTENT)) .show { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.kt index 99ad3294..60ba8e84 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.kt @@ -32,8 +32,8 @@ abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/PlayingQueueFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/PlayingQueueFragment.kt index 01ee0fa1..5ddbd634 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/PlayingQueueFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/PlayingQueueFragment.kt @@ -22,7 +22,6 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote -import code.name.monkey.retromusic.util.ViewUtil import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager @@ -62,7 +61,6 @@ class PlayingQueueFragment : AbsLibraryPagerRecyclerViewFragment shuffleButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + MusicService.SHUFFLE_MODE_SHUFFLE -> shuffleButton.setColorFilter( + lastPlaybackControlsColor, + PorterDuff.Mode.SRC_IN + ) else -> shuffleButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN) } } @@ -204,11 +221,11 @@ class LockScreenPlayerControlsFragment : AbsPlayerControlsFragment() { public override fun show() { playPauseButton!!.animate() - .scaleX(1f) - .scaleY(1f) - .rotation(360f) - .setInterpolator(DecelerateInterpolator()) - .start() + .scaleX(1f) + .scaleY(1f) + .rotation(360f) + .setInterpolator(DecelerateInterpolator()) + .start() } public override fun hide() { @@ -226,8 +243,10 @@ class LockScreenPlayerControlsFragment : AbsPlayerControlsFragment() { override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { if (fromUser) { MusicPlayerRemote.seekTo(progress) - onUpdateProgressViews(MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) } } }) diff --git a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java index c07e83d5..8ce25a27 100755 --- a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java @@ -30,6 +30,7 @@ import code.name.monkey.retromusic.R; import code.name.monkey.retromusic.activities.AboutActivity; import code.name.monkey.retromusic.activities.AlbumDetailsActivity; import code.name.monkey.retromusic.activities.ArtistDetailActivity; +import code.name.monkey.retromusic.activities.DriveModeActivity; import code.name.monkey.retromusic.activities.GenreDetailsActivity; import code.name.monkey.retromusic.activities.LicenseActivity; import code.name.monkey.retromusic.activities.LyricsActivity; @@ -148,6 +149,10 @@ public class NavigationUtil { activityOptions.toBundle()); } + public static void gotoDriveMode(@NotNull final Activity activity) { + ActivityCompat.startActivity(activity, new Intent(activity, DriveModeActivity.class), null); + } + public static void gotoWhatNews(@NonNull Activity activity) { ActivityCompat.startActivity(activity, new Intent(activity, WhatsNewActivity.class), null); } diff --git a/app/src/main/res/drawable/color_progress_seek.xml b/app/src/main/res/drawable/color_progress_seek.xml index 3c6c3e96..4b65c536 100755 --- a/app/src/main/res/drawable/color_progress_seek.xml +++ b/app/src/main/res/drawable/color_progress_seek.xml @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + diff --git a/app/src/main/res/drawable/ic_drive_eta_white_24dp.xml b/app/src/main/res/drawable/ic_drive_eta_white_24dp.xml new file mode 100644 index 00000000..ea101fbb --- /dev/null +++ b/app/src/main/res/drawable/ic_drive_eta_white_24dp.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/app/src/main/res/drawable/shadow_up_down.xml b/app/src/main/res/drawable/shadow_up_down.xml new file mode 100644 index 00000000..d07db316 --- /dev/null +++ b/app/src/main/res/drawable/shadow_up_down.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_drive_mode.xml b/app/src/main/res/layout/activity_drive_mode.xml new file mode 100644 index 00000000..9a5971f7 --- /dev/null +++ b/app/src/main/res/layout/activity_drive_mode.xml @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_playing_queue.xml b/app/src/main/res/layout/activity_playing_queue.xml index e1e76c65..f7429bd8 100755 --- a/app/src/main/res/layout/activity_playing_queue.xml +++ b/app/src/main/res/layout/activity_playing_queue.xml @@ -57,7 +57,7 @@ - - + + + + + app:layout_constraintTop_toBottomOf="@id/appIcon"> + + - - - - + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 84330abc..a5eb9494 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -823,4 +823,5 @@ Scrobbles Share story Share to Stories + Drive mode