diff --git a/app/src/main/java/com/finnmglas/launcher/settings/launcher/SettingsFragmentLauncher.kt b/app/src/main/java/com/finnmglas/launcher/settings/launcher/SettingsFragmentLauncher.kt index a8a22dc..a0a66e7 100644 --- a/app/src/main/java/com/finnmglas/launcher/settings/launcher/SettingsFragmentLauncher.kt +++ b/app/src/main/java/com/finnmglas/launcher/settings/launcher/SettingsFragmentLauncher.kt @@ -1,6 +1,7 @@ package com.finnmglas.launcher.settings.launcher import android.Manifest +import android.app.Activity import android.content.Intent import android.content.pm.PackageManager import android.os.Build @@ -100,7 +101,6 @@ class SettingsFragmentLauncher : Fragment(), UIObject { .putInt(PREF_VIBRANT, vibrantColor) .apply() - saveTheme("custom") intendedSettingsPause = true activity!!.recreate() } @@ -109,47 +109,17 @@ class SettingsFragmentLauncher : Fragment(), UIObject { } override fun applyTheme() { - // Hide 'select' button for the selected theme or allow customisation - when (getSavedTheme(context!!)) { - "dark" -> settings_theme_dark_button_select.visibility = View.INVISIBLE - "finn" -> settings_theme_finn_button_select.visibility = View.INVISIBLE - "custom" -> - settings_theme_custom_button_select.text = getString(R.string.settings_select_image) - } setSwitchColor(settings_launcher_switch_screen_timeout, vibrantColor) settings_launcher_container.setBackgroundColor(dominantColor) - setButtonColor(settings_theme_finn_button_select, vibrantColor) - setButtonColor(settings_theme_dark_button_select, vibrantColor) setButtonColor(settings_theme_custom_button_select, vibrantColor) } override fun setOnClicks() { - // Theme changing buttons - settings_theme_dark_button_select.setOnClickListener { - resetToDarkTheme(activity!!) - } - settings_theme_finn_button_select.setOnClickListener { - resetToDefaultTheme(activity!!) - } + settings_theme_custom_button_select.setOnClickListener { - intendedSettingsPause = true - // Request permission (on newer APIs) - if (Build.VERSION.SDK_INT >= 23) { - when { - ContextCompat.checkSelfPermission(context!!, - Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED - -> letUserPickImage(true) - shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE) - -> {} - else - -> requestPermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), - REQUEST_PERMISSION_STORAGE - ) - } - } - else letUserPickImage() + resetToCustomTheme(activity!!) } settings_launcher_switch_screen_timeout.setOnClickListener { // Toggle screen timeout launcherPreferences.edit() @@ -161,6 +131,27 @@ class SettingsFragmentLauncher : Fragment(), UIObject { } } + fun resetToCustomTheme(context: Activity) { + intendedSettingsPause = true + saveTheme("custom") // TODO: Fix the bug this creates (displays custom theme without chosen img) + + // Request permission (on newer APIs) + if (Build.VERSION.SDK_INT >= 23) { + when { + ContextCompat.checkSelfPermission(context, + Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED + -> letUserPickImage(true) + shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE) + -> {} + else + -> requestPermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), + REQUEST_PERMISSION_STORAGE + ) + } + } + else letUserPickImage() + } + override fun adjustLayout() { // visually load settings settings_launcher_switch_screen_timeout.isChecked = @@ -187,5 +178,36 @@ class SettingsFragmentLauncher : Fragment(), UIObject { } } + + // Load values into the theme spinner + val staticThemeAdapter = ArrayAdapter.createFromResource( + activity!!, R.array.settings_themes, + android.R.layout.simple_spinner_item ) + + staticThemeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + settings_launcher_theme_spinner.adapter = staticThemeAdapter + + var themeInt = when (getSavedTheme(activity!!)) { + "finn" -> 0 + "dark" -> 1 + "custom" -> 2 + else -> 0 + }; + + settings_launcher_theme_spinner.setSelection(themeInt) + + settings_launcher_theme_spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { + when (position) { + 0 -> if (getSavedTheme(activity!!) != "finn") resetToDefaultTheme(activity!!) + 1 -> if (getSavedTheme(activity!!) != "dark") resetToDarkTheme(activity!!) + 2 -> if (getSavedTheme(activity!!) != "custom") resetToCustomTheme(activity!!) + } + } + + override fun onNothingSelected(parent: AdapterView<*>?) { + + } + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/settings_launcher.xml b/app/src/main/res/layout/settings_launcher.xml index 4d105a7..5daaea3 100644 --- a/app/src/main/res/layout/settings_launcher.xml +++ b/app/src/main/res/layout/settings_launcher.xml @@ -85,10 +85,24 @@ android:id="@+id/settings_launcher_theme_spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:entries="@array/settings_launcher_time_formats" + android:entries="@array/settings_themes" android:spinnerMode="dropdown" /> + + +