AboutActivity.kt raw
1 package io.github.domi04151309.alwayson.activities
2
3 import android.content.Intent
4 import android.os.Bundle
5 import androidx.core.net.toUri
6 import androidx.preference.Preference
7 import androidx.preference.PreferenceFragmentCompat
8 import com.google.android.material.dialog.MaterialAlertDialogBuilder
9 import io.github.domi04151309.alwayson.BuildConfig
10 import io.github.domi04151309.alwayson.R
11
12 class AboutActivity : BaseActivity() {
13 override fun onCreate(savedInstanceState: Bundle?) {
14 super.onCreate(savedInstanceState)
15 setContentView(R.layout.activity_settings)
16 supportFragmentManager
17 .beginTransaction()
18 .replace(R.id.settings, GeneralPreferenceFragment())
19 .commit()
20 }
21
22 class GeneralPreferenceFragment : PreferenceFragmentCompat() {
23 @Suppress("SameReturnValue")
24 private fun onIconsClicked(): Boolean {
25 MaterialAlertDialogBuilder(requireContext())
26 .setTitle(R.string.about_icons)
27 .setItems(resources.getStringArray(R.array.about_icons_array)) { _, which ->
28 startActivity(
29 Intent(
30 Intent.ACTION_VIEW,
31 when (which) {
32 0 -> "https://icons8.com/"
33 1 -> "https://fonts.google.com/icons?selected=Material+Icons"
34 else -> "about:blank"
35 }.toUri(),
36 ),
37 )
38 }
39 .show()
40 return true
41 }
42
43 @Suppress("SameReturnValue")
44 private fun onExternalClicked(link: String): Boolean {
45 MaterialAlertDialogBuilder(requireContext())
46 .setTitle(R.string.about_privacy)
47 .setMessage(R.string.about_privacy_desc)
48 .setPositiveButton(android.R.string.ok) { _, _ ->
49 startActivity(
50 Intent(
51 Intent.ACTION_VIEW,
52 link.toUri(),
53 ),
54 )
55 }
56 .setNegativeButton(android.R.string.cancel) { _, _ -> }
57 .setNeutralButton(R.string.about_privacy_policy) { _, _ ->
58 startActivity(
59 Intent(
60 Intent.ACTION_VIEW,
61 "https://docs.github.com/en/github/site-policy/github-privacy-statement".toUri(),
62 ),
63 )
64 }
65 .show()
66 return true
67 }
68
69 override fun onCreatePreferences(
70 savedInstanceState: Bundle?,
71 rootKey: String?,
72 ) {
73 addPreferencesFromResource(R.xml.pref_about)
74 findPreference<Preference>("app_version")?.apply {
75 summary =
76 requireContext().getString(
77 R.string.about_app_version_desc,
78 BuildConfig.VERSION_NAME,
79 BuildConfig.VERSION_CODE,
80 )
81 setOnPreferenceClickListener {
82 onExternalClicked("$REPOSITORY_URL/releases")
83 }
84 }
85 findPreference<Preference>("github")?.apply {
86 summary = REPOSITORY_URL
87 setOnPreferenceClickListener {
88 onExternalClicked(REPOSITORY_URL)
89 }
90 }
91 findPreference<Preference>("license")?.setOnPreferenceClickListener {
92 onExternalClicked("$REPOSITORY_URL/blob/$BRANCH/LICENSE")
93 }
94 findPreference<Preference>("icons")?.setOnPreferenceClickListener {
95 onIconsClicked()
96 }
97 findPreference<Preference>("contributors")?.setOnPreferenceClickListener {
98 onExternalClicked("$REPOSITORY_URL/graphs/contributors")
99 }
100 findPreference<Preference>("libraries")?.setOnPreferenceClickListener {
101 startActivity(Intent(requireContext(), LibraryActivity::class.java))
102 true
103 }
104 }
105 }
106
107 companion object {
108 private const val REPOSITORY: String = "Domi04151309/AlwaysOn"
109 private const val BRANCH: String = "main"
110 private const val REPOSITORY_URL: String = "https://github.com/$REPOSITORY"
111 }
112 }
113