This commit is contained in:
Radek Davidek 2026-01-20 18:11:01 +01:00
parent 1a71db41d7
commit dbd25dbf4e
5 changed files with 26 additions and 39 deletions

View File

@ -189,6 +189,7 @@ public class AppConfig {
} }
public void saveLeftPanelTabs(java.util.List<String> paths, java.util.List<String> viewModes, java.util.List<String> focusedItems, int selectedIndex) { public void saveLeftPanelTabs(java.util.List<String> paths, java.util.List<String> viewModes, java.util.List<String> focusedItems, int selectedIndex) {
int old = getLeftPanelTabCount();
properties.setProperty("leftPanel.tabs.count", String.valueOf(paths.size())); properties.setProperty("leftPanel.tabs.count", String.valueOf(paths.size()));
for (int i = 0; i < paths.size(); i++) { for (int i = 0; i < paths.size(); i++) {
properties.setProperty("leftPanel.tab." + i + ".path", paths.get(i)); properties.setProperty("leftPanel.tab." + i + ".path", paths.get(i));
@ -199,6 +200,11 @@ public class AppConfig {
properties.remove("leftPanel.tab." + i + ".focusedItem"); properties.remove("leftPanel.tab." + i + ".focusedItem");
} }
} }
for (int i = paths.size(); i < old; i++) {
properties.remove("leftPanel.tab." + i + ".path");
properties.remove("leftPanel.tab." + i + ".viewMode");
properties.remove("leftPanel.tab." + i + ".focusedItem");
}
properties.setProperty("leftPanel.selectedIndex", String.valueOf(selectedIndex)); properties.setProperty("leftPanel.selectedIndex", String.valueOf(selectedIndex));
} }
@ -223,6 +229,7 @@ public class AppConfig {
} }
public void saveRightPanelTabs(java.util.List<String> paths, java.util.List<String> viewModes, java.util.List<String> focusedItems, int selectedIndex) { public void saveRightPanelTabs(java.util.List<String> paths, java.util.List<String> viewModes, java.util.List<String> focusedItems, int selectedIndex) {
int oldCount = getRightPanelTabCount();
properties.setProperty("rightPanel.tabs.count", String.valueOf(paths.size())); properties.setProperty("rightPanel.tabs.count", String.valueOf(paths.size()));
for (int i = 0; i < paths.size(); i++) { for (int i = 0; i < paths.size(); i++) {
properties.setProperty("rightPanel.tab." + i + ".path", paths.get(i)); properties.setProperty("rightPanel.tab." + i + ".path", paths.get(i));
@ -233,6 +240,11 @@ public class AppConfig {
properties.remove("rightPanel.tab." + i + ".focusedItem"); properties.remove("rightPanel.tab." + i + ".focusedItem");
} }
} }
for (int i = paths.size(); i < oldCount; i++) {
properties.remove("rightPanel.tab." + i + ".path");
properties.remove("rightPanel.tab." + i + ".viewMode");
properties.remove("rightPanel.tab." + i + ".focusedItem");
}
properties.setProperty("rightPanel.selectedIndex", String.valueOf(selectedIndex)); properties.setProperty("rightPanel.selectedIndex", String.valueOf(selectedIndex));
} }

View File

