/
SettingsView.kt
74 lines (67 loc) · 2.79 KB
/
SettingsView.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
* Copyright © 2020 - present | Handwashing reminder by Javinator9889
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see https://www.gnu.org/licenses/.
*
* Created by Javinator9889 on 16/04/20 - Handwashing reminder.
*/
package com.javinator9889.handwashingreminder.activities.views.fragments.settings
import android.os.Bundle
import android.view.View
import androidx.preference.ListPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import com.javinator9889.handwashingreminder.R
import com.javinator9889.handwashingreminder.activities.base.LayoutVisibilityChange
import com.javinator9889.handwashingreminder.data.SettingsLoader
import com.javinator9889.handwashingreminder.gms.vendor.BillingService
import timber.log.Timber
import java.lang.ref.WeakReference
class SettingsView : PreferenceFragmentCompat(),
Preference.OnPreferenceChangeListener,
LayoutVisibilityChange {
lateinit var firebaseAnalyticsPreference:
WeakReference<Preference>
lateinit var firebasePerformancePreference:
WeakReference<Preference>
lateinit var adsPreference: WeakReference<Preference>
lateinit var donationsPreference: WeakReference<ListPreference>
lateinit var billingService: BillingService
private val loader = SettingsLoader(view = this, lifecycleOwner = this)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requireActivity().setTheme(R.style.AppTheme_MaterialDialogs)
}
override fun onCreatePreferences(
savedInstanceState: Bundle?,
rootKey: String?
) {
setPreferencesFromResource(R.xml.preferences, rootKey)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
billingService = BillingService(view.context)
}
override fun onPreferenceChange(
preference: Preference?,
newValue: Any?
): Boolean {
Timber.d("Preference $preference changed - ${preference?.key}")
return loader.onPreferenceChange(preference, newValue)
}
override fun onVisibilityChanged(visibility: Int) {
if (visibility == View.VISIBLE)
loader.loadViews()
}
}