diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 313c7e76b..a5235207f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -107,11 +107,9 @@
-
-
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
deleted file mode 100644
index 8adb96bc0..000000000
--- a/app/src/main/java/code/name/monkey/retromusic/activities/PlayingQueueActivity.kt
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright (c) 2020 Hemanth Savarla.
- *
- * 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.content.res.ColorStateList
-import android.os.Bundle
-import android.view.MenuItem
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
-import code.name.monkey.appthemehelper.util.ATHUtil
-import code.name.monkey.appthemehelper.util.ColorUtil
-import code.name.monkey.appthemehelper.util.MaterialValueHelper
-import code.name.monkey.retromusic.R
-import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity
-import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter
-import code.name.monkey.retromusic.databinding.ActivityPlayingQueueBinding
-import code.name.monkey.retromusic.extensions.accentColor
-import code.name.monkey.retromusic.helper.MusicPlayerRemote
-import code.name.monkey.retromusic.util.MusicUtil
-import code.name.monkey.retromusic.util.ThemedFastScroller
-import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator
-import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager
-import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager
-import com.h6ah4i.android.widget.advrecyclerview.touchguard.RecyclerViewTouchActionGuardManager
-import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils
-
-open class PlayingQueueActivity : AbsMusicServiceActivity() {
-
- private lateinit var binding: ActivityPlayingQueueBinding
- private var wrappedAdapter: RecyclerView.Adapter<*>? = null
- private var recyclerViewDragDropManager: RecyclerViewDragDropManager? = null
- private var recyclerViewSwipeManager: RecyclerViewSwipeManager? = null
- private var recyclerViewTouchActionGuardManager: RecyclerViewTouchActionGuardManager? = null
- private var playingQueueAdapter: PlayingQueueAdapter? = null
- private lateinit var linearLayoutManager: LinearLayoutManager
-
- private fun getUpNextAndQueueTime(): String {
- val duration = MusicPlayerRemote.getQueueDurationMillis(MusicPlayerRemote.position)
- return MusicUtil.buildInfoString(
- resources.getString(R.string.up_next),
- MusicUtil.getReadableDurationString(duration)
- )
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- setDrawUnderStatusBar()
- super.onCreate(savedInstanceState)
- binding = ActivityPlayingQueueBinding.inflate(layoutInflater)
- setContentView(binding.root)
- setLightStatusbarAuto(ATHUtil.resolveColor(this, R.attr.colorSurface))
- setTaskDescriptionColorAuto()
-
- setupToolbar()
- setUpRecyclerView()
-
- binding.clearQueue.setOnClickListener {
- MusicPlayerRemote.clearQueue()
- }
- checkForPadding()
- }
-
- override fun onOptionsItemSelected(item: MenuItem): Boolean {
- return when (item.itemId) {
- android.R.id.home -> {
- onBackPressed()
- true
- }
- else -> super.onOptionsItemSelected(item)
- }
- }
-
- private fun setUpRecyclerView() {
- recyclerViewTouchActionGuardManager = RecyclerViewTouchActionGuardManager()
- recyclerViewDragDropManager = RecyclerViewDragDropManager()
- recyclerViewSwipeManager = RecyclerViewSwipeManager()
-
- val animator = DraggableItemAnimator()
- animator.supportsChangeAnimations = false
-
- playingQueueAdapter = PlayingQueueAdapter(
- this,
- MusicPlayerRemote.playingQueue.toMutableList(),
- MusicPlayerRemote.position,
- R.layout.item_queue
- )
- wrappedAdapter = recyclerViewDragDropManager?.createWrappedAdapter(playingQueueAdapter!!)
- wrappedAdapter = wrappedAdapter?.let { recyclerViewSwipeManager?.createWrappedAdapter(it) }
-
- linearLayoutManager = LinearLayoutManager(this)
-
- binding.recyclerView.layoutManager = linearLayoutManager
- binding.recyclerView.adapter = wrappedAdapter
- binding.recyclerView.itemAnimator = animator
- recyclerViewTouchActionGuardManager?.attachRecyclerView(binding.recyclerView)
- recyclerViewDragDropManager?.attachRecyclerView(binding.recyclerView)
- recyclerViewSwipeManager?.attachRecyclerView(binding.recyclerView)
- linearLayoutManager.scrollToPositionWithOffset(MusicPlayerRemote.position + 1, 0)
-
- binding.recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
- override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
- super.onScrolled(recyclerView, dx, dy)
- if (dy > 0) {
- binding.clearQueue.shrink()
- } else if (dy < 0) {
- binding.clearQueue.extend()
- }
- }
- })
- ThemedFastScroller.create(binding.recyclerView)
- }
-
- private fun checkForPadding() {
- }
-
- override fun onQueueChanged() {
- if (MusicPlayerRemote.playingQueue.isEmpty()) {
- finish()
- return
- }
- checkForPadding()
- updateQueue()
- updateCurrentSong()
- }
-
- override fun onMediaStoreChanged() {
- updateQueue()
- updateCurrentSong()
- }
-
- private fun updateCurrentSong() {
- binding.toolbar.subtitle = getUpNextAndQueueTime()
- }
-
- override fun onPlayingMetaChanged() {
- updateQueuePosition()
- }
-
- private fun updateQueuePosition() {
- playingQueueAdapter?.setCurrent(MusicPlayerRemote.position)
- resetToCurrentPosition()
- binding.toolbar.subtitle = getUpNextAndQueueTime()
- }
-
- private fun updateQueue() {
- playingQueueAdapter?.swapDataSet(MusicPlayerRemote.playingQueue, MusicPlayerRemote.position)
- resetToCurrentPosition()
- }
-
- private fun resetToCurrentPosition() {
- binding.recyclerView.stopScroll()
- linearLayoutManager.scrollToPositionWithOffset(MusicPlayerRemote.position + 1, 0)
- }
-
- override fun onPause() {
- if (recyclerViewDragDropManager != null) {
- recyclerViewDragDropManager!!.cancelDrag()
- }
- super.onPause()
- }
-
- override fun onDestroy() {
- if (recyclerViewDragDropManager != null) {
- recyclerViewDragDropManager!!.release()
- recyclerViewDragDropManager = null
- }
- if (recyclerViewSwipeManager != null) {
- recyclerViewSwipeManager?.release()
- recyclerViewSwipeManager = null
- }
- if (wrappedAdapter != null) {
- WrapperAdapterUtils.releaseAll(wrappedAdapter)
- wrappedAdapter = null
- }
- playingQueueAdapter = null
- super.onDestroy()
- }
-
- private fun setupToolbar() {
- binding.toolbar.subtitle = getUpNextAndQueueTime()
- //binding.toolbar.setBackgroundColor(surfaceColor())
- setSupportActionBar(binding.toolbar)
- binding.clearQueue.backgroundTintList = ColorStateList.valueOf(accentColor())
- ColorStateList.valueOf(
- MaterialValueHelper.getPrimaryTextColor(this, ColorUtil.isColorLight(accentColor()))
- ).apply {
- binding.clearQueue.setTextColor(this)
- binding.clearQueue.iconTint = this
- }
- }
-}
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt
index 0c9688578..5f80b71e6 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt
@@ -32,10 +32,10 @@ import code.name.monkey.retromusic.RetroBottomSheetBehavior
import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding
import code.name.monkey.retromusic.extensions.*
import code.name.monkey.retromusic.fragments.LibraryViewModel
-import code.name.monkey.retromusic.fragments.MiniPlayerFragment
import code.name.monkey.retromusic.fragments.NowPlayingScreen
import code.name.monkey.retromusic.fragments.NowPlayingScreen.*
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
+import code.name.monkey.retromusic.fragments.other.MiniPlayerFragment
import code.name.monkey.retromusic.fragments.player.adaptive.AdaptiveFragment
import code.name.monkey.retromusic.fragments.player.blur.BlurPlayerFragment
import code.name.monkey.retromusic.fragments.player.card.CardFragment
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt
index de04ed5cc..6bbae4d91 100755
--- a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt
@@ -29,7 +29,6 @@ import android.view.LayoutInflater
import android.widget.ImageView
import android.widget.Toast
import code.name.monkey.appthemehelper.util.ATHUtil
-import code.name.monkey.appthemehelper.util.MaterialUtil
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.ActivityAlbumTagEditorBinding
import code.name.monkey.retromusic.extensions.appHandleColor
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 46b99c231..506eb1c10 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
@@ -16,7 +16,6 @@ package code.name.monkey.retromusic.adapter.song
import android.view.MenuItem
import android.view.View
-import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentActivity
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.glide.GlideApp
@@ -41,7 +40,7 @@ import com.h6ah4i.android.widget.advrecyclerview.swipeable.action.SwipeResultAct
import me.zhanghai.android.fastscroll.PopupTextProvider
class PlayingQueueAdapter(
- activity: AppCompatActivity,
+ activity: FragmentActivity,
dataSet: MutableList,
private var current: Int,
itemLayoutRes: Int
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt
index 93c2346a0..3530d8f60 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt
@@ -20,7 +20,7 @@ import android.view.animation.AccelerateInterpolator
import android.view.animation.DecelerateInterpolator
import androidx.annotation.LayoutRes
import code.name.monkey.retromusic.R
-import code.name.monkey.retromusic.fragments.VolumeFragment
+import code.name.monkey.retromusic.fragments.other.VolumeFragment
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/DetailListFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/DetailListFragment.kt
similarity index 99%
rename from app/src/main/java/code/name/monkey/retromusic/fragments/DetailListFragment.kt
rename to app/src/main/java/code/name/monkey/retromusic/fragments/other/DetailListFragment.kt
index b001c1e8f..ed1a5c72f 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/DetailListFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/DetailListFragment.kt
@@ -12,7 +12,7 @@
* See the GNU General Public License for more details.
*
*/
-package code.name.monkey.retromusic.fragments
+package code.name.monkey.retromusic.fragments.other
import android.os.Bundle
import android.view.View
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/LyricsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt
similarity index 99%
rename from app/src/main/java/code/name/monkey/retromusic/fragments/LyricsFragment.kt
rename to app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt
index c4aa78a76..b86785ee0 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/LyricsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt
@@ -12,7 +12,7 @@
* See the GNU General Public License for more details.
*
*/
-package code.name.monkey.retromusic.fragments
+package code.name.monkey.retromusic.fragments.other
import android.os.Bundle
import android.text.InputType
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt
similarity index 99%
rename from app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt
rename to app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt
index b13616300..8b5295e56 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt
@@ -12,7 +12,7 @@
* See the GNU General Public License for more details.
*
*/
-package code.name.monkey.retromusic.fragments
+package code.name.monkey.retromusic.fragments.other
import android.animation.ObjectAnimator
import android.annotation.SuppressLint
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/PlayingQueueRVFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/PlayingQueueRVFragment.kt
new file mode 100644
index 000000000..206e914cf
--- /dev/null
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/PlayingQueueRVFragment.kt
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2020 Hemanth Savarla.
+ *
+ * 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.fragments.other
+
+import android.os.Bundle
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import androidx.navigation.findNavController
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import code.name.monkey.retromusic.R
+import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter
+import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewFragment
+import code.name.monkey.retromusic.helper.MusicPlayerRemote
+import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator
+import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager
+import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager
+import com.h6ah4i.android.widget.advrecyclerview.touchguard.RecyclerViewTouchActionGuardManager
+import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils
+
+/**
+ * Created by hemanths on 2019-12-08.
+ */
+class PlayingQueueRVFragment : AbsRecyclerViewFragment() {
+
+ private lateinit var wrappedAdapter: RecyclerView.Adapter<*>
+ private var recyclerViewDragDropManager: RecyclerViewDragDropManager? = null
+ private var recyclerViewSwipeManager: RecyclerViewSwipeManager? = null
+ private var recyclerViewTouchActionGuardManager: RecyclerViewTouchActionGuardManager? = null
+ override val titleRes: Int
+ get() = R.string.now_playing_queue
+ override val isShuffleVisible: Boolean
+ get() = false
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ setupRecyclerView()
+ setupToolbar()
+ }
+
+ private fun setupToolbar() {
+ toolbar().apply {
+ setNavigationOnClickListener {
+ findNavController().navigateUp()
+ }
+ setNavigationIcon(R.drawable.ic_keyboard_backspace_black)
+ }
+ }
+
+ private fun setupRecyclerView() {
+ recyclerViewTouchActionGuardManager = RecyclerViewTouchActionGuardManager()
+ recyclerViewDragDropManager = RecyclerViewDragDropManager()
+ recyclerViewSwipeManager = RecyclerViewSwipeManager()
+
+ val animator = DraggableItemAnimator()
+ animator.supportsChangeAnimations = false
+ wrappedAdapter =
+ recyclerViewDragDropManager?.createWrappedAdapter(adapter!!) as RecyclerView.Adapter<*>
+ wrappedAdapter =
+ recyclerViewSwipeManager?.createWrappedAdapter(wrappedAdapter) as RecyclerView.Adapter<*>
+ recyclerView().layoutManager = layoutManager
+ recyclerView().adapter = wrappedAdapter
+ recyclerView().itemAnimator = animator
+ recyclerViewTouchActionGuardManager?.attachRecyclerView(recyclerView())
+ recyclerViewDragDropManager?.attachRecyclerView(recyclerView())
+ recyclerViewSwipeManager?.attachRecyclerView(recyclerView())
+
+ layoutManager?.scrollToPositionWithOffset(MusicPlayerRemote.position + 1, 0)
+ }
+
+ override fun createLayoutManager(): LinearLayoutManager {
+ return LinearLayoutManager(requireContext())
+ }
+
+ override fun createAdapter(): PlayingQueueAdapter {
+ return PlayingQueueAdapter(
+ requireActivity() as AppCompatActivity,
+ MusicPlayerRemote.playingQueue.toMutableList(),
+ MusicPlayerRemote.position,
+ R.layout.item_queue
+ )
+ }
+
+ override fun onServiceConnected() {
+ super.onServiceConnected()
+ updateQueue()
+ }
+
+ override fun onQueueChanged() {
+ super.onQueueChanged()
+ updateQueue()
+ mainActivity.hideBottomBar(true)
+ }
+
+ override fun onPlayingMetaChanged() {
+ updateQueuePosition()
+ mainActivity.hideBottomBar(true)
+ }
+
+ private fun updateQueuePosition() {
+ adapter?.setCurrent(MusicPlayerRemote.position)
+ resetToCurrentPosition()
+ }
+
+ private fun updateQueue() {
+ adapter?.swapDataSet(MusicPlayerRemote.playingQueue, MusicPlayerRemote.position)
+ resetToCurrentPosition()
+ }
+
+ private fun resetToCurrentPosition() {
+ recyclerView().stopScroll()
+ layoutManager?.scrollToPositionWithOffset(MusicPlayerRemote.position + 1, 0)
+ }
+
+ override fun onPause() {
+ recyclerViewDragDropManager?.cancelDrag()
+ super.onPause()
+ }
+
+ override val emptyMessage: Int
+ get() = R.string.no_playing_queue
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ if (recyclerViewDragDropManager != null) {
+ recyclerViewDragDropManager?.release()
+ recyclerViewDragDropManager = null
+ }
+
+ if (recyclerViewSwipeManager != null) {
+ recyclerViewSwipeManager?.release()
+ recyclerViewSwipeManager = null
+ }
+
+ WrapperAdapterUtils.releaseAll(wrappedAdapter)
+ }
+
+ companion object {
+ @JvmField
+ val TAG: String = PlayingQueueRVFragment::class.java.simpleName
+
+ @JvmStatic
+ fun newInstance(): PlayingQueueRVFragment {
+ return PlayingQueueRVFragment()
+ }
+ }
+}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/UserInfoFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt
similarity index 99%
rename from app/src/main/java/code/name/monkey/retromusic/fragments/UserInfoFragment.kt
rename to app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt
index 063f04eff..30a96ebc4 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/UserInfoFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt
@@ -12,7 +12,7 @@
* See the GNU General Public License for more details.
*
*/
-package code.name.monkey.retromusic.fragments
+package code.name.monkey.retromusic.fragments.other
import android.app.Activity
import android.content.Intent
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/VolumeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/VolumeFragment.kt
old mode 100755
new mode 100644
similarity index 99%
rename from app/src/main/java/code/name/monkey/retromusic/fragments/VolumeFragment.kt
rename to app/src/main/java/code/name/monkey/retromusic/fragments/other/VolumeFragment.kt
index 27c8b92a9..89d3f5301
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/VolumeFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/VolumeFragment.kt
@@ -12,7 +12,7 @@
* See the GNU General Public License for more details.
*
*/
-package code.name.monkey.retromusic.fragments
+package code.name.monkey.retromusic.fragments.other
import android.content.Context
import android.graphics.Color
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt
index 34f30bd2b..78b84e5dc 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt
@@ -38,11 +38,11 @@ import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter
import code.name.monkey.retromusic.databinding.FragmentClassicPlayerBinding
import code.name.monkey.retromusic.extensions.hide
import code.name.monkey.retromusic.extensions.show
-import code.name.monkey.retromusic.fragments.VolumeFragment
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.base.goToAlbum
import code.name.monkey.retromusic.fragments.base.goToArtist
+import code.name.monkey.retromusic.fragments.other.VolumeFragment
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt
index eb7c5e0f6..80a26abd4 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt
@@ -21,7 +21,6 @@ import android.view.View
import androidx.appcompat.widget.Toolbar
import androidx.core.animation.doOnEnd
import code.name.monkey.appthemehelper.util.ATHUtil
-import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.FragmentColorPlayerBinding
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt
index 803d51716..113b11060 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt
@@ -43,11 +43,11 @@ import code.name.monkey.retromusic.db.toSongEntity
import code.name.monkey.retromusic.extensions.hide
import code.name.monkey.retromusic.extensions.ripAlpha
import code.name.monkey.retromusic.extensions.show
-import code.name.monkey.retromusic.fragments.VolumeFragment
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.base.goToAlbum
import code.name.monkey.retromusic.fragments.base.goToArtist
+import code.name.monkey.retromusic.fragments.other.VolumeFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
@@ -55,7 +55,6 @@ import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener
import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
-import code.name.monkey.retromusic.util.RetroUtil
import code.name.monkey.retromusic.util.ViewUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
import com.google.android.material.bottomsheet.BottomSheetBehavior.*
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt
index 3aed2af36..2be4a5c62 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt
@@ -36,7 +36,6 @@ import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener
import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
-import code.name.monkey.retromusic.util.RetroUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
/**
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt
index 670fee51e..447ce115d 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt
@@ -14,146 +14,185 @@
*/
package code.name.monkey.retromusic.fragments.queue
+import android.content.res.ColorStateList
import android.os.Bundle
import android.view.View
-import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController
+import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import code.name.monkey.appthemehelper.util.ColorUtil
+import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter
-import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewFragment
+import code.name.monkey.retromusic.databinding.FragmentPlayingQueueBinding
+import code.name.monkey.retromusic.extensions.accentColor
+import code.name.monkey.retromusic.fragments.base.AbsMusicServiceFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote
+import code.name.monkey.retromusic.util.MusicUtil
+import code.name.monkey.retromusic.util.ThemedFastScroller
import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator
import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager
import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager
import com.h6ah4i.android.widget.advrecyclerview.touchguard.RecyclerViewTouchActionGuardManager
import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils
-/**
- * Created by hemanths on 2019-12-08.
- */
-class PlayingQueueFragment : AbsRecyclerViewFragment() {
+class PlayingQueueFragment : AbsMusicServiceFragment(R.layout.fragment_playing_queue) {
- private lateinit var wrappedAdapter: RecyclerView.Adapter<*>
+ private var _binding: FragmentPlayingQueueBinding? = null
+ private val binding get() = _binding!!
+ private var wrappedAdapter: RecyclerView.Adapter<*>? = null
private var recyclerViewDragDropManager: RecyclerViewDragDropManager? = null
private var recyclerViewSwipeManager: RecyclerViewSwipeManager? = null
private var recyclerViewTouchActionGuardManager: RecyclerViewTouchActionGuardManager? = null
- override val titleRes: Int
- get() = R.string.now_playing_queue
- override val isShuffleVisible: Boolean
- get() = false
+ private var playingQueueAdapter: PlayingQueueAdapter? = null
+ private lateinit var linearLayoutManager: LinearLayoutManager
+
+ private fun getUpNextAndQueueTime(): String {
+ val duration = MusicPlayerRemote.getQueueDurationMillis(MusicPlayerRemote.position)
+ return MusicUtil.buildInfoString(
+ resources.getString(R.string.up_next),
+ MusicUtil.getReadableDurationString(duration)
+ )
+ }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- setupRecyclerView()
+ _binding = FragmentPlayingQueueBinding.bind(view)
+
setupToolbar()
- }
+ setUpRecyclerView()
- private fun setupToolbar() {
- toolbar().apply {
- setNavigationOnClickListener {
- findNavController().navigateUp()
- }
- setNavigationIcon(R.drawable.ic_keyboard_backspace_black)
+ binding.clearQueue.setOnClickListener {
+ MusicPlayerRemote.clearQueue()
}
+ checkForPadding()
}
- private fun setupRecyclerView() {
+ private fun setUpRecyclerView() {
recyclerViewTouchActionGuardManager = RecyclerViewTouchActionGuardManager()
recyclerViewDragDropManager = RecyclerViewDragDropManager()
recyclerViewSwipeManager = RecyclerViewSwipeManager()
val animator = DraggableItemAnimator()
animator.supportsChangeAnimations = false
- wrappedAdapter =
- recyclerViewDragDropManager?.createWrappedAdapter(adapter!!) as RecyclerView.Adapter<*>
- wrappedAdapter =
- recyclerViewSwipeManager?.createWrappedAdapter(wrappedAdapter) as RecyclerView.Adapter<*>
- recyclerView().layoutManager = layoutManager
- recyclerView().adapter = wrappedAdapter
- recyclerView().itemAnimator = animator
- recyclerViewTouchActionGuardManager?.attachRecyclerView(recyclerView())
- recyclerViewDragDropManager?.attachRecyclerView(recyclerView())
- recyclerViewSwipeManager?.attachRecyclerView(recyclerView())
- layoutManager?.scrollToPositionWithOffset(MusicPlayerRemote.position + 1, 0)
- }
-
- override fun createLayoutManager(): LinearLayoutManager {
- return LinearLayoutManager(requireContext())
- }
-
- override fun createAdapter(): PlayingQueueAdapter {
- return PlayingQueueAdapter(
- requireActivity() as AppCompatActivity,
+ playingQueueAdapter = PlayingQueueAdapter(
+ requireActivity(),
MusicPlayerRemote.playingQueue.toMutableList(),
MusicPlayerRemote.position,
R.layout.item_queue
)
+ wrappedAdapter = recyclerViewDragDropManager?.createWrappedAdapter(playingQueueAdapter!!)
+ wrappedAdapter = wrappedAdapter?.let { recyclerViewSwipeManager?.createWrappedAdapter(it) }
+
+ linearLayoutManager = LinearLayoutManager(requireContext())
+
+ binding.recyclerView.layoutManager = linearLayoutManager
+ binding.recyclerView.adapter = wrappedAdapter
+ binding.recyclerView.itemAnimator = animator
+ recyclerViewTouchActionGuardManager?.attachRecyclerView(binding.recyclerView)
+ recyclerViewDragDropManager?.attachRecyclerView(binding.recyclerView)
+ recyclerViewSwipeManager?.attachRecyclerView(binding.recyclerView)
+ linearLayoutManager.scrollToPositionWithOffset(MusicPlayerRemote.position + 1, 0)
+
+ binding.recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
+ override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+ super.onScrolled(recyclerView, dx, dy)
+ if (dy > 0) {
+ binding.clearQueue.shrink()
+ } else if (dy < 0) {
+ binding.clearQueue.extend()
+ }
+ }
+ })
+ ThemedFastScroller.create(binding.recyclerView)
}
- override fun onServiceConnected() {
- super.onServiceConnected()
- updateQueue()
+ private fun checkForPadding() {
}
override fun onQueueChanged() {
- super.onQueueChanged()
+ if (MusicPlayerRemote.playingQueue.isEmpty()) {
+ findNavController().navigateUp()
+ return
+ }
+ checkForPadding()
updateQueue()
- mainActivity.hideBottomBar(true)
+ updateCurrentSong()
+ }
+
+ override fun onMediaStoreChanged() {
+ updateQueue()
+ updateCurrentSong()
+ }
+
+ private fun updateCurrentSong() {
+ binding.toolbar.subtitle = getUpNextAndQueueTime()
}
override fun onPlayingMetaChanged() {
updateQueuePosition()
- mainActivity.hideBottomBar(true)
}
private fun updateQueuePosition() {
- adapter?.setCurrent(MusicPlayerRemote.position)
+ playingQueueAdapter?.setCurrent(MusicPlayerRemote.position)
resetToCurrentPosition()
+ binding.toolbar.subtitle = getUpNextAndQueueTime()
}
private fun updateQueue() {
- adapter?.swapDataSet(MusicPlayerRemote.playingQueue, MusicPlayerRemote.position)
+ playingQueueAdapter?.swapDataSet(MusicPlayerRemote.playingQueue, MusicPlayerRemote.position)
resetToCurrentPosition()
}
private fun resetToCurrentPosition() {
- recyclerView().stopScroll()
- layoutManager?.scrollToPositionWithOffset(MusicPlayerRemote.position + 1, 0)
+ binding.recyclerView.stopScroll()
+ linearLayoutManager.scrollToPositionWithOffset(MusicPlayerRemote.position + 1, 0)
}
override fun onPause() {
- recyclerViewDragDropManager?.cancelDrag()
+ if (recyclerViewDragDropManager != null) {
+ recyclerViewDragDropManager!!.cancelDrag()
+ }
super.onPause()
}
- override val emptyMessage: Int
- get() = R.string.no_playing_queue
-
- override fun onDestroyView() {
- super.onDestroyView()
+ override fun onDestroy() {
if (recyclerViewDragDropManager != null) {
- recyclerViewDragDropManager?.release()
+ recyclerViewDragDropManager!!.release()
recyclerViewDragDropManager = null
}
-
if (recyclerViewSwipeManager != null) {
recyclerViewSwipeManager?.release()
recyclerViewSwipeManager = null
}
-
- WrapperAdapterUtils.releaseAll(wrappedAdapter)
+ if (wrappedAdapter != null) {
+ WrapperAdapterUtils.releaseAll(wrappedAdapter)
+ wrappedAdapter = null
+ }
+ playingQueueAdapter = null
+ super.onDestroy()
}
- companion object {
- @JvmField
- val TAG: String = PlayingQueueFragment::class.java.simpleName
-
- @JvmStatic
- fun newInstance(): PlayingQueueFragment {
- return PlayingQueueFragment()
+ private fun setupToolbar() {
+ binding.toolbar.subtitle = getUpNextAndQueueTime()
+ binding.clearQueue.backgroundTintList = ColorStateList.valueOf(accentColor())
+ ColorStateList.valueOf(
+ MaterialValueHelper.getPrimaryTextColor(
+ requireContext(),
+ ColorUtil.isColorLight(accentColor())
+ )
+ ).apply {
+ binding.clearQueue.setTextColor(this)
+ binding.clearQueue.iconTint = this
+ }
+ binding.toolbar.apply {
+ setNavigationOnClickListener {
+ findNavController().navigateUp()
+ }
+ setNavigationIcon(R.drawable.ic_keyboard_backspace_black)
}
}
}
+
diff --git a/app/src/main/res/layout-sw600dp/activity_playing_queue.xml b/app/src/main/res/layout-sw600dp/fragment_playing_queue.xml
similarity index 100%
rename from app/src/main/res/layout-sw600dp/activity_playing_queue.xml
rename to app/src/main/res/layout-sw600dp/fragment_playing_queue.xml
diff --git a/app/src/main/res/layout/activity_playing_queue.xml b/app/src/main/res/layout/fragment_playing_queue.xml
old mode 100755
new mode 100644
similarity index 100%
rename from app/src/main/res/layout/activity_playing_queue.xml
rename to app/src/main/res/layout/fragment_playing_queue.xml
diff --git a/app/src/main/res/layout/sliding_music_panel_layout.xml b/app/src/main/res/layout/sliding_music_panel_layout.xml
index 131d34b47..9b40ae73a 100644
--- a/app/src/main/res/layout/sliding_music_panel_layout.xml
+++ b/app/src/main/res/layout/sliding_music_panel_layout.xml
@@ -40,7 +40,7 @@
diff --git a/app/src/main/res/navigation/main_graph.xml b/app/src/main/res/navigation/main_graph.xml
index 4b7150c15..499f527fd 100644
--- a/app/src/main/res/navigation/main_graph.xml
+++ b/app/src/main/res/navigation/main_graph.xml
@@ -62,7 +62,7 @@
+ android:name="code.name.monkey.retromusic.fragments.other.UserInfoFragment" />
+ android:name="code.name.monkey.retromusic.fragments.other.LyricsFragment" />
\ No newline at end of file