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