2020-04-09 17:31:13 +00:00
|
|
|
package com.vanced.manager.ui.fragments
|
2020-03-18 18:10:54 +00:00
|
|
|
|
2020-07-03 17:46:09 +00:00
|
|
|
import android.content.*
|
2020-03-18 18:10:54 +00:00
|
|
|
import android.os.Bundle
|
2020-04-19 17:21:40 +00:00
|
|
|
import android.view.*
|
2020-06-28 14:47:51 +00:00
|
|
|
import android.view.animation.AccelerateDecelerateInterpolator
|
2020-07-03 17:46:09 +00:00
|
|
|
import android.widget.Toast
|
2020-06-04 07:35:26 +00:00
|
|
|
import androidx.databinding.DataBindingUtil
|
2020-08-04 10:02:36 +00:00
|
|
|
import androidx.fragment.app.Fragment
|
2020-06-04 08:39:04 +00:00
|
|
|
import androidx.fragment.app.viewModels
|
2020-06-08 11:23:45 +00:00
|
|
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
2020-09-15 23:52:36 +00:00
|
|
|
import androidx.navigation.findNavController
|
2020-08-31 16:12:20 +00:00
|
|
|
import com.google.android.material.tabs.TabLayout
|
2020-04-10 12:45:09 +00:00
|
|
|
import com.google.android.material.tabs.TabLayoutMediator
|
2020-04-09 17:31:13 +00:00
|
|
|
import com.vanced.manager.R
|
2020-09-19 13:56:24 +00:00
|
|
|
import com.vanced.manager.adapter.ChangelogAdapter
|
2020-06-04 07:35:26 +00:00
|
|
|
import com.vanced.manager.databinding.FragmentHomeBinding
|
2020-08-05 11:52:09 +00:00
|
|
|
import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder
|
2020-06-04 08:39:04 +00:00
|
|
|
import com.vanced.manager.ui.viewmodels.HomeViewModel
|
2020-09-19 13:56:24 +00:00
|
|
|
import com.vanced.manager.ui.viewmodels.HomeViewModelFactory
|
2020-03-18 18:10:54 +00:00
|
|
|
|
2020-09-04 19:14:43 +00:00
|
|
|
open class HomeFragment : Fragment(), View.OnClickListener {
|
2020-03-18 18:10:54 +00:00
|
|
|
|
2020-06-04 07:35:26 +00:00
|
|
|
private lateinit var binding: FragmentHomeBinding
|
2020-09-04 19:14:43 +00:00
|
|
|
private lateinit var variant: String
|
2020-06-25 14:22:33 +00:00
|
|
|
private var isExpanded: Boolean = false
|
2020-09-19 13:56:24 +00:00
|
|
|
private val viewModel: HomeViewModel by viewModels {
|
|
|
|
HomeViewModelFactory(requireActivity().application, variant)
|
|
|
|
}
|
2020-07-04 13:44:28 +00:00
|
|
|
private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) }
|
2020-04-10 12:45:09 +00:00
|
|
|
|
2020-03-18 18:10:54 +00:00
|
|
|
override fun onCreateView(
|
2020-07-16 21:05:31 +00:00
|
|
|
inflater: LayoutInflater, container: ViewGroup?,
|
|
|
|
savedInstanceState: Bundle?
|
2020-03-18 18:10:54 +00:00
|
|
|
): View? {
|
2020-07-04 13:44:28 +00:00
|
|
|
requireActivity().title = getString(R.string.title_home)
|
2020-04-22 09:41:18 +00:00
|
|
|
setHasOptionsMenu(true)
|
2020-09-19 08:21:48 +00:00
|
|
|
variant = if (requireActivity().findViewById<TabLayout>(R.id.main_tablayout).selectedTabPosition == 1) "root" else "nonroot"
|
2020-06-04 07:35:26 +00:00
|
|
|
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false)
|
2020-09-04 19:14:43 +00:00
|
|
|
binding.viewModel = viewModel
|
2020-06-04 07:35:26 +00:00
|
|
|
return binding.root
|
2020-03-19 19:55:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
2020-04-22 18:00:00 +00:00
|
|
|
super.onViewCreated(view, savedInstanceState)
|
2020-09-20 14:41:28 +00:00
|
|
|
viewModel.navigateDestination.observe(viewLifecycleOwner, {
|
2020-09-15 23:52:36 +00:00
|
|
|
val content = it.getContentIfNotHandled()
|
|
|
|
if(content != null){
|
|
|
|
view.findNavController().navigate(content)
|
|
|
|
}
|
|
|
|
})
|
2020-09-19 07:07:32 +00:00
|
|
|
|
2020-08-26 11:09:34 +00:00
|
|
|
with(binding) {
|
2020-08-07 16:51:45 +00:00
|
|
|
includeChangelogsLayout.changelogButton.setOnClickListener(this@HomeFragment)
|
2020-07-03 17:46:09 +00:00
|
|
|
|
2020-08-31 16:12:20 +00:00
|
|
|
includeVancedLayout.vancedCard.setOnLongClickListener {
|
2020-09-17 10:13:16 +00:00
|
|
|
versionToast("Vanced", viewModel?.vanced?.get()?.installedVersionName?.get()!!)
|
2020-08-31 16:12:20 +00:00
|
|
|
true
|
|
|
|
}
|
2020-09-04 19:14:43 +00:00
|
|
|
|
|
|
|
includeMusicLayout.musicCard.setOnLongClickListener {
|
2020-09-17 10:13:16 +00:00
|
|
|
versionToast("Music", viewModel?.music?.get()?.installedVersionName?.get()!!)
|
2020-09-04 19:14:43 +00:00
|
|
|
true
|
|
|
|
}
|
2020-07-03 17:46:09 +00:00
|
|
|
|
2020-08-31 16:12:20 +00:00
|
|
|
includeMicrogLayout.microgCard.setOnLongClickListener {
|
2020-09-17 10:13:16 +00:00
|
|
|
versionToast("MicroG", viewModel?.microg?.get()?.installedVersionName?.get()!!)
|
2020-08-31 16:12:20 +00:00
|
|
|
true
|
|
|
|
}
|
2020-07-03 17:46:09 +00:00
|
|
|
}
|
2020-07-16 21:05:31 +00:00
|
|
|
|
|
|
|
with(binding.includeChangelogsLayout) {
|
2020-09-19 13:56:24 +00:00
|
|
|
viewpager.adapter = ChangelogAdapter(variant, this@HomeFragment.viewModel)
|
|
|
|
val nonrootTitles = arrayOf("Vanced", "Music", "microG", "Manager")
|
|
|
|
val rootTitles = arrayOf("Vanced", "Manager")
|
2020-09-04 19:14:43 +00:00
|
|
|
|
2020-07-16 21:05:31 +00:00
|
|
|
TabLayoutMediator(tablayout, viewpager) { tab, position ->
|
2020-08-31 16:12:20 +00:00
|
|
|
tab.text =
|
2020-09-19 13:56:24 +00:00
|
|
|
if (variant == "root") {
|
|
|
|
rootTitles[position]
|
|
|
|
} else {
|
|
|
|
nonrootTitles[position]
|
2020-09-04 19:14:43 +00:00
|
|
|
}
|
2020-07-16 21:05:31 +00:00
|
|
|
}.attach()
|
|
|
|
}
|
2020-08-07 19:24:35 +00:00
|
|
|
|
2020-08-04 10:02:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
override fun onClick(v: View?) {
|
|
|
|
when (v?.id) {
|
2020-08-07 16:51:45 +00:00
|
|
|
R.id.changelog_button -> cardExpandCollapse()
|
2020-08-04 10:02:36 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun versionToast(name: String, app: String?) {
|
|
|
|
val clip = requireActivity().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
|
|
|
clip.setPrimaryClip(ClipData.newPlainText(name, app))
|
2020-07-03 17:52:15 +00:00
|
|
|
Toast.makeText(activity, getString(R.string.version_toast, name), Toast.LENGTH_LONG).show()
|
|
|
|
}
|
|
|
|
|
2020-06-25 14:22:33 +00:00
|
|
|
private fun cardExpandCollapse() {
|
2020-07-04 13:44:28 +00:00
|
|
|
with(binding.includeChangelogsLayout) {
|
2020-07-23 13:35:04 +00:00
|
|
|
viewpager.visibility = if (isExpanded) View.GONE else View.VISIBLE
|
|
|
|
tablayout.visibility = if (isExpanded) View.GONE else View.VISIBLE
|
2020-07-04 13:44:28 +00:00
|
|
|
changelogButton.animate().apply {
|
|
|
|
rotation(if (isExpanded) 0F else 180F)
|
|
|
|
interpolator = AccelerateDecelerateInterpolator()
|
|
|
|
}
|
|
|
|
isExpanded = !isExpanded
|
2020-06-25 14:22:33 +00:00
|
|
|
}
|
2020-03-18 18:10:54 +00:00
|
|
|
}
|
2020-09-04 19:14:43 +00:00
|
|
|
|
2020-06-08 11:23:45 +00:00
|
|
|
override fun onPause() {
|
2020-07-04 13:44:28 +00:00
|
|
|
localBroadcastManager.unregisterReceiver(broadcastReceiver)
|
2020-06-08 11:23:45 +00:00
|
|
|
super.onPause()
|
|
|
|
}
|
|
|
|
|
2020-08-04 13:49:46 +00:00
|
|
|
override fun onResume() {
|
|
|
|
super.onResume()
|
|
|
|
registerReceivers()
|
|
|
|
}
|
|
|
|
|
2020-06-08 11:23:45 +00:00
|
|
|
private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
|
|
|
|
override fun onReceive(context: Context, intent: Intent) {
|
|
|
|
when (intent.action) {
|
2020-09-20 14:41:28 +00:00
|
|
|
INSTALL_FAILED -> installAlertBuilder(intent.getStringExtra("errorMsg") as String, requireActivity())
|
2020-09-17 10:13:16 +00:00
|
|
|
REFRESH_HOME -> viewModel.fetchData()
|
2020-06-08 11:23:45 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun registerReceivers() {
|
2020-06-23 13:47:20 +00:00
|
|
|
val intentFilter = IntentFilter()
|
2020-08-06 18:37:43 +00:00
|
|
|
intentFilter.addAction(INSTALL_FAILED)
|
2020-09-17 19:25:44 +00:00
|
|
|
intentFilter.addAction(REFRESH_HOME)
|
2020-07-04 13:44:28 +00:00
|
|
|
localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter)
|
2020-06-08 11:23:45 +00:00
|
|
|
}
|
|
|
|
|
2020-04-19 17:21:40 +00:00
|
|
|
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
|
|
|
inflater.inflate(R.menu.toolbar_menu, menu)
|
2020-07-04 13:44:28 +00:00
|
|
|
super.onCreateOptionsMenu(menu, inflater)
|
2020-04-19 17:21:40 +00:00
|
|
|
}
|
|
|
|
|
2020-09-06 10:33:04 +00:00
|
|
|
companion object {
|
2020-08-05 11:52:09 +00:00
|
|
|
const val INSTALL_FAILED = "install_failed"
|
2020-09-15 18:06:29 +00:00
|
|
|
const val REFRESH_HOME = "refresh_home"
|
2020-06-08 11:23:45 +00:00
|
|
|
}
|
2020-03-18 18:10:54 +00:00
|
|
|
}
|
2020-04-03 16:40:54 +00:00
|
|
|
|