From 6669528fdbdf251b7d899e726a2702b1f798ef97 Mon Sep 17 00:00:00 2001 From: MooN <56061215+MgKyawLay@users.noreply.github.com> Date: Thu, 5 Feb 2026 12:24:22 +0630 Subject: [PATCH] auto address fixex --- .gitignore | Bin 319 -> 361 bytes .../kbz/ui/settings/HostConfigViewModel.java | 26 +++++------ .../paylibs/print/printx/BaseXPrint.java | 44 +++++++++++------- 3 files changed, 38 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index 856177eda03a36ee862aac0e5f07e65eabe8462a..da18657d5c75d5c3c518ad38e5e9bd10d34634f8 100644 GIT binary patch literal 361 zcmZ{gu@1s83`9Lw>W?ra|A1g+>A;9gVu6KeBFBY_uP22ffq=>K)7|Oph2yidjXNkt zp|R^h#(z6;JN4noC^Q{Zg6COwsmfj(%Dmvv-I`a!W2 zvMt|GV@GD(ALcB#>ULdKPxbZ#ORO_swn3*pjz%NxQ8s9Nq2*KH!Z^0gzhi0u=IoV( mu#jKOdtv)x1O8;y@p#MZtpAEHYpnz)NMInq(1V8-8n^>6zH-3; literal 319 zcmZ`#K@P$&47>L!JG6g5aOJWCN0hbEh{)C|O`+oTRBVU|!O?bX+374zZ0sly7>(oT zfo+nQP?RtmXDJ{!5B~B&OoM=I6fi%jNgq%@N^Z*Gx zs?t0zL3ZDt`*z!E4TU(E)*@+<*27{|lo|L4N;llSWb11+e+C!_DLFw#$mqHSX3}q} Pz%Oduw7A-H!rNw^h)Hgq diff --git a/app/src/main/java/com/utsmm/kbz/ui/settings/HostConfigViewModel.java b/app/src/main/java/com/utsmm/kbz/ui/settings/HostConfigViewModel.java index 67bf4ab..18cc318 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/settings/HostConfigViewModel.java +++ b/app/src/main/java/com/utsmm/kbz/ui/settings/HostConfigViewModel.java @@ -43,14 +43,12 @@ public class HostConfigViewModel extends ViewModel { public MutableLiveData terminalName = new MutableLiveData<>(); - public void loadConfig() { SystemParamsOperation sp = SystemParamsOperation.getInstance(); // Merchant Info merchantName.setValue(sp.getMerchantName()); merchantPhone.setValue(sp.getMerchantPhoneNo()); - merchantAddress1.setValue(wrapForUi(sp.getMerchantAddress())); - merchantAddress2.setValue(sp.getMerchantAddress2()); + merchantAddress1.setValue(wrapMerchantAddress(sp.getMerchantAddress())); terminalName.setValue(sp.getTerminalName()); // PRIMARY HOST @@ -86,20 +84,20 @@ public class HostConfigViewModel extends ViewModel { } } - public static String wrapForUi(String text) { - if (text == null || text.isEmpty()) return ""; + private String wrapMerchantAddress(String address) { + if (TextUtils.isEmpty(address)) return ""; - List result = new ArrayList<>(); + String addr = address + .replace("\\r\\n", "\n") + .replace("\\n", "\n") + .replace("\r\n", "\n") + .trim(); - String[] paragraphs = text.split("\\n"); + // + List lines = wrapAddressText(addr, 29); - for (String paragraph : paragraphs) { - List wrappedLines = wrapAddressText(paragraph.trim(), 29); - - result.addAll(wrappedLines); - } - - return TextUtils.join("\n", result); + // + return TextUtils.join("\n", lines); } private String[] split(String raw) { diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java index a928c96..d0a4af9 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java @@ -1004,25 +1004,26 @@ public abstract class BaseXPrint { public static List wrapAddressText(String text, int maxLen) { List lines = new ArrayList<>(); - String[] words = text.split("\\s+"); + String[] paragraphs = text.split("\\r?\\n"); - StringBuilder currentLine = new StringBuilder(); + for (String paragraph : paragraphs) { + String[] words = paragraph.split("\\s+"); + StringBuilder currentLine = new StringBuilder(); - for (String word : words) { - // +1 for space (if line is not empty) - if (currentLine.length() + word.length() + 1 <= maxLen) { - if (currentLine.length() > 0) { - currentLine.append(" "); + for (String word : words) { + if (currentLine.length() == 0) { + currentLine.append(word); + } else if (currentLine.length() + word.length() + 1 <= maxLen) { + currentLine.append(" ").append(word); + } else { + lines.add(currentLine.toString()); + currentLine = new StringBuilder(word); } - currentLine.append(word); - } else { - lines.add(currentLine.toString()); - currentLine = new StringBuilder(word); } - } - if (currentLine.length() > 0) { - lines.add(currentLine.toString()); + if (currentLine.length() > 0) { + lines.add(currentLine.toString()); + } } return lines; @@ -1032,29 +1033,36 @@ public abstract class BaseXPrint { String receiptHeader = ""; String merchantName = ""; String merchantAddress = ""; - String merchantAddress2 = ""; - String merchantAddress3 = ""; - String merchantPhoneNo = ""; String terminalName = ""; merchantName = SystemParamsOperation.getInstance().getMerchantName(); receiptHeader = SystemParamsOperation.getInstance().getReceiptHeader(); merchantAddress = SystemParamsOperation.getInstance().getMerchantAddress(); + + if(merchantAddress != null){ + //this step is needed for manually line break with \n in the Address + merchantAddress = merchantAddress.replace("\\n", "\n"); + } + terminalName = SystemParamsOperation.getInstance().getTerminalName(); + assert merchantAddress != null; List result = wrapAddressText(merchantAddress, 29); if (receiptHeader == null || TextUtils.equals(receiptHeader, "") || receiptHeader.trim().isEmpty()) { receiptHeader = merchantName; } - if (TextUtils.equals(merchantAddress, "") || merchantAddress == null) { + if (TextUtils.equals(merchantAddress, "")) { merchantAddress = ""; } if(TextUtils.equals(terminalName, "") || terminalName == null){ terminalName = ""; } + printer.appendPrnStr(terminalName, fontNormal, AlignEnum.CENTER, true); + for (String line : result) { + //result get the List of text from auto/manually break the address printer.appendPrnStr(line, fontNormal, AlignEnum.CENTER, false); }