Warning, /network/kdeconnect-android/src/org/kde/kdeconnect/UserInterface/About/AboutFragment.kt is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2021 Maxim Leshchenko <cnmaks90@gmail.com>
0003 *
0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006
0007 package org.kde.kdeconnect.UserInterface.About
0008
0009 import android.annotation.SuppressLint
0010 import android.content.Intent
0011 import android.net.Uri
0012 import android.os.Bundle
0013 import android.view.LayoutInflater
0014 import android.view.View
0015 import android.view.ViewGroup
0016 import android.widget.FrameLayout
0017 import androidx.core.content.ContextCompat
0018 import androidx.fragment.app.Fragment
0019 import org.kde.kdeconnect.UserInterface.List.ListAdapter
0020 import org.kde.kdeconnect.UserInterface.MainActivity
0021 import org.kde.kdeconnect_tp.R
0022 import org.kde.kdeconnect_tp.databinding.FragmentAboutBinding
0023
0024 class AboutFragment : Fragment() {
0025 private var binding: FragmentAboutBinding? = null
0026 private lateinit var aboutData: AboutData
0027 private var tapCount = 0
0028 private var firstTapMillis: Long? = null
0029
0030 companion object {
0031 @JvmStatic
0032 fun newInstance(aboutData: AboutData): Fragment {
0033 val fragment = AboutFragment()
0034
0035 val args = Bundle(1)
0036 args.putParcelable("ABOUT_DATA", aboutData)
0037 fragment.arguments = args
0038
0039 return fragment
0040 }
0041 }
0042
0043 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
0044 if (activity != null) {
0045 (requireActivity() as MainActivity).supportActionBar?.setTitle(R.string.about)
0046 }
0047
0048 aboutData = requireArguments().getParcelable("ABOUT_DATA")!!
0049 binding = FragmentAboutBinding.inflate(inflater, container, false)
0050
0051 updateData()
0052 return binding!!.root
0053 }
0054
0055 @SuppressLint("SetTextI18n")
0056 fun updateData() {
0057 // Update general info
0058
0059 binding!!.appName.text = aboutData.name
0060 binding!!.appIcon.setImageDrawable(this.context?.let { ContextCompat.getDrawable(it, aboutData.icon) })
0061 binding!!.appVersion.text = this.context?.getString(R.string.version, aboutData.versionName)
0062
0063 // Setup Easter Egg onClickListener
0064
0065 binding!!.generalInfoCard.setOnClickListener {
0066 if (firstTapMillis == null) {
0067 firstTapMillis = System.currentTimeMillis()
0068 }
0069
0070 if (++tapCount == 3) {
0071 tapCount = 0
0072
0073 if (firstTapMillis!! >= (System.currentTimeMillis() - 500)) {
0074 startActivity(Intent(context, EasterEggActivity::class.java))
0075 }
0076
0077 firstTapMillis = null
0078 }
0079 }
0080
0081 // Update button onClickListeners
0082
0083 setupInfoButton(aboutData.bugURL, binding!!.reportBugButton)
0084 setupInfoButton(aboutData.donateURL, binding!!.donateButton)
0085 setupInfoButton(aboutData.sourceCodeURL, binding!!.sourceCodeButton)
0086
0087 binding!!.licensesButton.setOnClickListener {
0088 startActivity(Intent(context, LicensesActivity::class.java))
0089 }
0090
0091 binding!!.aboutKdeButton.setOnClickListener {
0092 startActivity(Intent(context, AboutKDEActivity::class.java))
0093 }
0094
0095 setupInfoButton(aboutData.websiteURL, binding!!.websiteButton)
0096
0097 // Update authors
0098 binding!!.authorsList.adapter = ListAdapter(this.context, aboutData.authors.map { AboutPersonEntryItem(it) }, false)
0099 if (aboutData.authorsFooterText != null) {
0100 binding!!.authorsFooterText.text = context?.getString(aboutData.authorsFooterText!!)
0101 }
0102 }
0103
0104 private fun setupInfoButton(url: String?, button: FrameLayout) {
0105 if (url == null) {
0106 button.visibility = View.GONE
0107 } else {
0108 button.setOnClickListener {
0109 startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
0110 }
0111 }
0112 }
0113
0114 override fun onDestroyView() {
0115 super.onDestroyView()
0116 binding = null
0117 }
0118 }