Remove unused preferences
This commit is contained in:
parent
cd3ee6f3cb
commit
1814e21181
@ -7,7 +7,6 @@ import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.fragment.app.Fragment
|
||||
import de.mm20.launcher2.fragment.PreferencesMainFragment
|
||||
import de.mm20.launcher2.fragment.PreferencesServicesFragment
|
||||
import de.mm20.launcher2.fragment.PreferencesWeatherFragment
|
||||
import de.mm20.launcher2.ui.legacy.activity.LauncherActivity
|
||||
import de.mm20.launcher2.ui.legacy.helper.ThemeHelper
|
||||
|
||||
@ -30,7 +29,6 @@ class SettingsActivity : AppCompatActivity() {
|
||||
|
||||
private fun getStartFragment(): Fragment {
|
||||
return when (intent.extras?.getString(FRAGMENT, "")) {
|
||||
FRAGMENT_WEATHER -> PreferencesWeatherFragment()
|
||||
FRAGMENT_SERVICES -> PreferencesServicesFragment()
|
||||
else -> PreferencesMainFragment()
|
||||
}
|
||||
|
||||
@ -1,175 +0,0 @@
|
||||
package de.mm20.launcher2.fragment
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Bundle
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceCategory
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import de.mm20.launcher2.R
|
||||
import de.mm20.launcher2.crashreporter.CrashReporter
|
||||
import de.mm20.launcher2.debug.DebugInformationDumper
|
||||
import de.mm20.launcher2.ktx.tryStartActivity
|
||||
import de.mm20.launcher2.licenses.AppLicense
|
||||
import de.mm20.launcher2.licenses.OpenSourceLicenses
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.File
|
||||
|
||||
|
||||
class PreferencesAboutFragment : PreferenceFragmentCompat() {
|
||||
|
||||
private var easterEggCounter = 0
|
||||
|
||||
@SuppressLint("ResourceType")
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
addPreferencesFromResource(R.xml.preferences_about)
|
||||
val versionPref = findPreference<Preference>("version")!!
|
||||
try {
|
||||
val version = requireContext().packageManager.getPackageInfo(
|
||||
requireActivity().application.packageName,
|
||||
0
|
||||
).versionName
|
||||
versionPref.summary = version
|
||||
} catch (e: PackageManager.NameNotFoundException) {
|
||||
//Should never happen
|
||||
versionPref.summary = "Ich mag Bockwurst-Bananen"
|
||||
}
|
||||
|
||||
versionPref.setOnPreferenceClickListener {
|
||||
if (easterEggCounter in arrayOf(3, 4, 7)) Toast.makeText(
|
||||
context, when (easterEggCounter) {
|
||||
3 -> R.string.easter_egg_1
|
||||
4 -> R.string.easter_egg_2
|
||||
7 -> R.string.easter_egg_3
|
||||
else -> 0
|
||||
}, Toast.LENGTH_SHORT
|
||||
).show()
|
||||
if (easterEggCounter == 8) {
|
||||
easterEggCounter = 0
|
||||
requireFragmentManager().beginTransaction()
|
||||
.setCustomAnimations(
|
||||
R.anim.preference_fragment_child_enter,
|
||||
R.anim.preference_fragment_parent_exit,
|
||||
R.anim.preference_fragment_parent_enter,
|
||||
R.anim.preference_fragment_child_exit
|
||||
)
|
||||
.replace(
|
||||
android.R.id.content,
|
||||
PreferencesEasterEggFragment()
|
||||
)
|
||||
.addToBackStack(null)
|
||||
.commit()
|
||||
}
|
||||
easterEggCounter++
|
||||
false
|
||||
}
|
||||
|
||||
val licenses = findPreference<Preference>("category_licenses") as PreferenceCategory
|
||||
for (l in OpenSourceLicenses.sortedBy { it.name.lowercase() }) {
|
||||
val preference = Preference(activity, null, 0, R.style.Preference_Material)
|
||||
preference.title = l.name
|
||||
preference.summary = l.description
|
||||
preference.onPreferenceClickListener = Preference.OnPreferenceClickListener {
|
||||
parentFragmentManager.beginTransaction()
|
||||
.setCustomAnimations(
|
||||
R.anim.preference_fragment_child_enter,
|
||||
R.anim.preference_fragment_parent_exit,
|
||||
R.anim.preference_fragment_parent_enter,
|
||||
R.anim.preference_fragment_child_exit
|
||||
)
|
||||
.replace(
|
||||
android.R.id.content,
|
||||
PreferencesLicenseFragment(l)
|
||||
)
|
||||
.addToBackStack(null)
|
||||
.commit()
|
||||
true
|
||||
}
|
||||
licenses.addPreference(preference)
|
||||
}
|
||||
findPreference<Preference>("crash_reporter")?.setOnPreferenceClickListener {
|
||||
startActivity(CrashReporter.getLaunchIntent())
|
||||
true
|
||||
}
|
||||
findPreference<Preference>("export_debug")?.setOnPreferenceClickListener {
|
||||
lifecycleScope.launch {
|
||||
val path = DebugInformationDumper().dump(requireContext())
|
||||
Snackbar.make(
|
||||
requireView(),
|
||||
getString(
|
||||
R.string.debug_export_information_file,
|
||||
path
|
||||
),
|
||||
Snackbar.LENGTH_LONG
|
||||
)
|
||||
.setAction(R.string.menu_share) {
|
||||
val context = requireContext()
|
||||
context.tryStartActivity(Intent(Intent.ACTION_SEND).apply {
|
||||
type = "text/plain"
|
||||
putExtra(
|
||||
Intent.EXTRA_STREAM, FileProvider.getUriForFile(
|
||||
context,
|
||||
context.applicationContext.packageName + ".fileprovider",
|
||||
File(path)
|
||||
)
|
||||
)
|
||||
})
|
||||
}.show()
|
||||
}
|
||||
true
|
||||
}
|
||||
findPreference<Preference>("export_databases")?.setOnPreferenceClickListener {
|
||||
MaterialDialog(requireContext()).show {
|
||||
message(res = R.string.debug_export_databases_warning)
|
||||
positiveButton(res = R.string.dialog_continue, click = {
|
||||
lifecycleScope.launch {
|
||||
val path = DebugInformationDumper().exportDatabases(requireContext())
|
||||
Toast.makeText(
|
||||
activity,
|
||||
getString(
|
||||
R.string.debug_export_information_file,
|
||||
path
|
||||
),
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
it.dismiss()
|
||||
}
|
||||
})
|
||||
negativeButton(res = android.R.string.cancel, click = {
|
||||
it.cancel()
|
||||
})
|
||||
}
|
||||
|
||||
true
|
||||
}
|
||||
|
||||
findPreference<Preference>("license")?.setOnPreferenceClickListener {
|
||||
parentFragmentManager.beginTransaction()
|
||||
.setCustomAnimations(
|
||||
R.anim.preference_fragment_child_enter,
|
||||
R.anim.preference_fragment_parent_exit,
|
||||
R.anim.preference_fragment_parent_enter,
|
||||
R.anim.preference_fragment_child_exit
|
||||
)
|
||||
.replace(
|
||||
android.R.id.content,
|
||||
PreferencesLicenseFragment(AppLicense.get(requireContext()))
|
||||
)
|
||||
.addToBackStack(null)
|
||||
.commit()
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
(activity as AppCompatActivity).supportActionBar?.setTitle(R.string.preference_screen_about)
|
||||
}
|
||||
}
|
||||
@ -1,39 +0,0 @@
|
||||
package de.mm20.launcher2.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import de.mm20.launcher2.R
|
||||
|
||||
class PreferencesBadgesFragment : PreferenceFragmentCompat() {
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
addPreferencesFromResource(R.xml.preferences_badges)
|
||||
findPreference<Preference>("notification_badges")?.setOnPreferenceChangeListener { _, newValue ->
|
||||
if (newValue as Boolean) {
|
||||
} else {
|
||||
}
|
||||
true
|
||||
}
|
||||
findPreference<Preference>("suspended_badges")?.setOnPreferenceChangeListener { _, newValue ->
|
||||
if (newValue as Boolean) {
|
||||
} else {
|
||||
}
|
||||
true
|
||||
}
|
||||
findPreference<Preference>("cloud_badges")?.setOnPreferenceChangeListener { _, newValue ->
|
||||
if (newValue as Boolean) {
|
||||
} else {
|
||||
}
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
(activity as AppCompatActivity).supportActionBar
|
||||
?.setTitle(R.string.preference_screen_badges)
|
||||
}
|
||||
}
|
||||
@ -1,50 +0,0 @@
|
||||
package de.mm20.launcher2.fragment
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.browser.customtabs.CustomTabColorSchemeParams
|
||||
import androidx.browser.customtabs.CustomTabsIntent
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.bumptech.glide.Glide
|
||||
import de.mm20.launcher2.R
|
||||
import de.mm20.launcher2.licenses.OpenSourceLibrary
|
||||
|
||||
class PreferencesLicenseFragment(
|
||||
val library: OpenSourceLibrary
|
||||
) : Fragment() {
|
||||
|
||||
@SuppressLint("ResourceType")
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
val view = inflater.inflate(R.layout.fragment_license, null, false)
|
||||
(activity as AppCompatActivity).supportActionBar?.title = library.name
|
||||
val url = library.url
|
||||
val website = view.findViewById<TextView>(R.id.website)
|
||||
website.setOnClickListener {
|
||||
val intent = CustomTabsIntent.Builder()
|
||||
.setDefaultColorSchemeParams(CustomTabColorSchemeParams
|
||||
.Builder()
|
||||
.setToolbarColor(-0x9f8275)
|
||||
.build())
|
||||
.setShowTitle(true)
|
||||
.build()
|
||||
intent.launchUrl(activity as AppCompatActivity, Uri.parse(url))
|
||||
}
|
||||
val description = view.findViewById<TextView>(R.id.description)
|
||||
description.text = library.description
|
||||
val licenseTitle = view.findViewById<TextView>(R.id.licenseTitle)
|
||||
val licenseText = view.findViewById<TextView>(R.id.licenseText)
|
||||
val licenseCopyright = view.findViewById<TextView>(R.id.licenseCopyright)
|
||||
licenseTitle.text = getString(library.licenseName)
|
||||
licenseCopyright.text = library.copyrightNote
|
||||
licenseText.text = resources.openRawResource(library.licenseText).reader().readText()
|
||||
return view
|
||||
}
|
||||
}
|
||||
@ -18,14 +18,6 @@ class PreferencesMainFragment : PreferenceFragmentCompat() {
|
||||
setSettingsScreen(PreferencesAppearanceFragment())
|
||||
true
|
||||
}
|
||||
findPreference<Preference>("screen_about")?.setOnPreferenceClickListener {
|
||||
setSettingsScreen(PreferencesAboutFragment())
|
||||
true
|
||||
}
|
||||
findPreference<Preference>("screen_weather")?.setOnPreferenceClickListener {
|
||||
setSettingsScreen(PreferencesWeatherFragment())
|
||||
true
|
||||
}
|
||||
findPreference<Preference>("screen_services")?.setOnPreferenceClickListener {
|
||||
setSettingsScreen(PreferencesServicesFragment())
|
||||
true
|
||||
@ -34,10 +26,6 @@ class PreferencesMainFragment : PreferenceFragmentCompat() {
|
||||
setSettingsScreen(PreferencesSearchFragment())
|
||||
true
|
||||
}
|
||||
findPreference<Preference>("screen_badges")?.setOnPreferenceClickListener {
|
||||
setSettingsScreen(PreferencesBadgesFragment())
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
private fun setSettingsScreen(fragment: Fragment) {
|
||||
|
||||
@ -1,152 +0,0 @@
|
||||
package de.mm20.launcher2.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.preference.SwitchPreference
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import com.afollestad.materialdialogs.list.listItems
|
||||
import com.afollestad.materialdialogs.list.listItemsSingleChoice
|
||||
import de.mm20.launcher2.R
|
||||
import de.mm20.launcher2.preferences.LauncherPreferences
|
||||
import de.mm20.launcher2.preferences.WeatherProviders
|
||||
import de.mm20.launcher2.weather.WeatherLocation
|
||||
import de.mm20.launcher2.weather.WeatherProvider
|
||||
import de.mm20.launcher2.weather.WeatherViewModel
|
||||
import de.mm20.launcher2.weather.brightsky.BrightskyProvider
|
||||
import de.mm20.launcher2.weather.here.HereProvider
|
||||
import de.mm20.launcher2.weather.metno.MetNoProvider
|
||||
import de.mm20.launcher2.weather.openweathermap.OpenWeatherMapProvider
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
class PreferencesWeatherFragment : PreferenceFragmentCompat() {
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
addPreferencesFromResource(R.xml.preferences_weather)
|
||||
findPreference<Preference>("location")?.setOnPreferenceChangeListener { _, newValue ->
|
||||
lifecycleScope.launch {
|
||||
val locations = withContext(Dispatchers.IO) {
|
||||
WeatherProvider.getInstance(requireContext())
|
||||
?.lookupLocation(newValue as String)
|
||||
} ?: return@launch
|
||||
onLookupCompleted(locations)
|
||||
}
|
||||
false
|
||||
}
|
||||
/*findPreference<Preference>("weather_provider")?.setOnPreferenceChangeListener { pref, newValue ->
|
||||
val newProvider = WeatherProviders.byValue(newValue as String)
|
||||
LauncherPreferences.instance.weatherProvider = newProvider
|
||||
WeatherProvider.getInstance(requireContext())?.resetLastUpdate()
|
||||
ViewModelProvider(this).get(WeatherViewModel::class.java).requestUpdate(requireContext())
|
||||
updateProviderPreferences()
|
||||
true
|
||||
}*/
|
||||
val providerPref = findPreference<Preference>("weather_provider")!!
|
||||
val context = requireContext()
|
||||
|
||||
val providers = mutableListOf<Pair<WeatherProviders, String>>()
|
||||
OpenWeatherMapProvider(context).takeIf { it.isAvailable() }?.let {
|
||||
providers.add(WeatherProviders.OPENWEATHERMAP to it.name)
|
||||
}
|
||||
HereProvider(context).takeIf { it.isAvailable() }?.let {
|
||||
providers.add(WeatherProviders.HERE to it.name)
|
||||
}
|
||||
MetNoProvider(context).takeIf { it.isAvailable() }?.let {
|
||||
providers.add(WeatherProviders.MET_NO to it.name)
|
||||
}
|
||||
BrightskyProvider(context).takeIf { it.isAvailable() }?.let {
|
||||
providers.add(WeatherProviders.BRIGHT_SKY to it.name)
|
||||
}
|
||||
|
||||
if (providers.isEmpty()) {
|
||||
providerPref.summary = context.getString(
|
||||
R.string.feature_not_available,
|
||||
context.getString(R.string.app_name)
|
||||
)
|
||||
providerPref.isEnabled = false
|
||||
} else {
|
||||
providerPref.setOnPreferenceClickListener {
|
||||
MaterialDialog(context).show {
|
||||
title(R.string.preference_weather_provider)
|
||||
listItemsSingleChoice(
|
||||
items = providers.map { it.second },
|
||||
initialSelection = providers.indexOfFirst { it.first == LauncherPreferences.instance.weatherProvider }
|
||||
) { dialog, index, text ->
|
||||
LauncherPreferences.instance.weatherProvider = providers[index].first
|
||||
WeatherProvider.getInstance(requireContext())?.resetLastUpdate()
|
||||
ViewModelProvider(this@PreferencesWeatherFragment)
|
||||
.get(WeatherViewModel::class.java)
|
||||
.requestUpdate(requireContext())
|
||||
updateProviderPreferences()
|
||||
dialog.dismiss()
|
||||
}
|
||||
}
|
||||
true
|
||||
}
|
||||
}
|
||||
findPreference<Preference>("auto_location")?.setOnPreferenceChangeListener { _, newValue ->
|
||||
val autoLocation = newValue as Boolean
|
||||
val provider = WeatherProvider.getInstance(requireContext())
|
||||
provider?.autoLocation = autoLocation
|
||||
provider?.resetLastUpdate()
|
||||
provider?.setLocation(null)
|
||||
ViewModelProvider(this).get(WeatherViewModel::class.java)
|
||||
.requestUpdate(requireContext())
|
||||
updateProviderPreferences()
|
||||
true
|
||||
}
|
||||
updateProviderPreferences()
|
||||
}
|
||||
|
||||
private fun updateProviderPreferences() {
|
||||
val provider = WeatherProvider.getInstance(requireContext())
|
||||
val autoLocationPref = findPreference<SwitchPreference>("auto_location")!!
|
||||
val locationPref = findPreference<Preference>("location")!!
|
||||
val unitsPref = findPreference<Preference>("imperial_units")!!
|
||||
val providerPref = findPreference<Preference>("weather_provider")!!
|
||||
|
||||
locationPref.parent?.isVisible = provider != null
|
||||
unitsPref.isVisible = provider != null
|
||||
|
||||
provider ?: return
|
||||
|
||||
providerPref.summary = provider.name
|
||||
autoLocationPref.isChecked = provider.autoLocation
|
||||
locationPref.summary =
|
||||
if (provider.autoLocation) provider.getLastLocation()?.name else provider.getLocation()?.name
|
||||
}
|
||||
|
||||
private fun onLookupCompleted(results: List<WeatherLocation>) {
|
||||
MaterialDialog(requireContext())
|
||||
.listItems(
|
||||
items = results.map { it.name },
|
||||
waitForPositiveButton = false
|
||||
) { dialog, index, _ ->
|
||||
val provider = WeatherProvider.getInstance(requireContext())
|
||||
?: return@listItems dialog.dismiss()
|
||||
provider.resetLastUpdate()
|
||||
provider.setLocation(results[index])
|
||||
findPreference<Preference>("location")?.summary = results[index].name
|
||||
ViewModelProvider(this).get(WeatherViewModel::class.java)
|
||||
.requestUpdate(requireContext())
|
||||
dialog.dismiss()
|
||||
}
|
||||
.negativeButton {
|
||||
it.cancel()
|
||||
}
|
||||
.show()
|
||||
}
|
||||
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
||||
(activity as AppCompatActivity).supportActionBar?.setTitle(R.string.preference_screen_weatherwidget)
|
||||
}
|
||||
|
||||
}
|
||||
@ -53,40 +53,22 @@ class LauncherPreferences(val context: Application, version: Int = 3) {
|
||||
var dimWallpaper by BooleanPreference("dim_wallpaper", default = false)
|
||||
var appStartAnim by EnumPreference("app_start_anim", default = AppStartAnimation.M)
|
||||
|
||||
var searchShowFavorites by BooleanPreference("search_show_favorites", default = true)
|
||||
var searchAutoAddFavorites by BooleanPreference("search_auto_add_favorites", default = true)
|
||||
var searchCalculator by BooleanPreference("search_calculator", default = true)
|
||||
var searchUnitConverter by BooleanPreference("search_unitconverter", default = true)
|
||||
var searchFiles by BooleanPreference("search_files", default = true)
|
||||
var searchWikipedia by BooleanPreference("search_wikipedia", default = true)
|
||||
var searchWikipediaMobileData by BooleanPreference("search_wikipedia_mobile_data", default = true)
|
||||
var searchWebsite by BooleanPreference("search_websites", default = true)
|
||||
var searchWebsitesProtocol by EnumPreference("search_websites_protocol", default = WebsiteProtocols.HTTPS)
|
||||
var searchWebsitesMobileData by BooleanPreference("search_websearch_mobile_data", default = true)
|
||||
var searchActivities by BooleanPreference("search_activities", default = true)
|
||||
var searchCalendars by BooleanPreference("search_calendars", default = true)
|
||||
var searchContacts by BooleanPreference("search_contacts", default = true)
|
||||
var searchWikipediaPictures by BooleanPreference("search_wikipedia_pictures", default = false)
|
||||
var searchOwncloud by BooleanPreference("search_owncloud", default = false)
|
||||
var searchNextcloud by BooleanPreference("search_nextcloud", default = false)
|
||||
var searchOneDrive by BooleanPreference("search_onedrive", default = false)
|
||||
var searchGDrive by BooleanPreference("search_gdrive", default = false)
|
||||
var searchGDriveMobileData by BooleanPreference("search_gdrive_mobile_data", default = false)
|
||||
|
||||
var notificationBadges by BooleanPreference("notification_badges", default = true)
|
||||
var cloudBadges by BooleanPreference("cloud_badges", default = true)
|
||||
var suspendBadges by BooleanPreference("suspended_badges", default = true)
|
||||
var profileBadges by BooleanPreference("profile_badges", default = true)
|
||||
var shortcutBadges by BooleanPreference("shortcut_badges", default = true)
|
||||
|
||||
var calendarMaxEvents by StringPreference("calendar_max_events", default = "10")
|
||||
|
||||
var themedIcons by BooleanPreference("themed_icons", default = false)
|
||||
var legacyIconBg by StringPreference("legacy_icon_bg", default = "1")
|
||||
var blurCards by BooleanPreference("blur_cards", default = false)
|
||||
var searchStyle by EnumPreference("search_style", default = SearchStyles.NO_BG)
|
||||
var imperialUnits by BooleanPreference("imperial_units", default = context.resources.getBoolean(R.bool.default_imperialUnits))
|
||||
var translucentCards by BooleanPreference("translucent_cards", default = false)
|
||||
var iconShape by EnumPreference("icon_shape", default = IconShape.PLATFORM_DEFAULT)
|
||||
var firstRunVersion by IntPreference("first_run_version", default = 0)
|
||||
|
||||
@ -95,16 +77,6 @@ class LauncherPreferences(val context: Application, version: Int = 3) {
|
||||
var cardStrokeWidth by IntPreference("card_stroke_width", default = 0)
|
||||
var cardRadius by IntPreference("card_radius", default = 8)
|
||||
|
||||
var wallpaperColor by IntPreference("wallpaper_color", default = 0x0)
|
||||
var isLightWallpaper by BooleanPreference("is_light_wallpaper", default = false)
|
||||
|
||||
var weatherProvider by EnumPreference("weather_provider", default = WeatherProviders.MET_NO)
|
||||
|
||||
var unselectedCalendars by LongListPreference("unselected_calendars", default = emptyList())
|
||||
var calendarHideAllday by BooleanPreference("calendar_hide_allday", default = false)
|
||||
|
||||
var hasRequestedNotificationPermission by BooleanPreference("requested_notification_permission", default = false)
|
||||
|
||||
var easterEggEnabled by BooleanPreference("easter_egg", default = false)
|
||||
|
||||
var gridColumnCount by IntPreference("grid_column_count", default = context.resources.getInteger(R.integer.config_columnCount))
|
||||
@ -128,11 +100,6 @@ class LauncherPreferences(val context: Application, version: Int = 3) {
|
||||
}
|
||||
}
|
||||
|
||||
enum class WebsiteProtocols(override val value: String) : PreferenceEnum {
|
||||
HTTP("0"),
|
||||
HTTPS("1")
|
||||
}
|
||||
|
||||
enum class Themes(override val value: String) : PreferenceEnum {
|
||||
SYSTEM("2"),
|
||||
LIGHT("0"),
|
||||
@ -164,19 +131,6 @@ enum class IconShape(override val value: String) : PreferenceEnum {
|
||||
PLATFORM_DEFAULT("8")
|
||||
}
|
||||
|
||||
enum class WeatherProviders(override val value: String) : PreferenceEnum {
|
||||
OPENWEATHERMAP("0"),
|
||||
HERE("3"),
|
||||
MET_NO("2"),
|
||||
BRIGHT_SKY("4");
|
||||
|
||||
companion object {
|
||||
fun byValue(value: String): WeatherProviders {
|
||||
return values().first { it.value == value }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum class ColorSchemes(override val value: String) : PreferenceEnum {
|
||||
DEFAULT("0"),
|
||||
BLACK("2");
|
||||
|
||||
@ -7,12 +7,6 @@ import android.location.LocationManager
|
||||
import androidx.core.content.edit
|
||||
import androidx.core.content.getSystemService
|
||||
import de.mm20.launcher2.ktx.checkPermission
|
||||
import de.mm20.launcher2.preferences.LauncherPreferences
|
||||
import de.mm20.launcher2.preferences.WeatherProviders
|
||||
import de.mm20.launcher2.weather.brightsky.BrightskyProvider
|
||||
import de.mm20.launcher2.weather.here.HereProvider
|
||||
import de.mm20.launcher2.weather.metno.MetNoProvider
|
||||
import de.mm20.launcher2.weather.openweathermap.OpenWeatherMapProvider
|
||||
|
||||
abstract class WeatherProvider<T : WeatherLocation> {
|
||||
|
||||
@ -100,15 +94,6 @@ abstract class WeatherProvider<T : WeatherLocation> {
|
||||
|
||||
companion object {
|
||||
|
||||
fun getInstance(context: Context): WeatherProvider<out WeatherLocation>? {
|
||||
return when (LauncherPreferences.instance.weatherProvider) {
|
||||
WeatherProviders.OPENWEATHERMAP -> OpenWeatherMapProvider(context)
|
||||
WeatherProviders.HERE -> HereProvider(context)
|
||||
WeatherProviders.BRIGHT_SKY -> BrightskyProvider(context)
|
||||
else -> MetNoProvider(context)
|
||||
}.takeIf { it.isAvailable() }
|
||||
}
|
||||
|
||||
private const val LAST_UPDATE = "last_update"
|
||||
private const val AUTO_LOCATION = "auto_location"
|
||||
}
|
||||
|
||||
@ -6,29 +6,15 @@ import android.graphics.Color
|
||||
import android.graphics.Typeface
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.net.Uri
|
||||
import android.webkit.URLUtil
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
import androidx.core.graphics.toColorInt
|
||||
import androidx.palette.graphics.Palette
|
||||
import com.bumptech.glide.Glide
|
||||
import de.mm20.launcher2.graphics.TextDrawable
|
||||
import de.mm20.launcher2.helper.NetworkUtils
|
||||
import de.mm20.launcher2.icons.LauncherIcon
|
||||
import de.mm20.launcher2.ktx.sp
|
||||
import de.mm20.launcher2.preferences.LauncherPreferences
|
||||
import de.mm20.launcher2.preferences.WebsiteProtocols
|
||||
import de.mm20.launcher2.websites.R
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import okhttp3.HttpUrl
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import org.jsoup.Jsoup
|
||||
import org.jsoup.UncheckedIOException
|
||||
import java.io.IOException
|
||||
import java.net.MalformedURLException
|
||||
import java.net.URISyntaxException
|
||||
import java.net.URL
|
||||
import java.util.concurrent.ExecutionException
|
||||
|
||||
class Website(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user