Skip to content

Commit bfe7d2a

Browse files
author
Jan Schraff
committed
reworked screen position logic
1 parent 2c7e686 commit bfe7d2a

File tree

7 files changed

+74
-148
lines changed

7 files changed

+74
-148
lines changed

src/main/java/de/doubleslash/keeptime/Main.java

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import de.doubleslash.keeptime.common.FontProvider;
3434
import de.doubleslash.keeptime.common.Resources;
3535
import de.doubleslash.keeptime.common.Resources.RESOURCE;
36-
import de.doubleslash.keeptime.common.ScreenPosManager;
36+
import de.doubleslash.keeptime.common.ScreenPosHelper;
3737
import de.doubleslash.keeptime.controller.Controller;
3838
import de.doubleslash.keeptime.model.Model;
3939
import de.doubleslash.keeptime.model.Project;
@@ -43,6 +43,8 @@
4343
import de.doubleslash.keeptime.viewpopup.GlobalScreenListener;
4444
import de.doubleslash.keeptime.viewpopup.ViewControllerPopup;
4545
import javafx.application.Application;
46+
import javafx.beans.value.ChangeListener;
47+
import javafx.beans.value.ObservableValue;
4648
import javafx.event.EventHandler;
4749
import javafx.fxml.FXMLLoader;
4850
import javafx.scene.Parent;
@@ -204,8 +206,8 @@ private void readSettings() {
204206
model.useHotkey.set(settings.isUseHotkey());
205207
model.displayProjectsRight.set(settings.isDisplayProjectsRight());
206208
model.hideProjectsOnMouseExit.set(settings.isHideProjectsOnMouseExit());
207-
model.screenSettings.windowPositionX.set(settings.getWindowPositionX());
208-
model.screenSettings.windowPositionY.set(settings.getWindowPositionY());
209+
model.screenSettings.xProportion.set(settings.getWindowXProportion());
210+
model.screenSettings.yProportion.set(settings.getWindowYProportion());
209211
model.screenSettings.screenHash.set(settings.getScreenHash());
210212
model.screenSettings.saveWindowPosition.set(settings.isSaveWindowPosition());
211213
model.remindIfNotesAreEmpty.set(settings.isRemindIfNotesAreEmpty());
@@ -244,7 +246,48 @@ private void initialisePopupUI(final Stage primaryStage) throws IOException {
244246
private void initialiseUI(final Stage primaryStage) throws IOException {
245247
LOG.debug("Initialising main UI.");
246248

247-
new ScreenPosManager(primaryStage, model, controller);
249+
final ScreenPosHelper poshelper = new ScreenPosHelper(model.screenSettings.screenHash.get(),
250+
model.screenSettings.xProportion.get(), model.screenSettings.yProportion.get());
251+
// set stage to saved Position
252+
if (model.screenSettings.saveWindowPosition.get()) {
253+
254+
primaryStage.setX(poshelper.getAbsolutX());
255+
primaryStage.setY(poshelper.getAbsolutY());
256+
}
257+
258+
// add listeners to record Windowpositionchange
259+
260+
final ChangeListener<Number> posChange = new ChangeListener<Number>() {
261+
262+
@Override
263+
public void changed(final ObservableValue<? extends Number> observable, final Number oldValue,
264+
final Number newValue) {
265+
266+
// dont save if option disabled
267+
if (!model.screenSettings.saveWindowPosition.get()) {
268+
return;
269+
}
270+
271+
if (observable.equals(primaryStage.xProperty())) {
272+
poshelper.setAbsolutX(newValue.doubleValue());
273+
} else {
274+
poshelper.setAbsolutY(newValue.doubleValue());
275+
}
276+
277+
final Settings newSettings = new Settings(model.hoverBackgroundColor.get(), model.hoverFontColor.get(),
278+
model.defaultBackgroundColor.get(), model.defaultFontColor.get(), model.taskBarColor.get(),
279+
model.useHotkey.get(), model.displayProjectsRight.get(), model.hideProjectsOnMouseExit.get(),
280+
poshelper.getxProportion(), poshelper.getyProportion(), poshelper.getScreenhash(),
281+
model.screenSettings.saveWindowPosition.get(), model.remindIfNotesAreEmpty.get());
282+
283+
controller.updateSettings(newSettings);
284+
285+
}
286+
287+
};
288+
289+
primaryStage.xProperty().addListener(posChange);
290+
primaryStage.yProperty().addListener(posChange);
248291

249292
Pane mainPane;
250293

src/main/java/de/doubleslash/keeptime/common/ScreenPosManager.java

Lines changed: 0 additions & 117 deletions
This file was deleted.

src/main/java/de/doubleslash/keeptime/controller/Controller.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ public void updateSettings(final Settings newValuedSettings) {
113113
settings.setDisplayProjectsRight(newValuedSettings.isDisplayProjectsRight());
114114
settings.setHideProjectsOnMouseExit(newValuedSettings.isHideProjectsOnMouseExit());
115115
settings.setSaveWindowPosition(newValuedSettings.isSaveWindowPosition());
116-
settings.setWindowPositionX(newValuedSettings.getWindowPositionX());
117-
settings.setWindowPositionY(newValuedSettings.getWindowPositionY());
116+
settings.setWindowXProportion(newValuedSettings.getWindowXProportion());
117+
settings.setWindowYProportion(newValuedSettings.getWindowYProportion());
118118
settings.setScreenHash(newValuedSettings.getScreenHash());
119119
settings.setRemindIfNotesAreEmpty(newValuedSettings.isRemindIfNotesAreEmpty());
120120

@@ -129,8 +129,8 @@ public void updateSettings(final Settings newValuedSettings) {
129129
model.displayProjectsRight.set(settings.isDisplayProjectsRight());
130130
model.hideProjectsOnMouseExit.set(settings.isHideProjectsOnMouseExit());
131131
model.screenSettings.saveWindowPosition.set(settings.isSaveWindowPosition());
132-
model.screenSettings.windowPositionX.set(settings.getWindowPositionX());
133-
model.screenSettings.windowPositionY.set(settings.getWindowPositionY());
132+
model.screenSettings.xProportion.set(settings.getWindowXProportion());
133+
model.screenSettings.yProportion.set(settings.getWindowYProportion());
134134
model.screenSettings.screenHash.set(settings.getScreenHash());
135135
model.remindIfNotesAreEmpty.set(settings.isRemindIfNotesAreEmpty());
136136
}

src/main/java/de/doubleslash/keeptime/model/ScreenSettings.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
public class ScreenSettings {
77
public final ObjectProperty<Boolean> saveWindowPosition = new SimpleObjectProperty<>(false);
8-
public final ObjectProperty<Double> windowPositionY = new SimpleObjectProperty<>(0.5);
9-
public final ObjectProperty<Double> windowPositionX = new SimpleObjectProperty<>(0.5);
8+
public final ObjectProperty<Double> xProportion = new SimpleObjectProperty<>(0.5);
9+
public final ObjectProperty<Double> yProportion = new SimpleObjectProperty<>(0.5);
1010
public final ObjectProperty<Integer> screenHash = new SimpleObjectProperty<>(0);
1111
}

src/main/java/de/doubleslash/keeptime/model/Settings.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ public class Settings {
5959

6060
private boolean hideProjectsOnMouseExit;
6161

62-
private double windowPositionX;
62+
private double windowXProportion;
6363

64-
private double windowPositionY;
64+
private double windowYProportion;
6565

66-
private int screenHash;
66+
private int windowScreenhash;
6767

6868
private boolean saveWindowPosition;
6969

@@ -85,9 +85,9 @@ public Settings(final Color hoverBackgroundColor, final Color hoverFontColor, fi
8585
this.useHotkey = useHotkey;
8686
this.displayProjectsRight = displayProjectsRight;
8787
this.hideProjectsOnMouseExit = hideProjectsOnMouseExit;
88-
this.windowPositionX = windowPositionX;
89-
this.windowPositionY = windowPositionY;
90-
this.screenHash = screenHash;
88+
this.windowXProportion = windowPositionX;
89+
this.windowYProportion = windowPositionY;
90+
this.windowScreenhash = screenHash;
9191
this.saveWindowPosition = saveWindowPosition;
9292
this.remindIfNotesAreEmpty = remindIfNotesAreEmpty;
9393

@@ -161,28 +161,28 @@ public void setHideProjectsOnMouseExit(final boolean hideProjectsOnMouseExit) {
161161
this.hideProjectsOnMouseExit = hideProjectsOnMouseExit;
162162
}
163163

164-
public double getWindowPositionX() {
165-
return windowPositionX;
164+
public double getWindowXProportion() {
165+
return windowXProportion;
166166
}
167167

168-
public void setWindowPositionX(final double windowPositionX) {
169-
this.windowPositionX = windowPositionX;
168+
public void setWindowXProportion(final double windowPositionX) {
169+
this.windowXProportion = windowPositionX;
170170
}
171171

172-
public double getWindowPositionY() {
173-
return windowPositionY;
172+
public double getWindowYProportion() {
173+
return windowYProportion;
174174
}
175175

176-
public void setWindowPositionY(final double windowPositionY) {
177-
this.windowPositionY = windowPositionY;
176+
public void setWindowYProportion(final double windowPositionY) {
177+
this.windowYProportion = windowPositionY;
178178
}
179179

180180
public int getScreenHash() {
181-
return screenHash;
181+
return windowScreenhash;
182182
}
183183

184184
public void setScreenHash(final int screenHash) {
185-
this.screenHash = screenHash;
185+
this.windowScreenhash = screenHash;
186186
}
187187

188188
public boolean isSaveWindowPosition() {

src/main/java/de/doubleslash/keeptime/view/SettingsController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,8 @@ private void initialize() {
179179
controller.updateSettings(new Settings(hoverBackgroundColor.getValue(), hoverFontColor.getValue(),
180180
defaultBackgroundColor.getValue(), defaultFontColor.getValue(), taskBarColor.getValue(),
181181
useHotkeyCheckBox.isSelected(), displayProjectsRightCheckBox.isSelected(),
182-
hideProjectsOnMouseExitCheckBox.isSelected(), model.screenSettings.windowPositionX.get(),
183-
model.screenSettings.windowPositionY.get(), model.screenSettings.screenHash.get(),
182+
hideProjectsOnMouseExitCheckBox.isSelected(), model.screenSettings.xProportion.get(),
183+
model.screenSettings.yProportion.get(), model.screenSettings.screenHash.get(),
184184
saveWindowPositionCheckBox.isSelected(), emptyNoteReminderCheckBox.isSelected()));
185185
thisStage.close();
186186

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
ALTER TABLE settings
2-
ADD COLUMN window_positionx DOUBLE NOT NULL DEFAULT (0.5);
2+
ADD COLUMN windowxproportion DOUBLE NOT NULL DEFAULT (0.5);
33

44
ALTER TABLE settings
5-
ADD COLUMN window_positiony DOUBLE NOT NULL DEFAULT (0.5);
5+
ADD COLUMN windowyproportion DOUBLE NOT NULL DEFAULT (0.5);
66

77
ALTER TABLE settings
8-
ADD COLUMN screen_hash INT NOT NULL DEFAULT (0);
8+
ADD COLUMN window_screenhash INT NOT NULL DEFAULT (0);
99

1010
ALTER TABLE settings
1111
ADD COLUMN save_window_position BOOLEAN NOT NULL DEFAULT (false);

0 commit comments

Comments
 (0)