diff --git a/app/src/main/java/com/utsmm/kbz/ui/settings/InjectKeyFragment.java b/app/src/main/java/com/utsmm/kbz/ui/settings/InjectKeyFragment.java index 59f1227..03b3286 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/settings/InjectKeyFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/settings/InjectKeyFragment.java @@ -3,6 +3,7 @@ package com.utsmm.kbz.ui.settings; import android.os.Bundle; import android.text.TextUtils; import android.view.View; +import android.widget.ArrayAdapter; import android.widget.Toast; import androidx.annotation.NonNull; @@ -22,6 +23,9 @@ import com.utsmm.kbz.databinding.FragmentInjectKeyBinding; import com.utsmyanmar.paylibs.utils.LogUtil; import com.utsmm.kbz.util.tms.TMSUtil; +import java.util.ArrayList; +import java.util.List; + public class InjectKeyFragment extends DataBindingFragment { private static final String TAG = InjectKeyFragment.class.getSimpleName(); @@ -32,6 +36,7 @@ public class InjectKeyFragment extends DataBindingFragment { // Key injection variables private DownloadFlow mDownloadFlow; private int keyIndexTmp = 8; // Default key index + private final List hostSelectionItems = new ArrayList<>(); @Override protected void initViewModel() { @@ -84,22 +89,51 @@ public class InjectKeyFragment extends DataBindingFragment { } private void updateConfigurationInfo() { + setupHostSelection(); + binding.serialNumberValue.setText(getDisplayValue(TMSUtil.getInstance().getSerialNumber())); + } - String terminalId = SystemParamsOperation.getInstance().getTerminalId(); - binding.terminalIdValue.setText(terminalId != null && !terminalId.isEmpty() ? - terminalId : "Not configured"); + private void setupHostSelection() { + hostSelectionItems.clear(); - // Update Merchant ID - String merchantId = SystemParamsOperation.getInstance().getMerchantId(); - binding.merchantIdValue.setText(merchantId != null && !merchantId.isEmpty() ? - merchantId : "Not configured"); + String primaryTerminalId = SystemParamsOperation.getInstance().getTerminalId(); + String primaryMerchantId = SystemParamsOperation.getInstance().getMerchantId(); + String secondaryTerminalId = SystemParamsOperation.getInstance().getThirdHostTerminalId(); + String secondaryMerchantId = SystemParamsOperation.getInstance().getThirdHostMerchantId(); - // Update Serial Number - String serialNo = TMSUtil.getInstance().getSerialNumber(); - binding.serialNumberValue.setText(serialNo != null && !serialNo.isEmpty() ? - serialNo : "Not configured"); + hostSelectionItems.add(new HostSelectionItem("Primary Host", primaryTerminalId, primaryMerchantId)); + if (!TextUtils.isEmpty(secondaryTerminalId) || !TextUtils.isEmpty(secondaryMerchantId)) { + hostSelectionItems.add(new HostSelectionItem("Secondary Host", secondaryTerminalId, secondaryMerchantId)); + } + ArrayAdapter hostAdapter = new ArrayAdapter<>( + requireContext(), + android.R.layout.simple_list_item_1, + hostSelectionItems + ); + binding.actvHostSelection.setAdapter(hostAdapter); + + if (!hostSelectionItems.isEmpty()) { + HostSelectionItem defaultSelection = hostSelectionItems.get(0); + binding.actvHostSelection.setText(defaultSelection.toString(), false); + applyHostSelection(defaultSelection); + } + + binding.actvHostSelection.setOnItemClickListener((parent, view, position, id) -> { + if (position >= 0 && position < hostSelectionItems.size()) { + applyHostSelection(hostSelectionItems.get(position)); + } + }); + } + + private void applyHostSelection(@NonNull HostSelectionItem selectionItem) { + binding.terminalIdValue.setText(getDisplayValue(selectionItem.terminalId)); + binding.merchantIdValue.setText(getDisplayValue(selectionItem.merchantId)); + } + + private String getDisplayValue(String value) { + return !TextUtils.isEmpty(value) ? value : "Not configured"; } private void loadKeyFromKeyPOS() { @@ -177,6 +211,28 @@ public class InjectKeyFragment extends DataBindingFragment { } }; + private static class HostSelectionItem { + private final String label; + private final String terminalId; + private final String merchantId; + + private HostSelectionItem(String label, String terminalId, String merchantId) { + this.label = label; + this.terminalId = terminalId; + this.merchantId = merchantId; + } + + @NonNull + @Override + public String toString() { + return label; + } + + private static String getSummaryValue(String value) { + return TextUtils.isEmpty(value) ? "Not configured" : value; + } + } + // ClickEvent class for data binding - this is the proper pattern public class ClickEvent { @@ -190,4 +246,4 @@ public class InjectKeyFragment extends DataBindingFragment { } } } -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/fragment_inject_key.xml b/app/src/main/res/layout/fragment_inject_key.xml index 4157264..7aee3d6 100644 --- a/app/src/main/res/layout/fragment_inject_key.xml +++ b/app/src/main/res/layout/fragment_inject_key.xml @@ -129,6 +129,84 @@ + + + + + + + + + + + + + + + + + + + + +