mirror of
https://github.com/YTVanced/VancedManager
synced 2024-11-10 12:55:06 +00:00
Switched to TabLayout for variant selection
This commit is contained in:
parent
3805145aba
commit
3a3624e1be
13 changed files with 305 additions and 81 deletions
|
@ -0,0 +1,14 @@
|
|||
package com.vanced.manager.adapter
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||
import com.vanced.manager.ui.fragments.MainFragment
|
||||
|
||||
class SectionVariantAdapter(fragment: Fragment): FragmentStateAdapter(fragment) {
|
||||
|
||||
override fun getItemCount(): Int = 3
|
||||
|
||||
override fun createFragment(position: Int): Fragment = MainFragment()
|
||||
|
||||
}
|
|
@ -13,6 +13,8 @@ import androidx.navigation.ui.setupWithNavController
|
|||
import androidx.preference.PreferenceManager
|
||||
import com.crowdin.platform.Crowdin
|
||||
import com.crowdin.platform.LoadingStateListener
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.firebase.messaging.FirebaseMessaging
|
||||
import com.vanced.manager.R
|
||||
import com.vanced.manager.databinding.ActivityMainBinding
|
||||
|
@ -22,6 +24,7 @@ import com.vanced.manager.utils.AppUtils.installing
|
|||
import com.vanced.manager.utils.InternetTools
|
||||
import com.vanced.manager.utils.PackageHelper
|
||||
import com.vanced.manager.utils.ThemeHelper.setFinalTheme
|
||||
import com.vanced.manager.adapter.SectionVariantAdapter
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
@ -53,10 +56,61 @@ class MainActivity : AppCompatActivity() {
|
|||
setSupportActionBar(homeToolbar)
|
||||
val appBarConfiguration = AppBarConfiguration(navHost.graph)
|
||||
homeToolbar.setupWithNavController(navHost, appBarConfiguration)
|
||||
mainViewpager.adapter = SectionVariantAdapter()
|
||||
TabLayoutMediator(mainTablayout, mainViewpager) { tab, position ->
|
||||
when (position) {
|
||||
0 -> tab.text = "nonroot"
|
||||
1 -> tab.text = "Music"
|
||||
2 -> tab.text = "root"
|
||||
}
|
||||
}.attach()
|
||||
|
||||
when (variant) {
|
||||
"nonroot" -> mainTablayout.getTabAt(0).select()
|
||||
"music" -> mainTablayout.getTabAt(1).select()
|
||||
"nonroot" -> mainTablayout.getTabAt(2).select()
|
||||
}
|
||||
|
||||
mainTablayout.setOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
|
||||
|
||||
override fun onTabSelected(tab: TabLayout.Tab) {
|
||||
getDefaultSharedPreferences(requireActivity()).edit().apply {
|
||||
when (tab.position) {
|
||||
0 -> putString("vanced_variant", "nonroot")
|
||||
0 -> putString("vanced_variant", "music")
|
||||
0 -> putString("vanced_variant", "root")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onTabUnselected(tab: TabLayout.Tab) {}
|
||||
|
||||
override fun onTabReselected(tab: TabLayout.Tab) {
|
||||
getDefaultSharedPreferences(requireActivity()).edit().apply {
|
||||
when (tab.position) {
|
||||
0 -> putString("vanced_variant", "nonroot")
|
||||
0 -> putString("vanced_variant", "music")
|
||||
0 -> putString("vanced_variant", "root")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
navHost.addOnDestinationChangedListener { _, currFrag: NavDestination, _ ->
|
||||
setDisplayHomeAsUpEnabled(currFrag.id != R.id.home_fragment)
|
||||
val tabHide = AnimationUtils.loadAnimation(this, R.anim.tablayout_exit)
|
||||
val tabShow = AnimationUtils.loadAnimation(this, R.anim.tablayout_enter)
|
||||
if (currFrag.id != R.id.home_fragment) {
|
||||
binding.variantTabContainer.startAnimation(tabHide)
|
||||
binding.variantTabContainer.visibility = View.GONE
|
||||
} else {
|
||||
binding.variantTabContainer.visibility = View.VISIBLE
|
||||
binding.variantTabContainer.startAnimation(tabShow)
|
||||
}
|
||||
}
|
||||
|
||||
initDialogs()
|
||||
|
|
|
@ -48,7 +48,19 @@ class HomeFragment : Fragment(), View.OnClickListener {
|
|||
super.onViewCreated(view, savedInstanceState)
|
||||
binding.viewModel = viewModel
|
||||
|
||||
val variantPref = getDefaultSharedPreferences(requireActivity()).getString("vanced_variant", "nonroot")
|
||||
val arg = "variant"
|
||||
val variant = getDefaultSharedPreferences(requireActivity()).getString("vanced_variant")
|
||||
|
||||
with(binding) {
|
||||
when (variant) {
|
||||
"nonroot" -> includeMusicLayout.musicCard.visibility = View.GONE
|
||||
"music" -> includeVancedLayout.vancedCard.visibility = View.GONE
|
||||
"root" -> {
|
||||
includeMusicLayout.musicCard.visibility = View.GONE
|
||||
includeMicrogLayout.microgCard.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
with(binding) {
|
||||
rootSwitch.setOnClickListener(this@HomeFragment)
|
||||
|
@ -72,9 +84,9 @@ class HomeFragment : Fragment(), View.OnClickListener {
|
|||
}
|
||||
|
||||
with(binding.includeChangelogsLayout) {
|
||||
viewpager.adapter = if (variantPref == "root") SectionPageRootAdapter(this@HomeFragment) else SectionPageAdapter(this@HomeFragment)
|
||||
viewpager.adapter = if (variant == "root") SectionPageRootAdapter(this@HomeFragment) else SectionPageAdapter(this@HomeFragment)
|
||||
TabLayoutMediator(tablayout, viewpager) { tab, position ->
|
||||
if (variantPref == "root")
|
||||
if (variant == "root")
|
||||
when (position) {
|
||||
0 -> tab.text = "Vanced"
|
||||
1 -> tab.text = "Manager"
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
import androidx.fragment.app.Fragment
|
||||
|
||||
class HomeFragment : Fragment() {
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
requireActivity().title = getString(R.string.title_home)
|
||||
setHasOptionsMenu(true)
|
||||
return inflater.inflate(inflater, R.layout.fragment_main, container, false)
|
||||
}
|
||||
|
||||
}
|
|
@ -44,7 +44,6 @@ object AppUtils {
|
|||
status.contains("IFile_Missing") -> context.getString(R.string.IFile_Missing)
|
||||
status.contains("ModApk_Missing") -> context.getString(R.string.ModApk_Missing)
|
||||
status.contains("Files_Missing_VA") -> context.getString(R.string.Files_Missing_VA)
|
||||
status.contains("Corrupt_Data") -> context.getString(R.string.Corrupt_Data)
|
||||
else ->
|
||||
if (MiuiHelper.isMiui())
|
||||
context.getString(R.string.installation_miui)
|
||||
|
@ -70,4 +69,4 @@ object AppUtils {
|
|||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
9
app/src/main/res/anim/tablayout_enter.xml
Normal file
9
app/src/main/res/anim/tablayout_enter.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<translate
|
||||
android:duration="500"
|
||||
android:fromYDelta="-100%p"
|
||||
android:toYDelta="0"
|
||||
|
||||
</set>
|
10
app/src/main/res/anim/tablayout_exit.xml
Normal file
10
app/src/main/res/anim/tablayout_exit.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<translate
|
||||
android:duration="500"
|
||||
android:fromYDelta="0"
|
||||
android:toYDelta="-100%p"
|
||||
|
||||
</set>
|
||||
|
|
@ -9,15 +9,6 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/bottom_nav_host"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@id/home_appbar"
|
||||
app:defaultNavHost="true"
|
||||
app:navGraph="@navigation/mobile_navigation"/>
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/home_appbar"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -33,7 +24,30 @@
|
|||
android:background="@android:color/transparent"/>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/variant_tab_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/main_tablayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?colorSurfaceVariant"
|
||||
app:tabIndicatorColor="?colorPrimary"
|
||||
app:tabSelectedTextColor="?colorPrimary"
|
||||
app:tabTextColor="?colorPrimary" />
|
||||
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/main_viewpager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</layout>
|
||||
</layout>
|
||||
|
|
|
@ -29,68 +29,7 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="4dp"
|
||||
android:animateLayoutChanges="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="25dp"
|
||||
android:layout_marginEnd="25dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/nonroot"
|
||||
android:textAllCaps="false"
|
||||
android:visibility="@{viewModel.nonrootModeSelected ? View.VISIBLE : View.GONE}"
|
||||
bind:strokeColor="?colorPrimary"
|
||||
bind:strokeWidth="2dp" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/nonroot_switch"
|
||||
style="@style/ButtonStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/nonroot"
|
||||
android:visibility="@{viewModel.nonrootModeSelected ? View.GONE : View.VISIBLE}" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/root"
|
||||
android:textAllCaps="false"
|
||||
android:visibility="@{viewModel.nonrootModeSelected ? View.GONE : View.VISIBLE}"
|
||||
bind:strokeColor="?colorPrimary"
|
||||
bind:strokeWidth="2dp" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/root_switch"
|
||||
style="@style/ButtonStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/root"
|
||||
android:visibility="@{viewModel.nonrootModeSelected ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
android:orientation="horizontal">
|
||||
|
||||
<include
|
||||
android:id="@+id/include_vanced_layout"
|
||||
|
@ -110,7 +49,6 @@
|
|||
android:layout_marginStart="@dimen/stdp"
|
||||
android:layout_marginTop="@dimen/stdp"
|
||||
android:layout_marginEnd="@dimen/stdp"
|
||||
android:visibility="@{viewModel.nonrootModeSelected ? View.VISIBLE : View.GONE}"
|
||||
bind:viewModel="@{viewModel}" />
|
||||
|
||||
<include
|
||||
|
|
12
app/src/main/res/layout/fragment_main.xml
Normal file
12
app/src/main/res/layout/fragment_main.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<fragment
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/bottom_nav_host"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@id/home_appbar"
|
||||
app:defaultNavHost="true"
|
||||
app:navGraph="@navigation/mobile_navigation"/>
|
|
@ -12,4 +12,4 @@
|
|||
android:layout_height="match_parent"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</FrameLayout>
|
||||
</FrameLayout>
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:background="?colorSurfaceVariant"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintTop_toBottomOf="parent"
|
||||
app:tabIndicatorColor="?colorPrimary"
|
||||
app:tabSelectedTextColor="?colorPrimary"
|
||||
app:tabTextColor="?colorPrimary"
|
||||
|
@ -70,4 +69,4 @@
|
|||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
</layout>
|
||||
</layout>
|
||||
|
|
149
app/src/main/res/layout/include_music.xml
Normal file
149
app/src/main/res/layout/include_music.xml
Normal file
|
@ -0,0 +1,149 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
|
||||
<import type="android.view.View" />
|
||||
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="com.vanced.manager.ui.viewmodels.HomeViewModel" />
|
||||
|
||||
</data>
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/microg_card"
|
||||
style="@style/MaterialCard">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:animateLayoutChanges="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/home_microg_logo"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toTopOf="@id/microg_title_buttons_barrier"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/ic_microg" />
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppTitle"
|
||||
android:text="@string/microg"
|
||||
app:layout_constraintBottom_toTopOf="@id/microg_title_buttons_barrier"
|
||||
app:layout_constraintStart_toEndOf="@id/home_microg_logo"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/microg_installbtn"
|
||||
style="@style/ButtonStyle"
|
||||
android:text="@{viewModel.microgInstallButtonTxt}"
|
||||
app:icon="@{viewModel.microgInstallButtonIcon}"
|
||||
app:layout_constraintBottom_toTopOf="@id/microg_uninstallbtn"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
android:id="@+id/microg_title_buttons_barrier"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:barrierDirection="bottom"
|
||||
app:constraint_referenced_ids="microg_installbtn" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/microg_remote_latest_version"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toTopOf="@id/linearLayout2"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/microg_title_buttons_barrier">
|
||||
|
||||
<TextView
|
||||
style="@style/AppVer"
|
||||
android:text="@string/latest" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/microg_latest_version"
|
||||
style="@style/AppVer.Bold"
|
||||
android:text="@{viewModel.microgVersion}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/microg_remote_latest_version">
|
||||
|
||||
<TextView
|
||||
style="@style/AppVer"
|
||||
android:text="@string/version_installed" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/microg_installed_version"
|
||||
style="@style/AppVer.Bold"
|
||||
android:text="@{viewModel.microgInstalledVersion}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/microg_settingsbtn"
|
||||
style="@style/ClickableImageWidget"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:onClick="@{()-> viewModel.openMicrogSettings()}"
|
||||
android:visibility="@{viewModel.microgInstalled ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/microg_uninstallbtn"
|
||||
app:layout_constraintTop_toBottomOf="@id/microg_title_buttons_barrier"
|
||||
app:srcCompat="@drawable/ic_microg_settings" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/microg_uninstallbtn"
|
||||
style="@style/ClickableImageWidget.Red"
|
||||
android:visibility="@{viewModel.microgInstalled ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/microg_title_buttons_barrier"
|
||||
app:srcCompat="@drawable/ic_delete_black_24dp" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/microg_downloading_txt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/microg_downloading"
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/microg_installing"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
</layout>
|
Loading…
Reference in a new issue