Remove unused preferences

This commit is contained in:
MM20 2022-01-15 15:53:26 +01:00
parent cd3ee6f3cb
commit 1814e21181
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
9 changed files with 0 additions and 505 deletions

View File

@ -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()
}

View File

@ -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)
}
}

View File

@ -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)
}
}

View File

@ -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
}
}

View File

@ -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) {

View File

@ -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)
}
}

View File

@ -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");

View File

@ -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"
}

View File

@ -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(