| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package com.sduduzog.slimlauncher.ui.options
- import android.content.Context.MODE_PRIVATE
- import android.content.Intent
- import android.os.Bundle
- import android.provider.Settings
- import android.text.SpannableStringBuilder
- import android.text.Spanned
- import android.text.style.TextAppearanceSpan
- import android.view.LayoutInflater
- import android.view.View
- import android.view.ViewGroup
- import androidx.core.content.edit
- import androidx.navigation.Navigation
- import com.sduduzog.slimlauncher.R
- import com.sduduzog.slimlauncher.datasource.UnlauncherDataSource
- import com.sduduzog.slimlauncher.ui.dialogs.ChangeThemeDialog
- import com.sduduzog.slimlauncher.ui.dialogs.ChooseTimeFormatDialog
- import com.sduduzog.slimlauncher.utils.BaseFragment
- import com.sduduzog.slimlauncher.utils.createTitleAndSubtitleText
- import com.sduduzog.slimlauncher.utils.isActivityDefaultLauncher
- import dagger.hilt.android.AndroidEntryPoint
- import kotlinx.android.synthetic.main.options_fragment.*
- import javax.inject.Inject
- @AndroidEntryPoint
- class OptionsFragment : BaseFragment() {
- @Inject
- lateinit var unlauncherDataSource: UnlauncherDataSource
- override fun getFragmentView(): ViewGroup = options_fragment
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
- return inflater.inflate(R.layout.options_fragment, container, false)
- }
- override fun onActivityCreated(savedInstanceState: Bundle?) {
- super.onActivityCreated(savedInstanceState)
- options_fragment_device_settings.setOnClickListener {
- val intent = Intent(Settings.ACTION_SETTINGS)
- launchActivity(it, intent)
- }
- options_fragment_device_settings.setOnLongClickListener {
- val intent = Intent(Settings.ACTION_HOME_SETTINGS)
- launchActivity(it, intent)
- true
- }
- options_fragment_change_theme.setOnClickListener {
- val changeThemeDialog = ChangeThemeDialog.getThemeChooser()
- changeThemeDialog.showNow(childFragmentManager, "THEME_CHOOSER")
- }
- options_fragment_choose_time_format.setOnClickListener {
- val chooseTimeFormatDialog = ChooseTimeFormatDialog.getInstance()
- chooseTimeFormatDialog.showNow(childFragmentManager, "TIME_FORMAT_CHOOSER")
- }
- options_fragment_toggle_status_bar.setOnClickListener {
- val settings = requireContext().getSharedPreferences(getString(R.string.prefs_settings), MODE_PRIVATE)
- val isHidden = settings.getBoolean(getString(R.string.prefs_settings_key_toggle_status_bar), false)
- settings.edit {
- putBoolean(getString(R.string.prefs_settings_key_toggle_status_bar), !isHidden)
- }
- }
- options_fragment_customise_apps.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_optionsFragment_to_customiseAppsFragment))
- options_fragment_customize_quick_buttons.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_optionsFragment_to_customiseQuickButtonsFragment))
- options_fragment_customize_app_drawer.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_optionsFragment_to_customiseAppDrawerFragment))
- }
- override fun onStart() {
- super.onStart()
- // setting up the switch text, since changing the default launcher re-starts the activity
- // this should able to adapt to it.
- setupAutomaticDeviceWallpaperSwitch()
- }
- private fun setupAutomaticDeviceWallpaperSwitch() {
- val prefsRepo = unlauncherDataSource.corePreferencesRepo
- val appIsDefaultLauncher = isActivityDefaultLauncher(activity)
- setupDeviceWallpaperSwitchText(appIsDefaultLauncher)
- options_fragment_auto_device_theme_wallpaper.isEnabled = appIsDefaultLauncher
- prefsRepo.liveData().observe(viewLifecycleOwner) {
- // always uncheck once app isn't default launcher
- options_fragment_auto_device_theme_wallpaper.isChecked = appIsDefaultLauncher && !it.keepDeviceWallpaper
- }
- options_fragment_auto_device_theme_wallpaper.setOnCheckedChangeListener { _, checked ->
- prefsRepo.updateKeepDeviceWallpaper(!checked)
- }
- }
- /**
- * Adds a hint text underneath the default text when app is not the default launcher.
- */
- private fun setupDeviceWallpaperSwitchText(appIsDefaultLauncher: Boolean) {
- val text = if (appIsDefaultLauncher) {
- getText(R.string.customize_app_drawer_fragment_auto_theme_wallpaper_text)
- } else {
- buildSwitchTextWithHint()
- }
- options_fragment_auto_device_theme_wallpaper.text = text
- }
- private fun buildSwitchTextWithHint(): CharSequence {
- val titleText = getText(R.string.customize_app_drawer_fragment_auto_theme_wallpaper_text)
- // have a title text and a subtitle text to indicate that adapting the
- // wallpaper can only be done when app it the default launcher
- val subTitleText = getText(R.string.customize_app_drawer_fragment_auto_theme_wallpaper_subtext_no_default_launcher)
- return createTitleAndSubtitleText(requireContext(), titleText, subTitleText)
- }
- }
|