Merge branch 'feature/redesign-mainwindow' into feature/notificationbar

This commit is contained in:
mindmonk
2024-10-02 11:05:39 +02:00
committed by GitHub
12 changed files with 47 additions and 22 deletions

View File

@@ -60,6 +60,7 @@ public class Settings {
public final ObjectProperty<NodeOrientation> userInterfaceOrientation;
public final StringProperty licenseKey;
public final BooleanProperty showTrayIcon;
public final BooleanProperty compactMode;
public final IntegerProperty windowXPosition;
public final IntegerProperty windowYPosition;
public final IntegerProperty windowWidth;
@@ -96,6 +97,7 @@ public class Settings {
this.userInterfaceOrientation = new SimpleObjectProperty<>(this, "userInterfaceOrientation", parseEnum(json.uiOrientation, NodeOrientation.class, NodeOrientation.LEFT_TO_RIGHT));
this.licenseKey = new SimpleStringProperty(this, "licenseKey", json.licenseKey);
this.showTrayIcon = new SimpleBooleanProperty(this, "showTrayIcon", json.showTrayIcon);
this.compactMode = new SimpleBooleanProperty(this, "compactMode", json.compactMode);
this.windowXPosition = new SimpleIntegerProperty(this, "windowXPosition", json.windowXPosition);
this.windowYPosition = new SimpleIntegerProperty(this, "windowYPosition", json.windowYPosition);
this.windowWidth = new SimpleIntegerProperty(this, "windowWidth", json.windowWidth);
@@ -122,6 +124,7 @@ public class Settings {
userInterfaceOrientation.addListener(this::somethingChanged);
licenseKey.addListener(this::somethingChanged);
showTrayIcon.addListener(this::somethingChanged);
compactMode.addListener(this::somethingChanged);
windowXPosition.addListener(this::somethingChanged);
windowYPosition.addListener(this::somethingChanged);
windowWidth.addListener(this::somethingChanged);
@@ -175,6 +178,7 @@ public class Settings {
json.uiOrientation = userInterfaceOrientation.get().name();
json.licenseKey = licenseKey.get();
json.showTrayIcon = showTrayIcon.get();
json.compactMode = compactMode.get();
json.windowXPosition = windowXPosition.get();
json.windowYPosition = windowYPosition.get();
json.windowWidth = windowWidth.get();

View File

@@ -54,6 +54,9 @@ class SettingsJson {
@JsonProperty("showTrayIcon")
boolean showTrayIcon;
@JsonProperty("compactMode")
boolean compactMode;
@JsonProperty("startHidden")
boolean startHidden = Settings.DEFAULT_START_HIDDEN;

View File

@@ -30,9 +30,7 @@ public class MainWindowSceneFactory extends DefaultSceneFactory {
@Override
protected void setupDefaultAccelerators(Scene scene, Stage stage) {
if (SystemUtils.IS_OS_WINDOWS) {
scene.getAccelerators().put(ALT_F4, window::close);
} else {
if (!SystemUtils.IS_OS_WINDOWS) {
scene.getAccelerators().put(SHORTCUT_W, window::close);
}
scene.getAccelerators().put(SHORTCUT_N, vaultListController.get()::didClickAddNewVault);

View File

@@ -1,5 +1,6 @@
package org.cryptomator.ui.mainwindow;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.vaults.Vault;
import org.cryptomator.common.vaults.VaultState;
import org.cryptomator.ui.common.Animations;
@@ -18,6 +19,7 @@ public class VaultListCellController implements FxController {
private final ObjectProperty<Vault> vault = new SimpleObjectProperty<>();
private final ObservableValue<FontAwesome5Icon> glyph;
private final ObservableValue<Boolean> compactMode;
private AutoAnimator spinAnimation;
@@ -25,8 +27,9 @@ public class VaultListCellController implements FxController {
public FontAwesome5IconView vaultStateView;
@Inject
VaultListCellController() {
VaultListCellController(Settings settings) {
this.glyph = vault.flatMap(Vault::stateProperty).map(this::getGlyphForVaultState);
this.compactMode = settings.compactMode;
}
public void initialize() {
@@ -68,6 +71,14 @@ public class VaultListCellController implements FxController {
return vault.get();
}
public ObservableValue<Boolean> compactModeProperty() {
return compactMode;
}
public boolean getCompactMode() {
return compactMode.getValue();
}
public void setVault(Vault value) {
vault.set(value);
}

View File

@@ -1,6 +1,7 @@
package org.cryptomator.ui.mainwindow;
import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.vaults.Vault;
import org.cryptomator.common.vaults.VaultListManager;
import org.cryptomator.cryptofs.CryptoFileSystemProvider;
@@ -35,7 +36,6 @@ import javafx.scene.input.MouseEvent;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.io.File;
import java.io.IOException;
@@ -71,11 +71,11 @@ public class VaultListController implements FxController {
private final BooleanProperty draggingVaultOver = new SimpleBooleanProperty();
private final ResourceBundle resourceBundle;
private final FxApplicationWindows appWindows;
private final ObservableValue<Double> cellSize;
public ListView<Vault> vaultList;
public VBox vbox;
public StackPane root;
public HBox addVaultButton;
@FXML
private HBox addVaultButton;
@FXML
private ContextMenu addVaultContextMenu;
@@ -89,7 +89,8 @@ public class VaultListController implements FxController {
RemoveVaultComponent.Builder removeVaultDialogue, //
VaultListManager vaultListManager, //
ResourceBundle resourceBundle, //
FxApplicationWindows appWindows) {
FxApplicationWindows appWindows, //
Settings settings) {
this.mainWindow = mainWindow;
this.vaults = vaults;
this.selectedVault = selectedVault;
@@ -104,6 +105,7 @@ public class VaultListController implements FxController {
this.emptyVaultList = Bindings.isEmpty(vaults);
selectedVault.addListener(this::selectedVaultDidChange);
cellSize = settings.compactMode.map(compact -> compact ? 30.0 : 60.0);
}
public void initialize() {
@@ -274,5 +276,12 @@ public class VaultListController implements FxController {
return draggingVaultOver.get();
}
public ObservableValue<Double> cellSizeProperty() {
return cellSize;
}
public Double getCellSize() {
return cellSize.getValue();
}
}

View File

@@ -37,6 +37,7 @@ public class InterfacePreferencesController implements FxController {
private final SupportedLanguages supportedLanguages;
public ChoiceBox<UiTheme> themeChoiceBox;
public CheckBox showTrayIconCheckbox;
public CheckBox compactModeCheckbox;
public ChoiceBox<String> preferredLanguageChoiceBox;
public ToggleGroup nodeOrientation;
public RadioButton nodeOrientationLtr;
@@ -63,6 +64,7 @@ public class InterfacePreferencesController implements FxController {
themeChoiceBox.setConverter(new UiThemeConverter(resourceBundle));
showTrayIconCheckbox.selectedProperty().bindBidirectional(settings.showTrayIcon);
compactModeCheckbox.selectedProperty().bindBidirectional(settings.compactMode);
preferredLanguageChoiceBox.getItems().addAll(supportedLanguages.getLanguageTags());
preferredLanguageChoiceBox.valueProperty().bindBidirectional(settings.language);