Ad ability to move categories

This commit is contained in:
crschnick
2025-10-11 20:15:56 +00:00
parent 352a81ba0b
commit f06dcf9b60
4 changed files with 43 additions and 2 deletions

View File

@@ -24,6 +24,7 @@ import javafx.css.PseudoClass;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.input.KeyCode;
@@ -240,6 +241,27 @@ public class StoreCategoryComp extends SimpleComp {
contextMenu.getItems().add(new SeparatorMenuItem());
var move = new Menu(AppI18n.get("moveTo"), new FontIcon("mdi2f-folder-move-outline"));
StoreViewState.get()
.getSortedCategories(getCategory().getRoot())
.getList()
.forEach(storeCategoryWrapper -> {
MenuItem m = new MenuItem();
m.textProperty()
.setValue(" ".repeat(storeCategoryWrapper.getDepth())
+ storeCategoryWrapper.getName().getValue());
m.setOnAction(event -> {
category.moveToParent(storeCategoryWrapper.getCategory());
event.consume();
});
if (storeCategoryWrapper.getParent() == null) {
m.setDisable(true);
}
move.getItems().add(m);
});
contextMenu.getItems().add(move);
var del = new MenuItem(AppI18n.get("remove"), new FontIcon("mdal-delete_outline"));
del.setOnAction(event -> {
category.delete();

View File

@@ -99,6 +99,10 @@ public class StoreCategoryWrapper {
});
}
public void moveToParent(DataStoreCategory newParent) {
DataStorage.get().moveCategoryToParent(category, newParent);
}
public void delete() {
for (var c : children.getList()) {
c.delete();

View File

@@ -542,6 +542,22 @@ public abstract class DataStorage {
saveAsync();
}
public void moveCategoryToParent(DataStoreCategory cat, DataStoreCategory newParent) {
if (newParent.getUuid().equals(cat.getUuid())) {
return;
}
if (cat.getParentCategory() == null) {
return;
}
cat.setParentCategory(newParent.getUuid());
listeners.forEach(storageListener -> storageListener.onEntryCategoryChange());
listeners.forEach(storageListener -> storageListener.onStoreListUpdate());
saveAsync();
}
public void setOrderIndex(DataStoreEntry entry, int index) {
entry.setOrderIndex(index);
listeners.forEach(storageListener -> storageListener.onStoreListUpdate());

View File

@@ -198,12 +198,11 @@ public interface KittyTerminalType extends ExternalTerminalType, TrackableTermin
return false;
}
var time = System.currentTimeMillis();
sc.command(CommandBuilder.of()
.add("open", "-n", "-a", "kitty.app", "--args")
.add("-o", "allow_remote_control=socket-only", "--listen-on", "unix:" + getSocket()))
.execute();
for (int i = 0; i < 50; i++) {
ThreadHelper.sleep(100);
try (SocketChannel channel = SocketChannel.open(StandardProtocolFamily.UNIX)) {