diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0941dd22e..8d96cc431 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -153,7 +153,6 @@ - diff --git a/app/src/main/java/com/aurora/store/MainActivity.kt b/app/src/main/java/com/aurora/store/MainActivity.kt index d91e6c0a9..cd330a06a 100644 --- a/app/src/main/java/com/aurora/store/MainActivity.kt +++ b/app/src/main/java/com/aurora/store/MainActivity.kt @@ -58,10 +58,9 @@ import com.aurora.store.view.ui.commons.BaseActivity import com.aurora.store.view.ui.commons.BlacklistActivity import com.aurora.store.view.ui.downloads.DownloadActivity import com.aurora.store.view.ui.preferences.SettingsActivity -import com.aurora.store.view.ui.sale.AppSalesFragment import com.aurora.store.view.ui.search.SearchSuggestionActivity import com.aurora.store.view.ui.sheets.SelfUpdateSheet -import com.aurora.store.view.ui.spoof.SpoofActivity +import com.aurora.store.view.ui.spoof.SpoofFragment import com.bumptech.glide.load.resource.bitmap.RoundedCorners import com.google.android.material.bottomnavigation.BottomNavigationView import nl.komponents.kovenant.task @@ -257,7 +256,8 @@ class MainActivity : BaseActivity() { open(DownloadActivity::class.java) } R.id.menu_spoof_manager -> { - open(SpoofActivity::class.java) + navController.navigate(R.id.spoofFragment) + B.drawerLayout.close() } R.id.menu_account_manager -> { open(AccountActivity::class.java) diff --git a/app/src/main/java/com/aurora/store/view/ui/spoof/SpoofActivity.kt b/app/src/main/java/com/aurora/store/view/ui/spoof/SpoofFragment.kt similarity index 62% rename from app/src/main/java/com/aurora/store/view/ui/spoof/SpoofActivity.kt rename to app/src/main/java/com/aurora/store/view/ui/spoof/SpoofFragment.kt index 3bae340f7..6e2e9e44d 100644 --- a/app/src/main/java/com/aurora/store/view/ui/spoof/SpoofActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/spoof/SpoofFragment.kt @@ -22,28 +22,30 @@ package com.aurora.store.view.ui.spoof import android.net.Uri import android.os.Build import android.os.Bundle -import android.view.Menu -import android.view.MenuItem +import android.view.View import androidx.activity.result.contract.ActivityResultContracts +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle +import androidx.navigation.fragment.findNavController import androidx.viewpager2.adapter.FragmentStateAdapter import com.aurora.extensions.toast import com.aurora.store.R import com.aurora.store.data.providers.NativeDeviceInfoProvider import com.aurora.store.databinding.ActivityGenericPagerBinding import com.aurora.store.util.PathUtil -import com.aurora.store.view.ui.commons.BaseActivity import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator import nl.komponents.kovenant.task import nl.komponents.kovenant.ui.failUi import nl.komponents.kovenant.ui.successUi -class SpoofActivity : BaseActivity() { +class SpoofFragment : Fragment(R.layout.activity_generic_pager) { - private lateinit var B: ActivityGenericPagerBinding + private var _binding: ActivityGenericPagerBinding? = null + private val binding: ActivityGenericPagerBinding + get() = _binding!! // Android is weird, even if export device config with proper mime type, it will refuse to open // it again with same mime type @@ -59,63 +61,40 @@ class SpoofActivity : BaseActivity() { if (it != null) exportDeviceConfig(it) else toast(R.string.toast_export_failed) } - override fun onConnected() { + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + _binding = ActivityGenericPagerBinding.bind(view) - } + // Toolbar + binding.layoutActionToolbar.toolbar.apply { + elevation = 0f + title = getString(R.string.title_spoof_manager) + navigationIcon = ContextCompat.getDrawable(view.context, R.drawable.ic_arrow_back) + inflateMenu(R.menu.menu_spoof) + setNavigationOnClickListener { findNavController().navigateUp() } + setOnMenuItemClickListener { + when (it.itemId) { + R.id.action_import -> { + startForDocumentImport.launch(arrayOf(importMimeType)) + } - override fun onDisconnected() { - - } - - override fun onReconnected() { - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - B = ActivityGenericPagerBinding.inflate(layoutInflater) - setContentView(B.root) - - attachToolbar() - attachViewPager() - } - - override fun onCreateOptionsMenu(menu: Menu?): Boolean { - menuInflater.inflate(R.menu.menu_spoof, menu) - return true - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - when (item.itemId) { - android.R.id.home -> { - onBackPressedDispatcher.onBackPressed() - return true - } - R.id.action_import -> { - startForDocumentImport.launch(arrayOf(importMimeType)) - } - R.id.action_export -> { - startForDocumentExport - .launch("aurora_store_${Build.BRAND}_${Build.DEVICE}.properties") + R.id.action_export -> { + startForDocumentExport + .launch("aurora_store_${Build.BRAND}_${Build.DEVICE}.properties") + } + } + true } } - return super.onOptionsItemSelected(item) - } - private fun attachToolbar() { - setSupportActionBar(B.layoutActionToolbar.toolbar) - val actionBar = supportActionBar - if (actionBar != null) { - actionBar.setDisplayShowCustomEnabled(true) - actionBar.setDisplayHomeAsUpEnabled(true) - actionBar.elevation = 0f - actionBar.title = getString(R.string.title_spoof_manager) - } - } + // ViewPager + binding.pager.adapter = ViewPagerAdapter(childFragmentManager, lifecycle) - private fun attachViewPager() { - B.pager.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle) - - TabLayoutMediator(B.tabLayout, B.pager, true) { tab: TabLayout.Tab, position: Int -> + TabLayoutMediator( + binding.tabLayout, + binding.pager, + true + ) { tab: TabLayout.Tab, position: Int -> when (position) { 0 -> tab.text = getString(R.string.title_device) 1 -> tab.text = getString(R.string.title_language) @@ -125,16 +104,21 @@ class SpoofActivity : BaseActivity() { }.attach() } + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + private fun importDeviceConfig(uri: Uri) { task { - contentResolver.openInputStream(uri)?.use { input -> - PathUtil.getNewEmptySpoofConfig(this).outputStream().use { + context?.contentResolver?.openInputStream(uri)?.use { input -> + PathUtil.getNewEmptySpoofConfig(requireContext()).outputStream().use { input.copyTo(it) } } } successUi { toast(R.string.toast_import_success) - recreate() + activity?.recreate() } failUi { it.printStackTrace() toast(R.string.toast_import_failed) @@ -143,9 +127,9 @@ class SpoofActivity : BaseActivity() { private fun exportDeviceConfig(uri: Uri) { task { - NativeDeviceInfoProvider(this) + NativeDeviceInfoProvider(requireContext()) .getNativeDeviceProperties() - .store(contentResolver.openOutputStream(uri), "DEVICE_CONFIG") + .store(context?.contentResolver?.openOutputStream(uri), "DEVICE_CONFIG") } successUi { toast(R.string.toast_export_success) } failUi { diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 5c3f21650..85375e4dc 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -55,4 +55,9 @@ android:name="com.aurora.store.view.ui.sale.AppSalesFragment" android:label="@string/title_apps_sale" tools:layout="@layout/activity_generic_recycler" /> + \ No newline at end of file