From 6e838702955d1f1609db3a6fe33754f7ee486d6b Mon Sep 17 00:00:00 2001 From: andrekir Date: Sun, 18 Feb 2024 08:01:51 -0300 Subject: [PATCH] fix: revert main tab reference change reverts https://github.com/meshtastic/Meshtastic-Android/pull/844/commits/4add8f97da5cc24455fff5ed7c7a7e3064e3d534 --- .../java/com/geeksville/mesh/MainActivity.kt | 41 ++++++++++++++++--- .../java/com/geeksville/mesh/model/UIState.kt | 9 ++-- .../java/com/geeksville/mesh/ui/MainTab.kt | 41 ------------------- app/src/main/res/values/strings.xml | 7 ---- 4 files changed, 40 insertions(+), 58 deletions(-) delete mode 100644 app/src/main/java/com/geeksville/mesh/ui/MainTab.kt diff --git a/app/src/main/java/com/geeksville/mesh/MainActivity.kt b/app/src/main/java/com/geeksville/mesh/MainActivity.kt index acbbb18fd..ac83f7f77 100644 --- a/app/src/main/java/com/geeksville/mesh/MainActivity.kt +++ b/app/src/main/java/com/geeksville/mesh/MainActivity.kt @@ -39,6 +39,7 @@ import com.geeksville.mesh.model.toChannelSet import com.geeksville.mesh.repository.radio.BluetoothInterface import com.geeksville.mesh.service.* import com.geeksville.mesh.ui.* +import com.geeksville.mesh.ui.map.MapFragment import com.geeksville.mesh.util.Exceptions import com.geeksville.mesh.util.LanguageUtils import com.geeksville.mesh.util.getPackageInfoCompat @@ -140,9 +141,39 @@ class MainActivity : AppCompatActivity(), Logging { } } + data class TabInfo(val text: String, val icon: Int, val content: Fragment) + + private val tabInfos = arrayOf( + TabInfo( + "Messages", + R.drawable.ic_twotone_message_24, + ContactsFragment() + ), + TabInfo( + "Users", + R.drawable.ic_twotone_people_24, + UsersFragment() + ), + TabInfo( + "Map", + R.drawable.ic_twotone_map_24, + MapFragment() + ), + TabInfo( + "Channel", + R.drawable.ic_twotone_contactless_24, + ChannelFragment() + ), + TabInfo( + "Settings", + R.drawable.ic_twotone_settings_applications_24, + SettingsFragment() + ) + ) + private val tabsAdapter = object : FragmentStateAdapter(supportFragmentManager, lifecycle) { - override fun getItemCount(): Int = MainTab.entries.size - override fun createFragment(position: Int): Fragment = MainTab.entries[position].content + override fun getItemCount(): Int = tabInfos.size + override fun createFragment(position: Int): Fragment = tabInfos[position].content } override fun onCreate(savedInstanceState: Bundle?) { @@ -178,12 +209,12 @@ class MainActivity : AppCompatActivity(), Logging { // pager.offscreenPageLimit = 0 // Don't keep any offscreen pages around, because we want to make sure our bluetooth scanning stops TabLayoutMediator(binding.tabLayout, binding.pager, false, false) { tab, position -> // tab.text = tabInfos[position].text // I think it looks better with icons only - tab.icon = ContextCompat.getDrawable(this, MainTab.entries[position].icon) + tab.icon = ContextCompat.getDrawable(this, tabInfos[position].icon) }.attach() binding.tabLayout.addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab?) { - val mainTab = MainTab.entries[tab?.position ?: 0] + val mainTab = tab?.position ?: 0 model.setCurrentTab(mainTab) } override fun onTabUnselected(tab: TabLayout.Tab?) { } @@ -537,7 +568,7 @@ class MainActivity : AppCompatActivity(), Logging { } model.currentTab.observe(this) { - binding.tabLayout.getTabAt(it.ordinal)?.select() + binding.tabLayout.getTabAt(it)?.select() } try { diff --git a/app/src/main/java/com/geeksville/mesh/model/UIState.kt b/app/src/main/java/com/geeksville/mesh/model/UIState.kt index 5d5b609db..ea5e2a137 100644 --- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt @@ -27,7 +27,6 @@ import com.geeksville.mesh.database.PacketRepository import com.geeksville.mesh.repository.datastore.RadioConfigRepository import com.geeksville.mesh.repository.radio.RadioInterfaceService import com.geeksville.mesh.service.MeshService -import com.geeksville.mesh.ui.MainTab import com.geeksville.mesh.util.positionToMeter import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers @@ -588,15 +587,15 @@ class UIViewModel @Inject constructor( } } - private val _currentTab = MutableLiveData(MainTab.MESSAGES) - val currentTab: LiveData get() = _currentTab + private val _currentTab = MutableLiveData(0) + val currentTab: LiveData get() = _currentTab - fun setCurrentTab(tab: MainTab) { + fun setCurrentTab(tab: Int) { _currentTab.value = tab } fun focusUserNode(node: NodeInfo?) { - _currentTab.value = MainTab.USERS + _currentTab.value = 1 _focusedNode.value = node } } diff --git a/app/src/main/java/com/geeksville/mesh/ui/MainTab.kt b/app/src/main/java/com/geeksville/mesh/ui/MainTab.kt deleted file mode 100644 index 971c901fe..000000000 --- a/app/src/main/java/com/geeksville/mesh/ui/MainTab.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.geeksville.mesh.ui - -import androidx.annotation.DrawableRes -import androidx.annotation.StringRes -import androidx.fragment.app.Fragment -import com.geeksville.mesh.R -import com.geeksville.mesh.ui.map.MapFragment - -enum class MainTab( - @StringRes - val text: Int, - @DrawableRes - val icon: Int, - val content: Fragment -) { - MESSAGES( - R.string.main_tab_lbl_messages, - R.drawable.ic_twotone_message_24, - ContactsFragment() - ), - USERS( - R.string.main_tab_lbl_users, - R.drawable.ic_twotone_people_24, - UsersFragment() - ), - MAP( - R.string.main_tab_lbl_map, - R.drawable.ic_twotone_map_24, - MapFragment() - ), - CHANNEL( - R.string.main_tab_lbl_channel, - R.drawable.ic_twotone_contactless_24, - ChannelFragment() - ), - SETTINGS( - R.string.main_tab_lbl_settings, - R.drawable.ic_twotone_settings_applications_24, - SettingsFragment() - ); -} \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 46b720670..5cb7f18a3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,13 +11,6 @@ 55.332244 34.442211 hey I found the cache, it is over here next to the big tiger. I\'m kinda scared. - - Messages - Users - Map - Channel - Settings - Channel Name Channel options QR code