diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreCreationModel.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreCreationModel.java index 41db7608b..9cffcb954 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreCreationModel.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreCreationModel.java @@ -311,7 +311,7 @@ public class StoreCreationModel { || p.getCreationCategory().getCategory().equals(DataStorage.ALL_CONNECTIONS_CATEGORY_UUID) ? "connection" : p.getCreationCategory().getCategory().equals(DataStorage.ALL_SCRIPTS_CATEGORY_UUID) - ? (p.getId().equals("scriptGroup") ? "scriptGroup" : "script") + ? "script" : p.getCreationCategory().getCategory().equals(DataStorage.ALL_IDENTITIES_CATEGORY_UUID) ? "identity" : "macro"; diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreEntryFilterCompBar.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreEntryFilterCompBar.java index 7874a5b08..bf398ea49 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreEntryFilterCompBar.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreEntryFilterCompBar.java @@ -7,6 +7,7 @@ import io.xpipe.app.comp.RegionBuilder; import io.xpipe.app.comp.SimpleRegionBuilder; import io.xpipe.app.comp.base.CountComp; import io.xpipe.app.comp.base.IconButtonComp; +import io.xpipe.app.comp.base.InputGroupComp; import io.xpipe.app.core.AppFontSizes; import io.xpipe.app.core.AppI18n; import io.xpipe.app.platform.BindingsHelper; @@ -28,6 +29,7 @@ import javafx.scene.layout.VBox; import javafx.scene.text.TextAlignment; import org.kordamp.ikonli.javafx.FontIcon; +import java.util.List; import java.util.function.Function; public class StoreEntryFilterCompBar extends SimpleRegionBuilder { @@ -38,23 +40,34 @@ public class StoreEntryFilterCompBar extends SimpleRegionBuilder { this.filterTrigger = filterTrigger; } - private Region createFilterBar() { - var filter = new StoreFilterComp().build(); - filterTrigger.subscribe(() -> { - filter.requestFocus(); + private BaseRegionBuilder createQuickConnectButton() { + var b = new IconButtonComp("mdi2a-animation-play", () -> { + // quickConnectTrigger.trigger(); }); - filter.setMinHeight(Region.USE_PREF_SIZE); - return filter; + b.describe(d -> d.nameKey("quickConnect")); + b.style("quick-connect-button"); + b.apply(struc -> { + struc.getStyleClass().remove(Styles.FLAT); + }); + return b; } @Override public Region createSimple() { - var filter = createFilterBar(); - HBox.setHgrow(filter, Priority.ALWAYS); - var bar = new HBox(filter); - bar.setFillHeight(true); - bar.getStyleClass().add("bar"); - bar.getStyleClass().add("store-filter-bar"); - return bar; + var filter = new StoreFilterComp(); + filter.minHeight(Region.USE_PREF_SIZE); + filter.apply(customTextField -> { + filterTrigger.subscribe(() -> { + customTextField.requestFocus(); + }); + }); + + var button = createQuickConnectButton(); + + var inputGroup = new InputGroupComp(List.of(filter, button)); + inputGroup.setMainReference(filter); + inputGroup.style("bar"); + inputGroup.style("store-filter-bar"); + return inputGroup.build(); } } diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreEntryListOverviewComp.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreEntryListOverviewComp.java index a285b34f0..149181514 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreEntryListOverviewComp.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreEntryListOverviewComp.java @@ -94,9 +94,8 @@ public class StoreEntryListOverviewComp extends SimpleRegionBuilder { private Region createAddBar() { var add = createAddButton(); - var quickConnect = createQuickConnectButton().build(); var batchMode = createBatchModeButton().build(); - var hbox = new HBox(add, new Spacer(Orientation.HORIZONTAL), quickConnect, batchMode); + var hbox = new HBox(add, new Spacer(Orientation.HORIZONTAL), batchMode); batchMode.minHeightProperty().bind(add.heightProperty()); batchMode.prefHeightProperty().bind(add.heightProperty()); @@ -127,18 +126,6 @@ public class StoreEntryListOverviewComp extends SimpleRegionBuilder { return menu; } - private BaseRegionBuilder createQuickConnectButton() { - var b = new IconButtonComp("mdi2a-animation-play", () -> { - quickConnectTrigger.trigger(); - }); - b.describe(d -> d.nameKey("quickConnect")); - b.style("quick-connect-button"); - b.apply(struc -> { - struc.getStyleClass().remove(Styles.FLAT); - }); - return b; - } - private BaseRegionBuilder createBatchModeButton() { var batchMode = StoreViewState.get().getBatchMode(); var b = new IconButtonComp("mdi2l-layers", () -> { diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreIconChoiceComp.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreIconChoiceComp.java index 45dc6a716..c1072b9ed 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreIconChoiceComp.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreIconChoiceComp.java @@ -102,26 +102,24 @@ public class StoreIconChoiceComp extends ModalOverlayContentComp { } private void initTable(TableView> table) { - if (!SystemIconManager.isCacheOutdated()) { - for (int i = 0; i < columns; i++) { - var col = new TableColumn, SystemIcon>("col" + i); - final int colIndex = i; - col.setCellValueFactory(cb -> { - var row = cb.getValue(); - var item = row.size() > colIndex ? row.get(colIndex) : null; - return new SimpleObjectProperty<>(item); - }); - col.setCellFactory(cb -> new IconCell()); - col.getStyleClass().add(Tweaks.ALIGN_CENTER); - table.getColumns().add(col); - } - } - table.setPlaceholder(new Region()); table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY_ALL_COLUMNS); table.getSelectionModel().setCellSelectionEnabled(true); table.getStyleClass().add("icon-browser"); table.disableProperty().bind(PlatformThread.sync(busy)); + + for (int i = 0; i < columns; i++) { + var col = new TableColumn, SystemIcon>("col" + i); + final int colIndex = i; + col.setCellValueFactory(cb -> { + var row = cb.getValue(); + var item = row.size() > colIndex ? row.get(colIndex) : null; + return new SimpleObjectProperty<>(item); + }); + col.setCellFactory(cb -> new IconCell()); + col.getStyleClass().add(Tweaks.ALIGN_CENTER); + table.getColumns().add(col); + } } private Region createLoadingPane() { @@ -138,7 +136,7 @@ public class StoreIconChoiceComp extends ModalOverlayContentComp { }); refreshButton.hide(Bindings.createBooleanBinding( () -> { - return SystemIconManager.hasLoadedAnyImages(); + return SystemIconManager.hasLoadedAnyImages() && !SystemIconManager.isCacheOutdated(); }, busy)); refreshButton.disable(busy); @@ -165,11 +163,6 @@ public class StoreIconChoiceComp extends ModalOverlayContentComp { } private void updateData(TableView> table, String filterString) { - if (SystemIconManager.isCacheOutdated()) { - table.getItems().clear(); - return; - } - var available = icons.stream() .filter(systemIcon -> AppImages.hasImage( "icons/" + systemIcon.getSource().getId() + "/" + systemIcon.getId() + "-40.png")) diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreIconChoiceDialog.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreIconChoiceDialog.java index 6a9d73a07..facb436b9 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreIconChoiceDialog.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreIconChoiceDialog.java @@ -47,7 +47,7 @@ public class StoreIconChoiceDialog { } public static void show(DataStoreCategory entry) { - var dialog = new StoreIconChoiceDialog(entry.getEffectiveIconFile(), s -> { + var dialog = new StoreIconChoiceDialog(entry.getDefaultIconFile(), s -> { entry.setIcon( s != null && s.getSource() != null ? s.getSource().getId() + "/" diff --git a/app/src/main/java/io/xpipe/app/storage/DataStoreCategory.java b/app/src/main/java/io/xpipe/app/storage/DataStoreCategory.java index cb44a276b..a9f28eeed 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStoreCategory.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStoreCategory.java @@ -166,9 +166,49 @@ public class DataStoreCategory extends StorageElement { } } + public String getDefaultIconFile() { + if (uuid.equals(DataStorage.ALL_CONNECTIONS_CATEGORY_UUID)) { + return "connectionsCategory_icon.svg"; + } + + if (uuid.equals(DataStorage.DEFAULT_CATEGORY_UUID)) { + return "connectionsCategory_icon.svg"; + } + + if (uuid.equals(DataStorage.ALL_IDENTITIES_CATEGORY_UUID)) { + return "identityCategory_icon.svg"; + } + + if (uuid.equals(DataStorage.LOCAL_IDENTITIES_CATEGORY_UUID)) { + return "localIdentity_icon.svg"; + } + + if (uuid.equals(DataStorage.SYNCED_IDENTITIES_CATEGORY_UUID)) { + return "syncedIdentity_icon.svg"; + } + + if (uuid.equals(DataStorage.ALL_SCRIPTS_CATEGORY_UUID)) { + return "scriptCategory_icon.svg"; + } + + if (uuid.equals(DataStorage.CUSTOM_SCRIPTS_CATEGORY_UUID)) { + return "scriptCategory_icon.svg"; + } + + if (uuid.equals(DataStorage.SCRIPT_SOURCES_CATEGORY_UUID)) { + return "scriptCollectionSource_icon.svg"; + } + + if (uuid.equals(DataStorage.PREDEFINED_SCRIPTS_CATEGORY_UUID)) { + return "defaultShell_icon.svg"; + } + + return "connectionsCategory_icon.svg"; + } + public String getEffectiveIconFile() { if (icon == null) { - return "base:localIdentity_icon.svg"; + return getDefaultIconFile(); } var found = SystemIconManager.getIcon(icon); diff --git a/app/src/main/resources/io/xpipe/app/resources/style/header-bars.css b/app/src/main/resources/io/xpipe/app/resources/style/header-bars.css index 468654885..2f7e2b9aa 100644 --- a/app/src/main/resources/io/xpipe/app/resources/style/header-bars.css +++ b/app/src/main/resources/io/xpipe/app/resources/style/header-bars.css @@ -1,14 +1,17 @@ +.quick-connect-button { + -fx-padding: 10; +} .store-header-bar { - -fx-padding: 0.8em 1.0em 0.8em 1.0em; + -fx-padding: 0.8em 0.9em 0.8em 0.9em; } .store-filter-bar { - -fx-padding: 0.5em 1.0em 0.5em 1.0em; + -fx-padding: 0.5em 0.9em 0.5em 0.9em; } .store-filter-comp { - -fx-padding: 0.3em 0.4em 0.3em 0.4em; + -fx-padding: 0.3em 0.5em 0.3em 0.5em; } .bar { diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-16-dark.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-16-dark.png new file mode 100644 index 000000000..722307bb0 Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-16-dark.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-16.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-16.png new file mode 100644 index 000000000..f2fa236c5 Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-16.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-24-dark.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-24-dark.png new file mode 100644 index 000000000..e0f8de0aa Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-24-dark.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-24.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-24.png new file mode 100644 index 000000000..07ca700b1 Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-24.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-40-dark.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-40-dark.png new file mode 100644 index 000000000..203b7e77c Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-40-dark.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-40.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-40.png new file mode 100644 index 000000000..e020ae704 Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-40.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-80-dark.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-80-dark.png new file mode 100644 index 000000000..db7dcd92b Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-80-dark.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-80.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-80.png new file mode 100644 index 000000000..e5cdc879c Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/connectionsCategory_icon-80.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-16-dark.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-16-dark.png new file mode 100644 index 000000000..bedeb0429 Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-16-dark.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-16.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-16.png new file mode 100644 index 000000000..0e3448fef Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-16.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-24-dark.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-24-dark.png new file mode 100644 index 000000000..b8dc1f65f Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-24-dark.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-24.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-24.png new file mode 100644 index 000000000..e34e14ec0 Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-24.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-40-dark.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-40-dark.png new file mode 100644 index 000000000..1f82af261 Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-40-dark.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-40.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-40.png new file mode 100644 index 000000000..3c80323bf Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-40.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-80-dark.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-80-dark.png new file mode 100644 index 000000000..4ef713c44 Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-80-dark.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-80.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-80.png new file mode 100644 index 000000000..236a28bd9 Binary files /dev/null and b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/identityCategory_icon-80.png differ diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-16-dark.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-16-dark.png similarity index 100% rename from ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-16-dark.png rename to ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-16-dark.png diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-16.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-16.png similarity index 100% rename from ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-16.png rename to ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-16.png diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-24-dark.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-24-dark.png similarity index 100% rename from ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-24-dark.png rename to ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-24-dark.png diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-24.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-24.png similarity index 100% rename from ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-24.png rename to ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-24.png diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-40-dark.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-40-dark.png similarity index 100% rename from ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-40-dark.png rename to ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-40-dark.png diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-40.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-40.png similarity index 100% rename from ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-40.png rename to ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-40.png diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-80-dark.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-80-dark.png similarity index 100% rename from ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-80-dark.png rename to ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-80-dark.png diff --git a/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-80.png b/ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-80.png similarity index 100% rename from ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptGroup_icon-80.png rename to ext/base/src/main/resources/io/xpipe/ext/base/resources/img/scriptCategory_icon-80.png diff --git a/img/base/connectionsCategory_icon-dark.svg b/img/base/connectionsCategory_icon-dark.svg new file mode 100644 index 000000000..dfcc5a1c3 --- /dev/null +++ b/img/base/connectionsCategory_icon-dark.svg @@ -0,0 +1,62 @@ + +identityidentity diff --git a/img/base/connectionsCategory_icon.svg b/img/base/connectionsCategory_icon.svg new file mode 100644 index 000000000..572352473 --- /dev/null +++ b/img/base/connectionsCategory_icon.svg @@ -0,0 +1,62 @@ + +identityidentity diff --git a/img/base/identityCategory_icon-dark.svg b/img/base/identityCategory_icon-dark.svg new file mode 100644 index 000000000..a7082c42e --- /dev/null +++ b/img/base/identityCategory_icon-dark.svg @@ -0,0 +1,47 @@ + +identityidentity diff --git a/img/base/identityCategory_icon.svg b/img/base/identityCategory_icon.svg new file mode 100644 index 000000000..1d77acb97 --- /dev/null +++ b/img/base/identityCategory_icon.svg @@ -0,0 +1,47 @@ + +identityidentity diff --git a/img/base/scriptGroup_icon-dark.svg b/img/base/scriptCategory_icon-dark.svg similarity index 100% rename from img/base/scriptGroup_icon-dark.svg rename to img/base/scriptCategory_icon-dark.svg diff --git a/img/base/scriptGroup_icon.svg b/img/base/scriptCategory_icon.svg similarity index 100% rename from img/base/scriptGroup_icon.svg rename to img/base/scriptCategory_icon.svg diff --git a/lang/strings/translations_en.properties b/lang/strings/translations_en.properties index 249b16a06..8e2c7a8cd 100644 --- a/lang/strings/translations_en.properties +++ b/lang/strings/translations_en.properties @@ -677,11 +677,6 @@ shouldElevate=Should elevate shouldElevateDescription=Whether to run this script with elevated permissions script.displayName=Shell script script.displayDescription=Create a reusable shell script -scriptGroup.displayName=Script group -scriptGroup.displayDescription=Group scripts together and organize them within -scriptGroup=Group -scriptGroupDescription=The group to assign this script to -scriptGroupGroupDescription=The optional parent group to assign this script group to openInNewTab=Open in new tab executeInBackground=in background executeInTerminal=in $TERM$