mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-16 07:10:29 +05:30
78 lines
3.1 KiB
Kotlin
78 lines
3.1 KiB
Kotlin
|
package com.github.libretube.util
|
||
|
|
||
|
import android.app.NotificationManager
|
||
|
import android.content.ComponentName
|
||
|
import android.content.Context
|
||
|
import android.content.Intent
|
||
|
import android.content.pm.PackageManager
|
||
|
import androidx.appcompat.app.AppCompatActivity
|
||
|
import androidx.appcompat.app.AppCompatDelegate
|
||
|
import androidx.preference.PreferenceManager
|
||
|
import com.github.libretube.R
|
||
|
|
||
|
class ThemeHelper {
|
||
|
|
||
|
fun updateTheme(context: Context) {
|
||
|
updateAccentColor(context)
|
||
|
updateThemeMode(context)
|
||
|
}
|
||
|
|
||
|
fun updateAccentColor(context: Context) {
|
||
|
val colorAccent =
|
||
|
PreferenceManager.getDefaultSharedPreferences(context).getString("accent_color", "red")
|
||
|
when (colorAccent) {
|
||
|
"my" -> context.setTheme(R.style.Theme_MY)
|
||
|
"red" -> context.setTheme(R.style.Theme_Red)
|
||
|
"blue" -> context.setTheme(R.style.Theme_Blue)
|
||
|
"yellow" -> context.setTheme(R.style.Theme_Yellow)
|
||
|
"green" -> context.setTheme(R.style.Theme_Green)
|
||
|
"purple" -> context.setTheme(R.style.Theme_Purple)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fun updateThemeMode(context: Context) {
|
||
|
val themeMode =
|
||
|
PreferenceManager.getDefaultSharedPreferences(context).getString("theme_togglee", "A")
|
||
|
when (themeMode) {
|
||
|
"A" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
||
|
"L" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
|
||
|
"D" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
|
||
|
"O" -> {
|
||
|
context.setTheme(R.style.OLED)
|
||
|
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fun changeIcon(context: Context, newLogoActivityAlias: String) {
|
||
|
val activityAliases = context.resources.getStringArray(R.array.iconsValue)
|
||
|
// Disable Old Icon(s)
|
||
|
for (activityAlias in activityAliases) {
|
||
|
context.packageManager.setComponentEnabledSetting(
|
||
|
ComponentName(context.packageName, "com.github.libretube.$activityAlias"),
|
||
|
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
|
||
|
PackageManager.DONT_KILL_APP
|
||
|
)
|
||
|
}
|
||
|
// Enable New Icon
|
||
|
context.packageManager.setComponentEnabledSetting(
|
||
|
ComponentName(context.packageName, "com.github.libretube.$newLogoActivityAlias"),
|
||
|
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
|
||
|
PackageManager.DONT_KILL_APP
|
||
|
)
|
||
|
}
|
||
|
|
||
|
// Needed due to different MainActivity Aliases because of the app icons
|
||
|
fun restartMainActivity(context: Context) {
|
||
|
// kill player notification
|
||
|
val nManager = context
|
||
|
.getSystemService(AppCompatActivity.NOTIFICATION_SERVICE) as NotificationManager
|
||
|
nManager.cancelAll()
|
||
|
// restart to MainActivity
|
||
|
val pm: PackageManager = context.packageManager
|
||
|
val intent = pm.getLaunchIntentForPackage(context.packageName)
|
||
|
intent?.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK
|
||
|
context.startActivity(intent)
|
||
|
}
|
||
|
}
|