Updated on 2026-08-14

This commit is contained in:
Tangem 2020-04-14 14:10:23 +03:00
parent 04ba03319d
commit 4b4e0e3027
11 changed files with 83 additions and 63 deletions

View file

@ -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
}
}

View file

@ -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)
}

View file

@ -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)

View file

@ -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 {

View file

@ -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>

View 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>

View 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>

View 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>

View file

@ -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>

View file

@ -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>

View file

@ -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>