Stable
This commit is contained in:
parent
a0d79d5751
commit
acc7e31d57
37 changed files with 695 additions and 363 deletions
258
app/app.iml
258
app/app.iml
File diff suppressed because one or more lines are too long
|
@ -13,12 +13,12 @@ android {
|
||||||
vectorDrawables.useSupportLibrary = true
|
vectorDrawables.useSupportLibrary = true
|
||||||
|
|
||||||
applicationId "code.name.monkey.retromusic"
|
applicationId "code.name.monkey.retromusic"
|
||||||
versionCode 255
|
versionCode 260
|
||||||
versionName '2.2.100'
|
versionName '3.0.010'
|
||||||
|
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
|
|
||||||
buildConfigField("String", "GOOGLE_PLAY_LICENSE_KEY", "\"${getProperty(getProperties('../public.properties'), 'GOOGLE_PLAY_LICENSE_KEY')}\"")
|
buildConfigField("String", "GOOGLE_PLAY_LICENSING_KEY", "\"${getProperty(getProperties('../public.properties'), 'GOOGLE_PLAY_LICENSE_KEY')}\"")
|
||||||
}
|
}
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
release {
|
release {
|
||||||
|
@ -149,7 +149,8 @@ dependencies {
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||||
|
|
||||||
implementation 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5'
|
implementation 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5'
|
||||||
|
implementation 'com.github.jetradarmobile:android-snowfall:1.2.0'
|
||||||
|
implementation 'com.github.javiersantos:PiracyChecker:1.2.4'
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|
|
@ -112,7 +112,7 @@
|
||||||
<activity android:name=".ui.activities.SupportDevelopmentActivity" />
|
<activity android:name=".ui.activities.SupportDevelopmentActivity" />
|
||||||
<activity android:name=".ui.activities.GenreDetailsActivity" />
|
<activity android:name=".ui.activities.GenreDetailsActivity" />
|
||||||
<activity android:name=".ui.activities.LicenseActivity" />
|
<activity android:name=".ui.activities.LicenseActivity" />
|
||||||
<activity android:name=".ui.activities.ProVersionActivity" />
|
<activity android:name=".ui.activities.PurchaseActivity" />
|
||||||
<activity android:name=".ui.activities.EqualizerActivity" />
|
<activity android:name=".ui.activities.EqualizerActivity" />
|
||||||
<activity android:name=".ui.activities.ErrorHandlerActivity" />
|
<activity android:name=".ui.activities.ErrorHandlerActivity" />
|
||||||
<activity android:name=".ui.activities.WhatsNewActivity" />
|
<activity android:name=".ui.activities.WhatsNewActivity" />
|
||||||
|
@ -122,10 +122,13 @@
|
||||||
android:launchMode="singleInstance"
|
android:launchMode="singleInstance"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/AppTheme.ExpandedCastController" />
|
android:theme="@style/AppTheme.ExpandedCastController" />
|
||||||
|
<activity android:name=".ui.activities.bugreport.BugReportActivity" />
|
||||||
|
<activity android:name=".ui.activities.LockScreenActivity" />
|
||||||
|
|
||||||
<service
|
<service
|
||||||
android:name=".service.MusicService"
|
android:name=".service.MusicService"
|
||||||
android:enabled="true" />
|
android:enabled="true" />
|
||||||
|
|
||||||
<service
|
<service
|
||||||
android:name=".service.WearBrowserService"
|
android:name=".service.WearBrowserService"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
|
@ -134,27 +137,11 @@
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<!-- <service -->
|
<receiver android:name=".service.MediaButtonIntentReceiver">
|
||||||
<!-- android:name=".service.daydream.RetroMusicAlbums" -->
|
|
||||||
<!-- android:exported="true" -->
|
|
||||||
<!-- android:label="Retro Music Albums" -->
|
|
||||||
<!-- android:permission="android.permission.BIND_DREAM_SERVICE"> -->
|
|
||||||
<!-- <intent-filter> -->
|
|
||||||
<!-- <action android:name="android.service.dreams.DreamService" /> -->
|
|
||||||
<!-- <category android:name="android.intent.category.DEFAULT" /> -->
|
|
||||||
<!-- </intent-filter> -->
|
|
||||||
<!-- </service> -->
|
|
||||||
<!-- Widgets -->
|
|
||||||
<!--
|
|
||||||
<receiver
|
|
||||||
android:name=".headset.HeadsetReceiver"
|
|
||||||
android:enabled="true"
|
|
||||||
android:exported="true">
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.HEADSET_PLUG" />
|
<action android:name="android.intent.action.MEDIA_BUTTON" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
|
@ -173,12 +160,6 @@
|
||||||
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
|
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
|
||||||
android:value="code.name.monkey.retromusic.cast.CastOptionsProvider" />
|
android:value="code.name.monkey.retromusic.cast.CastOptionsProvider" />
|
||||||
|
|
||||||
<!--
|
|
||||||
<meta-data
|
|
||||||
android:name="com.google.android.gms.car.application"
|
|
||||||
android:resource="@xml/automotive_app_desc" />
|
|
||||||
-->
|
|
||||||
|
|
||||||
<provider
|
<provider
|
||||||
android:name="androidx.core.content.FileProvider"
|
android:name="androidx.core.content.FileProvider"
|
||||||
android:authorities="${applicationId}"
|
android:authorities="${applicationId}"
|
||||||
|
@ -189,6 +170,73 @@
|
||||||
android:resource="@xml/provider_paths" />
|
android:resource="@xml/provider_paths" />
|
||||||
</provider>
|
</provider>
|
||||||
|
|
||||||
</application>
|
<receiver android:name=".appwidgets.BootReceiver">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||||
|
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
<receiver
|
||||||
|
android:name=".appwidgets.AppWidgetBig"
|
||||||
|
android:exported="false"
|
||||||
|
android:label="@string/app_widget_big_name">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
|
<meta-data
|
||||||
|
android:name="android.appwidget.provider"
|
||||||
|
android:resource="@xml/app_widget_big_info" />
|
||||||
|
</receiver>
|
||||||
|
<receiver
|
||||||
|
android:name=".appwidgets.AppWidgetClassic"
|
||||||
|
android:exported="false"
|
||||||
|
android:label="@string/app_widget_classic_name">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
|
<meta-data
|
||||||
|
android:name="android.appwidget.provider"
|
||||||
|
android:resource="@xml/app_widget_classic_info" />
|
||||||
|
</receiver>
|
||||||
|
<receiver
|
||||||
|
android:name=".appwidgets.AppWidgetSmall"
|
||||||
|
android:exported="false"
|
||||||
|
android:label="@string/app_widget_small_name">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
|
<meta-data
|
||||||
|
android:name="android.appwidget.provider"
|
||||||
|
android:resource="@xml/app_widget_small_info" />
|
||||||
|
</receiver>
|
||||||
|
<receiver
|
||||||
|
android:name=".appwidgets.AppWidgetText"
|
||||||
|
android:exported="false"
|
||||||
|
android:label="@string/app_widget_text_name">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
|
<meta-data
|
||||||
|
android:name="android.appwidget.provider"
|
||||||
|
android:resource="@xml/app_widget_text" />
|
||||||
|
</receiver>
|
||||||
|
<receiver
|
||||||
|
android:name=".appwidgets.AppWidgetCard"
|
||||||
|
android:exported="false"
|
||||||
|
android:label="@string/app_widget_card_name">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
|
<meta-data
|
||||||
|
android:name="android.appwidget.provider"
|
||||||
|
android:resource="@xml/app_widget_card_info" />
|
||||||
|
</receiver>
|
||||||
|
|
||||||
|
|
||||||
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
<html>
<head>
<style type="text/css">
* {
word-wrap: break-word;
}
{style-placeholder}
a {
color: #{link-color};
}
a:active {
color: #{link-color-active};
}
ul {
list-style-position: outside;
padding-left: 0;
padding-right: 0;
margin-left: 1em;
}
li {
padding-top: 8px;
}
</style>
</head>
<body>
<h3>Version 3.0.00</h3>
<ul style="line-height:150%">
<li>Converted app to kotlin</li>
<li>Added good old side navigation bar</li>
<li>Added bug report for better tracking with milestones</li>
<li></li>
<li>Click new music mix to play songs</li>
<li>Gradient image option for gird list</li>
<li>Clear button for playing queue</li>
<li>Click toolbar (Library) to open options</li>
<li>Folder list back button</li>
<li>New theme Fit</li>
<li>On library click on toolbar for accessing main menu
</li>
<li>On home click on toolbar for accessing search
</li>
<li>BottomSheetDialogue is now adaptable to screens, background colour and text size
consistency.
</li>
<li>Removed coloured navigation bar option to making app adapt the primary colour</li>
<li>Swipe up gesture for now playing removed, replaced with "tap to open", To achieve
transparent navigation bar for desired themes.
</li>
<li>Improved tablet UI and home screen by adding suggestions toggle banner issues.</li>
<li>Improving lyrics page</li>
</ul>
<p style="line-height:150%"><a href="https://github.com/h4h13/RetroMusicPlayer/wiki/FAQ">FAQ's</a>
</p>
<p style="line-height:150%">*If you face any UI related issues you clear app data and cache, if its
not working try to
uninstall and install again. </p>
</body>
|
<html>
<head>
<style type="text/css">
* {
word-wrap: break-word;
}
{style-placeholder}
a {
color: #{link-color};
}
a:active {
color: #{link-color-active};
}
ul {
list-style-position: outside;
padding-left: 0;
padding-right: 0;
margin-left: 1em;
}
li {
padding-top: 8px;
}
</style>
</head>
<body>
<h3>Version 3.0.00</h3>
<ul style="line-height:150%">
<li>Converted app to kotlin</li>
<li>Now you can add plain text home screen widget</li>
<li>Good old side navigation bar for options</li>
Added good old side navigation bar</li>
<li>Snow fall effect can be enable from other settings</li>
<li>Click new music mix to play songs</li>
<li>Gradient image option for gird list</li>
<li>Clear button for playing queue</li>
<li>Folder list back button</li>
<li>New theme Fit</li>
<li>On library click on toolbar for accessing main menu
</li>
<li>On home click on toolbar for accessing search
</li>
<li>BottomSheetDialogue is now adaptable to screens, background colour and text size
consistency.
</li>
<li>Removed coloured navigation bar option to making app adapt the primary colour</li>
<li>Swipe up gesture for now playing removed, replaced with "tap to open", To achieve
transparent navigation bar for desired themes.
</li>
<li>Improved tablet UI and home screen by adding suggestions toggle banner issues.</li>
<li>Improving lyrics page</li>
</ul>
<p style="line-height:150%"><a href="https://github.com/h4h13/RetroMusicPlayer/wiki/FAQ">FAQ's</a>
</p>
<p style="line-height:150%">*If you face any UI related issues you clear app data and cache, if its
not working try to
uninstall and install again. </p>
</body>
|
|
@ -1,6 +1,7 @@
|
||||||
package code.name.monkey.retromusic
|
package code.name.monkey.retromusic
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.multidex.MultiDexApplication
|
import androidx.multidex.MultiDexApplication
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
|
@ -32,12 +33,12 @@ class App : MultiDexApplication() {
|
||||||
|
|
||||||
|
|
||||||
// automatically restores purchases
|
// automatically restores purchases
|
||||||
billingProcessor = BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSE_KEY,
|
billingProcessor = BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSING_KEY,
|
||||||
object : BillingProcessor.IBillingHandler {
|
object : BillingProcessor.IBillingHandler {
|
||||||
override fun onProductPurchased(productId: String, details: TransactionDetails?) {}
|
override fun onProductPurchased(productId: String, details: TransactionDetails?) {}
|
||||||
|
|
||||||
override fun onPurchaseHistoryRestored() {
|
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?) {}
|
override fun onBillingError(errorCode: Int, error: Throwable?) {}
|
||||||
|
|
|
@ -35,9 +35,9 @@ class AppWidgetSmall : BaseAppWidget() {
|
||||||
|
|
||||||
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE)
|
appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE)
|
||||||
appWidgetView.setImageViewResource(R.id.image, R.drawable.default_album_art)
|
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_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.Companion.createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_skip_previous_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.Companion.createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_play_arrow_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)
|
linkButtons(context, appWidgetView)
|
||||||
pushUpdate(context, appWidgetIds, 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.AppWidgetCard;
|
||||||
import code.name.monkey.retromusic.appwidgets.AppWidgetClassic;
|
import code.name.monkey.retromusic.appwidgets.AppWidgetClassic;
|
||||||
import code.name.monkey.retromusic.appwidgets.AppWidgetSmall;
|
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.BlurTransformation;
|
||||||
import code.name.monkey.retromusic.glide.SongGlideRequest;
|
import code.name.monkey.retromusic.glide.SongGlideRequest;
|
||||||
import code.name.monkey.retromusic.helper.ShuffleHelper;
|
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 AppWidgetClassic appWidgetClassic = AppWidgetClassic.Companion.getInstance();
|
||||||
private AppWidgetSmall appWidgetSmall = AppWidgetSmall.Companion.getInstance();
|
private AppWidgetSmall appWidgetSmall = AppWidgetSmall.Companion.getInstance();
|
||||||
private AppWidgetCard appWidgetCard = AppWidgetCard.Companion.getInstance();
|
private AppWidgetCard appWidgetCard = AppWidgetCard.Companion.getInstance();
|
||||||
|
private AppWidgetText appWidgetText = AppWidgetText.Companion.getInstance();
|
||||||
private final BroadcastReceiver widgetIntentReceiver = new BroadcastReceiver() {
|
private final BroadcastReceiver widgetIntentReceiver = new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(final Context context, final Intent intent) {
|
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);
|
appWidgetCard.performUpdate(MusicService.this, ids);
|
||||||
break;
|
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);
|
appWidgetClassic.notifyChange(this, what);
|
||||||
appWidgetSmall.notifyChange(this, what);
|
appWidgetSmall.notifyChange(this, what);
|
||||||
appWidgetCard.notifyChange(this, what);
|
appWidgetCard.notifyChange(this, what);
|
||||||
|
appWidgetText.notifyChange(this, what);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleChangeInternal(@NonNull final String 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()
|
setupWindowTransition()
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
toggleBottomNavigationView(true)
|
|
||||||
setLightNavigationBar(true)
|
setLightNavigationBar(true)
|
||||||
setNavigationbarColorAuto()
|
setNavigationbarColorAuto()
|
||||||
|
|
||||||
|
toggleBottomNavigationView(true)
|
||||||
|
|
||||||
ActivityCompat.postponeEnterTransition(this)
|
ActivityCompat.postponeEnterTransition(this)
|
||||||
|
|
||||||
val albumId = intent.getIntExtra(EXTRA_ALBUM_ID, -1)
|
val albumId = intent.getIntExtra(EXTRA_ALBUM_ID, -1)
|
||||||
|
|
|
@ -1,24 +1,23 @@
|
||||||
package code.name.monkey.retromusic.ui.activities
|
package code.name.monkey.retromusic.ui.activities
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.view.ViewCompat
|
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import android.widget.ImageView
|
import android.view.WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
|
||||||
|
import androidx.core.view.ViewCompat
|
||||||
import com.bumptech.glide.Glide
|
|
||||||
import com.r0adkll.slidr.Slidr
|
|
||||||
import com.r0adkll.slidr.model.SlidrConfig
|
|
||||||
import com.r0adkll.slidr.model.SlidrPosition
|
|
||||||
|
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
||||||
import code.name.monkey.retromusic.glide.SongGlideRequest
|
import code.name.monkey.retromusic.glide.SongGlideRequest
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
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.activities.base.AbsMusicServiceActivity
|
||||||
import code.name.monkey.retromusic.ui.fragments.player.lockscreen.LockScreenPlayerControlsFragment
|
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() {
|
class LockScreenActivity : AbsMusicServiceActivity() {
|
||||||
private var mFragment: LockScreenPlayerControlsFragment? = null
|
private var mFragment: LockScreenPlayerControlsFragment? = null
|
||||||
|
@ -47,13 +46,15 @@ class LockScreenActivity : AbsMusicServiceActivity() {
|
||||||
|
|
||||||
mFragment = supportFragmentManager.findFragmentById(R.id.playback_controls_fragment) as LockScreenPlayerControlsFragment?
|
mFragment = supportFragmentManager.findFragmentById(R.id.playback_controls_fragment) as LockScreenPlayerControlsFragment?
|
||||||
|
|
||||||
findViewById<View>(R.id.slide).setTranslationY(100f)
|
findViewById<View>(R.id.slide).apply {
|
||||||
findViewById<View>(R.id.slide).setAlpha(0f)
|
translationY = 100f
|
||||||
ViewCompat.animate(findViewById<View>(R.id.slide))
|
alpha = 0f
|
||||||
|
ViewCompat.animate(this)
|
||||||
.translationY(0f)
|
.translationY(0f)
|
||||||
.alpha(1f)
|
.alpha(1f)
|
||||||
.setDuration(1500)
|
.setDuration(1500)
|
||||||
.start()
|
.start()
|
||||||
|
}
|
||||||
|
|
||||||
findViewById<View>(R.id.root_layout).setBackgroundColor(ThemeStore.primaryColor(this))
|
findViewById<View>(R.id.root_layout).setBackgroundColor(ThemeStore.primaryColor(this))
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener {
|
||||||
setStatusbarColorAuto()
|
setStatusbarColorAuto()
|
||||||
setTaskDescriptionColorAuto()
|
setTaskDescriptionColorAuto()
|
||||||
setNavigationbarColorAuto()
|
setNavigationbarColorAuto()
|
||||||
setLightStatusbar(true)
|
|
||||||
|
|
||||||
toolbar.setBackgroundColor(ThemeStore.primaryColor(this))
|
toolbar.setBackgroundColor(ThemeStore.primaryColor(this))
|
||||||
toolbar.navigationIcon = TintHelper.createTintedDrawable(ContextCompat.getDrawable(this@LyricsActivity, R.drawable.ic_keyboard_backspace_black_24dp), ThemeStore.textColorSecondary(this@LyricsActivity))
|
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 android.view.ViewGroup
|
||||||
import androidx.core.app.ActivityCompat
|
import androidx.core.app.ActivityCompat
|
||||||
import androidx.core.app.ShareCompat
|
import androidx.core.app.ShareCompat
|
||||||
|
import androidx.drawerlayout.widget.DrawerLayout
|
||||||
|
import androidx.drawerlayout.widget.DrawerLayout.*
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||||
|
@ -272,7 +274,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP
|
||||||
private fun showPromotionalOffer() {
|
private fun showPromotionalOffer() {
|
||||||
MaterialDialog.Builder(this)
|
MaterialDialog.Builder(this)
|
||||||
.positiveText("Buy")
|
.positiveText("Buy")
|
||||||
.onPositive { _, _ -> startActivity(Intent(this@MainActivity, ProVersionActivity::class.java)) }
|
.onPositive { _, _ -> startActivity(Intent(this@MainActivity, PurchaseActivity::class.java)) }
|
||||||
.negativeText(android.R.string.cancel)
|
.negativeText(android.R.string.cancel)
|
||||||
.customView(R.layout.dialog_promotional_offer, false)
|
.customView(R.layout.dialog_promotional_offer, false)
|
||||||
.dismissListener {
|
.dismissListener {
|
||||||
|
@ -305,7 +307,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP
|
||||||
R.id.nav_library -> Handler().postDelayed({ setMusicChooser(LIBRARY) }, 200)
|
R.id.nav_library -> Handler().postDelayed({ setMusicChooser(LIBRARY) }, 200)
|
||||||
R.id.nav_home -> Handler().postDelayed({ setMusicChooser(HOME) }, 200)
|
R.id.nav_home -> Handler().postDelayed({ setMusicChooser(HOME) }, 200)
|
||||||
R.id.nav_folders -> Handler().postDelayed({ setMusicChooser(FOLDERS) }, 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_settings -> Handler().postDelayed({ NavigationUtil.goToSettings(this@MainActivity) }, 200)
|
||||||
R.id.nav_equalizer -> Handler().postDelayed({ NavigationUtil.openEqualizer(this@MainActivity) }, 200)
|
R.id.nav_equalizer -> Handler().postDelayed({ NavigationUtil.openEqualizer(this@MainActivity) }, 200)
|
||||||
R.id.nav_share_app -> Handler().postDelayed({ shareApp() }, 200)
|
R.id.nav_share_app -> Handler().postDelayed({ shareApp() }, 200)
|
||||||
|
@ -336,7 +338,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP
|
||||||
when (key) {
|
when (key) {
|
||||||
LIBRARY -> {
|
LIBRARY -> {
|
||||||
navigationView.setCheckedItem(R.id.nav_library)
|
navigationView.setCheckedItem(R.id.nav_library)
|
||||||
setCurrentFragment(LibraryFragment.newInstance())
|
setCurrentFragment(LibraryFragment.newInstance(PreferenceUtil.getInstance().lastPage))
|
||||||
}
|
}
|
||||||
FOLDERS -> {
|
FOLDERS -> {
|
||||||
navigationView.setCheckedItem(R.id.nav_folders)
|
navigationView.setCheckedItem(R.id.nav_folders)
|
||||||
|
@ -376,6 +378,15 @@ class MainActivity : AbsSlidingMusicPanelActivity(), SharedPreferences.OnSharedP
|
||||||
return super.onOptionsItemSelected(item)
|
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 {
|
companion object {
|
||||||
const val APP_INTRO_REQUEST = 2323
|
const val APP_INTRO_REQUEST = 2323
|
||||||
const val LIBRARY = 1
|
const val LIBRARY = 1
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package code.name.monkey.retromusic.ui.activities
|
package code.name.monkey.retromusic.ui.activities
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.AsyncTask
|
import android.os.AsyncTask
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
@ -21,10 +20,10 @@ import kotlinx.android.synthetic.main.activity_pro_version_content.*
|
||||||
import java.lang.ref.WeakReference
|
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
|
private var restorePurchaseAsyncTask: AsyncTask<*, *, *>? = null
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
@ -32,7 +31,6 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
||||||
setContentView(R.layout.activity_pro_version)
|
setContentView(R.layout.activity_pro_version)
|
||||||
setDrawUnderStatusBar()
|
setDrawUnderStatusBar()
|
||||||
|
|
||||||
|
|
||||||
setStatusbarColorAuto()
|
setStatusbarColorAuto()
|
||||||
setNavigationbarColorAuto()
|
setNavigationbarColorAuto()
|
||||||
setTaskDescriptionColorAuto()
|
setTaskDescriptionColorAuto()
|
||||||
|
@ -52,7 +50,7 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
||||||
restoreButton.isEnabled = false
|
restoreButton.isEnabled = false
|
||||||
purchaseButton.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(restoreButton, false)
|
||||||
MaterialUtil.setTint(purchaseButton, true)
|
MaterialUtil.setTint(purchaseButton, true)
|
||||||
|
@ -64,7 +62,7 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
||||||
|
|
||||||
}
|
}
|
||||||
purchaseButton.setOnClickListener {
|
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?) {
|
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)
|
super.onActivityResult(requestCode, resultCode, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -115,15 +113,13 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
if (billingProcessor != null) {
|
billingProcessor.release()
|
||||||
billingProcessor!!.release()
|
|
||||||
}
|
|
||||||
super.onDestroy()
|
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() {
|
override fun onPreExecute() {
|
||||||
super.onPreExecute()
|
super.onPreExecute()
|
||||||
|
@ -138,7 +134,7 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
||||||
override fun doInBackground(vararg params: Void): Boolean? {
|
override fun doInBackground(vararg params: Void): Boolean? {
|
||||||
val purchaseActivity = buyActivityWeakReference.get()
|
val purchaseActivity = buyActivityWeakReference.get()
|
||||||
if (purchaseActivity != null) {
|
if (purchaseActivity != null) {
|
||||||
return purchaseActivity.billingProcessor!!.loadOwnedPurchasesFromGoogle()
|
return purchaseActivity.billingProcessor.loadOwnedPurchasesFromGoogle()
|
||||||
}
|
}
|
||||||
cancel(false)
|
cancel(false)
|
||||||
return null
|
return null
|
||||||
|
@ -160,6 +156,6 @@ class ProVersionActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
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
|
package code.name.monkey.retromusic.ui.activities
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
|
import android.content.Intent
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import androidx.annotation.ColorInt
|
import androidx.annotation.ColorInt
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
|
@ -18,6 +21,7 @@ import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import com.afollestad.materialdialogs.color.ColorChooserDialog
|
import com.afollestad.materialdialogs.color.ColorChooserDialog
|
||||||
import kotlinx.android.synthetic.main.activity_settings.*
|
import kotlinx.android.synthetic.main.activity_settings.*
|
||||||
|
|
||||||
|
|
||||||
class SettingsActivity : AbsBaseActivity(), ColorChooserDialog.ColorCallback, SharedPreferences.OnSharedPreferenceChangeListener {
|
class SettingsActivity : AbsBaseActivity(), ColorChooserDialog.ColorCallback, SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
|
|
||||||
private val fragmentManager = supportFragmentManager
|
private val fragmentManager = supportFragmentManager
|
||||||
|
@ -120,6 +124,7 @@ class SettingsActivity : AbsBaseActivity(), ColorChooserDialog.ColorCallback, Sh
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val TAG: String = "SettingsActivity"
|
const val TAG: String = "SettingsActivity"
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ class SupportDevelopmentActivity : AbsBaseActivity(), BillingProcessor.IBillingH
|
||||||
|
|
||||||
setupToolbar()
|
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))
|
TintHelper.setTint(progress, ThemeStore.accentColor(this))
|
||||||
donation.setTextColor(ThemeStore.accentColor(this))
|
donation.setTextColor(ThemeStore.accentColor(this))
|
||||||
donate.setOnClickListener {
|
donate.setOnClickListener {
|
||||||
|
|
|
@ -10,7 +10,7 @@ import com.google.android.gms.common.ConnectionResult
|
||||||
import com.google.android.gms.common.GoogleApiAvailability
|
import com.google.android.gms.common.GoogleApiAvailability
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
abstract class AbsCastActivity : AbsBaseActivity() {
|
abstract class AbsCastActivity : AbsCheckPiracy() {
|
||||||
|
|
||||||
var playServicesAvailable = false
|
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.normal.PlayerFragment
|
||||||
import code.name.monkey.retromusic.ui.fragments.player.plain.PlainPlayerFragment
|
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.ui.fragments.player.simple.SimplePlayerFragment
|
||||||
import code.name.monkey.retromusic.util.ColorUtils
|
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.views.BottomNavigationBarTinted
|
import code.name.monkey.retromusic.views.BottomNavigationBarTinted
|
||||||
import com.google.android.material.bottomnavigation.BottomNavigationView
|
import com.google.android.material.bottomnavigation.BottomNavigationView
|
||||||
import com.sothree.slidinguppanel.SlidingUpPanelLayout
|
import com.sothree.slidinguppanel.SlidingUpPanelLayout
|
||||||
import com.sothree.slidinguppanel.SlidingUpPanelLayout.PanelState
|
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 {
|
abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicServiceActivity(), SlidingUpPanelLayout.PanelSlideListener, AbsPlayerFragment.Callbacks {
|
||||||
|
|
||||||
|
|
||||||
lateinit var slidingUpPanelLayout: SlidingUpPanelLayout
|
|
||||||
private lateinit var bottomNavigationView: BottomNavigationBarTinted
|
|
||||||
|
|
||||||
private var miniPlayerFragment: MiniPlayerFragment? = null
|
private var miniPlayerFragment: MiniPlayerFragment? = null
|
||||||
var playerFragment: AbsPlayerFragment? = null
|
private var playerFragment: AbsPlayerFragment? = null
|
||||||
private var currentNowPlayingScreen: NowPlayingScreen? = null
|
private var currentNowPlayingScreen: NowPlayingScreen? = null
|
||||||
|
|
||||||
private var navigationbarColor: Int = 0
|
private var navigationbarColor: Int = 0
|
||||||
private var taskColor: Int = 0
|
private var taskColor: Int = 0
|
||||||
private var lightStatusbar: Boolean = false
|
private var lightStatusbar: Boolean = false
|
||||||
|
@ -54,7 +50,7 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
||||||
private val argbEvaluator = ArgbEvaluator()
|
private val argbEvaluator = ArgbEvaluator()
|
||||||
|
|
||||||
val panelState: SlidingUpPanelLayout.PanelState?
|
val panelState: SlidingUpPanelLayout.PanelState?
|
||||||
get() = slidingUpPanelLayout.panelState
|
get() = slidingLayout.panelState
|
||||||
|
|
||||||
private val isOneOfTheseThemes: Boolean
|
private val isOneOfTheseThemes: Boolean
|
||||||
get() = (currentNowPlayingScreen == NowPlayingScreen.ADAPTIVE)
|
get() = (currentNowPlayingScreen == NowPlayingScreen.ADAPTIVE)
|
||||||
|
@ -63,8 +59,6 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(createContentView())
|
setContentView(createContentView())
|
||||||
|
|
||||||
slidingUpPanelLayout = findViewById(R.id.sliding_layout);
|
|
||||||
bottomNavigationView = findViewById(R.id.bottom_navigation);
|
|
||||||
|
|
||||||
chooseFragmentForTheme()
|
chooseFragmentForTheme()
|
||||||
setupSlidingUpPanel()
|
setupSlidingUpPanel()
|
||||||
|
@ -80,9 +74,9 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
||||||
override fun onServiceConnected() {
|
override fun onServiceConnected() {
|
||||||
super.onServiceConnected()
|
super.onServiceConnected()
|
||||||
if (!MusicPlayerRemote.playingQueue.isEmpty()) {
|
if (!MusicPlayerRemote.playingQueue.isEmpty()) {
|
||||||
slidingUpPanelLayout.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
slidingLayout.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
||||||
override fun onGlobalLayout() {
|
override fun onGlobalLayout() {
|
||||||
slidingUpPanelLayout.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
slidingLayout.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||||
hideBottomBar(false)
|
hideBottomBar(false)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -99,11 +93,11 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
||||||
val heightOfBarWithTabs = resources.getDimensionPixelSize(R.dimen.mini_player_height_expanded)
|
val heightOfBarWithTabs = resources.getDimensionPixelSize(R.dimen.mini_player_height_expanded)
|
||||||
|
|
||||||
if (hide) {
|
if (hide) {
|
||||||
slidingUpPanelLayout.panelHeight = 0
|
slidingLayout.panelHeight = 0
|
||||||
collapsePanel()
|
collapsePanel()
|
||||||
} else {
|
} else {
|
||||||
if (!MusicPlayerRemote.playingQueue.isEmpty()) {
|
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 {
|
protected fun wrapSlidingMusicPanel(@LayoutRes resId: Int): View {
|
||||||
@SuppressLint("InflateParams")
|
@SuppressLint("InflateParams")
|
||||||
val slidingMusicPanelLayout = layoutInflater.inflate(R.layout.sliding_music_panel_layout, null)
|
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)
|
layoutInflater.inflate(resId, contentContainer)
|
||||||
return slidingMusicPanelLayout
|
return slidingMusicPanelLayout
|
||||||
}
|
}
|
||||||
|
@ -122,7 +116,7 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun handleBackPress(): Boolean {
|
open fun handleBackPress(): Boolean {
|
||||||
if (slidingUpPanelLayout.panelHeight != 0 && playerFragment!!.onBackPressed())
|
if (slidingLayout.panelHeight != 0 && playerFragment!!.onBackPressed())
|
||||||
return true
|
return true
|
||||||
if (panelState == SlidingUpPanelLayout.PanelState.EXPANDED) {
|
if (panelState == SlidingUpPanelLayout.PanelState.EXPANDED) {
|
||||||
collapsePanel()
|
collapsePanel()
|
||||||
|
@ -142,18 +136,18 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
||||||
bottomNavigationView.visibility = if (toggle) View.GONE else View.VISIBLE
|
bottomNavigationView.visibility = if (toggle) View.GONE else View.VISIBLE
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getBottomNavigationView(): BottomNavigationView? {
|
fun getBottomNavigationView(): BottomNavigationBarTinted? {
|
||||||
return bottomNavigationView
|
return bottomNavigationView
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupSlidingUpPanel() {
|
private fun setupSlidingUpPanel() {
|
||||||
slidingUpPanelLayout.viewTreeObserver
|
slidingLayout.viewTreeObserver
|
||||||
.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
||||||
override fun onGlobalLayout() {
|
override fun onGlobalLayout() {
|
||||||
slidingUpPanelLayout.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
slidingLayout.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||||
|
|
||||||
if (panelState == PanelState.EXPANDED) {
|
if (panelState == PanelState.EXPANDED) {
|
||||||
onPanelSlide(slidingUpPanelLayout, 1f)
|
onPanelSlide(slidingLayout, 1f)
|
||||||
onPanelExpanded()
|
onPanelExpanded()
|
||||||
} else if (panelState == PanelState.COLLAPSED) {
|
} else if (panelState == PanelState.COLLAPSED) {
|
||||||
onPanelCollapsed()
|
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
|
// restore values
|
||||||
super.setLightStatusbar(lightStatusbar)
|
super.setLightStatusbar(lightStatusbar)
|
||||||
super.setTaskDescriptionColor(taskColor)
|
super.setTaskDescriptionColor(taskColor)
|
||||||
|
@ -195,7 +189,7 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
||||||
playerFragment!!.onHide()
|
playerFragment!!.onHide()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onPanelExpanded() {
|
open fun onPanelExpanded() {
|
||||||
val playerFragmentColor = playerFragment!!.paletteColor
|
val playerFragmentColor = playerFragment!!.paletteColor
|
||||||
super.setTaskDescriptionColor(playerFragmentColor)
|
super.setTaskDescriptionColor(playerFragmentColor)
|
||||||
|
|
||||||
|
@ -231,11 +225,11 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
||||||
NowPlayingScreen.COLOR -> ColorFragment()
|
NowPlayingScreen.COLOR -> ColorFragment()
|
||||||
else -> PlayerFragment()
|
else -> PlayerFragment()
|
||||||
} // must implement AbsPlayerFragment
|
} // must implement AbsPlayerFragment
|
||||||
supportFragmentManager.beginTransaction().replace(R.id.player_fragment_container, fragment).commit()
|
supportFragmentManager.beginTransaction().replace(R.id.playerFragmentContainer, fragment).commit()
|
||||||
supportFragmentManager.executePendingTransactions()
|
supportFragmentManager.executePendingTransactions()
|
||||||
|
|
||||||
playerFragment = supportFragmentManager.findFragmentById(R.id.player_fragment_container) as AbsPlayerFragment
|
playerFragment = supportFragmentManager.findFragmentById(R.id.playerFragmentContainer) as AbsPlayerFragment
|
||||||
miniPlayerFragment = supportFragmentManager.findFragmentById(R.id.mini_player_fragment) as MiniPlayerFragment
|
miniPlayerFragment = supportFragmentManager.findFragmentById(R.id.miniPlayerFragment) as MiniPlayerFragment
|
||||||
miniPlayerFragment!!.view!!.setOnClickListener { expandPanel() }
|
miniPlayerFragment!!.view!!.setOnClickListener { expandPanel() }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -248,11 +242,11 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun collapsePanel() {
|
private fun collapsePanel() {
|
||||||
slidingUpPanelLayout.panelState = PanelState.COLLAPSED
|
slidingLayout.panelState = PanelState.COLLAPSED
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun expandPanel() {
|
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.setLightNavigationBar(true)
|
||||||
super.setLightStatusbar(isColorLight)
|
super.setLightStatusbar(isColorLight)
|
||||||
} else if (currentNowPlayingScreen == NowPlayingScreen.FULL || currentNowPlayingScreen == NowPlayingScreen.CARD ||
|
} else if (currentNowPlayingScreen == NowPlayingScreen.FULL || currentNowPlayingScreen == NowPlayingScreen.CARD ||
|
||||||
|
currentNowPlayingScreen == NowPlayingScreen.FIT ||
|
||||||
currentNowPlayingScreen == NowPlayingScreen.BLUR || currentNowPlayingScreen == NowPlayingScreen.BLUR_CARD) {
|
currentNowPlayingScreen == NowPlayingScreen.BLUR || currentNowPlayingScreen == NowPlayingScreen.BLUR_CARD) {
|
||||||
super.setLightStatusbar(false)
|
super.setLightStatusbar(false)
|
||||||
super.setLightNavigationBar(true)
|
super.setLightNavigationBar(true)
|
||||||
|
|
|
@ -43,13 +43,16 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(), ViewPager.OnPageChan
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
viewPager.addOnPageChangeListener(this)
|
viewPager.addOnPageChangeListener(this)
|
||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
if (PreferenceUtil.getInstance().carouselEffect() && !((PreferenceUtil.getInstance().nowPlayingScreen == NowPlayingScreen.FULL) || (PreferenceUtil.getInstance().nowPlayingScreen == NowPlayingScreen.FIT))) {
|
if (PreferenceUtil.getInstance().carouselEffect() &&
|
||||||
viewPager.clipToPadding = false;
|
!((PreferenceUtil.getInstance().nowPlayingScreen == NowPlayingScreen.FULL)
|
||||||
viewPager.setPadding(96, 0, 96, 0);
|
|| (PreferenceUtil.getInstance().nowPlayingScreen == NowPlayingScreen.FIT))) {
|
||||||
viewPager.pageMargin = 18;
|
viewPager.clipToPadding = false
|
||||||
viewPager.setPageTransformer(false, CarousalPagerTransformer(context!!));
|
viewPager.setPadding(96, 0, 96, 0)
|
||||||
|
viewPager.pageMargin = 18
|
||||||
|
viewPager.setPageTransformer(false, CarousalPagerTransformer(context!!))
|
||||||
} else {
|
} 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 {
|
companion object {
|
||||||
val TAG: String = PlayerAlbumCoverFragment::class.java.simpleName
|
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?
|
val volumeFragment = childFragmentManager.findFragmentById(R.id.volumeFragment) as VolumeFragment?
|
||||||
volumeFragment!!.tintWhiteColor()
|
volumeFragment!!.tintWhiteColor()
|
||||||
|
|
||||||
|
|
||||||
|
songTotalTime.setTextColor(Color.WHITE)
|
||||||
|
songCurrentProgress.setTextColor(Color.WHITE)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
|
@ -1,14 +1,22 @@
|
||||||
package code.name.monkey.retromusic.ui.fragments.settings
|
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.content.SharedPreferences
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.preference.TwoStatePreference
|
import androidx.preference.TwoStatePreference
|
||||||
import code.name.monkey.retromusic.App
|
import code.name.monkey.retromusic.App
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
import code.name.monkey.retromusic.ui.activities.SettingsActivity.Companion.RESULT_ENABLE
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
|
|
||||||
|
|
||||||
class PersonaizeSettingsFragment : AbsSettingsFragment(), SharedPreferences.OnSharedPreferenceChangeListener {
|
class PersonaizeSettingsFragment : AbsSettingsFragment(), SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
|
|
||||||
override fun invalidateSettings() {
|
override fun invalidateSettings() {
|
||||||
val cornerWindow = findPreference("corner_window") as TwoStatePreference
|
val cornerWindow = findPreference("corner_window") as TwoStatePreference
|
||||||
cornerWindow.setOnPreferenceChangeListener { _, newValue ->
|
cornerWindow.setOnPreferenceChangeListener { _, newValue ->
|
||||||
|
@ -17,15 +25,17 @@ class PersonaizeSettingsFragment : AbsSettingsFragment(), SharedPreferences.OnSh
|
||||||
return@setOnPreferenceChangeListener false
|
return@setOnPreferenceChangeListener false
|
||||||
}
|
}
|
||||||
activity!!.recreate()
|
activity!!.recreate()
|
||||||
true
|
return@setOnPreferenceChangeListener true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
val toggleFullScreen = findPreference("toggle_full_screen") as TwoStatePreference
|
val toggleFullScreen = findPreference("toggle_full_screen") as TwoStatePreference
|
||||||
toggleFullScreen.setOnPreferenceChangeListener { _, newValue ->
|
toggleFullScreen.setOnPreferenceChangeListener { _, _ ->
|
||||||
activity!!.recreate()
|
activity!!.recreate()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
|
@ -36,7 +46,6 @@ class PersonaizeSettingsFragment : AbsSettingsFragment(), SharedPreferences.OnSh
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
PreferenceUtil.getInstance().registerOnSharedPreferenceChangedListener(this)
|
PreferenceUtil.getInstance().registerOnSharedPreferenceChangedListener(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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.LyricsActivity;
|
||||||
import code.name.monkey.retromusic.ui.activities.PlayingQueueActivity;
|
import code.name.monkey.retromusic.ui.activities.PlayingQueueActivity;
|
||||||
import code.name.monkey.retromusic.ui.activities.PlaylistDetailActivity;
|
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.SearchActivity;
|
||||||
import code.name.monkey.retromusic.ui.activities.SettingsActivity;
|
import code.name.monkey.retromusic.ui.activities.SettingsActivity;
|
||||||
import code.name.monkey.retromusic.ui.activities.SupportDevelopmentActivity;
|
import code.name.monkey.retromusic.ui.activities.SupportDevelopmentActivity;
|
||||||
|
@ -106,7 +106,7 @@ public class NavigationUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void goToProVersion(@NonNull Activity activity) {
|
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) {
|
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.HingeTransformation;
|
||||||
import code.name.monkey.retromusic.transform.HorizontalFlipTransformation;
|
import code.name.monkey.retromusic.transform.HorizontalFlipTransformation;
|
||||||
import code.name.monkey.retromusic.transform.NormalPageTransformer;
|
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.transform.VerticalFlipTransformation;
|
||||||
import code.name.monkey.retromusic.ui.activities.MainActivity;
|
import code.name.monkey.retromusic.ui.activities.MainActivity;
|
||||||
import code.name.monkey.retromusic.ui.fragments.AlbumCoverStyle;
|
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")));
|
int style = Integer.parseInt(Objects.requireNonNull(mPreferences.getString(ALBUM_COVER_TRANSFORM, "0")));
|
||||||
switch (style) {
|
switch (style) {
|
||||||
default:
|
default:
|
||||||
|
@ -755,6 +757,8 @@ public final class PreferenceUtil {
|
||||||
return new VerticalFlipTransformation();
|
return new VerticalFlipTransformation();
|
||||||
case 5:
|
case 5:
|
||||||
return new HingeTransformation();
|
return new HingeTransformation();
|
||||||
|
case 6:
|
||||||
|
return new StackTransformer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 63 KiB |
BIN
app/src/main/res/drawable/img_offer.webp
Normal file
BIN
app/src/main/res/drawable/img_offer.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
|
@ -25,16 +25,9 @@
|
||||||
|
|
||||||
<com.google.android.material.tabs.TabLayout
|
<com.google.android.material.tabs.TabLayout
|
||||||
android:id="@+id/tabs"
|
android:id="@+id/tabs"
|
||||||
android:layout_width="match_parent"
|
style="@style/TabLayoutStyle"
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:tabGravity="fill"
|
|
||||||
android:background="@android:color/transparent"
|
android:background="@android:color/transparent"
|
||||||
app:tabTextAppearance="@style/TabTextAppearance"
|
app:tabTextAppearance="@style/TabTextAppearance">
|
||||||
app:tabIndicator="@drawable/tab_indicator"
|
|
||||||
app:tabIndicatorAnimationDuration="@integer/anim_duration_medium"
|
|
||||||
app:tabIndicatorFullWidth="false"
|
|
||||||
app:tabIndicatorHeight="4dp"
|
|
||||||
app:tabInlineLabel="true">
|
|
||||||
|
|
||||||
<com.google.android.material.tabs.TabItem
|
<com.google.android.material.tabs.TabItem
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
85
app/src/main/res/layout/app_widget_text.xml
Normal file
85
app/src/main/res/layout/app_widget_text.xml
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
|
tools:background="@color/md_red_500">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/media_titles"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="fill"
|
||||||
|
android:focusable="true"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingLeft="8dp"
|
||||||
|
android:paddingRight="8dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:paddingStart="4dp"
|
||||||
|
android:paddingEnd="4dp"
|
||||||
|
android:text="@string/normal_lyrics"
|
||||||
|
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
|
||||||
|
android:textColor="@color/md_white_1000" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/text"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:paddingStart="4dp"
|
||||||
|
android:paddingEnd="4dp"
|
||||||
|
android:text="@string/normal_lyrics"
|
||||||
|
android:textAppearance="@style/TextAppearance.AppCompat.Caption"
|
||||||
|
android:textColor="@color/md_white_1000" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/media_actions"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:focusable="true"
|
||||||
|
android:gravity="center"
|
||||||
|
android:layoutDirection="ltr"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/button_prev"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="@dimen/app_widget_small_button_height"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="@drawable/widget_selector"
|
||||||
|
tools:ignore="ContentDescription"
|
||||||
|
tools:src="@drawable/ic_skip_previous_white_24dp"
|
||||||
|
tools:tint="@color/ate_secondary_text_dark" />
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/button_toggle_play_pause"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="@dimen/app_widget_small_button_height"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="@drawable/widget_selector"
|
||||||
|
tools:ignore="ContentDescription"
|
||||||
|
tools:src="@drawable/ic_play_arrow_white_24dp"
|
||||||
|
tools:tint="@color/ate_secondary_text_dark" />
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/button_next"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="@dimen/app_widget_small_button_height"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="@drawable/widget_selector"
|
||||||
|
tools:ignore="ContentDescription"
|
||||||
|
tools:src="@drawable/ic_skip_next_white_24dp"
|
||||||
|
tools:tint="@color/ate_secondary_text_dark" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
|
@ -1,6 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -10,15 +9,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:scaleType="centerCrop"
|
android:scaleType="centerCrop"
|
||||||
android:src="@drawable/diwali" />
|
android:src="@drawable/img_offer" />
|
||||||
|
|
||||||
<com.google.android.material.card.MaterialCardView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="bottom"
|
|
||||||
app:cardCornerRadius="8dp"
|
|
||||||
app:cardBackgroundColor="@color/md_red_500"
|
|
||||||
app:cardUseCompatPadding="true">
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -31,50 +22,50 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center">
|
android:layout_gravity="center">
|
||||||
|
|
||||||
<code.name.monkey.appthemehelper.common.views.ATEPrimaryTextView xmlns:tools="http://schemas.android.com/tools"
|
<TextView
|
||||||
android:id="@+id/title"
|
android:id="@+id/title"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:text="70"
|
android:text="70"
|
||||||
android:textColor="@android:color/white"
|
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline1"
|
||||||
android:textSize="108sp"
|
android:textColor="@android:color/black"
|
||||||
tools:ignore="MissingPrefix" />
|
tools:ignore="MissingPrefix" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:paddingTop="32dp"
|
android:paddingTop="32dp"
|
||||||
android:paddingBottom="32dp">
|
android:paddingBottom="32dp">
|
||||||
|
|
||||||
<code.name.monkey.appthemehelper.common.views.ATESecondaryTextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:text="%"
|
android:text="%"
|
||||||
android:textAppearance="@style/Base.TextAppearance.AppCompat.Title"
|
android:textColor="@android:color/black" />
|
||||||
android:textColor="@android:color/white" />
|
|
||||||
|
|
||||||
<code.name.monkey.appthemehelper.common.views.ATESecondaryTextView
|
<TextView
|
||||||
android:id="@+id/off"
|
android:id="@+id/off"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="0"
|
android:layout_weight="0"
|
||||||
android:text="Off"
|
android:text="Off"
|
||||||
android:textColor="@android:color/white"
|
android:textColor="@android:color/black"
|
||||||
android:textStyle="italic" />
|
android:textStyle="italic" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<code.name.monkey.appthemehelper.common.views.ATESecondaryTextView
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center_horizontal|bottom"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="Diwali offer"
|
android:text="Christmas offer"
|
||||||
android:textAppearance="@style/Base.TextAppearance.AppCompat.Title"
|
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline5"
|
||||||
android:textColor="@android:color/white" />
|
android:textColor="@android:color/black" />
|
||||||
</LinearLayout>
|
|
||||||
</com.google.android.material.card.MaterialCardView>
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
|
@ -3,11 +3,11 @@
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:id="@+id/main_content"
|
android:id="@+id/mainContent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<com.sothree.slidinguppanel.SlidingUpPanelLayout xmlns:sothree="http://schemas.android.com/apk/res-auto"
|
<com.sothree.slidinguppanel.SlidingUpPanelLayout xmlns:sothree="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/sliding_layout"
|
android:id="@+id/slidingLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="bottom"
|
android:gravity="bottom"
|
||||||
|
@ -17,24 +17,24 @@
|
||||||
sothree:umanoShadowHeight="0dp">
|
sothree:umanoShadowHeight="0dp">
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/content_container"
|
android:id="@+id/mainContentFrame"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1" />
|
android:layout_weight="1" />
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/sliding_panel"
|
android:id="@+id/slidingPanel"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/player_fragment_container"
|
android:id="@+id/playerFragmentContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/mini_player_fragment"
|
android:id="@+id/miniPlayerFragment"
|
||||||
android:name="code.name.monkey.retromusic.ui.fragments.MiniPlayerFragment"
|
android:name="code.name.monkey.retromusic.ui.fragments.MiniPlayerFragment"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
</com.sothree.slidinguppanel.SlidingUpPanelLayout>
|
</com.sothree.slidinguppanel.SlidingUpPanelLayout>
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.BottomNavigationBarTinted
|
<code.name.monkey.retromusic.views.BottomNavigationBarTinted
|
||||||
android:id="@+id/bottom_navigation"
|
android:id="@+id/bottomNavigationView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="56dp"
|
android:layout_height="56dp"
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
<item>@string/vertical_flip</item>
|
<item>@string/vertical_flip</item>
|
||||||
<item>@string/horizontal_flip</item>
|
<item>@string/horizontal_flip</item>
|
||||||
<item>@string/hinge</item>
|
<item>@string/hinge</item>
|
||||||
|
<item>@string/stack</item>
|
||||||
</array>
|
</array>
|
||||||
|
|
||||||
<string-array name="pref_album_cover_transform_values">
|
<string-array name="pref_album_cover_transform_values">
|
||||||
|
@ -16,6 +17,7 @@
|
||||||
<item>3</item>
|
<item>3</item>
|
||||||
<item>4</item>
|
<item>4</item>
|
||||||
<item>5</item>
|
<item>5</item>
|
||||||
|
<item>6</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string-array name="pref_tab_text_mode_values">
|
<string-array name="pref_tab_text_mode_values">
|
||||||
|
@ -208,4 +210,5 @@
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string name="image_gradient">Gradient image</string>
|
<string name="image_gradient">Gradient image</string>
|
||||||
|
<string name="stack">Stack</string>
|
||||||
</resources>
|
</resources>
|
|
@ -74,6 +74,7 @@
|
||||||
<string name="app_widget_card_name">Retro music - Card</string>
|
<string name="app_widget_card_name">Retro music - Card</string>
|
||||||
<string name="app_widget_classic_name">Retro music - Classic</string>
|
<string name="app_widget_classic_name">Retro music - Classic</string>
|
||||||
<string name="app_widget_small_name">Retro music - Small</string>
|
<string name="app_widget_small_name">Retro music - Small</string>
|
||||||
|
<string name="app_widget_text_name">Retro music - Text</string>
|
||||||
|
|
||||||
<string name="artist">Artist</string>
|
<string name="artist">Artist</string>
|
||||||
|
|
||||||
|
|
|
@ -110,5 +110,20 @@
|
||||||
|
|
||||||
<style name="TabTextAppearance" parent="TextAppearance.Design.Tab">
|
<style name="TabTextAppearance" parent="TextAppearance.Design.Tab">
|
||||||
<item name="android:textAllCaps">false</item>
|
<item name="android:textAllCaps">false</item>
|
||||||
|
<item name="textAllCaps">false</item>
|
||||||
|
<item name="android:fontFamily">@font/font</item>
|
||||||
|
<item name="android:textStyle">bold</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="TabLayoutStyle" parent="Base.Widget.Design.TabLayout">
|
||||||
|
<item name="tabIndicator">@drawable/tab_indicator</item>
|
||||||
|
<item name="tabIndicatorFullWidth">false</item>
|
||||||
|
<item name="tabIndicatorAnimationDuration">@integer/anim_duration_medium</item>
|
||||||
|
<item name="tabGravity">fill</item>
|
||||||
|
<item name="tabIndicatorHeight">4dp</item>
|
||||||
|
<item name="tabInlineLabel">true</item>
|
||||||
|
<item name="tabTextAppearance">@style/TabTextAppearance</item>
|
||||||
|
<item name="android:layout_width">match_parent</item>
|
||||||
|
<item name="android:layout_height">wrap_content</item>
|
||||||
</style>
|
</style>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:initialLayout="@layout/app_widget_small"
|
android:initialLayout="@layout/app_widget_small"
|
||||||
android:minHeight="@dimen/app_widget_small_min_height"
|
|
||||||
android:minWidth="@dimen/app_widget_small_min_width"
|
android:minWidth="@dimen/app_widget_small_min_width"
|
||||||
|
android:minHeight="@dimen/app_widget_small_min_height"
|
||||||
android:resizeMode="horizontal|vertical"
|
android:resizeMode="horizontal|vertical"
|
||||||
android:updatePeriodMillis="0"
|
android:updatePeriodMillis="0"
|
||||||
android:widgetCategory="keyguard|home_screen"
|
android:widgetCategory="keyguard|home_screen"
|
||||||
|
|
8
app/src/main/res/xml/app_widget_text.xml
Normal file
8
app/src/main/res/xml/app_widget_text.xml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:initialLayout="@layout/app_widget_text"
|
||||||
|
android:minWidth="@dimen/app_widget_small_min_width"
|
||||||
|
android:minHeight="@dimen/app_widget_small_min_height"
|
||||||
|
android:resizeMode="horizontal|vertical"
|
||||||
|
android:updatePeriodMillis="0"
|
||||||
|
android:widgetCategory="keyguard|home_screen" />
|
|
@ -64,6 +64,7 @@
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/not_namespaced_r_class_sources/debugAndroidTest/processDebugAndroidTestResources/r" isTestSource="true" generated="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
|
||||||
|
@ -112,21 +113,16 @@
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
|
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
|
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/generated/not_namespaced_r_class_sources" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/generated/source/r" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/aapt_friendly_merged_manifests" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/aapt_friendly_merged_manifests" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations_typedef_file" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations_zip" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/consumer_proguard_file" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/intermediate-jars" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/intermediate-jars" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/library_and_local_jars_jni" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/library_assets" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/library_assets" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/packaged-classes" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/packaged_res" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/packaged_res" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/public_res" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/public_res" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
|
||||||
|
@ -140,47 +136,47 @@
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
|
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.swiperefreshlayout:swiperefreshlayout:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.slidingpanelayout:slidingpanelayout-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.legacy:legacy-support-core-ui:1.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: androidx.viewpager:viewpager:1.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: com.google.android.material:material:1.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: androidx.loader:loader:1.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.3.10@jar" level="project" />
|
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.3.10@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.drawerlayout:drawerlayout:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata-2.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.documentfile:documentfile:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-runtime-2.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.localbroadcastmanager:localbroadcastmanager:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.drawerlayout:drawerlayout-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.appcompat:appcompat:1.0.2@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata-core-2.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.recyclerview:recyclerview:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.cardview:cardview-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.cardview:cardview:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.core:core-1.0.1" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-runtime:2.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: me.zhanghai.android.materialprogressbar:library-1.4.2" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata-core:2.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.appcompat:appcompat-1.0.2" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.cursoradapter:cursoradapter:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.google.android.material:material-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata:2.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.transition:transition-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.customview:customview:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.versionedparcelable:versionedparcelable-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable-animated:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.legacy:legacy-support-core-utils-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.asynclayoutinflater:asynclayoutinflater:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.fragment:fragment-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable:1.0.1@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: androidx.interpolator:interpolator:1.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: androidx.fragment:fragment:1.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-common:2.0.0@jar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-common:2.0.0@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.legacy:legacy-support-core-utils:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.swiperefreshlayout:swiperefreshlayout-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.print:print:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:commons-0.9.6.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.versionedparcelable:versionedparcelable:1.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: me.zhanghai.android.materialprogressbar:library:1.4.2@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0@jar" level="project" />
|
<orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-viewmodel:2.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-viewmodel-2.0.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: androidx.coordinatorlayout:coordinatorlayout-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.10@jar" level="project" />
|
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.10@jar" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: androidx.documentfile:documentfile-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.10@jar" level="project" />
|
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.10@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.slidingpanelayout:slidingpanelayout:1.0.0@aar" level="project" />
|
|
||||||
<orderEntry type="library" name="Gradle: androidx.arch.core:core-common:2.0.0@jar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.arch.core:core-common:2.0.0@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.transition:transition:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.viewpager:viewpager-1.0.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: androidx.recyclerview:recyclerview-1.0.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: androidx.arch.core:core-runtime-2.0.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: androidx.preference:preference-1.0.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: androidx.legacy:legacy-support-core-ui-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.annotation:annotation:1.0.0@jar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.annotation:annotation:1.0.0@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.coordinatorlayout:coordinatorlayout:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.interpolator:interpolator-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.preference:preference:1.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:core-0.9.6.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.arch.core:core-runtime:2.0.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable-1.0.1" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.core:core:1.0.1@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable-animated-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:core:0.9.6.0@aar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.loader:loader-1.0.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: androidx.customview:customview-1.0.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: androidx.localbroadcastmanager:localbroadcastmanager-1.0.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: androidx.asynclayoutinflater:asynclayoutinflater-1.0.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: androidx.cursoradapter:cursoradapter-1.0.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: androidx.print:print-1.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: androidx.collection:collection:1.0.0@jar" level="project" />
|
<orderEntry type="library" name="Gradle: androidx.collection:collection:1.0.0@jar" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:commons:0.9.6.0@aar" level="project" />
|
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
Loading…
Reference in a new issue