summaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
authorTanuj <tanbook@Tanujs-MacBook-Pro.local>2021-09-20 16:46:38 +0530
committerTanuj <tanbook@Tanujs-MacBook-Pro.local>2021-09-20 16:46:38 +0530
commit2e110a06599aeb767bc76ab2afee44b71a229520 (patch)
tree45559879d23af0dd164a4e123de565329ac61942 /app/src/main/java
parent974b1792c7527f5f795d95bffa20c73eb1aec853 (diff)
downloadSidePhOnelauncher-2e110a06599aeb767bc76ab2afee44b71a229520.tar.gz
SidePhOnelauncher-2e110a06599aeb767bc76ab2afee44b71a229520.tar.bz2
SidePhOnelauncher-2e110a06599aeb767bc76ab2afee44b71a229520.zip
Added system default theme mode
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/app/olauncher/MainActivity.kt42
-rw-r--r--app/src/main/java/app/olauncher/MainViewModel.kt8
-rw-r--r--app/src/main/java/app/olauncher/data/Constants.kt1
-rw-r--r--app/src/main/java/app/olauncher/data/Prefs.kt2
-rw-r--r--app/src/main/java/app/olauncher/helper/Utils.kt7
-rw-r--r--app/src/main/java/app/olauncher/helper/WallpaperWorker.kt23
-rw-r--r--app/src/main/java/app/olauncher/ui/HomeFragment.kt2
-rw-r--r--app/src/main/java/app/olauncher/ui/SettingsFragment.kt47
8 files changed, 81 insertions, 51 deletions
diff --git a/app/src/main/java/app/olauncher/MainActivity.kt b/app/src/main/java/app/olauncher/MainActivity.kt
index 2acbd57..457e12f 100644
--- a/app/src/main/java/app/olauncher/MainActivity.kt
+++ b/app/src/main/java/app/olauncher/MainActivity.kt
@@ -3,24 +3,28 @@ package app.olauncher
import android.app.Activity
import android.content.Intent
import android.content.pm.ActivityInfo
+import android.content.res.Configuration
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.view.View
import android.view.WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
import androidx.appcompat.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatDelegate
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.NavController
import androidx.navigation.Navigation
import app.olauncher.data.Constants
import app.olauncher.data.Prefs
+import app.olauncher.helper.isDarkThemeOn
import app.olauncher.helper.isTablet
+import app.olauncher.helper.setPlainWallpaper
import app.olauncher.helper.showToastLong
import kotlinx.android.synthetic.main.activity_main.*
-
class MainActivity : AppCompatActivity() {
+ private lateinit var prefs: Prefs
private lateinit var navController: NavController
override fun onBackPressed() {
@@ -29,17 +33,13 @@ class MainActivity : AppCompatActivity() {
}
override fun onCreate(savedInstanceState: Bundle?) {
- val prefs = Prefs(this)
-
-// when (prefs.themeColor) {
-// Constants.THEME_MODE_LIGHT -> setTheme(R.style.LightTheme)
-// else -> setTheme(R.style.DarkTheme)
-// }
-
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
+ prefs = Prefs(this)
navController = Navigation.findNavController(this, R.id.nav_host_fragment)
val viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
+
+ setAppTheme(prefs.appTheme)
if (prefs.firstOpen) {
viewModel.firstOpen(true)
prefs.firstOpen = false
@@ -71,6 +71,13 @@ class MainActivity : AppCompatActivity() {
super.onNewIntent(intent)
}
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ if (prefs.dailyWallpaper)
+ changeBackground()
+ recreate()
+ }
+
private fun initObservers(viewModel: MainViewModel) {
viewModel.launcherResetFailed.observe(this, {
openLauncherChooser(it)
@@ -78,6 +85,9 @@ class MainActivity : AppCompatActivity() {
viewModel.showMessageDialog.observe(this, {
showMessage(it)
})
+ viewModel.appSetTheme.observe(this, {
+ setAppTheme(it)
+ })
}
private fun setupOrientation() {
@@ -94,6 +104,20 @@ class MainActivity : AppCompatActivity() {
navController.popBackStack(R.id.mainFragment, false)
}
+ private fun setAppTheme(theme: Int) {
+ when (theme) {
+ Constants.THEME_MODE_LIGHT -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
+ Constants.THEME_MODE_DARK -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
+ else -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
+ }
+ }
+
+ private fun changeBackground() {
+ if (this.isDarkThemeOn())
+ setPlainWallpaper(this, android.R.color.black)
+ else setPlainWallpaper(this, android.R.color.white)
+ }
+
private fun openLauncherChooser(resetFailed: Boolean) {
if (resetFailed) {
val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
@@ -119,7 +143,7 @@ class MainActivity : AppCompatActivity() {
when (requestCode) {
Constants.REQUEST_CODE_ENABLE_ADMIN -> {
if (resultCode == Activity.RESULT_OK) {
- Prefs(this).lockModeOn = true
+ prefs.lockModeOn = true
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P)
showMessage(getString(R.string.double_tap_lock_is_enabled_message))
else
diff --git a/app/src/main/java/app/olauncher/MainViewModel.kt b/app/src/main/java/app/olauncher/MainViewModel.kt
index f4b7266..9128cdd 100644
--- a/app/src/main/java/app/olauncher/MainViewModel.kt
+++ b/app/src/main/java/app/olauncher/MainViewModel.kt
@@ -30,6 +30,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
val launcherResetFailed = MutableLiveData<Boolean>()
val homeAppAlignment = MutableLiveData<Int>()
val showMessageDialog = MutableLiveData<String>()
+ val appSetTheme = MutableLiveData<Int>()
fun selectedApp(appModel: AppModel, flag: Int) {
when (flag) {
@@ -199,4 +200,11 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
fun showMessageDialog(message: String) {
showMessageDialog.postValue(message)
}
+
+ fun appSetTheme(theme: Int) {
+ prefs.appTheme = theme
+ appSetTheme.value = theme
+ if (prefs.dailyWallpaper)
+ setWallpaperWorker()
+ }
} \ No newline at end of file
diff --git a/app/src/main/java/app/olauncher/data/Constants.kt b/app/src/main/java/app/olauncher/data/Constants.kt
index 9f50c49..f8ebed7 100644
--- a/app/src/main/java/app/olauncher/data/Constants.kt
+++ b/app/src/main/java/app/olauncher/data/Constants.kt
@@ -6,6 +6,7 @@ object Constants {
const val THEME_MODE_DARK = 0
const val THEME_MODE_LIGHT = 1
+ const val THEME_MODE_SYSTEM = 2
const val FLAG_LAUNCH_APP = 100
const val FLAG_HIDDEN_APPS = 101
diff --git a/app/src/main/java/app/olauncher/data/Prefs.kt b/app/src/main/java/app/olauncher/data/Prefs.kt
index 35802ec..8f4e394 100644
--- a/app/src/main/java/app/olauncher/data/Prefs.kt
+++ b/app/src/main/java/app/olauncher/data/Prefs.kt
@@ -122,7 +122,7 @@ class Prefs(context: Context) {
get() = prefs.getBoolean(SWIPE_RIGHT_ENABLED, true)
set(value) = prefs.edit().putBoolean(SWIPE_RIGHT_ENABLED, value).apply()
- var themeColor: Int
+ var appTheme: Int
get() = prefs.getInt(THEME_COLOR, Constants.THEME_MODE_DARK)
set(value) = prefs.edit().putInt(THEME_COLOR, value).apply()
diff --git a/app/src/main/java/app/olauncher/helper/Utils.kt b/app/src/main/java/app/olauncher/helper/Utils.kt
index 1e1bf35..7d60cfe 100644
--- a/app/src/main/java/app/olauncher/helper/Utils.kt
+++ b/app/src/main/java/app/olauncher/helper/Utils.kt
@@ -6,6 +6,8 @@ import android.content.Context
import android.content.Intent
import android.content.pm.LauncherApps
import android.content.pm.PackageManager
+import android.content.res.Configuration
+import android.content.res.Configuration.UI_MODE_NIGHT_YES
import android.graphics.*
import android.net.Uri
import android.os.UserHandle
@@ -387,6 +389,11 @@ fun isTablet(context: Context): Boolean {
return false
}
+fun Context.isDarkThemeOn(): Boolean {
+ return resources.configuration.uiMode and
+ Configuration.UI_MODE_NIGHT_MASK == UI_MODE_NIGHT_YES
+}
+
@ColorInt
fun Context.getColorFromAttr(
@AttrRes attrColor: Int,
diff --git a/app/src/main/java/app/olauncher/helper/WallpaperWorker.kt b/app/src/main/java/app/olauncher/helper/WallpaperWorker.kt
index b22e6eb..819af5e 100644
--- a/app/src/main/java/app/olauncher/helper/WallpaperWorker.kt
+++ b/app/src/main/java/app/olauncher/helper/WallpaperWorker.kt
@@ -12,21 +12,15 @@ import java.util.*
class WallpaperWorker(appContext: Context, workerParams: WorkerParameters) : CoroutineWorker(appContext, workerParams) {
override suspend fun doWork(): Result = coroutineScope {
-
val date: String = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(Date())
- if (date == Prefs(applicationContext).wallpaperUpdatedDay) Result.success()
-
- var wallType = Constants.WALL_TYPE_DARK
- if (Prefs(applicationContext).themeColor == Constants.THEME_MODE_LIGHT)
- wallType = Constants.WALL_TYPE_LIGHT
-
+ if (date == Prefs(applicationContext).wallpaperUpdatedDay)
+ Result.success()
+ val wallType = checkWallpaperType()
val wallpaperUrl = getTodaysWallpaper(wallType)
-
val success = setWallpaper(
applicationContext,
wallpaperUrl
)
-
if (success) {
updateWallpaperPrefs(wallpaperUrl, date)
Result.success()
@@ -37,4 +31,15 @@ class WallpaperWorker(appContext: Context, workerParams: WorkerParameters) : Cor
Prefs(applicationContext).dailyWallpaperUrl = url
Prefs(applicationContext).wallpaperUpdatedDay = date
}
+
+ private fun checkWallpaperType(): String {
+ return when (Prefs(applicationContext).appTheme) {
+ Constants.THEME_MODE_DARK -> Constants.WALL_TYPE_DARK
+ Constants.THEME_MODE_LIGHT -> Constants.WALL_TYPE_LIGHT
+ else -> if (applicationContext.isDarkThemeOn())
+ Constants.WALL_TYPE_DARK
+ else
+ Constants.WALL_TYPE_LIGHT
+ }
+ }
}
diff --git a/app/src/main/java/app/olauncher/ui/HomeFragment.kt b/app/src/main/java/app/olauncher/ui/HomeFragment.kt
index 52f34e5..ebdb476 100644
--- a/app/src/main/java/app/olauncher/ui/HomeFragment.kt
+++ b/app/src/main/java/app/olauncher/ui/HomeFragment.kt
@@ -314,7 +314,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener
requireActivity().window.insetsController?.show(WindowInsets.Type.statusBars())
else
@Suppress("DEPRECATION", "InlinedApi")
- if (prefs.themeColor == Constants.THEME_MODE_DARK)
+ if (prefs.appTheme == Constants.THEME_MODE_DARK)
requireActivity().window.decorView.apply {
systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}
diff --git a/app/src/main/java/app/olauncher/ui/SettingsFragment.kt b/app/src/main/java/app/olauncher/ui/SettingsFragment.kt
index 1cc09b7..93ea18a 100644
--- a/app/src/main/java/app/olauncher/ui/SettingsFragment.kt
+++ b/app/src/main/java/app/olauncher/ui/SettingsFragment.kt
@@ -9,7 +9,6 @@ import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.view.*
-import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.bundleOf
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
@@ -54,7 +53,7 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe
populateKeyboardText()
populateLockSettings()
populateWallpaperText()
- populateThemeColorText()
+ populateAppThemeText()
populateAlignment()
populateStatusBar()
populateDateTime()
@@ -67,7 +66,7 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe
override fun onClick(view: View) {
appsNumSelectLayout.visibility = View.GONE
alignmentSelectLayout.visibility = View.GONE
- themeColorSelectLayout.visibility = View.GONE
+ appThemeSelectLayout.visibility = View.GONE
when (view.id) {
R.id.olauncherHiddenApps -> showHiddenApps()
R.id.appInfo -> openAppInfo(requireContext(), android.os.Process.myUserHandle(), BuildConfig.APPLICATION_ID)
@@ -83,7 +82,8 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe
R.id.alignmentRight -> viewModel.updateHomeAlignment(Gravity.END)
R.id.statusBar -> toggleStatusBar()
R.id.dateTime -> toggleDateTime()
- R.id.themeColor -> themeColorSelectLayout.visibility = View.VISIBLE
+ R.id.appThemeText -> appThemeSelectLayout.visibility = View.VISIBLE
+ R.id.themeSystem -> updateTheme(Constants.THEME_MODE_SYSTEM)
R.id.themeLight -> updateTheme(Constants.THEME_MODE_LIGHT)
R.id.themeDark -> updateTheme(Constants.THEME_MODE_DARK)
@@ -144,9 +144,10 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe
dateTime.setOnClickListener(this)
swipeLeftApp.setOnClickListener(this)
swipeRightApp.setOnClickListener(this)
- themeColor.setOnClickListener(this)
+ appThemeText.setOnClickListener(this)
themeLight.setOnClickListener(this)
themeDark.setOnClickListener(this)
+ themeSystem.setOnClickListener(this)
about.setOnClickListener(this)
share.setOnClickListener(this)
@@ -243,7 +244,7 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe
requireActivity().window.insetsController?.show(WindowInsets.Type.statusBars())
else
@Suppress("DEPRECATION", "InlinedApi")
- if (prefs.themeColor == Constants.THEME_MODE_DARK)
+ if (prefs.appTheme == Constants.THEME_MODE_DARK)
requireActivity().window.decorView.apply {
systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}
@@ -353,33 +354,17 @@ class SettingsFragment : Fragment(), View.OnClickListener, View.OnLongClickListe
populateKeyboardText()
}
- private fun updateTheme(themeColor: Int) {
- if (prefs.themeColor == themeColor) return
- prefs.themeColor = themeColor
- populateThemeColorText()
- when (prefs.themeColor) {
- Constants.THEME_MODE_DARK -> {
- if (prefs.dailyWallpaper) {
- setPlainWallpaper(requireContext(), android.R.color.black)
- viewModel.setWallpaperWorker()
- }
- AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
- }
- else -> {
- if (prefs.dailyWallpaper) {
- setPlainWallpaper(requireContext(), android.R.color.white)
- viewModel.setWallpaperWorker()
- }
- AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
- }
- }
- requireActivity().recreate()
+ private fun updateTheme(appTheme: Int) {
+ if (prefs.appTheme == appTheme) return
+ populateAppThemeText(appTheme)
+ viewModel.appSetTheme(appTheme)
}
- private fun populateThemeColorText() {
- when (prefs.themeColor) {
- Constants.THEME_MODE_DARK -> themeColor.text = getString(R.string.dark)
- else -> themeColor.text = getString(R.string.light)
+ private fun populateAppThemeText(appTheme: Int = prefs.appTheme) {
+ when (appTheme) {
+ Constants.THEME_MODE_DARK -> appThemeText.text = getString(R.string.dark)
+ Constants.THEME_MODE_LIGHT -> appThemeText.text = getString(R.string.light)
+ else -> appThemeText.text = getString(R.string.system_default)
}
}