diff --git a/Mifare Classic Tool/app/src/main/java/de/syss/MifareClassicTool/Activities/DumpEditor.java b/Mifare Classic Tool/app/src/main/java/de/syss/MifareClassicTool/Activities/DumpEditor.java index 2c1f14a4..613ebf9a 100644 --- a/Mifare Classic Tool/app/src/main/java/de/syss/MifareClassicTool/Activities/DumpEditor.java +++ b/Mifare Classic Tool/app/src/main/java/de/syss/MifareClassicTool/Activities/DumpEditor.java @@ -292,6 +292,9 @@ public boolean onOptionsItemSelected(MenuItem item) { } else if (itemId == R.id.menuDumpEditorExportDump) { exportDump(); return true; + } else if (itemId == R.id.menuDumpEditorCopyAllSectors) { + copyAllSectorsToClipboard(); + return true; } return super.onOptionsItemSelected(item); } @@ -905,6 +908,33 @@ private void exportDump() { startActivity(intent); } + /** + * Copy all sectors as a string to the clipboard, maintaining newlines + * between all blocks. + */ + private void copyAllSectorsToClipboard() { + int err = checkDumpAndUpdateLines(); + if (err != 0) { + Common.isValidDumpErrorToast(err, this); + return; + } + // Build the dump string from mLines + StringBuilder dumpString = new StringBuilder(); + for (int i = 0; i < mLines.length; i++) { + String line = mLines[i]; + // Skip sector headers + if (line.startsWith("+")) { + continue; + } + // Add a newline before appending (except for the very first block) + if (dumpString.length() > 0) { + dumpString.append(System.lineSeparator()); + } + dumpString.append(line); + } + Common.copyToClipboard(dumpString.toString(), this, true); + } + /** * The dump will be checked and stored in the {@link Common#TMP_DIR} directory. * @return The temporary dump file. diff --git a/Mifare Classic Tool/app/src/main/res/menu/dump_editor_functions.xml b/Mifare Classic Tool/app/src/main/res/menu/dump_editor_functions.xml index 5e1998c0..f0bc9c98 100644 --- a/Mifare Classic Tool/app/src/main/res/menu/dump_editor_functions.xml +++ b/Mifare Classic Tool/app/src/main/res/menu/dump_editor_functions.xml @@ -26,11 +26,6 @@ android:title="@string/action_save" android:showAsAction="ifRoom" tools:ignore="AppCompatResource" /> - - + + + diff --git a/Mifare Classic Tool/app/src/main/res/values-it/strings.xml b/Mifare Classic Tool/app/src/main/res/values-it/strings.xml index 64880a39..eeee2fd9 100644 --- a/Mifare Classic Tool/app/src/main/res/values-it/strings.xml +++ b/Mifare Classic Tool/app/src/main/res/values-it/strings.xml @@ -314,6 +314,7 @@ Apri lo strumento per clonare l\'UID Nascondi i settori identici Pulisci Logs + Copia tutti i settori negli appunti Scuro Chiaro diff --git a/Mifare Classic Tool/app/src/main/res/values-zh/strings.xml b/Mifare Classic Tool/app/src/main/res/values-zh/strings.xml index e65a1f9b..6b4fa65d 100644 --- a/Mifare Classic Tool/app/src/main/res/values-zh/strings.xml +++ b/Mifare Classic Tool/app/src/main/res/values-zh/strings.xml @@ -288,6 +288,7 @@ Cyber Chef 打开UID克隆工具 隐藏相同的扇区 + 将所有扇区复制到剪贴板 暗色 亮色 diff --git a/Mifare Classic Tool/app/src/main/res/values/strings.xml b/Mifare Classic Tool/app/src/main/res/values/strings.xml index 4b55934d..f68fb214 100644 --- a/Mifare Classic Tool/app/src/main/res/values/strings.xml +++ b/Mifare Classic Tool/app/src/main/res/values/strings.xml @@ -327,6 +327,7 @@ Open the Clone UID Tool Hide identical sectors Clear Logs + Copy all sectors to clipboard Dark Light