2019-03-03 09:30:48 +00:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2019 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.
|
|
|
|
*/
|
|
|
|
|
2018-12-06 08:52:57 +00:00
|
|
|
package code.name.monkey.retromusic.preferences
|
|
|
|
|
|
|
|
import android.app.Dialog
|
|
|
|
import android.content.Context
|
2019-07-08 14:35:46 +00:00
|
|
|
import android.graphics.PorterDuff
|
2018-12-06 08:52:57 +00:00
|
|
|
import android.os.Bundle
|
2019-02-19 10:38:51 +00:00
|
|
|
import android.util.AttributeSet
|
2018-12-06 08:52:57 +00:00
|
|
|
import android.view.LayoutInflater
|
|
|
|
import android.view.View
|
|
|
|
import android.view.ViewGroup
|
|
|
|
import android.widget.ImageView
|
|
|
|
import android.widget.TextView
|
|
|
|
import android.widget.Toast
|
2019-02-19 10:38:51 +00:00
|
|
|
import androidx.preference.PreferenceDialogFragmentCompat
|
2018-12-06 08:52:57 +00:00
|
|
|
import androidx.viewpager.widget.PagerAdapter
|
|
|
|
import androidx.viewpager.widget.ViewPager
|
2019-07-08 14:35:46 +00:00
|
|
|
import code.name.monkey.appthemehelper.ThemeStore
|
2019-07-23 18:32:41 +00:00
|
|
|
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEDialogPreference
|
2018-12-06 08:52:57 +00:00
|
|
|
import code.name.monkey.retromusic.App
|
|
|
|
import code.name.monkey.retromusic.R
|
2019-04-20 05:29:45 +00:00
|
|
|
import code.name.monkey.retromusic.fragments.NowPlayingScreen
|
2018-12-06 08:52:57 +00:00
|
|
|
import code.name.monkey.retromusic.util.NavigationUtil
|
|
|
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
|
|
|
import code.name.monkey.retromusic.util.ViewUtil
|
|
|
|
import com.afollestad.materialdialogs.MaterialDialog
|
2019-02-19 10:38:51 +00:00
|
|
|
import com.afollestad.materialdialogs.customview.customView
|
2018-12-06 08:52:57 +00:00
|
|
|
import com.bumptech.glide.Glide
|
|
|
|
|
2019-07-23 18:32:41 +00:00
|
|
|
class NowPlayingScreenPreference : ATEDialogPreference {
|
2018-12-06 08:52:57 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
constructor(context: Context) : super(context) {}
|
2018-12-06 08:52:57 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {}
|
|
|
|
|
|
|
|
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {}
|
|
|
|
|
|
|
|
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) {}
|
|
|
|
|
|
|
|
private val mLayoutRes = R.layout.preference_dialog_now_playing_screen
|
|
|
|
|
|
|
|
override fun getDialogLayoutResource(): Int {
|
|
|
|
return mLayoutRes;
|
|
|
|
}
|
2019-07-08 14:35:46 +00:00
|
|
|
|
|
|
|
init {
|
2019-07-31 07:26:28 +00:00
|
|
|
icon?.setColorFilter(ThemeStore.textColorSecondary(context), PorterDuff.Mode.SRC_IN)
|
2019-07-08 14:35:46 +00:00
|
|
|
}
|
2019-02-19 10:38:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
class NowPlayingScreenPreferenceDialog : PreferenceDialogFragmentCompat(), ViewPager.OnPageChangeListener {
|
2019-07-23 18:32:41 +00:00
|
|
|
|
2018-12-06 08:52:57 +00:00
|
|
|
private var viewPagerPosition: Int = 0
|
2019-07-23 18:32:41 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
override fun onPageScrollStateChanged(state: Int) {
|
2018-12-06 08:52:57 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
|
2018-12-06 08:52:57 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
override fun onPageSelected(position: Int) {
|
|
|
|
this.viewPagerPosition = position
|
2018-12-06 08:52:57 +00:00
|
|
|
}
|
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
override fun onDialogClosed(positiveResult: Boolean) {
|
2019-02-23 20:10:15 +00:00
|
|
|
|
2018-12-06 08:52:57 +00:00
|
|
|
}
|
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
|
|
|
val view = LayoutInflater.from(activity).inflate(R.layout.preference_dialog_now_playing_screen, null)
|
|
|
|
val viewPager = view.findViewById<ViewPager>(R.id.now_playing_screen_view_pager)
|
|
|
|
?: throw IllegalStateException("Dialog view must contain a ViewPager with id 'now_playing_screen_view_pager'")
|
|
|
|
viewPager.adapter = NowPlayingScreenAdapter(activity!!)
|
|
|
|
viewPager.addOnPageChangeListener(this)
|
|
|
|
viewPager.pageMargin = ViewUtil.convertDpToPixel(32f, resources).toInt()
|
2019-09-09 13:04:53 +00:00
|
|
|
viewPager.currentItem = PreferenceUtil.getInstance(requireContext()).nowPlayingScreen.ordinal
|
2019-02-19 10:38:51 +00:00
|
|
|
|
|
|
|
|
2019-09-17 19:36:13 +00:00
|
|
|
return MaterialDialog(requireContext()).show {
|
2019-02-19 10:38:51 +00:00
|
|
|
title(R.string.pref_title_album_cover_style)
|
2019-02-23 20:10:15 +00:00
|
|
|
positiveButton(R.string.set) {
|
|
|
|
val nowPlayingScreen = NowPlayingScreen.values()[viewPagerPosition]
|
|
|
|
if (isNowPlayingThemes(nowPlayingScreen)) {
|
|
|
|
val result = getString(nowPlayingScreen.titleRes) + " theme is Pro version feature."
|
|
|
|
Toast.makeText(context, result, Toast.LENGTH_SHORT).show()
|
|
|
|
NavigationUtil.goToProVersion(activity!!)
|
|
|
|
} else {
|
2019-09-09 13:04:53 +00:00
|
|
|
PreferenceUtil.getInstance(requireContext()).nowPlayingScreen = nowPlayingScreen
|
2019-02-23 20:10:15 +00:00
|
|
|
}
|
|
|
|
}
|
2019-09-17 19:36:13 +00:00
|
|
|
cornerRadius(PreferenceUtil.getInstance(requireContext()).dialogCorner)
|
2019-02-19 10:38:51 +00:00
|
|
|
negativeButton(android.R.string.cancel)
|
|
|
|
customView(view = view, scrollable = false, noVerticalPadding = false)
|
|
|
|
}
|
|
|
|
}
|
2018-12-06 08:52:57 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
private fun isNowPlayingThemes(nowPlayingScreen: NowPlayingScreen): Boolean {
|
2018-12-06 08:52:57 +00:00
|
|
|
if (nowPlayingScreen == NowPlayingScreen.BLUR_CARD) {
|
2019-09-09 13:04:53 +00:00
|
|
|
PreferenceUtil.getInstance(requireContext()).resetCarouselEffect()
|
|
|
|
PreferenceUtil.getInstance(requireContext()).resetCircularAlbumArt()
|
2018-12-06 08:52:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return (nowPlayingScreen == NowPlayingScreen.FULL ||
|
|
|
|
nowPlayingScreen == NowPlayingScreen.CARD ||
|
|
|
|
nowPlayingScreen == NowPlayingScreen.PLAIN ||
|
|
|
|
nowPlayingScreen == NowPlayingScreen.BLUR ||
|
|
|
|
nowPlayingScreen == NowPlayingScreen.COLOR ||
|
|
|
|
nowPlayingScreen == NowPlayingScreen.SIMPLE ||
|
|
|
|
nowPlayingScreen == NowPlayingScreen.BLUR_CARD ||
|
|
|
|
nowPlayingScreen == NowPlayingScreen.ADAPTIVE)
|
2019-09-09 13:04:53 +00:00
|
|
|
&& !App.isProVersion()
|
2018-12-06 08:52:57 +00:00
|
|
|
}
|
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
companion object {
|
2019-07-23 18:32:41 +00:00
|
|
|
fun newInstance(key: String): NowPlayingScreenPreferenceDialog {
|
|
|
|
val bundle = Bundle()
|
|
|
|
bundle.putString(ARG_KEY, key)
|
|
|
|
val fragment = NowPlayingScreenPreferenceDialog()
|
|
|
|
fragment.arguments = bundle
|
|
|
|
return fragment
|
2019-02-19 10:38:51 +00:00
|
|
|
}
|
2018-12-06 08:52:57 +00:00
|
|
|
}
|
2019-02-19 10:38:51 +00:00
|
|
|
}
|
2018-12-06 08:52:57 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
private class NowPlayingScreenAdapter internal constructor(private val context: Context) : PagerAdapter() {
|
2018-12-06 08:52:57 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
override fun instantiateItem(collection: ViewGroup, position: Int): Any {
|
|
|
|
val nowPlayingScreen = NowPlayingScreen.values()[position]
|
2018-12-06 08:52:57 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
val inflater = LayoutInflater.from(context)
|
|
|
|
val layout = inflater.inflate(R.layout.preference_now_playing_screen_item, collection, false) as ViewGroup
|
|
|
|
collection.addView(layout)
|
2018-12-06 08:52:57 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
val image = layout.findViewById<ImageView>(R.id.image)
|
|
|
|
val title = layout.findViewById<TextView>(R.id.title)
|
|
|
|
Glide.with(context).load(nowPlayingScreen.drawableResId).into(image)
|
|
|
|
title.setText(nowPlayingScreen.titleRes)
|
2018-12-06 08:52:57 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
return layout
|
|
|
|
}
|
2018-12-06 08:52:57 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
override fun destroyItem(collection: ViewGroup,
|
|
|
|
position: Int,
|
|
|
|
view: Any) {
|
|
|
|
collection.removeView(view as View)
|
|
|
|
}
|
2018-12-06 08:52:57 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
override fun getCount(): Int {
|
|
|
|
return NowPlayingScreen.values().size
|
2018-12-06 08:52:57 +00:00
|
|
|
}
|
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
override fun isViewFromObject(view: View, `object`: Any): Boolean {
|
|
|
|
return view === `object`
|
|
|
|
}
|
2018-12-06 08:52:57 +00:00
|
|
|
|
2019-02-19 10:38:51 +00:00
|
|
|
override fun getPageTitle(position: Int): CharSequence? {
|
|
|
|
return context.getString(NowPlayingScreen.values()[position].titleRes)
|
2018-12-06 08:52:57 +00:00
|
|
|
}
|
2019-02-19 10:38:51 +00:00
|
|
|
}
|