diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/AndroidComponents.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/AndroidComponents.kt new file mode 100644 index 0000000000..3a9205574c --- /dev/null +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/AndroidComponents.kt @@ -0,0 +1,22 @@ +package com.tangem.tangemtest.extensions + +import android.content.Intent +import androidx.activity.ComponentActivity +import androidx.fragment.app.Fragment + +/** +[REDACTED_AUTHOR] + */ +fun Fragment.shareText(text: String) { + requireActivity().shareText(text) +} + +fun ComponentActivity.shareText(text: String) { + val sendIntent: Intent = Intent().apply { + action = Intent.ACTION_SEND + putExtra(Intent.EXTRA_TEXT, text) + type = "text/plain" + } + val shareIntent = Intent.createChooser(sendIntent, null) + startActivity(shareIntent) +} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt index 683ebd7e86..e5cc169f68 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt @@ -1,16 +1,16 @@ package com.tangem.tangemtest.ucase.variants.responses.ui import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup +import android.view.* import android.widget.LinearLayout import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels import androidx.lifecycle.Observer +import com.google.gson.Gson import com.tangem.tangemtest.R import com.tangem.tangemtest._arch.widget.WidgetBuilder import com.tangem.tangemtest._main.MainViewModel +import com.tangem.tangemtest.extensions.shareText import com.tangem.tangemtest.ucase.ui.BaseFragment import com.tangem.tangemtest.ucase.variants.responses.ResponseViewModel import com.tangem.tangemtest.ucase.variants.responses.ui.widget.ResponseItemBuilder @@ -27,9 +27,9 @@ open class ResponseFragment : BaseFragment() { override fun getLayoutId(): Int = R.layout.fg_card_response - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) setTittle() - return super.onCreateView(inflater, container, savedInstanceState) } private fun setTittle() { @@ -40,6 +40,7 @@ open class ResponseFragment : BaseFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + setHasOptionsMenu(true) buildWidgets() listenDescriptionSwitchChanges() } @@ -55,4 +56,18 @@ open class ResponseFragment : BaseFragment() { selfVM.toggleDescriptionVisibility(it) }) } -} + + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + super.onCreateOptionsMenu(menu, inflater) + + val menuItem = menu.findItem(R.id.action_share) + menuItem.isVisible = true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.action_share -> shareText(Gson().toJson(mainActivityVM.responseEvent)) + } + return super.onOptionsItemSelected(item) + } +} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/CheckBoxWidget.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/CheckBoxWidget.kt index a988a93948..65dd1a5831 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/CheckBoxWidget.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/CheckBoxWidget.kt @@ -4,7 +4,6 @@ import android.view.ViewGroup import com.google.android.material.checkbox.MaterialCheckBox import com.tangem.tangemtest.R import com.tangem.tangemtest._arch.structure.impl.BoolItem -import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.DescriptionWidget import ru.dev.gbixahue.eu4d.lib.android._android.views.colorFrom /** @@ -13,7 +12,7 @@ import ru.dev.gbixahue.eu4d.lib.android._android.views.colorFrom class CheckBoxWidget( parent: ViewGroup, private val typedItem: BoolItem -) : DescriptionWidget(parent, typedItem) { +) : ResponseWidget(parent, typedItem) { override fun getLayoutId(): Int = R.layout.w_response_item_checkbox @@ -22,7 +21,7 @@ class CheckBoxWidget( init { switchItem.text = getName() switchItem.isChecked = typedItem.getData() ?: false - switchItem.isEnabled = false + switchItem.isClickable = false switchItem.setTextColor(switchItem.colorFrom(R.color.action_name)) } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseTextWidget.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseTextWidget.kt index 9367b0bc0c..8859d78527 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseTextWidget.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseTextWidget.kt @@ -1,13 +1,9 @@ package com.tangem.tangemtest.ucase.variants.responses.ui.widget -import android.content.ClipData -import android.content.ClipboardManager -import android.content.Context import android.view.ViewGroup import android.widget.TextView import com.tangem.tangemtest.R import com.tangem.tangemtest._arch.structure.impl.TextItem -import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.DescriptionWidget /** [REDACTED_AUTHOR] @@ -15,7 +11,7 @@ import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.DescriptionWi class ResponseTextWidget( parent: ViewGroup, private val typedItem: TextItem -) : DescriptionWidget(parent, typedItem) { +) : ResponseWidget(parent, typedItem) { override fun getLayoutId(): Int = R.layout.w_response_item @@ -30,13 +26,5 @@ class ResponseTextWidget( val data = typedItem.getData() as? String tvName.text = getName() tvValue.text = data - - view.setOnClickListener { - val clipboard = view.context.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager - ?: return@setOnClickListener - - val clip: ClipData = ClipData.newPlainText("FieldValue", "$data") - clipboard.setPrimaryClip(clip) - } } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseWidget.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseWidget.kt new file mode 100644 index 0000000000..d08de11386 --- /dev/null +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseWidget.kt @@ -0,0 +1,32 @@ +package com.tangem.tangemtest.ucase.variants.responses.ui.widget + +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context +import android.view.ViewGroup +import com.tangem.tangemtest.R +import com.tangem.tangemtest._arch.structure.abstraction.Item +import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.DescriptionWidget +import ru.dev.gbixahue.eu4d.lib.android._android.views.stringFrom +import ru.dev.gbixahue.eu4d.lib.android._android.views.toast +import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf + +/** +[REDACTED_AUTHOR] + */ +abstract class ResponseWidget(parent: ViewGroup, item: Item): DescriptionWidget(parent, item) { + + init { + view.setOnClickListener { + val data = stringOf(item.getData()) + val clipboard = view.context.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager + ?: return@setOnClickListener + + val clip: ClipData = ClipData.newPlainText("FieldValue", "$data") + clipboard.setPrimaryClip(clip) + + val copyMessage = view.stringFrom(R.string.copy_to_clipboard) + view.toast("$copyMessage: ${getName()} - $data") + } + } +} \ No newline at end of file diff --git a/tangem-demo/src/main/res/drawable/ic_share_white_18dp.xml b/tangem-demo/src/main/res/drawable/ic_share_white_18dp.xml new file mode 100644 index 0000000000..0075e4b78c --- /dev/null +++ b/tangem-demo/src/main/res/drawable/ic_share_white_18dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/tangem-demo/src/main/res/menu/main_menu.xml b/tangem-demo/src/main/res/menu/main_menu.xml index 6241fdec1d..7f4be83642 100644 --- a/tangem-demo/src/main/res/menu/main_menu.xml +++ b/tangem-demo/src/main/res/menu/main_menu.xml @@ -2,9 +2,17 @@ + + + \ No newline at end of file diff --git a/tangem-demo/src/main/res/navigation/navigation.xml b/tangem-demo/src/main/res/navigation/navigation.xml index 1cc5427895..7209eb2e22 100644 --- a/tangem-demo/src/main/res/navigation/navigation.xml +++ b/tangem-demo/src/main/res/navigation/navigation.xml @@ -128,7 +128,7 @@ diff --git a/tangem-demo/src/main/res/values/strings.xml b/tangem-demo/src/main/res/values/strings.xml index cb44b6cc03..064c3a64c8 100644 --- a/tangem-demo/src/main/res/values/strings.xml +++ b/tangem-demo/src/main/res/values/strings.xml @@ -8,6 +8,7 @@ Depersonalization response unknown + Copy to clipboard Docs Your card hasn\'t been personalized yet. You need to run personalize command first.