@ -103,9 +103,9 @@ public class FileItem {
} }
/** /**
* Format file size into a human-readable string * Format file size into a human-readable string
*/ */
private String formatSize(long size) { public static String formatSize(long size) {
if (size < 1024) { if (size < 1024) {
return size + " B"; return size + " B";
} else if (size < 1024 * 1024) { } else if (size < 1024 * 1024) {

View File

@ -1,6 +1,7 @@
package cz.kamma.kfmanager.ui; package cz.kamma.kfmanager.ui;
import cz.kamma.kfmanager.config.AppConfig; import cz.kamma.kfmanager.config.AppConfig;
import cz.kamma.kfmanager.model.FileItem;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
@ -917,11 +918,11 @@ public class FileEditor extends JDialog {
label.setHorizontalAlignment(JLabel.CENTER); label.setHorizontalAlignment(JLabel.CENTER);
scrollPane.setViewportView(label); scrollPane.setViewportView(label);
String statusText = String.format("Obraz: %d x %d px", imgW, imgH); String statusText = String.format("Image: %d x %d px", imgW, imgH);
if (scaled) statusText += " (zmenšeno)"; if (scaled) statusText += " (scaled)";
statusPosLabel.setText(statusText); statusPosLabel.setText(statusText);
String labelText = String.format("Velikost: %s", formatSize(file.length())); String labelText = String.format("Size: %s", FileItem.formatSize(file.length()));
if (imageFiles.size() > 1) { if (imageFiles.size() > 1) {
labelText += String.format(" [%d / %d]", currentImageIndex + 1, imageFiles.size()); labelText += String.format(" [%d / %d]", currentImageIndex + 1, imageFiles.size());
} }
@ -936,10 +937,10 @@ public class FileEditor extends JDialog {
if (hexControlPanel != null) hexControlPanel.setVisible(false); if (hexControlPanel != null) hexControlPanel.setVisible(false);
} }
} else { } else {
textArea.setText("Chyba: Nepodařilo se načíst obrázek."); textArea.setText("Error: Image could not be loaded.");
} }
} catch (Exception e) { } catch (Exception e) {
textArea.setText("Chyba při načítání obrázku: " + e.getMessage()); textArea.setText("Error loading image: " + e.getMessage());
} }
} }
@ -974,13 +975,6 @@ public class FileEditor extends JDialog {
setLocationRelativeTo(getOwner()); setLocationRelativeTo(getOwner());
} }
private String formatSize(long size) {
if (size < 1024) return size + " B";
int exp = (int) (Math.log(size) / Math.log(1024));
String pre = "KMGTPE".charAt(exp-1) + "";
return String.format("%.1f %sB", size / Math.pow(1024, exp), pre);
}
private void initImageList() { private void initImageList() {
File parent = file.getParentFile(); File parent = file.getParentFile();
if (parent != null && parent.isDirectory()) { if (parent != null && parent.isDirectory()) {

View File

@ -1770,7 +1770,6 @@ public class FilePanelTab extends JPanel {
} }
// Mark all matching items // Mark all matching items
int matchCount = 0;
for (FileItem item : tableModel.items) { for (FileItem item : tableModel.items) {
if (item.getName().equals("..")) { if (item.getName().equals("..")) {
continue; // Skip parent directory continue; // Skip parent directory
@ -1778,7 +1777,6 @@ public class FilePanelTab extends JPanel {
if (compiledPattern.matcher(item.getName()).matches()) { if (compiledPattern.matcher(item.getName()).matches()) {
item.setMarked(true); item.setMarked(true);
matchCount++;
} }
} }
@ -2271,7 +2269,7 @@ public class FilePanelTab extends JPanel {
if (markedCount > 0) { if (markedCount > 0) {
statusLabel.setText(String.format(" Selected: %d files, %d directories (%s)", statusLabel.setText(String.format(" Selected: %d files, %d directories (%s)",
fileCount, dirCount, formatSize(totalSize))); fileCount, dirCount, FileItem.formatSize(totalSize)));
} else { } else {
int selectedRow = fileTable.getSelectedRow(); int selectedRow = fileTable.getSelectedRow();
if (selectedRow >= 0) { if (selectedRow >= 0) {
@ -2291,7 +2289,7 @@ public class FilePanelTab extends JPanel {
} else { } else {
statusLabel.setText(String.format(" %s | %s | %s", statusLabel.setText(String.format(" %s | %s | %s",
item.getName(), item.getName(),
formatSize(item.getSize()), FileItem.formatSize(item.getSize()),
item.getFormattedDate())); item.getFormattedDate()));
} }
} else { } else {
@ -2628,19 +2626,7 @@ public class FilePanelTab extends JPanel {
if (fileTable.getTableHeader() != null) fileTable.getTableHeader().repaint(); if (fileTable.getTableHeader() != null) fileTable.getTableHeader().repaint();
}); });
} }
private String formatSize(long size) {
if (size < 1024) {
return size + " B";
} else if (size < 1024 * 1024) {
return String.format("%.1f KB", size / 1024.0);
} else if (size < 1024 * 1024 * 1024) {
return String.format("%.1f MB", size / (1024.0 * 1024.0));
} else {
return String.format("%.1f GB", size / (1024.0 * 1024.0 * 1024.0));
}
}
// Getters // Getters
public JTable getFileTable() { public JTable getFileTable() {
return fileTable; return fileTable;

View File

@ -1,5 +1,7 @@
package cz.kamma.kfmanager.ui; package cz.kamma.kfmanager.ui;
import cz.kamma.kfmanager.model.FileItem;
import javax.swing.*; import javax.swing.*;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
import java.awt.*; import java.awt.*;
@ -72,7 +74,7 @@ public class PropertiesDialog extends JDialog {
addInfoRow(panel, gbc, row++, "Name:", file.getName()); addInfoRow(panel, gbc, row++, "Name:", file.getName());
addInfoRow(panel, gbc, row++, "Path:", file.getAbsolutePath()); addInfoRow(panel, gbc, row++, "Path:", file.getAbsolutePath());
String sizeStr = file.isDirectory() ? "Directory" : formatSize(file.length()); String sizeStr = file.isDirectory() ? "Directory" : FileItem.formatSize(file.length());
addInfoRow(panel, gbc, row++, "Size:", sizeStr); addInfoRow(panel, gbc, row++, "Size:", sizeStr);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@ -340,11 +342,4 @@ public class PropertiesDialog extends JDialog {
textField.setOpaque(false); textField.setOpaque(false);
panel.add(textField, gbc); panel.add(textField, gbc);
} }
private String formatSize(long bytes) {
if (bytes < 1024) return bytes + " B";
int exp = (int) (Math.log(bytes) / Math.log(1024));
char pre = "KMGTPE".charAt(exp - 1);
return String.format("%.1f %cB (%d bytes)", bytes / Math.pow(1024, exp), pre, bytes);
}
} }