diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 000000000..411c07777
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,4 @@
+* text=auto eol=lf
+
+*.bat text eol=crlf
+*.jar binary
diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
index ac72f0bef..e450294c1 100644
--- a/.github/workflows/android.yml
+++ b/.github/workflows/android.yml
@@ -7,28 +7,28 @@ on:
branches: [ dev ]
jobs:
- build:
-
+ check:
runs-on: ubuntu-latest
-
+ timeout-minutes: 10
steps:
- - uses: actions/checkout@v2
- - name: set up JDK 11
- uses: actions/setup-java@v2
- with:
- java-version: '11'
- distribution: 'temurin'
- cache: gradle
+ - uses: actions/checkout@v3
+ - uses: gradle/wrapper-validation-action@v1
+ - uses: actions/setup-java@v3
+ with:
+ distribution: 'zulu'
+ java-version: 17
+ - uses: gradle/gradle-build-action@v2
+ - name: Lint Android
+ run: ./gradlew lint
- - name: Generate temporary keystore
- run: keytool -genkey -v -storetype pkcs12 -keystore store.p12 -storepass android -alias android -keyalg RSA -keysize 2048 -validity 10000 -dname CN=CI
- - name: Write retro.properties
- run: |
- cat >retro.properties <
-
-
- Retro Music Player 🎵
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-___
-
-## 🆕 Material You Design Music Player for Android music lovers
-
-## ⚠ Join [@retromusiclog](https://telegram.me/retromusiclog) on Telegram for important updates.
-___
-
-## 📱 Screenshots
-### App Themes
-| | | |
-|:---:|:---:|:---:|
-|Clearly white| Kinda dark | Just black|
-
-### Player screen
-| | | | | |
-|:---:|:---:|:---:|:---:|:---:|
-| Home | Songs | Albums | Artists | Settings |
-
-### Synced lyrics screen (Over Cover)
-| | | |
-|:---:|:---:|:---:|
-| Synced Over Cover light | Synced Over Cover dark | Synced Over Cover black |
-
-### Synced lyrics screen (Replace Cover)
-| | | |
-|:---:|:---:|:---:|
-| Synced Replace Cover light | Synced Replace Cover dark | Synced Replace Cover black |
-
-### 10+ Now playing themes
-| | | | | |
-|:-----: |:-----: |:-----: |:-----: |:-----: |
-| Normal | Fit | Flat | Color | Material |
-
-| | | | | |
-|:-----: |:-----: |:-----: |:-----: |:-----: |
-| Classic | Adaptive | Blur | Tiny | Peek |
-
-___
-
-## 🧭 Navigation never made easier
-Self-explanatory interface without overloaded menus.
-
-## 🎨 Colorful
-You can choose between three different main themes: Clearly White, Kinda
-Dark and Just Black for AMOLED displays. Select your favorite accent
-color from a color palette.
-
-## 🏠 Home
-Where you can view your recently/top played artists, albums and
-favorite songs. No other music player has this feature.
-
-## 📦 Included Features
-- Base 3 themes (Clearly White, Kinda Dark and Just Black)
-- Chromecast support
-- Choose from 10+ now playing themes
-- Driving Mode
-- Headset/Bluetooth support
-- Music duration filter
-- Android auto support
-- Wallpaper accent picker on Android 8.1+
-- Material You support on Android 12+
-- Monet themed icon support on Android 13+
-- Folder support - Play songs by folder
-- Gapless playback
-- Volume controls
-- Carousel effect for album covers
-- Home screen widgets
-- Lock screen playback controls
-- Lyrics screen (download and sync with music)
-- Sleep timer
-- Easy drag to sort playlist & play queue
-- Tag editor
-- Create, edit and import playlists
-- Playing queue with reorder
-- User profile
-- 30+ languages support (help translate the project: [Crowdin](https://crowdin.com/project/retromusicplayer)
-- Browse and play your music by songs, albums, artists, playlists and
- genre
-- Smart Auto Playlists - Recently played, most played and history
-- Build your playlist on the go
-
-We are trying our best to bring you the best user experience. The app is regularly being updated for bug fixes and new features.
-
-___
-
-
-## ❓ FAQ
-Please read the FAQ [here](https://retromusic.app/faq.html)
-
-In any case, you find or notice any bugs please report them by creating an issue or by contacting us in the [Telegram help & feedback group](https://t.me/retromusicapp).
-If you have any feature suggestions, please create an issue with detailed information or by contacting us in the [Telegram suggestions group](https://t.me/retro_music_suggestion).
-
-## 🔗 Social links
-**Telegram:** https://t.me/retromusicapp
-**Instagram:** https://instagram.com/retromusicapp
-**Crowdin**: https://crowdin.com/project/retromusicplayer
-**Pinterest:** https://pinterest.com/retromusicapp
-**Twitter:** https://twitter.com/retromusicapp
-
-## 🗂️ License
-
-Retro Music Player is released under the GNU General Public License v3.0
-(GPLv3), which can be found [here](LICENSE.md)
-
-
->Please note: Retro Music Player is an offline music player app. It
->doesn't support music downloading or online music streaming.
+
+
+
+ Retro Music Player 🎵
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+___
+
+## 🆕 Material You Design Music Player for Android music lovers
+
+## ⚠ Join [@retromusiclog](https://telegram.me/retromusiclog) on Telegram for important updates.
+___
+
+## 📱 Screenshots
+### App Themes
+| | | |
+|:---:|:---:|:---:|
+|Clearly white| Kinda dark | Just black|
+
+### Player screen
+| | | | | |
+|:---:|:---:|:---:|:---:|:---:|
+| Home | Songs | Albums | Artists | Settings |
+
+### Synced lyrics screen (Over Cover)
+| | | |
+|:---:|:---:|:---:|
+| Synced Over Cover light | Synced Over Cover dark | Synced Over Cover black |
+
+### Synced lyrics screen (Replace Cover)
+| | | |
+|:---:|:---:|:---:|
+| Synced Replace Cover light | Synced Replace Cover dark | Synced Replace Cover black |
+
+### 10+ Now playing themes
+| | | | | |
+|:-----: |:-----: |:-----: |:-----: |:-----: |
+| Normal | Fit | Flat | Color | Material |
+
+| | | | | |
+|:-----: |:-----: |:-----: |:-----: |:-----: |
+| Classic | Adaptive | Blur | Tiny | Peek |
+
+___
+
+## 🧭 Navigation never made easier
+Self-explanatory interface without overloaded menus.
+
+## 🎨 Colorful
+You can choose between three different main themes: Clearly White, Kinda
+Dark and Just Black for AMOLED displays. Select your favorite accent
+color from a color palette.
+
+## 🏠 Home
+Where you can view your recently/top played artists, albums and
+favorite songs. No other music player has this feature.
+
+## 📦 Included Features
+- Base 3 themes (Clearly White, Kinda Dark and Just Black)
+- Chromecast support
+- Choose from 10+ now playing themes
+- Driving Mode
+- Headset/Bluetooth support
+- Music duration filter
+- Android auto support
+- Wallpaper accent picker on Android 8.1+
+- Material You support on Android 12+
+- Monet themed icon support on Android 13+
+- Folder support - Play songs by folder
+- Gapless playback
+- Volume controls
+- Carousel effect for album covers
+- Home screen widgets
+- Lock screen playback controls
+- Lyrics screen (download and sync with music)
+- Sleep timer
+- Easy drag to sort playlist & play queue
+- Tag editor
+- Create, edit and import playlists
+- Playing queue with reorder
+- User profile
+- 30+ languages support (help translate the project: [Crowdin](https://crowdin.com/project/retromusicplayer)
+- Browse and play your music by songs, albums, artists, playlists and
+ genre
+- Smart Auto Playlists - Recently played, most played and history
+- Build your playlist on the go
+
+We are trying our best to bring you the best user experience. The app is regularly being updated for bug fixes and new features.
+
+___
+
+
+## ❓ FAQ
+Please read the FAQ [here](https://retromusic.app/faq.html)
+
+In any case, you find or notice any bugs please report them by creating an issue or by contacting us in the [Telegram help & feedback group](https://t.me/retromusicapp).
+If you have any feature suggestions, please create an issue with detailed information or by contacting us in the [Telegram suggestions group](https://t.me/retro_music_suggestion).
+
+## 🔗 Social links
+**Telegram:** https://t.me/retromusicapp
+**Instagram:** https://instagram.com/retromusicapp
+**Crowdin**: https://crowdin.com/project/retromusicplayer
+**Pinterest:** https://pinterest.com/retromusicapp
+**Twitter:** https://twitter.com/retromusicapp
+
+## 🗂️ License
+
+Retro Music Player is released under the GNU General Public License v3.0
+(GPLv3), which can be found [here](LICENSE.md)
+
+
+>Please note: Retro Music Player is a local music player app. It
+>doesn't support music downloading or online music streaming.
diff --git a/app/build.gradle b/app/build.gradle
index 9f1d1378c..554f875b5 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,11 +1,13 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
+apply plugin: 'com.google.devtools.ksp'
apply plugin: "androidx.navigation.safeargs.kotlin"
apply plugin: 'kotlin-parcelize'
android {
compileSdk 32
+ namespace "code.name.monkey.retromusic"
defaultConfig {
minSdk 21
@@ -13,29 +15,33 @@ android {
vectorDrawables.useSupportLibrary = true
- applicationId "code.name.monkey.retromusic"
- versionCode 10598
- versionName '6.0.3-beta'
+ applicationId namespace
+ versionCode 10597
+ versionName '6.0.2-beta'
buildConfigField("String", "GOOGLE_PLAY_LICENSING_KEY", "\"${getProperty(getProperties('../public.properties'), 'GOOGLE_PLAY_LICENSE_KEY')}\"")
}
- signingConfigs {
- release {
- Properties properties = getProperties('retro.properties')
- storeFile file(getProperty(properties, 'storeFile'))
- keyAlias getProperty(properties, 'keyAlias')
- storePassword getProperty(properties, 'storePassword')
- keyPassword getProperty(properties, 'keyPassword')
+ def signingProperties = getProperties('retro.properties')
+ def releaseSigning
+ if (signingProperties != null) {
+ releaseSigning = signingConfigs.create("release") {
+ storeFile file(getProperty(signingProperties, 'storeFile'))
+ keyAlias getProperty(signingProperties, 'keyAlias')
+ storePassword getProperty(signingProperties, 'storePassword')
+ keyPassword getProperty(signingProperties, 'keyPassword')
}
+ } else {
+ releaseSigning = signingConfigs.debug
}
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- signingConfig signingConfigs.release
+ signingConfig releaseSigning
}
debug {
+ signingConfig releaseSigning
applicationIdSuffix '.debug'
versionNameSuffix ' DEBUG'
}
@@ -50,7 +56,7 @@ android {
}
}
- buildFeatures{
+ buildFeatures {
viewBinding true
}
packagingOptions {
@@ -59,6 +65,7 @@ android {
}
}
lint {
+ abortOnError true
warning 'ImpliedQuantity', 'Instantiatable', 'MissingQuantity', 'MissingTranslation'
}
compileOptions {
@@ -68,23 +75,28 @@ android {
kotlinOptions {
jvmTarget = "1.8"
}
-
+ dependenciesInfo {
+ includeInApk = false
+ includeInBundle = false
+ }
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
}
def getProperties(String fileName) {
- final Properties properties = new Properties()
+ Properties properties = new Properties()
def file = rootProject.file(fileName)
if (file.exists()) {
file.withInputStream { stream -> properties.load(stream) }
+ } else {
+ properties = null
}
return properties
}
static def getProperty(Properties properties, String name) {
- return properties.getProperty(name) ?: "$name missing"
+ return properties?.getProperty(name) ?: "$name missing"
}
dependencies {
@@ -94,12 +106,12 @@ dependencies {
implementation "androidx.appcompat:appcompat:$appcompat_version"
implementation 'androidx.annotation:annotation:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
- implementation 'androidx.recyclerview:recyclerview:1.3.0-beta01'
+ implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation "androidx.preference:preference-ktx:$preference_version"
implementation "androidx.core:core-ktx:$core_version"
implementation 'androidx.palette:palette-ktx:1.0.0'
- implementation 'androidx.mediarouter:mediarouter:1.3.1'
+ implementation 'androidx.mediarouter:mediarouter:1.3.0'
//Cast Dependencies
normalImplementation 'com.google.android.gms:play-services-cast-framework:21.0.1'
//WebServer by NanoHttpd
@@ -112,13 +124,13 @@ dependencies {
def room_version = '2.5.0-alpha02'
implementation "androidx.room:room-runtime:$room_version"
implementation "androidx.room:room-ktx:$room_version"
- kapt "androidx.room:room-compiler:$room_version"
+ ksp "androidx.room:room-compiler:$room_version"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
- implementation "androidx.core:core-splashscreen:1.0.0"
+ implementation "androidx.core:core-splashscreen:1.0.0-rc01"
normalImplementation 'com.google.android.play:feature-delivery:2.0.0'
normalImplementation 'com.google.android.play:review:2.0.0'
@@ -135,11 +147,9 @@ dependencies {
implementation "com.afollestad.material-dialogs:input:$material_dialog_version"
implementation "com.afollestad.material-dialogs:color:$material_dialog_version"
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
+ implementation 'com.afollestad:material-cab:2.0.1'
- def kotlin_coroutines_version = '1.6.4'
- implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version"
- implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4"
def koin_version = '3.2.0'
implementation "io.insert-koin:koin-core:$koin_version"
@@ -159,6 +169,7 @@ dependencies {
implementation "dev.chrisbanes.insetter:insetter:0.6.1"
+ implementation 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5'
implementation 'com.github.Adonai:jaudiotagger:2.3.15'
normalImplementation 'com.anjlab.android.iab.v3:library:2.0.3'
implementation 'com.r0adkll:slidableactivity:2.1.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f7c9d67fe..8db74d0f6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,7 +1,6 @@
+ xmlns:tools="http://schemas.android.com/tools">
(R.id.customactivityoncrash_error_activity_restart_button)
+ findViewById(cat.ereza.customactivityoncrash.R.id.customactivityoncrash_error_activity_restart_button)
val config = CustomActivityOnCrash.getConfigFromIntent(intent)
if (config == null) {
finish()
return
}
- restartButton.setText(R.string.customactivityoncrash_error_activity_restart_app)
+ restartButton.setText(cat.ereza.customactivityoncrash.R.string.customactivityoncrash_error_activity_restart_app)
restartButton.setOnClickListener {
CustomActivityOnCrash.restartApplication(
this@ErrorActivity,
@@ -36,11 +36,11 @@ class ErrorActivity : AppCompatActivity() {
)
}
val moreInfoButton =
- findViewById(R.id.customactivityoncrash_error_activity_more_info_button)
+ findViewById(cat.ereza.customactivityoncrash.R.id.customactivityoncrash_error_activity_more_info_button)
moreInfoButton.setOnClickListener { //We retrieve all the error data and show it
MaterialAlertDialogBuilder(this@ErrorActivity)
- .setTitle(R.string.customactivityoncrash_error_activity_error_details_title)
+ .setTitle(cat.ereza.customactivityoncrash.R.string.customactivityoncrash_error_activity_error_details_title)
.setMessage(
CustomActivityOnCrash.getAllErrorDetailsFromIntent(
this@ErrorActivity,
@@ -48,7 +48,7 @@ class ErrorActivity : AppCompatActivity() {
)
)
.setPositiveButton(
- R.string.customactivityoncrash_error_activity_error_details_close,
+ cat.ereza.customactivityoncrash.R.string.customactivityoncrash_error_activity_error_details_close,
null
)
.setNeutralButton(
@@ -70,7 +70,7 @@ class ErrorActivity : AppCompatActivity() {
}
val errorActivityDrawableId = config.errorDrawable
val errorImageView =
- findViewById(R.id.customactivityoncrash_error_activity_image)
+ findViewById(cat.ereza.customactivityoncrash.R.id.customactivityoncrash_error_activity_image)
if (errorActivityDrawableId != null) {
errorImageView.setImageResource(
errorActivityDrawableId
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/saf/SAFGuideActivity.java b/app/src/main/java/code/name/monkey/retromusic/activities/saf/SAFGuideActivity.java
index e47c770ea..efd56210e 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/saf/SAFGuideActivity.java
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/saf/SAFGuideActivity.java
@@ -50,8 +50,8 @@ public class SAFGuideActivity extends IntroActivity {
? R.string.saf_guide_slide1_description_before_o
: R.string.saf_guide_slide1_description)
.image(R.drawable.saf_guide_1)
- .background(R.color.md_deep_purple_300)
- .backgroundDark(R.color.md_deep_purple_400)
+ .background(code.name.monkey.appthemehelper.R.color.md_deep_purple_300)
+ .backgroundDark(code.name.monkey.appthemehelper.R.color.md_deep_purple_400)
.layout(R.layout.fragment_simple_slide_large_image)
.build());
addSlide(
@@ -59,8 +59,8 @@ public class SAFGuideActivity extends IntroActivity {
.title(R.string.saf_guide_slide2_title)
.description(R.string.saf_guide_slide2_description)
.image(R.drawable.saf_guide_2)
- .background(R.color.md_deep_purple_500)
- .backgroundDark(R.color.md_deep_purple_600)
+ .background(code.name.monkey.appthemehelper.R.color.md_deep_purple_500)
+ .backgroundDark(code.name.monkey.appthemehelper.R.color.md_deep_purple_600)
.layout(R.layout.fragment_simple_slide_large_image)
.build());
addSlide(
@@ -68,8 +68,8 @@ public class SAFGuideActivity extends IntroActivity {
.title(R.string.saf_guide_slide3_title)
.description(R.string.saf_guide_slide3_description)
.image(R.drawable.saf_guide_3)
- .background(R.color.md_deep_purple_700)
- .backgroundDark(R.color.md_deep_purple_800)
+ .background(code.name.monkey.appthemehelper.R.color.md_deep_purple_700)
+ .backgroundDark(code.name.monkey.appthemehelper.R.color.md_deep_purple_800)
.layout(R.layout.fragment_simple_slide_large_image)
.build());
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt
index a391b6a4d..b032e6e54 100644
--- a/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt
@@ -95,7 +95,7 @@ class SongFileAdapter(
}
private fun loadFileImage(file: File, holder: ViewHolder) {
- val iconColor = ATHUtil.resolveColor(activity, R.attr.colorControlNormal)
+ val iconColor = ATHUtil.resolveColor(activity, androidx.appcompat.R.attr.colorControlNormal)
if (file.isDirectory) {
holder.image?.let {
it.setColorFilter(iconColor, PorterDuff.Mode.SRC_IN)
@@ -104,7 +104,7 @@ class SongFileAdapter(
holder.imageTextContainer?.setCardBackgroundColor(
ATHUtil.resolveColor(
activity,
- R.attr.colorSurface
+ com.google.android.material.R.attr.colorSurface
)
)
} else {
diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt
index 7d0f1bd4d..f40fe91af 100644
--- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt
@@ -119,7 +119,7 @@ class AlbumCoverPagerAdapter(
withContext(Dispatchers.Main) {
MaterialAlertDialogBuilder(
requireContext(),
- R.style.ThemeOverlay_MaterialComponents_Dialog_Alert
+ com.google.android.material.R.style.ThemeOverlay_MaterialComponents_Dialog_Alert
).apply {
setTitle(song.title)
setMessage(if (data.isNullOrEmpty()) "No lyrics found" else data)
diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetText.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetText.kt
index 5e9004e98..b7abb6ee5 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetText.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetText.kt
@@ -40,29 +40,29 @@ class AppWidgetText : BaseAppWidget() {
appWidgetView.setImageViewBitmap(
R.id.button_next,
context.getTintedDrawable(R.drawable.ic_skip_next, ContextCompat.getColor(
- context, R.color.md_white_1000
+ context, code.name.monkey.appthemehelper.R.color.md_white_1000
)).toBitmap()
)
appWidgetView.setImageViewBitmap(
R.id.button_prev,
context.getTintedDrawable(R.drawable.ic_skip_previous, ContextCompat.getColor(
- context, R.color.md_white_1000
+ context, code.name.monkey.appthemehelper.R.color.md_white_1000
)
).toBitmap()
)
appWidgetView.setImageViewBitmap(
R.id.button_toggle_play_pause,
context.getTintedDrawable(R.drawable.ic_play_arrow_white_32dp, ContextCompat.getColor(
- context, R.color.md_white_1000
+ context, code.name.monkey.appthemehelper.R.color.md_white_1000
)
).toBitmap()
)
appWidgetView.setTextColor(
- R.id.title, ContextCompat.getColor(context, R.color.md_white_1000)
+ R.id.title, ContextCompat.getColor(context, code.name.monkey.appthemehelper.R.color.md_white_1000)
)
appWidgetView.setTextColor(
- R.id.text, ContextCompat.getColor(context, R.color.md_white_1000)
+ R.id.text, ContextCompat.getColor(context, code.name.monkey.appthemehelper.R.color.md_white_1000)
)
linkButtons(context, appWidgetView)
@@ -127,7 +127,7 @@ class AppWidgetText : BaseAppWidget() {
appWidgetView.setImageViewBitmap(
R.id.button_toggle_play_pause,
service.getTintedDrawable(playPauseRes, ContextCompat.getColor(
- service, R.color.md_white_1000)
+ service, code.name.monkey.appthemehelper.R.color.md_white_1000)
).toBitmap()
)
appWidgetView.setImageViewBitmap(
@@ -136,7 +136,7 @@ class AppWidgetText : BaseAppWidget() {
R.drawable.ic_skip_next,
ContextCompat.getColor(
service,
- R.color.md_white_1000
+ code.name.monkey.appthemehelper.R.color.md_white_1000
)
).toBitmap()
)
@@ -145,7 +145,7 @@ class AppWidgetText : BaseAppWidget() {
service.getTintedDrawable(
R.drawable.ic_skip_previous,
ContextCompat.getColor(
- service, R.color.md_white_1000
+ service, code.name.monkey.appthemehelper.R.color.md_white_1000
)
).toBitmap()
)
diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ColorExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ColorExtensions.kt
index b0a1759f3..b1ae4bec8 100644
--- a/app/src/main/java/code/name/monkey/retromusic/extensions/ColorExtensions.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ColorExtensions.kt
@@ -52,7 +52,7 @@ fun Int.ripAlpha(): Int {
fun Dialog.colorControlNormal() = resolveColor(android.R.attr.colorControlNormal)
fun Toolbar.backgroundTintList() {
- val surfaceColor = ATHUtil.resolveColor(context, R.attr.colorSurface, Color.BLACK)
+ val surfaceColor = ATHUtil.resolveColor(context, com.google.android.material.R.attr.colorSurface, Color.BLACK)
val colorStateList = ColorStateList.valueOf(surfaceColor)
backgroundTintList = colorStateList
}
@@ -61,13 +61,13 @@ fun Context.accentColor() = ThemeStore.accentColor(this)
fun Fragment.accentColor() = ThemeStore.accentColor(requireContext())
-fun Context.surfaceColor() = resolveColor(R.attr.colorSurface, Color.WHITE)
+fun Context.surfaceColor() = resolveColor(com.google.android.material.R.attr.colorSurface, Color.WHITE)
-fun Fragment.surfaceColor() = resolveColor(R.attr.colorSurface, Color.WHITE)
+fun Fragment.surfaceColor() = resolveColor(com.google.android.material.R.attr.colorSurface, Color.WHITE)
-fun Context.surfaceColor(fallBackColor: Int) = resolveColor(R.attr.colorSurface, fallBackColor)
+fun Context.surfaceColor(fallBackColor: Int) = resolveColor(com.google.android.material.R.attr.colorSurface, fallBackColor)
-fun Fragment.surfaceColor(fallBackColor: Int) = resolveColor(R.attr.colorSurface, fallBackColor)
+fun Fragment.surfaceColor(fallBackColor: Int) = resolveColor(com.google.android.material.R.attr.colorSurface, fallBackColor)
fun Context.textColorSecondary() = resolveColor(android.R.attr.textColorSecondary)
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/backup/RestoreActivity.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/backup/RestoreActivity.kt
index 6ef85b503..dbdba0a6a 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/backup/RestoreActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/backup/RestoreActivity.kt
@@ -71,7 +71,7 @@ class RestoreActivity : AppCompatActivity() {
DynamicColors.applyToActivityIfAvailable(
this,
DynamicColorsOptions.Builder()
- .setThemeOverlay(R.style.ThemeOverlay_Material3_DynamicColors_DayNight)
+ .setThemeOverlay(com.google.android.material.R.style.ThemeOverlay_Material3_DynamicColors_DayNight)
.build()
)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt
index f7294eda4..4a92f1ca4 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt
@@ -118,7 +118,7 @@ class BlurPlaybackControlsFragment :
override fun setColor(color: MediaNotificationProcessor) {
lastPlaybackControlsColor = Color.WHITE
lastDisabledPlaybackControlsColor =
- ContextCompat.getColor(requireContext(), R.color.md_grey_500)
+ ContextCompat.getColor(requireContext(), code.name.monkey.appthemehelper.R.color.md_grey_500)
binding.title.setTextColor(lastPlaybackControlsColor)
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/md3/MD3PlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/md3/MD3PlayerFragment.kt
index e0640349b..efb395e43 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/md3/MD3PlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/md3/MD3PlayerFragment.kt
@@ -53,7 +53,7 @@ class MD3PlayerFragment : AbsPlayerFragment(R.layout.fragment_md3_player) {
}
override fun toolbarIconColor(): Int {
- return ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal)
+ return ATHUtil.resolveColor(requireContext(), androidx.appcompat.R.attr.colorControlNormal)
}
override fun onColorChanged(color: MediaNotificationProcessor) {
@@ -63,7 +63,7 @@ class MD3PlayerFragment : AbsPlayerFragment(R.layout.fragment_md3_player) {
ToolbarContentTintHelper.colorizeToolbar(
binding.playerToolbar,
- ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal),
+ ATHUtil.resolveColor(requireContext(), androidx.appcompat.R.attr.colorControlNormal),
requireActivity()
)
}
@@ -108,7 +108,7 @@ class MD3PlayerFragment : AbsPlayerFragment(R.layout.fragment_md3_player) {
ToolbarContentTintHelper.colorizeToolbar(
binding.playerToolbar,
- ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal),
+ ATHUtil.resolveColor(requireContext(), androidx.appcompat.R.attr.colorControlNormal),
requireActivity()
)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/SingleColorTarget.kt b/app/src/main/java/code/name/monkey/retromusic/glide/SingleColorTarget.kt
index 4991418ea..c60445fb5 100644
--- a/app/src/main/java/code/name/monkey/retromusic/glide/SingleColorTarget.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/glide/SingleColorTarget.kt
@@ -26,7 +26,7 @@ import com.bumptech.glide.request.transition.Transition
abstract class SingleColorTarget(view: ImageView) : BitmapPaletteTarget(view) {
private val defaultFooterColor: Int
- get() = ATHUtil.resolveColor(view.context, R.attr.colorControlNormal)
+ get() = ATHUtil.resolveColor(view.context, androidx.appcompat.R.attr.colorControlNormal)
abstract fun onColorReady(color: Int)
@@ -43,7 +43,7 @@ abstract class SingleColorTarget(view: ImageView) : BitmapPaletteTarget(view) {
onColorReady(
ColorUtil.getColor(
resource.palette,
- ATHUtil.resolveColor(view.context, R.attr.colorPrimary)
+ ATHUtil.resolveColor(view.context, androidx.appcompat.R.attr.colorPrimary)
)
)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationClassic.kt b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationClassic.kt
index 9a9f25925..5697278b3 100644
--- a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationClassic.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationClassic.kt
@@ -124,14 +124,14 @@ class PlayingNotificationClassic(
super.onLoadFailed(errorDrawable)
update(
null,
- resolveColor(context, R.attr.colorSurface, Color.WHITE)
+ resolveColor(context, com.google.android.material.R.attr.colorSurface, Color.WHITE)
)
}
override fun onLoadCleared(placeholder: Drawable?) {
update(
null,
- resolveColor(context, R.attr.colorSurface, Color.WHITE)
+ resolveColor(context, com.google.android.material.R.attr.colorSurface, Color.WHITE)
)
}
@@ -157,7 +157,7 @@ class PlayingNotificationClassic(
if (!VersionUtils.hasS()) {
if (!PreferenceUtil.isColoredNotification) {
bgColorFinal =
- resolveColor(context, R.attr.colorSurface, Color.WHITE)
+ resolveColor(context, com.google.android.material.R.attr.colorSurface, Color.WHITE)
}
setBackgroundColor(bgColorFinal)
setNotificationContent(ColorUtil.isColorLight(bgColorFinal))
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/RetroColorUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/RetroColorUtil.java
index 096c2d786..22d1127c1 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/RetroColorUtil.java
+++ b/app/src/main/java/code/name/monkey/retromusic/util/RetroColorUtil.java
@@ -35,7 +35,6 @@ import java.util.List;
import code.name.monkey.appthemehelper.ThemeStore;
import code.name.monkey.appthemehelper.util.ColorUtil;
import code.name.monkey.appthemehelper.util.VersionUtils;
-import code.name.monkey.retromusic.R;
public class RetroColorUtil {
public static int desaturateColor(int color, float ratio) {
@@ -224,7 +223,7 @@ public class RetroColorUtil {
public static int getMD3AccentColor(@NotNull Context context) {
if (VersionUtils.hasS()) {
- return ContextCompat.getColor(context, R.color.m3_accent_color);
+ return ContextCompat.getColor(context, code.name.monkey.appthemehelper.R.color.m3_accent_color);
} else {
return ThemeStore.Companion.accentColor(context);
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/color/MediaNotificationProcessor.java b/app/src/main/java/code/name/monkey/retromusic/util/color/MediaNotificationProcessor.java
index 39044f317..693e7134c 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/color/MediaNotificationProcessor.java
+++ b/app/src/main/java/code/name/monkey/retromusic/util/color/MediaNotificationProcessor.java
@@ -35,7 +35,6 @@ import java.util.List;
import code.name.monkey.appthemehelper.util.ATHUtil;
import code.name.monkey.appthemehelper.util.ColorUtil;
-import code.name.monkey.retromusic.R;
/** A class the processes media notifications and extracts the right text and background colors. */
public class MediaNotificationProcessor {
@@ -454,7 +453,7 @@ public class MediaNotificationProcessor {
public int getMightyColor() {
boolean isDarkBg =
ColorUtil.INSTANCE.isColorLight(
- ATHUtil.INSTANCE.resolveColor(context, R.attr.colorSurface));
+ ATHUtil.INSTANCE.resolveColor(context, com.google.android.material.R.attr.colorSurface));
if (isDarkBg) {
if (isColorLight(backgroundColor)) {
return primaryTextColor;
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/color/NotificationColorUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/color/NotificationColorUtil.java
index 6aa903fe4..f23b643f0 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/color/NotificationColorUtil.java
+++ b/app/src/main/java/code/name/monkey/retromusic/util/color/NotificationColorUtil.java
@@ -38,8 +38,6 @@ import androidx.core.content.ContextCompat;
import java.util.Locale;
import java.util.WeakHashMap;
-import code.name.monkey.retromusic.R;
-
/**
* Helper class to process legacy (Holo) notifications to make them look like material
* notifications.
@@ -62,7 +60,7 @@ public class NotificationColorUtil {
private NotificationColorUtil(Context context) {
mGrayscaleIconMaxSize =
- context.getResources().getDimensionPixelSize(R.dimen.notification_large_icon_width);
+ context.getResources().getDimensionPixelSize(androidx.core.R.dimen.notification_large_icon_width);
}
public static NotificationColorUtil getInstance(Context context) {
diff --git a/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt b/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt
index 8ba3b636a..c9d4dba9e 100644
--- a/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt
@@ -51,7 +51,7 @@ class ColorIconsImageView @JvmOverloads constructor(
val desaturatedColor = RetroColorUtil.desaturateColor(color, 0.4f)
backgroundTintList = ColorStateList.valueOf(desaturatedColor)
imageTintList =
- ColorStateList.valueOf(ATHUtil.resolveColor(context, R.attr.colorSurface))
+ ColorStateList.valueOf(ATHUtil.resolveColor(context, com.google.android.material.R.attr.colorSurface))
} else {
val finalColor = MaterialColors.harmonize(
color,
diff --git a/app/src/main/java/code/name/monkey/retromusic/views/PopupBackground.java b/app/src/main/java/code/name/monkey/retromusic/views/PopupBackground.java
index f1df03d1a..73c2dbd39 100644
--- a/app/src/main/java/code/name/monkey/retromusic/views/PopupBackground.java
+++ b/app/src/main/java/code/name/monkey/retromusic/views/PopupBackground.java
@@ -32,8 +32,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.graphics.drawable.DrawableCompat;
-import code.name.monkey.retromusic.R;
-
public class PopupBackground extends Drawable {
private final int mPaddingEnd;
@@ -52,8 +50,8 @@ public class PopupBackground extends Drawable {
mPaint.setColor(color);
mPaint.setStyle(Paint.Style.FILL);
Resources resources = context.getResources();
- mPaddingStart = resources.getDimensionPixelOffset(R.dimen.afs_md2_popup_padding_start);
- mPaddingEnd = resources.getDimensionPixelOffset(R.dimen.afs_md2_popup_padding_end);
+ mPaddingStart = resources.getDimensionPixelOffset(me.zhanghai.android.fastscroll.R.dimen.afs_md2_popup_padding_start);
+ mPaddingEnd = resources.getDimensionPixelOffset(me.zhanghai.android.fastscroll.R.dimen.afs_md2_popup_padding_end);
}
private static void pathArcTo(
diff --git a/app/src/normal/AndroidManifest.xml b/app/src/normal/AndroidManifest.xml
index 1aca0bc31..750dacabc 100644
--- a/app/src/normal/AndroidManifest.xml
+++ b/app/src/normal/AndroidManifest.xml
@@ -1,7 +1,6 @@
+ xmlns:tools="http://schemas.android.com/tools">
diff --git a/appthemehelper/.gitignore b/appthemehelper/.gitignore
deleted file mode 100644
index 796b96d1c..000000000
--- a/appthemehelper/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
diff --git a/appthemehelper/build.gradle b/appthemehelper/build.gradle
index cbb0934dd..31bfc76af 100644
--- a/appthemehelper/build.gradle
+++ b/appthemehelper/build.gradle
@@ -2,6 +2,7 @@ apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
android {
compileSdk 32
+ namespace "code.name.monkey.appthemehelper"
defaultConfig {
minSdk 21
@@ -26,6 +27,4 @@ dependencies {
implementation "androidx.appcompat:appcompat:$appcompat_version"
implementation "com.google.android.material:material:$mdc_version"
implementation "androidx.preference:preference-ktx:$preference_version"
-
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}
diff --git a/appthemehelper/src/main/AndroidManifest.xml b/appthemehelper/src/main/AndroidManifest.xml
index a0b00a102..cc947c567 100644
--- a/appthemehelper/src/main/AndroidManifest.xml
+++ b/appthemehelper/src/main/AndroidManifest.xml
@@ -1 +1 @@
-
+
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ThemeStore.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ThemeStore.kt
index c1dca0f66..1b5ad709e 100644
--- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ThemeStore.kt
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ThemeStore.kt
@@ -223,7 +223,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
fun primaryColor(context: Context): Int {
return prefs(context).getInt(
ThemeStorePrefKeys.KEY_PRIMARY_COLOR,
- resolveColor(context, R.attr.colorPrimary, Color.parseColor("#455A64"))
+ resolveColor(context, androidx.appcompat.R.attr.colorPrimary, Color.parseColor("#455A64"))
)
}
@@ -240,7 +240,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
} else {
prefs(context).getInt(
ThemeStorePrefKeys.KEY_ACCENT_COLOR,
- resolveColor(context, R.attr.colorAccent, Color.parseColor("#263238"))
+ resolveColor(context, androidx.appcompat.R.attr.colorAccent, Color.parseColor("#263238"))
)
}
return if (isWindowBackgroundDark(context) && desaturatedColor) ColorUtil.desaturateColor(
@@ -254,7 +254,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
fun wallpaperColor(context: Context, isDarkMode: Boolean): Int {
return prefs(context).getInt(
if (isDarkMode) ThemeStorePrefKeys.KEY_WALLPAPER_COLOR_DARK else ThemeStorePrefKeys.KEY_WALLPAPER_COLOR_LIGHT,
- resolveColor(context, R.attr.colorAccent, Color.parseColor("#263238"))
+ resolveColor(context, androidx.appcompat.R.attr.colorAccent, Color.parseColor("#263238"))
)
}
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/ATHToolbarActivity.java b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/ATHToolbarActivity.java
index aaa29d937..9c07c660f 100755
--- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/ATHToolbarActivity.java
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/ATHToolbarActivity.java
@@ -5,7 +5,6 @@ import android.view.Menu;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import code.name.monkey.appthemehelper.ATHActivity;
-import code.name.monkey.appthemehelper.R;
import code.name.monkey.appthemehelper.util.ATHUtil;
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper;
@@ -16,7 +15,7 @@ public class ATHToolbarActivity extends ATHActivity {
public static int getToolbarBackgroundColor(@Nullable Toolbar toolbar) {
if (toolbar != null) {
- return ATHUtil.INSTANCE.resolveColor(toolbar.getContext(), R.attr.colorSurface);
+ return ATHUtil.INSTANCE.resolveColor(toolbar.getContext(), com.google.android.material.R.attr.colorSurface);
}
return Color.BLACK;
}
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATESeekBarPreference.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATESeekBarPreference.kt
index 19eb3e15a..82e66817f 100644
--- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATESeekBarPreference.kt
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATESeekBarPreference.kt
@@ -42,12 +42,12 @@ class ATESeekBarPreference @JvmOverloads constructor(
override fun onBindViewHolder(view: PreferenceViewHolder) {
super.onBindViewHolder(view)
- val seekBar = view.findViewById(R.id.seekbar) as SeekBar
+ val seekBar = view.findViewById(androidx.preference.R.id.seekbar) as SeekBar
TintHelper.setTintAuto(
seekBar, // Set MD3 accent if MD3 is enabled or in-app accent otherwise
ThemeStore.accentColor(context), false
)
- (view.findViewById(R.id.seekbar_value) as TextView).apply {
+ (view.findViewById(androidx.preference.R.id.seekbar_value) as TextView).apply {
appendUnit(editableText)
doAfterTextChanged {
appendUnit(it)
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.java b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.java
index ab82a32a9..82a511e3b 100644
--- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.java
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.java
@@ -29,8 +29,6 @@ import androidx.preference.DialogPreference;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-import code.name.monkey.appthemehelper.R;
-
/**
* @author Karim Abou Zeid (kabouzeid)
*/
@@ -64,7 +62,7 @@ public class ATEPreferenceDialogFragment extends DialogFragment implements Dialo
public Dialog onCreateDialog(Bundle savedInstanceState) {
FragmentActivity context = this.getActivity();
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context,
- R.style.ThemeOverlay_MaterialComponents_Dialog_Alert)
+ com.google.android.material.R.style.ThemeOverlay_MaterialComponents_Dialog_Alert)
.setTitle(this.mPreference.getDialogTitle())
.setIcon(this.mPreference.getDialogIcon())
.setMessage(this.mPreference.getDialogMessage())
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialValueHelper.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialValueHelper.kt
index 888f01c7e..ace097c28 100755
--- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialValueHelper.kt
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialValueHelper.kt
@@ -14,8 +14,8 @@ object MaterialValueHelper {
@ColorInt
fun getPrimaryTextColor(context: Context?, dark: Boolean): Int {
return if (dark) {
- ContextCompat.getColor(context!!, R.color.primary_text_default_material_light)
- } else ContextCompat.getColor(context!!, R.color.primary_text_default_material_dark)
+ ContextCompat.getColor(context!!, androidx.appcompat.R.color.primary_text_default_material_light)
+ } else ContextCompat.getColor(context!!, androidx.appcompat.R.color.primary_text_default_material_dark)
}
@SuppressLint("PrivateResource")
@@ -23,8 +23,8 @@ object MaterialValueHelper {
@ColorInt
fun getSecondaryTextColor(context: Context?, dark: Boolean): Int {
return if (dark) {
- ContextCompat.getColor(context!!, R.color.secondary_text_default_material_light)
- } else ContextCompat.getColor(context!!, R.color.secondary_text_default_material_dark)
+ ContextCompat.getColor(context!!, androidx.appcompat.R.color.secondary_text_default_material_light)
+ } else ContextCompat.getColor(context!!, androidx.appcompat.R.color.secondary_text_default_material_dark)
}
@SuppressLint("PrivateResource")
@@ -32,8 +32,8 @@ object MaterialValueHelper {
@ColorInt
fun getPrimaryDisabledTextColor(context: Context?, dark: Boolean): Int {
return if (dark) {
- ContextCompat.getColor(context!!, R.color.primary_text_disabled_material_light)
- } else ContextCompat.getColor(context!!, R.color.primary_text_disabled_material_dark)
+ ContextCompat.getColor(context!!, androidx.appcompat.R.color.primary_text_disabled_material_light)
+ } else ContextCompat.getColor(context!!, androidx.appcompat.R.color.primary_text_disabled_material_dark)
}
@SuppressLint("PrivateResource")
@@ -41,7 +41,7 @@ object MaterialValueHelper {
@ColorInt
fun getSecondaryDisabledTextColor(context: Context?, dark: Boolean): Int {
return if (dark) {
- ContextCompat.getColor(context!!, R.color.secondary_text_disabled_material_light)
- } else ContextCompat.getColor(context!!, R.color.secondary_text_disabled_material_dark)
+ ContextCompat.getColor(context!!, androidx.appcompat.R.color.secondary_text_disabled_material_light)
+ } else ContextCompat.getColor(context!!, androidx.appcompat.R.color.secondary_text_disabled_material_dark)
}
}
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/TintHelper.java b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/TintHelper.java
index 6f985b0da..06b14526c 100755
--- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/TintHelper.java
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/TintHelper.java
@@ -265,7 +265,7 @@ public final class TintHelper {
// Ripples for the above views (e.g. when you tap and hold a switch or checkbox)
RippleDrawable rd = (RippleDrawable) view.getBackground();
@SuppressLint("PrivateResource") final int unchecked = ContextCompat.getColor(view.getContext(),
- isDark ? R.color.ripple_material_dark : R.color.ripple_material_light);
+ isDark ? androidx.appcompat.R.color.ripple_material_dark : androidx.appcompat.R.color.ripple_material_light);
final int checked = ColorUtil.INSTANCE.adjustAlpha(color, 0.4f);
final ColorStateList sl = new ColorStateList(
new int[][]{
@@ -373,7 +373,7 @@ public final class TintHelper {
private static int getDefaultRippleColor(@NonNull Context context, boolean useDarkRipple) {
// Light ripple is actually translucent black, and vice versa
return ContextCompat.getColor(context, useDarkRipple ?
- R.color.ripple_material_light : R.color.ripple_material_dark);
+ androidx.appcompat.R.color.ripple_material_light : androidx.appcompat.R.color.ripple_material_dark);
}
@NonNull
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ToolbarContentTintHelper.java b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ToolbarContentTintHelper.java
index 8688005af..23179ffbd 100755
--- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ToolbarContentTintHelper.java
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ToolbarContentTintHelper.java
@@ -39,7 +39,6 @@ import androidx.core.graphics.drawable.DrawableCompat;
import java.lang.reflect.Field;
import java.util.ArrayList;
-import code.name.monkey.appthemehelper.R;
import code.name.monkey.appthemehelper.ThemeStore;
public final class ToolbarContentTintHelper {
@@ -122,7 +121,7 @@ public final class ToolbarContentTintHelper {
public static void setOverflowButtonColor(@NonNull Activity activity,
final @ColorInt int color) {
final String overflowDescription = activity
- .getString(R.string.abc_action_menu_overflow_description);
+ .getString(androidx.appcompat.R.string.abc_action_menu_overflow_description);
final ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
final ViewTreeObserver viewTreeObserver = decorView.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@@ -283,7 +282,7 @@ public final class ToolbarContentTintHelper {
}
public static void colorBackButton(@NonNull Toolbar toolbar) {
- int color = ATHUtil.INSTANCE.resolveColor(toolbar.getContext(), R.attr.colorControlNormal);
+ int color = ATHUtil.INSTANCE.resolveColor(toolbar.getContext(), androidx.appcompat.R.attr.colorControlNormal);
final PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(color, PorterDuff.Mode.MULTIPLY);
for (int i = 0; i < toolbar.getChildCount(); i++) {
final View backButton = toolbar.getChildAt(i);
@@ -564,7 +563,7 @@ public final class ToolbarContentTintHelper {
private static void setOverflowButtonColor(final Activity activity,
final PorterDuffColorFilter colorFilter) {
final String overflowDescription = activity
- .getString(R.string.abc_action_menu_overflow_description);
+ .getString(androidx.appcompat.R.string.abc_action_menu_overflow_description);
final ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
final ViewTreeObserver viewTreeObserver = decorView.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@@ -596,9 +595,9 @@ public final class ToolbarContentTintHelper {
private static void tintShareIconIfPresent(int color, MenuItem item) {
if (item.getActionView() != null) {
final View actionView = item.getActionView();
- final View expandActivitiesButton = actionView.findViewById(R.id.expand_activities_button);
+ final View expandActivitiesButton = actionView.findViewById(com.google.android.material.R.id.expand_activities_button);
if (expandActivitiesButton != null) {
- final ImageView image = expandActivitiesButton.findViewById(R.id.image);
+ final ImageView image = expandActivitiesButton.findViewById(com.google.android.material.R.id.image);
if (image != null) {
final Drawable drawable = image.getDrawable();
final Drawable wrapped = DrawableCompat.wrap(drawable);
diff --git a/build.gradle b/build.gradle
index 23d6e58fe..18e4ce640 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,13 +2,12 @@
buildscript {
ext {
- kotlin_version = '1.7.10'
- lifecycle_version = '2.5.1'
- navigation_version = '2.5.1'
- mdc_version = '1.7.0-alpha03'
+ lifecycle_version='2.5.0'
+ navigation_version = '2.5.0'
+ mdc_version = '1.7.0-alpha02'
preference_version = '1.2.0'
- appcompat_version = '1.5.0-rc01'
- core_version = '1.8.0'
+ appcompat_version = '1.4.2'
+ core_version='1.8.0'
}
repositories {
@@ -17,13 +16,27 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:7.2.1'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navigation_version"
}
}
plugins {
+ id 'com.google.devtools.ksp' version '1.7.10-1.0.6' apply false
id "com.github.ben-manes.versions" version "0.42.0"
}
+
+def isNonStable = { String version ->
+ def stableKeyword = ['RELEASE', 'FINAL', 'GA'].any { it -> version.toUpperCase().contains(it) }
+ def regex = /^[0-9,.v-]+(-r)?$/
+ return !stableKeyword && !(version ==~ regex)
+}
+
+tasks.named("dependencyUpdates").configure {
+ rejectVersionIf {
+ isNonStable(it.candidate.version)
+ }
+}
+
task clean(type: Delete) {
delete rootProject.buildDir
}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index bc6ce417f..c286cf15c 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,21 +1,15 @@
-# Project-wide Gradle settings.
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-org.gradle.parallel=true
-# AndroidX package structure to make it clearer which packages are bundled with the
-# Android operating system, and which are packaged with your app"s APK
-# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.injected.testOnly=false
android.useAndroidX=true
-# Automatically convert third-party libraries to use AndroidX
-android.enableJetifier=false
-# Kotlin code style for this project: "official" or "obsolete":
-kotlin.code.style=official
\ No newline at end of file
+kapt.verbose=true
+kotlin.code.style=official
+org.gradle.caching=true
+org.gradle.configureondemand=true
+org.gradle.jvmargs=-Xmx4g -XX:+UseParallelGC -Dfile.encoding=UTF-8
+org.gradle.parallel=true
+
+# https://developer.android.com/studio/build/optimize-your-build#use-non-transitive-r-classes
+android.nonTransitiveRClass=true
+# https://blog.jetbrains.com/kotlin/2022/07/a-new-approach-to-incremental-compilation-in-kotlin/
+kotlin.incremental.useClasspathSnapshot=true
+# https://docs.gradle.org/7.5/userguide/configuration_cache.html
+org.gradle.unsafe.configuration-cache=true
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 7454180f2..249e5832f 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 59250647c..8049c684f 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionSha256Sum=b586e04868a22fd817c8971330fec37e298f3242eb85c374181b12d637f80302
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 1b6c78733..a69d9cb6c 100755
--- a/gradlew
+++ b/gradlew
@@ -205,6 +205,12 @@ set -- \
org.gradle.wrapper.GradleWrapperMain \
"$@"
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
diff --git a/gradlew.bat b/gradlew.bat
index 107acd32c..f127cfd49 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -14,7 +14,7 @@
@rem limitations under the License.
@rem
-@if "%DEBUG%" == "" @echo off
+@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -25,7 +25,7 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
+if "%DIRNAME%"=="" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
+if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -75,13 +75,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end
@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
+if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
diff --git a/settings.gradle b/settings.gradle
index 27bc031ae..08e2f668d 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,15 @@
+// https://docs.gradle.com/enterprise/gradle-plugin/
+plugins {
+ id "com.gradle.enterprise" version "3.10.3"
+}
+
+gradleEnterprise {
+ buildScan {
+ termsOfServiceUrl = "https://gradle.com/terms-of-service"
+ termsOfServiceAgree = "yes"
+ }
+}
+
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
@@ -6,4 +18,5 @@ dependencyResolutionManagement {
maven { url "https://jitpack.io" }
}
}
+
include ':app', ':appthemehelper'
\ No newline at end of file