Stable
This commit is contained in:
parent
a0d79d5751
commit
acc7e31d57
37 changed files with 695 additions and 363 deletions
|
@ -1,6 +1,7 @@
|
|||
package code.name.monkey.retromusic
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.Toast
|
||||
import androidx.multidex.MultiDexApplication
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||
|
@ -32,12 +33,12 @@ class App : MultiDexApplication() {
|
|||
|
||||
|
||||
// automatically restores purchases
|
||||
billingProcessor = BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSE_KEY,
|
||||
billingProcessor = BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSING_KEY,
|
||||
object : BillingProcessor.IBillingHandler {
|
||||
override fun onProductPurchased(productId: String, details: TransactionDetails?) {}
|
||||
|
||||
override fun onPurchaseHistoryRestored() {
|
||||
//Toast.makeText(App.this, R.string.restored_previous_purchase_please_restart, Toast.LENGTH_LONG).show();
|
||||
Toast.makeText(this@App, R.string.restored_previous_purchase_please_restart, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
override fun onBillingError(errorCode: Int, error: Throwable?) {}
|
||||
|
|
|
@ -35,9 +35,9 @@ class AppWidgetSmall : BaseAppWidget() {
|
|||
|
||||
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE)
|
||||
appWidgetView.setImageViewResource(R.id.image, R.drawable.default_album_art)
|
||||
appWidgetView.setImageViewBitmap(R.id.button_next, BaseAppWidget.Companion.createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_skip_next_white_24dp, MaterialValueHelper.getSecondaryTextColor(context, true))!!, 1f))
|
||||
appWidgetView.setImageViewBitmap(R.id.button_prev, BaseAppWidget.Companion.createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_skip_previous_white_24dp, MaterialValueHelper.getSecondaryTextColor(context, true))!!, 1f))
|
||||
appWidgetView.setImageViewBitmap(R.id.button_toggle_play_pause, BaseAppWidget.Companion.createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_play_arrow_white_24dp, MaterialValueHelper.getSecondaryTextColor(context, true))!!, 1f))
|
||||
appWidgetView.setImageViewBitmap(R.id.button_next, BaseAppWidget.createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_skip_next_white_24dp, MaterialValueHelper.getSecondaryTextColor(context, true))!!, 1f))
|
||||
appWidgetView.setImageViewBitmap(R.id.button_prev, BaseAppWidget.createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_skip_previous_white_24dp, MaterialValueHelper.getSecondaryTextColor(context, true))!!, 1f))
|
||||
appWidgetView.setImageViewBitmap(R.id.button_toggle_play_pause, BaseAppWidget.createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_play_arrow_white_24dp, MaterialValueHelper.getSecondaryTextColor(context, true))!!, 1f))
|
||||
|
||||
linkButtons(context, appWidgetView)
|
||||
pushUpdate(context, appWidgetIds, appWidgetView)
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
package code.name.monkey.retromusic.appwidgets
|
||||
|
||||
import android.app.PendingIntent
|
||||
import android.content.ComponentName
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.text.TextUtils
|
||||
import android.view.View
|
||||
import android.widget.RemoteViews
|
||||
import androidx.core.content.ContextCompat
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.retromusic.App.Companion.context
|
||||
import code.name.monkey.retromusic.Constants
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.appwidgets.base.BaseAppWidget
|
||||
import code.name.monkey.retromusic.service.MusicService
|
||||
import code.name.monkey.retromusic.ui.activities.MainActivity
|
||||
import code.name.monkey.retromusic.util.RetroUtil
|
||||
|
||||
class AppWidgetText : BaseAppWidget() {
|
||||
override fun defaultAppWidget(context: Context, appWidgetIds: IntArray) {
|
||||
val appWidgetView = RemoteViews(context.packageName, R.layout.app_widget_text)
|
||||
|
||||
appWidgetView.setImageViewBitmap(R.id.button_next, BaseAppWidget.createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_skip_next_white_24dp, ContextCompat.getColor(context, R.color.md_white_1000)), 1f))
|
||||
appWidgetView.setImageViewBitmap(R.id.button_prev, BaseAppWidget.createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_skip_previous_white_24dp, ContextCompat.getColor(context, R.color.md_white_1000)), 1f))
|
||||
appWidgetView.setImageViewBitmap(R.id.button_toggle_play_pause, BaseAppWidget.createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_play_arrow_white_24dp, ContextCompat.getColor(context, R.color.md_white_1000)), 1f))
|
||||
|
||||
appWidgetView.setTextColor(R.id.title, ContextCompat.getColor(context, R.color.md_white_1000))
|
||||
appWidgetView.setTextColor(R.id.text, ContextCompat.getColor(context, R.color.md_white_1000))
|
||||
|
||||
linkButtons(context, appWidgetView)
|
||||
pushUpdate(context, appWidgetIds, appWidgetView)
|
||||
}
|
||||
|
||||
/**
|
||||
* Link up various button actions using [PendingIntent].
|
||||
*/
|
||||
private fun linkButtons(context: Context, views: RemoteViews) {
|
||||
val action = Intent(context, MainActivity::class.java).putExtra("expand", true)
|
||||
var pendingIntent: PendingIntent
|
||||
|
||||
val serviceName = ComponentName(context, MusicService::class.java)
|
||||
|
||||
// Home
|
||||
action.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP
|
||||
pendingIntent = PendingIntent.getActivity(context, 0, action, 0)
|
||||
views.setOnClickPendingIntent(R.id.image, pendingIntent)
|
||||
views.setOnClickPendingIntent(R.id.media_titles, pendingIntent)
|
||||
|
||||
// Previous track
|
||||
pendingIntent = buildPendingIntent(context, Constants.ACTION_REWIND, serviceName)
|
||||
views.setOnClickPendingIntent(R.id.button_prev, pendingIntent)
|
||||
|
||||
// Play and pause
|
||||
pendingIntent = buildPendingIntent(context, Constants.ACTION_TOGGLE_PAUSE, serviceName)
|
||||
views.setOnClickPendingIntent(R.id.button_toggle_play_pause, pendingIntent)
|
||||
|
||||
// Next track
|
||||
pendingIntent = buildPendingIntent(context, Constants.ACTION_SKIP, serviceName)
|
||||
views.setOnClickPendingIntent(R.id.button_next, pendingIntent)
|
||||
}
|
||||
|
||||
override fun performUpdate(service: MusicService, appWidgetIds: IntArray?) {
|
||||
val appWidgetView = RemoteViews(service.packageName, R.layout.app_widget_text)
|
||||
|
||||
val isPlaying = service.isPlaying
|
||||
val song = service.currentSong
|
||||
|
||||
// Set the titles and artwork
|
||||
if (TextUtils.isEmpty(song.title) && TextUtils.isEmpty(song.artistName)) {
|
||||
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE)
|
||||
} else {
|
||||
appWidgetView.setViewVisibility(R.id.media_titles, View.VISIBLE)
|
||||
appWidgetView.setTextViewText(R.id.title, song.title)
|
||||
appWidgetView.setTextViewText(R.id.text, song.artistName)
|
||||
}
|
||||
// Link actions buttons to intents
|
||||
linkButtons(service, appWidgetView)
|
||||
|
||||
// Set correct drawable for pause state
|
||||
val playPauseRes = if (isPlaying)
|
||||
R.drawable.ic_pause_white_24dp
|
||||
else
|
||||
R.drawable.ic_play_arrow_white_24dp
|
||||
appWidgetView.setImageViewBitmap(R.id.button_toggle_play_pause, BaseAppWidget.createBitmap(RetroUtil.getTintedVectorDrawable(context, playPauseRes, ContextCompat.getColor(context, R.color.md_white_1000)), 1f))
|
||||
|
||||
pushUpdate(service.applicationContext, appWidgetIds, appWidgetView)
|
||||
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
const val NAME: String = "app_widget_text"
|
||||
|
||||
private var mInstance: AppWidgetText? = null
|
||||
|
||||
|
||||
val instance: AppWidgetText
|
||||
@Synchronized get() {
|
||||
if (mInstance == null) {
|
||||
mInstance = AppWidgetText()
|
||||
}
|
||||
return mInstance!!
|
||||
}
|
||||
}
|
||||
}
|
|
@ -52,6 +52,7 @@ import code.name.monkey.retromusic.appwidgets.AppWidgetBig;
|
|||
import code.name.monkey.retromusic.appwidgets.AppWidgetCard;
|
||||
import code.name.monkey.retromusic.appwidgets.AppWidgetClassic;
|
||||
import code.name.monkey.retromusic.appwidgets.AppWidgetSmall;
|
||||
import code.name.monkey.retromusic.appwidgets.AppWidgetText;
|
||||
import code.name.monkey.retromusic.glide.BlurTransformation;
|
||||
import code.name.monkey.retromusic.glide.SongGlideRequest;
|
||||
import code.name.monkey.retromusic.helper.ShuffleHelper;
|
||||
|
@ -129,6 +130,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
private AppWidgetClassic appWidgetClassic = AppWidgetClassic.Companion.getInstance();
|
||||
private AppWidgetSmall appWidgetSmall = AppWidgetSmall.Companion.getInstance();
|
||||
private AppWidgetCard appWidgetCard = AppWidgetCard.Companion.getInstance();
|
||||
private AppWidgetText appWidgetText = AppWidgetText.Companion.getInstance();
|
||||
private final BroadcastReceiver widgetIntentReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(final Context context, final Intent intent) {
|
||||
|
@ -152,6 +154,10 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
appWidgetCard.performUpdate(MusicService.this, ids);
|
||||
break;
|
||||
}
|
||||
case AppWidgetText.NAME: {
|
||||
appWidgetText.performUpdate(MusicService.this, ids);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1114,6 +1120,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
appWidgetClassic.notifyChange(this, what);
|
||||
appWidgetSmall.notifyChange(this, what);
|
||||
appWidgetCard.notifyChange(this, what);
|
||||
appWidgetText.notifyChange(this, what);
|
||||
}
|
||||
|
||||
private void handleChangeInternal(@NonNull final String what) {
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
package code.name.monkey.retromusic.transform
|
||||
|
||||
import android.view.View
|
||||
import androidx.viewpager.widget.ViewPager
|
||||
|
||||
class StackTransformer : ViewPager.PageTransformer {
|
||||
override fun transformPage(page: View, position: Float) {
|
||||
if (position >= 0) {
|
||||
page.scaleX = (0.9f - 0.05f * position)
|
||||
page.scaleY = 0.9f
|
||||
page.translationX = -page.width * position
|
||||
page.translationY = -30 * position
|
||||
}
|
||||
}
|
||||
}
|
|
@ -71,10 +71,11 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsContrac
|
|||
setupWindowTransition()
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
toggleBottomNavigationView(true)
|
||||
setLightNavigationBar(true)
|
||||
setNavigationbarColorAuto()
|
||||
|
||||
toggleBottomNavigationView(true)
|
||||
|
||||
ActivityCompat.postponeEnterTransition(this)
|
||||
|
||||
val albumId = intent.getIntExtra(EXTRA_ALBUM_ID, -1)
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
package code.name.monkey.retromusic.ui.activities
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.core.view.ViewCompat
|
||||
import android.view.WindowManager
|
||||
import android.widget.ImageView
|
||||
|
||||
import com.bumptech.glide.Glide
|
||||
import com.r0adkll.slidr.Slidr
|
||||
import com.r0adkll.slidr.model.SlidrConfig
|
||||
import com.r0adkll.slidr.model.SlidrPosition
|
||||
|
||||
import android.view.WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
|
||||
import androidx.core.view.ViewCompat
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.retromusic.R
|
||||
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.model.Song
|
||||
import code.name.monkey.retromusic.ui.activities.base.AbsMusicServiceActivity
|
||||
import code.name.monkey.retromusic.ui.fragments.player.lockscreen.LockScreenPlayerControlsFragment
|
||||
import com.bumptech.glide.Glide
|
||||
import com.r0adkll.slidr.Slidr
|
||||
import com.r0adkll.slidr.model.SlidrConfig
|
||||
import com.r0adkll.slidr.model.SlidrListener
|
||||
import com.r0adkll.slidr.model.SlidrPosition
|
||||
|
||||
class LockScreenActivity : AbsMusicServiceActivity() {
|
||||
private var mFragment: LockScreenPlayerControlsFragment? = null
|
||||
|
@ -47,13 +46,15 @@ class LockScreenActivity : AbsMusicServiceActivity() {
|
|||
|
||||
mFragment = supportFragmentManager.findFragmentById(R.id.playback_controls_fragment) as LockScreenPlayerControlsFragment?
|
||||
|
||||
findViewById<View>(R.id.slide).setTranslationY(100f)
|
||||
findViewById<View>(R.id.slide).setAlpha(0f)
|
||||
ViewCompat.animate(findViewById<View>(R.id.slide))
|
||||
.translationY(0f)
|
||||
.alpha(1f)
|
||||
.setDuration(1500)
|
||||
.start()
|
||||
findViewById<View>(R.id.slide).apply {
|
||||
translationY = 100f
|
||||
alpha = 0f
|
||||
ViewCompat.animate(this)
|
||||
.translationY(0f)
|
||||
.alpha(1f)
|
||||
.setDuration(1500)
|
||||
.start()
|
||||
}
|
||||
|
||||
findViewById<View>(R.id.root_layout).setBackgroundColor(ThemeStore.primaryColor(this))
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener {
|
|||
setStatusbarColorAuto()
|
||||
setTaskDescriptionColorAuto()
|
||||
setNavigationbarColorAuto()
|
||||
setLightStatusbar(true)
|
||||
|
||||
|
||||
toolbar.setBackgroundColor(ThemeStore.primaryColor(this))
|
||||
toolbar.navigationIcon = TintHelper.createTintedDrawable(ContextCompat.getDrawable(this@LyricsActivity, R.drawable.ic_keyboard_backspace_black_24dp), ThemeStore.textColorSecondary(this@LyricsActivity))
|
||||
|
|
|
@ -13,6 +13,8 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.app.ShareCompat
|
||||
import androidx.drawerlayout.widget.DrawerLayout
|
||||
import androidx.drawerlayout.widget.DrawerLayout.*
|
||||
import androidx.fragment.app.Fragment
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
|
@ -272,7 +274,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP
|
|||
private fun showPromotionalOffer() {
|
||||
MaterialDialog.Builder(this)
|
||||
.positiveText("Buy")
|
||||
.onPositive { _, _ -> startActivity(Intent(this@MainActivity, ProVersionActivity::class.java)) }
|
||||
.onPositive { _, _ -> startActivity(Intent(this@MainActivity, PurchaseActivity::class.java)) }
|
||||
.negativeText(android.R.string.cancel)
|
||||
.customView(R.layout.dialog_promotional_offer, false)
|
||||
.dismissListener {
|
||||
|
@ -305,7 +307,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP
|
|||
R.id.nav_library -> Handler().postDelayed({ setMusicChooser(LIBRARY) }, 200)
|
||||
R.id.nav_home -> Handler().postDelayed({ setMusicChooser(HOME) }, 200)
|
||||
R.id.nav_folders -> Handler().postDelayed({ setMusicChooser(FOLDERS) }, 200)
|
||||
R.id.buy_pro -> Handler().postDelayed({ startActivityForResult(Intent(this@MainActivity, ProVersionActivity::class.java), PURCHASE_REQUEST) }, 200)
|
||||
R.id.buy_pro -> Handler().postDelayed({ startActivityForResult(Intent(this@MainActivity, PurchaseActivity::class.java), PURCHASE_REQUEST) }, 200)
|
||||
R.id.nav_settings -> Handler().postDelayed({ NavigationUtil.goToSettings(this@MainActivity) }, 200)
|
||||
R.id.nav_equalizer -> Handler().postDelayed({ NavigationUtil.openEqualizer(this@MainActivity) }, 200)
|
||||
R.id.nav_share_app -> Handler().postDelayed({ shareApp() }, 200)
|
||||
|
@ -336,7 +338,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP
|
|||
when (key) {
|
||||
LIBRARY -> {
|
||||
navigationView.setCheckedItem(R.id.nav_library)
|
||||
setCurrentFragment(LibraryFragment.newInstance())
|
||||
setCurrentFragment(LibraryFragment.newInstance(PreferenceUtil.getInstance().lastPage))
|
||||
}
|
||||
FOLDERS -> {
|
||||
navigationView.setCheckedItem(R.id.nav_folders)
|
||||
|
@ -376,6 +378,15 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP
|
|||
return super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
override fun onPanelCollapsed() {
|
||||
super.onPanelCollapsed()
|
||||
drawerLayout.setDrawerLockMode(LOCK_MODE_UNLOCKED)
|
||||
}
|
||||
|
||||
override fun onPanelExpanded() {
|
||||
super.onPanelExpanded()
|
||||
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
|
||||
}
|
||||
companion object {
|
||||
const val APP_INTRO_REQUEST = 2323
|
||||
const val LIBRARY = 1
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package code.name.monkey.retromusic.ui.activities
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.os.AsyncTask
|
||||
import android.os.Bundle
|
||||
|
@ -21,10 +20,10 @@ import kotlinx.android.synthetic.main.activity_pro_version_content.*
|
|||
import java.lang.ref.WeakReference
|
||||
|
||||
|
||||
class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
||||
class PurchaseActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
||||
|
||||
|
||||
private var billingProcessor: BillingProcessor? = null
|
||||
private lateinit var billingProcessor: BillingProcessor
|
||||
private var restorePurchaseAsyncTask: AsyncTask<*, *, *>? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
@ -32,7 +31,6 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
|||
setContentView(R.layout.activity_pro_version)
|
||||
setDrawUnderStatusBar()
|
||||
|
||||
|
||||
setStatusbarColorAuto()
|
||||
setNavigationbarColorAuto()
|
||||
setTaskDescriptionColorAuto()
|
||||
|
@ -52,7 +50,7 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
|||
restoreButton.isEnabled = false
|
||||
purchaseButton.isEnabled = false
|
||||
|
||||
billingProcessor = BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSE_KEY, this)
|
||||
billingProcessor = BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSING_KEY, this)
|
||||
|
||||
MaterialUtil.setTint(restoreButton, false)
|
||||
MaterialUtil.setTint(purchaseButton, true)
|
||||
|
@ -64,7 +62,7 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
|||
|
||||
}
|
||||
purchaseButton.setOnClickListener {
|
||||
billingProcessor!!.purchase(this@ProVersionActivity, App.PRO_VERSION_PRODUCT_ID)
|
||||
billingProcessor.purchase(this@PurchaseActivity, App.PRO_VERSION_PRODUCT_ID)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -102,7 +100,7 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
|||
|
||||
|
||||
public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
if (!billingProcessor!!.handleActivityResult(requestCode, resultCode, data)) {
|
||||
if (!billingProcessor.handleActivityResult(requestCode, resultCode, data)) {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
}
|
||||
}
|
||||
|
@ -115,15 +113,13 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
|||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
if (billingProcessor != null) {
|
||||
billingProcessor!!.release()
|
||||
}
|
||||
billingProcessor.release()
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
private class RestorePurchaseAsyncTask internal constructor(purchaseActivity: ProVersionActivity) : AsyncTask<Void, Void, Boolean>() {
|
||||
private class RestorePurchaseAsyncTask internal constructor(purchaseActivity: PurchaseActivity) : AsyncTask<Void, Void, Boolean>() {
|
||||
|
||||
private val buyActivityWeakReference: WeakReference<ProVersionActivity> = WeakReference(purchaseActivity)
|
||||
private val buyActivityWeakReference: WeakReference<PurchaseActivity> = WeakReference(purchaseActivity)
|
||||
|
||||
override fun onPreExecute() {
|
||||
super.onPreExecute()
|
||||
|
@ -138,7 +134,7 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
|||
override fun doInBackground(vararg params: Void): Boolean? {
|
||||
val purchaseActivity = buyActivityWeakReference.get()
|
||||
if (purchaseActivity != null) {
|
||||
return purchaseActivity.billingProcessor!!.loadOwnedPurchasesFromGoogle()
|
||||
return purchaseActivity.billingProcessor.loadOwnedPurchasesFromGoogle()
|
||||
}
|
||||
cancel(false)
|
||||
return null
|
||||
|
@ -160,6 +156,6 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
|||
}
|
||||
|
||||
companion object {
|
||||
private const val TAG: String = "ProVersionActivity"
|
||||
private const val TAG: String = "PurchaseActivity"
|
||||
}
|
||||
}
|
|
@ -1,7 +1,10 @@
|
|||
package code.name.monkey.retromusic.ui.activities
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.MenuItem
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.annotation.StringRes
|
||||
|
@ -18,6 +21,7 @@ import code.name.monkey.retromusic.util.PreferenceUtil
|
|||
import com.afollestad.materialdialogs.color.ColorChooserDialog
|
||||
import kotlinx.android.synthetic.main.activity_settings.*
|
||||
|
||||
|
||||
class SettingsActivity : AbsBaseActivity(), ColorChooserDialog.ColorCallback, SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
private val fragmentManager = supportFragmentManager
|
||||
|
@ -120,7 +124,8 @@ class SettingsActivity : AbsBaseActivity(), ColorChooserDialog.ColorCallback, Sh
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
companion object {
|
||||
const val TAG: String = "SettingsActivity"
|
||||
const val TAG: String = "SettingsActivity"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,7 +70,7 @@ class SupportDevelopmentActivity : AbsBaseActivity(), BillingProcessor.IBillingH
|
|||
|
||||
setupToolbar()
|
||||
|
||||
billingProcessor = BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSE_KEY, this)
|
||||
billingProcessor = BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSING_KEY, this)
|
||||
TintHelper.setTint(progress, ThemeStore.accentColor(this))
|
||||
donation.setTextColor(ThemeStore.accentColor(this))
|
||||
donate.setOnClickListener {
|
||||
|
|
|
@ -10,7 +10,7 @@ import com.google.android.gms.common.ConnectionResult
|
|||
import com.google.android.gms.common.GoogleApiAvailability
|
||||
import java.io.IOException
|
||||
|
||||
abstract class AbsCastActivity : AbsBaseActivity() {
|
||||
abstract class AbsCastActivity : AbsCheckPiracy() {
|
||||
|
||||
var playServicesAvailable = false
|
||||
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
package code.name.monkey.retromusic.ui.activities.base;
|
||||
|
||||
abstract public class AbsCheckPiracy extends AbsBaseActivity {
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
|
||||
}
|
||||
}
|
|
@ -29,23 +29,19 @@ import code.name.monkey.retromusic.ui.fragments.player.material.MaterialFragment
|
|||
import code.name.monkey.retromusic.ui.fragments.player.normal.PlayerFragment
|
||||
import code.name.monkey.retromusic.ui.fragments.player.plain.PlainPlayerFragment
|
||||
import code.name.monkey.retromusic.ui.fragments.player.simple.SimplePlayerFragment
|
||||
import code.name.monkey.retromusic.util.ColorUtils
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.views.BottomNavigationBarTinted
|
||||
import com.google.android.material.bottomnavigation.BottomNavigationView
|
||||
import com.sothree.slidinguppanel.SlidingUpPanelLayout
|
||||
import com.sothree.slidinguppanel.SlidingUpPanelLayout.PanelState
|
||||
import kotlinx.android.synthetic.main.sliding_music_panel_layout.*
|
||||
|
||||
abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicServiceActivity(), SlidingUpPanelLayout.PanelSlideListener, AbsPlayerFragment.Callbacks {
|
||||
|
||||
|
||||
lateinit var slidingUpPanelLayout: SlidingUpPanelLayout
|
||||
private lateinit var bottomNavigationView: BottomNavigationBarTinted
|
||||
|
||||
private var miniPlayerFragment: MiniPlayerFragment? = null
|
||||
var playerFragment: AbsPlayerFragment? = null
|
||||
private var playerFragment: AbsPlayerFragment? = null
|
||||
private var currentNowPlayingScreen: NowPlayingScreen? = null
|
||||
|
||||
private var navigationbarColor: Int = 0
|
||||
private var taskColor: Int = 0
|
||||
private var lightStatusbar: Boolean = false
|
||||
|
@ -54,7 +50,7 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
private val argbEvaluator = ArgbEvaluator()
|
||||
|
||||
val panelState: SlidingUpPanelLayout.PanelState?
|
||||
get() = slidingUpPanelLayout.panelState
|
||||
get() = slidingLayout.panelState
|
||||
|
||||
private val isOneOfTheseThemes: Boolean
|
||||
get() = (currentNowPlayingScreen == NowPlayingScreen.ADAPTIVE)
|
||||
|
@ -63,8 +59,6 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
super.onCreate(savedInstanceState)
|
||||
setContentView(createContentView())
|
||||
|
||||
slidingUpPanelLayout = findViewById(R.id.sliding_layout);
|
||||
bottomNavigationView = findViewById(R.id.bottom_navigation);
|
||||
|
||||
chooseFragmentForTheme()
|
||||
setupSlidingUpPanel()
|
||||
|
@ -80,9 +74,9 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
override fun onServiceConnected() {
|
||||
super.onServiceConnected()
|
||||
if (!MusicPlayerRemote.playingQueue.isEmpty()) {
|
||||
slidingUpPanelLayout.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
||||
slidingLayout.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
||||
override fun onGlobalLayout() {
|
||||
slidingUpPanelLayout.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||
slidingLayout.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||
hideBottomBar(false)
|
||||
}
|
||||
})
|
||||
|
@ -99,11 +93,11 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
val heightOfBarWithTabs = resources.getDimensionPixelSize(R.dimen.mini_player_height_expanded)
|
||||
|
||||
if (hide) {
|
||||
slidingUpPanelLayout.panelHeight = 0
|
||||
slidingLayout.panelHeight = 0
|
||||
collapsePanel()
|
||||
} else {
|
||||
if (!MusicPlayerRemote.playingQueue.isEmpty()) {
|
||||
slidingUpPanelLayout.panelHeight = if (bottomNavigationView.visibility == View.VISIBLE) heightOfBarWithTabs else heightOfBar
|
||||
slidingLayout.panelHeight = if (bottomNavigationView.visibility == View.VISIBLE) heightOfBarWithTabs else heightOfBar
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -111,7 +105,7 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
protected fun wrapSlidingMusicPanel(@LayoutRes resId: Int): View {
|
||||
@SuppressLint("InflateParams")
|
||||
val slidingMusicPanelLayout = layoutInflater.inflate(R.layout.sliding_music_panel_layout, null)
|
||||
val contentContainer = slidingMusicPanelLayout.findViewById<ViewGroup>(R.id.content_container)
|
||||
val contentContainer = slidingMusicPanelLayout.findViewById<ViewGroup>(R.id.mainContentFrame)
|
||||
layoutInflater.inflate(resId, contentContainer)
|
||||
return slidingMusicPanelLayout
|
||||
}
|
||||
|
@ -122,7 +116,7 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
}
|
||||
|
||||
open fun handleBackPress(): Boolean {
|
||||
if (slidingUpPanelLayout.panelHeight != 0 && playerFragment!!.onBackPressed())
|
||||
if (slidingLayout.panelHeight != 0 && playerFragment!!.onBackPressed())
|
||||
return true
|
||||
if (panelState == SlidingUpPanelLayout.PanelState.EXPANDED) {
|
||||
collapsePanel()
|
||||
|
@ -142,18 +136,18 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
bottomNavigationView.visibility = if (toggle) View.GONE else View.VISIBLE
|
||||
}
|
||||
|
||||
fun getBottomNavigationView(): BottomNavigationView? {
|
||||
fun getBottomNavigationView(): BottomNavigationBarTinted? {
|
||||
return bottomNavigationView
|
||||
}
|
||||
|
||||
private fun setupSlidingUpPanel() {
|
||||
slidingUpPanelLayout.viewTreeObserver
|
||||
slidingLayout.viewTreeObserver
|
||||
.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
||||
override fun onGlobalLayout() {
|
||||
slidingUpPanelLayout.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||
slidingLayout.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||
|
||||
if (panelState == PanelState.EXPANDED) {
|
||||
onPanelSlide(slidingUpPanelLayout, 1f)
|
||||
onPanelSlide(slidingLayout, 1f)
|
||||
onPanelExpanded()
|
||||
} else if (panelState == PanelState.COLLAPSED) {
|
||||
onPanelCollapsed()
|
||||
|
@ -163,7 +157,7 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
}
|
||||
})
|
||||
|
||||
slidingUpPanelLayout.addPanelSlideListener(this)
|
||||
slidingLayout.addPanelSlideListener(this)
|
||||
|
||||
}
|
||||
|
||||
|
@ -182,7 +176,7 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
}
|
||||
}
|
||||
|
||||
fun onPanelCollapsed() {
|
||||
open fun onPanelCollapsed() {
|
||||
// restore values
|
||||
super.setLightStatusbar(lightStatusbar)
|
||||
super.setTaskDescriptionColor(taskColor)
|
||||
|
@ -195,7 +189,7 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
playerFragment!!.onHide()
|
||||
}
|
||||
|
||||
fun onPanelExpanded() {
|
||||
open fun onPanelExpanded() {
|
||||
val playerFragmentColor = playerFragment!!.paletteColor
|
||||
super.setTaskDescriptionColor(playerFragmentColor)
|
||||
|
||||
|
@ -231,11 +225,11 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
NowPlayingScreen.COLOR -> ColorFragment()
|
||||
else -> PlayerFragment()
|
||||
} // must implement AbsPlayerFragment
|
||||
supportFragmentManager.beginTransaction().replace(R.id.player_fragment_container, fragment).commit()
|
||||
supportFragmentManager.beginTransaction().replace(R.id.playerFragmentContainer, fragment).commit()
|
||||
supportFragmentManager.executePendingTransactions()
|
||||
|
||||
playerFragment = supportFragmentManager.findFragmentById(R.id.player_fragment_container) as AbsPlayerFragment
|
||||
miniPlayerFragment = supportFragmentManager.findFragmentById(R.id.mini_player_fragment) as MiniPlayerFragment
|
||||
playerFragment = supportFragmentManager.findFragmentById(R.id.playerFragmentContainer) as AbsPlayerFragment
|
||||
miniPlayerFragment = supportFragmentManager.findFragmentById(R.id.miniPlayerFragment) as MiniPlayerFragment
|
||||
miniPlayerFragment!!.view!!.setOnClickListener { expandPanel() }
|
||||
|
||||
}
|
||||
|
@ -248,11 +242,11 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
}
|
||||
|
||||
private fun collapsePanel() {
|
||||
slidingUpPanelLayout.panelState = PanelState.COLLAPSED
|
||||
slidingLayout.panelState = PanelState.COLLAPSED
|
||||
}
|
||||
|
||||
private fun expandPanel() {
|
||||
slidingUpPanelLayout.panelState = PanelState.EXPANDED
|
||||
slidingLayout.panelState = PanelState.EXPANDED
|
||||
}
|
||||
|
||||
|
||||
|
@ -267,6 +261,7 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
|||
super.setLightNavigationBar(true)
|
||||
super.setLightStatusbar(isColorLight)
|
||||
} else if (currentNowPlayingScreen == NowPlayingScreen.FULL || currentNowPlayingScreen == NowPlayingScreen.CARD ||
|
||||
currentNowPlayingScreen == NowPlayingScreen.FIT ||
|
||||
currentNowPlayingScreen == NowPlayingScreen.BLUR || currentNowPlayingScreen == NowPlayingScreen.BLUR_CARD) {
|
||||
super.setLightStatusbar(false)
|
||||
super.setLightNavigationBar(true)
|
||||
|
|
|
@ -43,13 +43,16 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(), ViewPager.OnPageChan
|
|||
super.onViewCreated(view, savedInstanceState)
|
||||
viewPager.addOnPageChangeListener(this)
|
||||
//noinspection ConstantConditions
|
||||
if (PreferenceUtil.getInstance().carouselEffect() && !((PreferenceUtil.getInstance().nowPlayingScreen == NowPlayingScreen.FULL) || (PreferenceUtil.getInstance().nowPlayingScreen == NowPlayingScreen.FIT))) {
|
||||
viewPager.clipToPadding = false;
|
||||
viewPager.setPadding(96, 0, 96, 0);
|
||||
viewPager.pageMargin = 18;
|
||||
viewPager.setPageTransformer(false, CarousalPagerTransformer(context!!));
|
||||
if (PreferenceUtil.getInstance().carouselEffect() &&
|
||||
!((PreferenceUtil.getInstance().nowPlayingScreen == NowPlayingScreen.FULL)
|
||||
|| (PreferenceUtil.getInstance().nowPlayingScreen == NowPlayingScreen.FIT))) {
|
||||
viewPager.clipToPadding = false
|
||||
viewPager.setPadding(96, 0, 96, 0)
|
||||
viewPager.pageMargin = 18
|
||||
viewPager.setPageTransformer(false, CarousalPagerTransformer(context!!))
|
||||
} else {
|
||||
viewPager.setPageTransformer(true, PreferenceUtil.getInstance().getAlbumCoverTransform(context!!));
|
||||
viewPager.offscreenPageLimit = 2
|
||||
viewPager.setPageTransformer(true, PreferenceUtil.getInstance().albumCoverTransform)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -123,6 +126,5 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(), ViewPager.OnPageChan
|
|||
|
||||
companion object {
|
||||
val TAG: String = PlayerAlbumCoverFragment::class.java.simpleName
|
||||
const val VISIBILITY_ANIM_DURATION: Long = 300
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,6 +55,9 @@ class FullPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
|||
val volumeFragment = childFragmentManager.findFragmentById(R.id.volumeFragment) as VolumeFragment?
|
||||
volumeFragment!!.tintWhiteColor()
|
||||
|
||||
|
||||
songTotalTime.setTextColor(Color.WHITE)
|
||||
songCurrentProgress.setTextColor(Color.WHITE)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
|
|
|
@ -1,14 +1,22 @@
|
|||
package code.name.monkey.retromusic.ui.fragments.settings
|
||||
|
||||
import android.app.ActivityManager
|
||||
import android.app.admin.DevicePolicyManager
|
||||
import android.content.ComponentName
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.preference.TwoStatePreference
|
||||
import code.name.monkey.retromusic.App
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.ui.activities.SettingsActivity.Companion.RESULT_ENABLE
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
|
||||
|
||||
class PersonaizeSettingsFragment : AbsSettingsFragment(), SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
override fun invalidateSettings() {
|
||||
val cornerWindow = findPreference("corner_window") as TwoStatePreference
|
||||
cornerWindow.setOnPreferenceChangeListener { _, newValue ->
|
||||
|
@ -17,15 +25,17 @@ class PersonaizeSettingsFragment : AbsSettingsFragment(), SharedPreferences.OnSh
|
|||
return@setOnPreferenceChangeListener false
|
||||
}
|
||||
activity!!.recreate()
|
||||
true
|
||||
return@setOnPreferenceChangeListener true
|
||||
}
|
||||
|
||||
|
||||
val toggleFullScreen = findPreference("toggle_full_screen") as TwoStatePreference
|
||||
toggleFullScreen.setOnPreferenceChangeListener { _, newValue ->
|
||||
toggleFullScreen.setOnPreferenceChangeListener { _, _ ->
|
||||
activity!!.recreate()
|
||||
true
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
|
@ -36,9 +46,8 @@ class PersonaizeSettingsFragment : AbsSettingsFragment(), SharedPreferences.OnSh
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
PreferenceUtil.getInstance().registerOnSharedPreferenceChangedListener(this)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
|
|
|
@ -26,7 +26,7 @@ import code.name.monkey.retromusic.ui.activities.LicenseActivity;
|
|||
import code.name.monkey.retromusic.ui.activities.LyricsActivity;
|
||||
import code.name.monkey.retromusic.ui.activities.PlayingQueueActivity;
|
||||
import code.name.monkey.retromusic.ui.activities.PlaylistDetailActivity;
|
||||
import code.name.monkey.retromusic.ui.activities.ProVersionActivity;
|
||||
import code.name.monkey.retromusic.ui.activities.PurchaseActivity;
|
||||
import code.name.monkey.retromusic.ui.activities.SearchActivity;
|
||||
import code.name.monkey.retromusic.ui.activities.SettingsActivity;
|
||||
import code.name.monkey.retromusic.ui.activities.SupportDevelopmentActivity;
|
||||
|
@ -106,7 +106,7 @@ public class NavigationUtil {
|
|||
}
|
||||
|
||||
public static void goToProVersion(@NonNull Activity activity) {
|
||||
ActivityCompat.startActivity(activity, new Intent(activity, ProVersionActivity.class), null);
|
||||
ActivityCompat.startActivity(activity, new Intent(activity, PurchaseActivity.class), null);
|
||||
}
|
||||
|
||||
public static void goToSettings(@NonNull Activity activity) {
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package code.name.monkey.retromusic.util;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.github.javiersantos.piracychecker.utils.LibraryUtilsKt;
|
||||
|
||||
public class PiracyCheckerUtils {
|
||||
|
||||
public static String getAPKSignature(Context context) {
|
||||
return LibraryUtilsKt.getCurrentSignature(context);
|
||||
}
|
||||
|
||||
}
|
|
@ -30,6 +30,8 @@ import code.name.monkey.retromusic.transform.DepthTransformation;
|
|||
import code.name.monkey.retromusic.transform.HingeTransformation;
|
||||
import code.name.monkey.retromusic.transform.HorizontalFlipTransformation;
|
||||
import code.name.monkey.retromusic.transform.NormalPageTransformer;
|
||||
import code.name.monkey.retromusic.transform.StackPagerTransformer;
|
||||
import code.name.monkey.retromusic.transform.StackTransformer;
|
||||
import code.name.monkey.retromusic.transform.VerticalFlipTransformation;
|
||||
import code.name.monkey.retromusic.ui.activities.MainActivity;
|
||||
import code.name.monkey.retromusic.ui.fragments.AlbumCoverStyle;
|
||||
|
@ -739,7 +741,7 @@ public final class PreferenceUtil {
|
|||
}
|
||||
|
||||
|
||||
public ViewPager.PageTransformer getAlbumCoverTransform(Context context) {
|
||||
public ViewPager.PageTransformer getAlbumCoverTransform() {
|
||||
int style = Integer.parseInt(Objects.requireNonNull(mPreferences.getString(ALBUM_COVER_TRANSFORM, "0")));
|
||||
switch (style) {
|
||||
default:
|
||||
|
@ -755,6 +757,8 @@ public final class PreferenceUtil {
|
|||
return new VerticalFlipTransformation();
|
||||
case 5:
|
||||
return new HingeTransformation();
|
||||
case 6:
|
||||
return new StackTransformer();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue