Updated on 2026-08-14
This commit is contained in:
parent
04ba03319d
commit
4b4e0e3027
11 changed files with 83 additions and 63 deletions
|
|
@ -3,9 +3,9 @@ package com.tangem.tangemtest._main
|
|||
import android.content.res.Resources
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.widget.SwitchCompat
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
|
|
@ -20,7 +20,7 @@ import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
|
|||
*/
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
||||
private val vm: MainViewModel by viewModels<MainViewModel>()
|
||||
private val mainVM: MainViewModel by viewModels<MainViewModel>()
|
||||
private lateinit var appBarConfiguration: AppBarConfiguration
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
|
@ -52,11 +52,24 @@ class MainActivity : AppCompatActivity() {
|
|||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.main_menu, menu)
|
||||
val switchMenu = menu.findItem(R.id.action_toggle_description_visibility)
|
||||
(switchMenu.actionView as? SwitchCompat)?.let {
|
||||
it.setOnCheckedChangeListener { buttonView, isChecked -> vm.switchToggled(isChecked) }
|
||||
menuInflater.inflate(R.menu.menu_activity_main, menu)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
|
||||
val switchItem = menu.findItem(R.id.action_toggle_description_visibility)
|
||||
switchItem.isChecked = mainVM.descriptionSwitchState
|
||||
return super.onPrepareOptionsMenu(menu)
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
val result = when (item.itemId) {
|
||||
R.id.action_toggle_description_visibility -> {
|
||||
item.isChecked = !item.isChecked
|
||||
mainVM.switchToggled(item.isChecked)
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
return super.onCreateOptionsMenu(menu)
|
||||
return if (result == null) super.onOptionsItemSelected(item) else true
|
||||
}
|
||||
}
|
||||
|
|
@ -10,10 +10,12 @@ import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
|
|||
*/
|
||||
class MainViewModel : ViewModel() {
|
||||
val ldDescriptionSwitch = MutableLiveData<Boolean>(false)
|
||||
var descriptionSwitchState = false
|
||||
|
||||
var commandResponse: CommandResponse? = null
|
||||
|
||||
fun switchToggled(state: Boolean) {
|
||||
descriptionSwitchState = state
|
||||
ldDescriptionSwitch.postValue(state)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,9 +47,9 @@ class PersonalizationFragment : BaseCardActionFragment(), PersonalizationPresetV
|
|||
|
||||
override fun getLayoutId(): Int = R.layout.fg_base_action_layout
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
return super.onCreateView(inflater, container, savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
|
@ -120,21 +120,21 @@ class PersonalizationFragment : BaseCardActionFragment(), PersonalizationPresetV
|
|||
navigateTo(R.id.action_nav_card_action_to_response_screen)
|
||||
}
|
||||
|
||||
override fun onPrepareOptionsMenu(menu: Menu) {
|
||||
super.onPrepareOptionsMenu(menu)
|
||||
menu.setGroupVisible(R.id.menu_group_personalization_preset, true)
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.menu_fg_peronalization, menu)
|
||||
super.onCreateOptionsMenu(menu, inflater)
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
val store = PersonalizationConfigStore(requireContext())
|
||||
val presetManager = PersonalizationPresetManager(itemsManager, store, this)
|
||||
when (item.itemId) {
|
||||
val result = when (item.itemId) {
|
||||
R.id.action_reset -> presetManager.resetToDefault()
|
||||
R.id.action_save -> presetManager.savePreset()
|
||||
R.id.action_load -> presetManager.loadPreset()
|
||||
else -> return super.onOptionsItemSelected(item)
|
||||
else -> null
|
||||
}
|
||||
return true
|
||||
return if (result == null) super.onOptionsItemSelected(item) else true
|
||||
}
|
||||
|
||||
override fun showSnackbar(id: Id, additionalHandler: ((Id) -> Int)?) {
|
||||
|
|
@ -150,7 +150,7 @@ class PersonalizationFragment : BaseCardActionFragment(), PersonalizationPresetV
|
|||
override fun showSavePresetDialog(onOk: SafeValueChanged<String>) {
|
||||
val dlgController = DialogController()
|
||||
val dlg = dlgController.createAlert(requireActivity(), R.layout.dlg_personalization_preset_save)
|
||||
dlg.setTitle(R.string.menu_preset_save)
|
||||
dlg.setTitle(R.string.menu_personalization_preset_save)
|
||||
dlg.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.btn_cancel)) { dialog, which -> }
|
||||
dlg.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.btn_ok)) { dialog, which ->
|
||||
val tvName = dlgController.view?.findViewById<EditText>(R.id.et_item) ?: return@setButton
|
||||
|
|
@ -164,7 +164,7 @@ class PersonalizationFragment : BaseCardActionFragment(), PersonalizationPresetV
|
|||
override fun showLoadPresetDialog(namesList: List<String>, onChoose: SafeValueChanged<String>, onDelete: SafeValueChanged<String>) {
|
||||
val dlgController = DialogController()
|
||||
val dlg = dlgController.createAlert(requireActivity(), R.layout.dlg_personalization_preset_load)
|
||||
dlg.setTitle(R.string.menu_preset_load)
|
||||
dlg.setTitle(R.string.menu_personalization_preset_load)
|
||||
val rvPresetNames: RecyclerView = dlgController.view?.findViewById(R.id.recycler_view) ?: return
|
||||
|
||||
rvPresetNames.layoutManager = LinearLayoutManager(context)
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ open class ResponseFragment : BaseFragment() {
|
|||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setTittle()
|
||||
setHasOptionsMenu(true)
|
||||
}
|
||||
|
||||
private fun setTittle() {
|
||||
|
|
@ -40,7 +41,6 @@ open class ResponseFragment : BaseFragment() {
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
setHasOptionsMenu(true)
|
||||
buildWidgets()
|
||||
listenDescriptionSwitchChanges()
|
||||
}
|
||||
|
|
@ -58,10 +58,8 @@ open class ResponseFragment : BaseFragment() {
|
|||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.menu_fg_response, menu)
|
||||
super.onCreateOptionsMenu(menu, inflater)
|
||||
|
||||
val menuItem = menu.findItem(R.id.action_share)
|
||||
menuItem.isVisible = true
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
|
|
|
|||
|
|
@ -1,36 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu 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">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_share"
|
||||
android:icon="@drawable/ic_share_white_18dp"
|
||||
android:title="Share"
|
||||
android:visible="false"
|
||||
app:showAsAction="always" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_toggle_description_visibility"
|
||||
android:title=""
|
||||
app:actionLayout="@layout/menu_item_switch"
|
||||
app:showAsAction="always" />
|
||||
|
||||
<group
|
||||
android:id="@+id/menu_group_personalization_preset"
|
||||
android:visible="false"
|
||||
tools:visible="true">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_reset"
|
||||
android:title="@string/menu_preset_reset" />
|
||||
<item
|
||||
android:id="@+id/action_save"
|
||||
android:title="@string/menu_preset_save" />
|
||||
<item
|
||||
android:id="@+id/action_load"
|
||||
android:title="@string/menu_preset_load" />
|
||||
|
||||
</group>
|
||||
|
||||
</menu>
|
||||
11
tangem-demo/src/main/res/menu/menu_activity_main.xml
Normal file
11
tangem-demo/src/main/res/menu/menu_activity_main.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_toggle_description_visibility"
|
||||
android:checkable="true"
|
||||
android:title="@string/menu_main_docs"
|
||||
app:showAsAction="never" />
|
||||
|
||||
</menu>
|
||||
18
tangem-demo/src/main/res/menu/menu_fg_peronalization.xml
Normal file
18
tangem-demo/src/main/res/menu/menu_fg_peronalization.xml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<group android:id="@+id/menu_group_personalization_preset">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_reset"
|
||||
android:title="@string/menu_personalization_preset_reset" />
|
||||
<item
|
||||
android:id="@+id/action_save"
|
||||
android:title="@string/menu_personalization_preset_save" />
|
||||
<item
|
||||
android:id="@+id/action_load"
|
||||
android:title="@string/menu_personalization_preset_load" />
|
||||
|
||||
</group>
|
||||
|
||||
</menu>
|
||||
11
tangem-demo/src/main/res/menu/menu_fg_response.xml
Normal file
11
tangem-demo/src/main/res/menu/menu_fg_response.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_share"
|
||||
android:icon="@drawable/ic_share_white_18dp"
|
||||
android:title="@string/menu_response_share"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
</menu>
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
<resources>
|
||||
<string name="app_name">Tangem Development Kit</string>
|
||||
|
||||
<string name="unknown">unknown</string>
|
||||
<string name="menu_main_docs">Docs</string>
|
||||
|
||||
<string name="copy_to_clipboard">Copy to clipboard</string>
|
||||
<string name="btn_delete">Delete</string>
|
||||
<string name="btn_ok">OK</string>
|
||||
|
|
@ -9,6 +10,9 @@
|
|||
<string name="btn_save">Save</string>
|
||||
<string name="btn_load">Load</string>
|
||||
|
||||
<string name="unknown">unknown</string>
|
||||
<string name="error_nothing_to_load">Nothing to load</string>
|
||||
|
||||
<string name="fg_name_entry_point">@string/app_name</string>
|
||||
<string name="fg_name_response_scan">Scan response</string>
|
||||
<string name="fg_name_response_sign">Sign response</string>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="menu_preset_reset">Reset configuration to default</string>
|
||||
<string name="menu_preset_save">Save configuration</string>
|
||||
<string name="menu_preset_load">Load configuration</string>
|
||||
<string name="error_nothing_to_load">Nothing to load</string>
|
||||
|
||||
<string name="menu_personalization_preset_reset">Reset configuration to default</string>
|
||||
<string name="menu_personalization_preset_save">Save configuration</string>
|
||||
<string name="menu_personalization_preset_load">Load configuration</string>
|
||||
|
||||
<string name="personalize">Personalize</string>
|
||||
<string name="depersonalize">Depersonalize</string>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="menu_response_share">Share</string>
|
||||
|
||||
<!-- Field names - Response: Card -->
|
||||
<string name="response_card_cid">CID</string>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue