mirror of
https://github.com/xpipe-io/xpipe.git
synced 2026-10-05 14:41:33 +00:00
Synchronize queue entries
This commit is contained in:
9 files changed
+44
-22
No files matched your search
@@ -38,7 +38,7 @@ public abstract class AbstractAction {
|
||||
AppCache.update("pickIntroductionShown", true);
|
||||
}
|
||||
|
||||
AppLayoutModel.get().getQueueEntries().add(queueEntry);
|
||||
AppLayoutModel.get().showQueueEntry(queueEntry);
|
||||
pick = action -> {
|
||||
if (action instanceof SerializableAction) {
|
||||
cancelPick();
|
||||
@@ -55,7 +55,7 @@ public abstract class AbstractAction {
|
||||
});
|
||||
|
||||
public static synchronized void cancelPick() {
|
||||
AppLayoutModel.get().getQueueEntries().remove(queueEntry);
|
||||
AppLayoutModel.get().hideQueueEntry(queueEntry);
|
||||
pick = null;
|
||||
}
|
||||
|
||||
|
||||
@@ -61,10 +61,10 @@ public class AskpassExchange extends BeaconInterface<AskpassExchange.Request> {
|
||||
new SimpleStringProperty(msg.getPrompt()),
|
||||
new LabelGraphic.IconGraphic("mdi2f-fingerprint"),
|
||||
() -> true);
|
||||
AppLayoutModel.get().getQueueEntries().add(qe);
|
||||
AppLayoutModel.get().showQueueEntry(qe);
|
||||
GlobalTimer.delay(
|
||||
() -> {
|
||||
AppLayoutModel.get().getQueueEntries().remove(qe);
|
||||
AppLayoutModel.get().hideQueueEntry(qe);
|
||||
},
|
||||
Duration.ofSeconds(15));
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ public class AppLayoutComp extends RegionStructureBuilder<BorderPane, AppLayoutC
|
||||
pane.setCenter(multiR);
|
||||
TrackEvent.info("Window content comp created");
|
||||
|
||||
var sidebar = new SideMenuBarComp(model.getSelected(), model.getEntries(), model.getQueueEntries());
|
||||
var sidebar = new SideMenuBarComp(model.getSelected(), model.getEntries(), model.getQueueEntriesRaw());
|
||||
var sidebarR = sidebar.build();
|
||||
TrackEvent.info("Window sidebar comp created");
|
||||
pane.setRight(sidebarR);
|
||||
|
||||
@@ -67,7 +67,7 @@ public class ModalOverlay {
|
||||
|
||||
public void hideable(AppLayoutModel.QueueEntry entry) {
|
||||
setHideAction(() -> {
|
||||
AppLayoutModel.get().getQueueEntries().add(entry);
|
||||
AppLayoutModel.get().showQueueEntry(entry);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ public class AppExecutableCache {
|
||||
Hyperlinks.open(url);
|
||||
return true;
|
||||
});
|
||||
AppLayoutModel.get().getQueueEntries().add(queueEntry);
|
||||
AppLayoutModel.get().showQueueEntry(queueEntry);
|
||||
|
||||
try {
|
||||
function.accept(file);
|
||||
@@ -47,7 +47,7 @@ public class AppExecutableCache {
|
||||
throw e;
|
||||
}
|
||||
} finally {
|
||||
AppLayoutModel.get().getQueueEntries().remove(queueEntry);
|
||||
AppLayoutModel.get().hideQueueEntry(queueEntry);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,6 +36,7 @@ import javafx.scene.input.KeyCombination;
|
||||
import lombok.*;
|
||||
import lombok.experimental.NonFinal;
|
||||
import lombok.extern.jackson.Jacksonized;
|
||||
import org.int4.fx.builders.FX;
|
||||
import org.kordamp.ikonli.javafx.FontIcon;
|
||||
|
||||
import java.time.Duration;
|
||||
@@ -43,21 +44,25 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
@Getter
|
||||
public class AppLayoutModel {
|
||||
|
||||
private static AppLayoutModel INSTANCE;
|
||||
|
||||
@Getter
|
||||
private final SavedState savedState;
|
||||
|
||||
@Getter
|
||||
private final List<Entry> entries;
|
||||
|
||||
@Getter
|
||||
private final Property<Entry> selected;
|
||||
|
||||
private final ObservableList<QueueEntry> queueEntries;
|
||||
|
||||
@Getter
|
||||
private final BooleanProperty ptbAvailable = new SimpleBooleanProperty();
|
||||
|
||||
@Getter
|
||||
private final BooleanProperty portraitLayoutCollapsed = new SimpleBooleanProperty();
|
||||
|
||||
public AppLayoutModel(SavedState savedState) {
|
||||
@@ -136,10 +141,10 @@ public class AppLayoutModel {
|
||||
true);
|
||||
AppSizeBreakpoints.compactMode().subscribe(v -> {
|
||||
if (v) {
|
||||
getQueueEntries().add(toggleExpand);
|
||||
queueEntries.add(toggleExpand);
|
||||
portraitExpanded.set(false);
|
||||
} else {
|
||||
getQueueEntries().remove(toggleExpand);
|
||||
queueEntries.remove(toggleExpand);
|
||||
portraitExpanded.set(true);
|
||||
}
|
||||
});
|
||||
@@ -169,6 +174,23 @@ public class AppLayoutModel {
|
||||
INSTANCE = null;
|
||||
}
|
||||
|
||||
public synchronized void hideQueueEntry(QueueEntry entry) {
|
||||
queueEntries.remove(entry);
|
||||
}
|
||||
|
||||
public ObservableList<QueueEntry> getQueueEntriesRaw() {
|
||||
return queueEntries;
|
||||
}
|
||||
|
||||
public synchronized List<QueueEntry> getQueueEntries() {
|
||||
var copy = new ArrayList<>(queueEntries);
|
||||
return copy;
|
||||
}
|
||||
|
||||
public void showQueueEntry(QueueEntry entry) {
|
||||
showQueueEntry(entry, null, true);
|
||||
}
|
||||
|
||||
public synchronized void showQueueEntry(QueueEntry entry, Duration duration, boolean allowDuplicates) {
|
||||
if (!allowDuplicates && queueEntries.contains(entry)) {
|
||||
return;
|
||||
@@ -376,19 +398,19 @@ public class AppLayoutModel {
|
||||
var r = getAction().get();
|
||||
if (r) {
|
||||
PlatformThread.runLaterIfNeeded(() -> {
|
||||
AppLayoutModel.get().getQueueEntries().remove(this);
|
||||
AppLayoutModel.get().hideQueueEntry(this);
|
||||
});
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
PlatformThread.runLaterIfNeeded(() -> {
|
||||
AppLayoutModel.get().getQueueEntries().remove(this);
|
||||
AppLayoutModel.get().hideQueueEntry(this);
|
||||
});
|
||||
throw t;
|
||||
}
|
||||
}
|
||||
|
||||
public void hide() {
|
||||
AppLayoutModel.get().getQueueEntries().remove(this);
|
||||
AppLayoutModel.get().hideQueueEntry(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -202,7 +202,7 @@ public class StoreCreationDialog {
|
||||
var queueEntry = StoreCreationQueueEntry.of(model, modal);
|
||||
|
||||
modal.setHideAction(() -> {
|
||||
AppLayoutModel.get().getQueueEntries().add(queueEntry);
|
||||
AppLayoutModel.get().showQueueEntry(queueEntry);
|
||||
showNotice();
|
||||
});
|
||||
|
||||
@@ -212,7 +212,7 @@ public class StoreCreationDialog {
|
||||
}
|
||||
|
||||
modal.hide();
|
||||
AppLayoutModel.get().getQueueEntries().add(queueEntry);
|
||||
AppLayoutModel.get().showQueueEntry(queueEntry);
|
||||
showNotice();
|
||||
});
|
||||
modal.setRequireCloseButtonForClose(true);
|
||||
|
||||
@@ -339,7 +339,7 @@ public class TerminalDockHubManager {
|
||||
showing.set(true);
|
||||
|
||||
NativeWinWindowControl.MAIN_WINDOW.setWindowsTransitionsEnabled(false);
|
||||
AppLayoutModel.get().getQueueEntries().add(queueEntry);
|
||||
AppLayoutModel.get().showQueueEntry(queueEntry);
|
||||
}
|
||||
|
||||
public void disableDock() {
|
||||
@@ -354,7 +354,7 @@ public class TerminalDockHubManager {
|
||||
showDialogIfNeeded();
|
||||
|
||||
NativeWinWindowControl.MAIN_WINDOW.setWindowsTransitionsEnabled(true);
|
||||
AppLayoutModel.get().getQueueEntries().remove(queueEntry);
|
||||
AppLayoutModel.get().hideQueueEntry(queueEntry);
|
||||
}
|
||||
|
||||
public void triggerDock() {
|
||||
|
||||
@@ -31,10 +31,10 @@ public class ScanDialog {
|
||||
var button = new ModalButton(
|
||||
"ok",
|
||||
() -> {
|
||||
AppLayoutModel.get().getQueueEntries().add(queueEntry);
|
||||
AppLayoutModel.get().showQueueEntry(queueEntry);
|
||||
ThreadHelper.runAsync(() -> {
|
||||
comp.finish();
|
||||
AppLayoutModel.get().getQueueEntries().remove(queueEntry);
|
||||
AppLayoutModel.get().hideQueueEntry(queueEntry);
|
||||
});
|
||||
},
|
||||
true,
|
||||
@@ -59,10 +59,10 @@ public class ScanDialog {
|
||||
var button = new ModalButton(
|
||||
"ok",
|
||||
() -> {
|
||||
AppLayoutModel.get().getQueueEntries().add(queueEntry);
|
||||
AppLayoutModel.get().showQueueEntry(queueEntry);
|
||||
ThreadHelper.runAsync(() -> {
|
||||
comp.finish();
|
||||
AppLayoutModel.get().getQueueEntries().remove(queueEntry);
|
||||
AppLayoutModel.get().hideQueueEntry(queueEntry);
|
||||
});
|
||||
},
|
||||
true,
|
||||
|
||||
Reference in new issue
Block a user