miroir de https://git.suyu.dev/suyu/suyu.git
125 lignes
4.5 KiB
Kotlin
125 lignes
4.5 KiB
Kotlin
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
package dev.suyu.suyu_emu.fragments
|
|
|
|
import android.content.ClipData
|
|
import android.content.ClipboardManager
|
|
import android.content.Context
|
|
import android.content.Intent
|
|
import android.net.Uri
|
|
import android.os.Build
|
|
import android.os.Bundle
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import android.widget.Toast
|
|
import androidx.core.view.ViewCompat
|
|
import androidx.core.view.WindowInsetsCompat
|
|
import androidx.core.view.updatePadding
|
|
import androidx.fragment.app.Fragment
|
|
import androidx.fragment.app.activityViewModels
|
|
import androidx.navigation.findNavController
|
|
import com.google.android.material.transition.MaterialSharedAxis
|
|
import dev.suyu.suyu_emu.BuildConfig
|
|
import dev.suyu.suyu_emu.R
|
|
import dev.suyu.suyu_emu.databinding.FragmentAboutBinding
|
|
import dev.suyu.suyu_emu.model.HomeViewModel
|
|
import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins
|
|
|
|
class AboutFragment : Fragment() {
|
|
private var _binding: FragmentAboutBinding? = null
|
|
private val binding get() = _binding!!
|
|
|
|
private val homeViewModel: HomeViewModel by activityViewModels()
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true)
|
|
returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false)
|
|
reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false)
|
|
}
|
|
|
|
override fun onCreateView(
|
|
inflater: LayoutInflater,
|
|
container: ViewGroup?,
|
|
savedInstanceState: Bundle?
|
|
): View {
|
|
_binding = FragmentAboutBinding.inflate(layoutInflater)
|
|
return binding.root
|
|
}
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
homeViewModel.setNavigationVisibility(visible = false, animated = true)
|
|
homeViewModel.setStatusBarShadeVisibility(visible = false)
|
|
|
|
binding.toolbarAbout.setNavigationOnClickListener {
|
|
binding.root.findNavController().popBackStack()
|
|
}
|
|
|
|
binding.imageLogo.setOnLongClickListener {
|
|
Toast.makeText(
|
|
requireContext(),
|
|
R.string.gaia_is_not_real,
|
|
Toast.LENGTH_SHORT
|
|
).show()
|
|
true
|
|
}
|
|
|
|
binding.buttonContributors.setOnClickListener {
|
|
openLink(
|
|
getString(R.string.contributors_link)
|
|
)
|
|
}
|
|
binding.buttonLicenses.setOnClickListener {
|
|
exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true)
|
|
binding.root.findNavController().navigate(R.id.action_aboutFragment_to_licensesFragment)
|
|
}
|
|
|
|
binding.textVersionName.text = BuildConfig.VERSION_NAME
|
|
binding.buttonVersionName.setOnClickListener {
|
|
val clipBoard =
|
|
requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
|
val clip = ClipData.newPlainText(getString(R.string.build), BuildConfig.GIT_HASH)
|
|
clipBoard.setPrimaryClip(clip)
|
|
|
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
|
|
Toast.makeText(
|
|
requireContext(),
|
|
R.string.copied_to_clipboard,
|
|
Toast.LENGTH_SHORT
|
|
).show()
|
|
}
|
|
}
|
|
|
|
binding.buttonDiscord.setOnClickListener { openLink(getString(R.string.support_link)) }
|
|
binding.buttonWebsite.setOnClickListener { openLink(getString(R.string.website_link)) }
|
|
binding.buttonGithub.setOnClickListener { openLink(getString(R.string.github_link)) }
|
|
|
|
setInsets()
|
|
}
|
|
|
|
private fun openLink(link: String) {
|
|
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(link))
|
|
startActivity(intent)
|
|
}
|
|
|
|
private fun setInsets() =
|
|
ViewCompat.setOnApplyWindowInsetsListener(
|
|
binding.root
|
|
) { _: View, windowInsets: WindowInsetsCompat ->
|
|
val barInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
|
val cutoutInsets = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout())
|
|
|
|
val leftInsets = barInsets.left + cutoutInsets.left
|
|
val rightInsets = barInsets.right + cutoutInsets.right
|
|
|
|
binding.toolbarAbout.updateMargins(left = leftInsets, right = rightInsets)
|
|
binding.scrollAbout.updateMargins(left = leftInsets, right = rightInsets)
|
|
|
|
binding.contentAbout.updatePadding(bottom = barInsets.bottom)
|
|
|
|
windowInsets
|
|
}
|
|
}
|