Skip to content

Commit 0bc14f7

Browse files
ddamkeddamke
authored andcommitted
make "show notes" from #92 configurable
1 parent 4068610 commit 0bc14f7

File tree

9 files changed

+87
-17
lines changed

9 files changed

+87
-17
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ private void readSettings() {
209209
model.screenSettings.screenHash.set(settings.getScreenHash());
210210
model.screenSettings.saveWindowPosition.set(settings.isSaveWindowPosition());
211211
model.remindIfNotesAreEmpty.set(settings.isRemindIfNotesAreEmpty());
212+
model.remindIfNotesAreEmptyIsWork.set(settings.isEmptyNoteReminderIsWork());
212213

213214
}
214215

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ public void updateSettings(final Settings newValuedSettings) {
131131
settings.setWindowYProportion(newValuedSettings.getWindowYProportion());
132132
settings.setScreenHash(newValuedSettings.getScreenHash());
133133
settings.setRemindIfNotesAreEmpty(newValuedSettings.isRemindIfNotesAreEmpty());
134+
settings.setEmptyNoteReminderIsWork(newValuedSettings.isEmptyNoteReminderIsWork());
135+
134136

135137
settings = model.getSettingsRepository().save(settings);
136138

@@ -147,6 +149,8 @@ public void updateSettings(final Settings newValuedSettings) {
147149
model.screenSettings.proportionalY.set(settings.getWindowYProportion());
148150
model.screenSettings.screenHash.set(settings.getScreenHash());
149151
model.remindIfNotesAreEmpty.set(settings.isRemindIfNotesAreEmpty());
152+
model.remindIfNotesAreEmptyIsWork.set(settings.isEmptyNoteReminderIsWork());
153+
150154
}
151155

152156
@PreDestroy
@@ -162,7 +166,7 @@ public void shutdown() {
162166
model.useHotkey.get(), model.displayProjectsRight.get(), model.hideProjectsOnMouseExit.get(),
163167
model.screenSettings.proportionalX.get(), model.screenSettings.proportionalY.get(),
164168
model.screenSettings.screenHash.get(), model.screenSettings.saveWindowPosition.get(),
165-
model.remindIfNotesAreEmpty.get());
169+
model.remindIfNotesAreEmpty.get(),model.remindIfNotesAreEmptyIsWork.get());
166170
updateSettings(newSettings);
167171
}
168172

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ public Model(final ProjectRepository projectRepository, final WorkRepository wor
8282

8383
public final ObjectProperty<Boolean> remindIfNotesAreEmpty = new SimpleObjectProperty<>(false);
8484

85+
public final ObjectProperty<Boolean> remindIfNotesAreEmptyIsWork = new SimpleObjectProperty<>(false);
86+
87+
88+
8589
public final ScreenSettings screenSettings = new ScreenSettings();
8690

8791
private ConfigurableApplicationContext springContext;

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,18 @@ public class Settings {
6969

7070
private boolean remindIfNotesAreEmpty;
7171

72+
private boolean emptyNoteReminderIsWork;
73+
74+
75+
7276
public Settings() {
7377
}
7478

7579
public Settings(final Color hoverBackgroundColor, final Color hoverFontColor, final Color defaultBackgroundColor,
7680
final Color defaultFontColor, final Color taskBarColor, final boolean useHotkey,
7781
final boolean displayProjectsRight, final boolean hideProjectsOnMouseExit, final double windowPositionX,
7882
final double windowPositionY, final int screenHash, final boolean saveWindowPosition,
79-
final boolean remindIfNotesAreEmpty) {
83+
final boolean remindIfNotesAreEmpty, final boolean emptyNoteReminderIsWork) {
8084
this.hoverBackgroundColor = hoverBackgroundColor;
8185
this.hoverFontColor = hoverFontColor;
8286
this.defaultBackgroundColor = defaultBackgroundColor;
@@ -90,7 +94,16 @@ public Settings(final Color hoverBackgroundColor, final Color hoverFontColor, fi
9094
this.windowScreenhash = screenHash;
9195
this.saveWindowPosition = saveWindowPosition;
9296
this.remindIfNotesAreEmpty = remindIfNotesAreEmpty;
97+
this.emptyNoteReminderIsWork = emptyNoteReminderIsWork;
98+
99+
}
100+
101+
public boolean isEmptyNoteReminderIsWork() {
102+
return emptyNoteReminderIsWork;
103+
}
93104

105+
public void setEmptyNoteReminderIsWork(boolean emptyNoteReminderCheckBoxIsWork) {
106+
this.emptyNoteReminderIsWork = emptyNoteReminderCheckBoxIsWork;
94107
}
95108

96109
public long getId() {

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

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -168,28 +168,39 @@ private void changeProject(final Project newProject, final long minusSeconds) {
168168
mainStage.hide();
169169
}
170170
if (model.remindIfNotesAreEmpty.get()) {
171+
final Work currentWork = model.activeWorkItem.get();
172+
if (currentWork != null && currentWork.getNotes().isEmpty() ) {
173+
if (showNoNoteSelectet(currentWork)) return;
174+
}
175+
}
176+
if (model.remindIfNotesAreEmptyIsWork.get()) {
171177
final Work currentWork = model.activeWorkItem.get();
172178
if (currentWork != null && currentWork.getNotes().isEmpty() &&currentWork.getProject().isWork()) {
173-
final TextInputDialog noteDialog = new TextInputDialog();
174-
noteDialog.setTitle("Empty Notes");
175-
noteDialog.setHeaderText("Switch projects without notes?");
176-
noteDialog.setContentText(
177-
"What did you do for project '" + model.activeWorkItem.get().getProject().getName() + "' ?");
178-
noteDialog.initOwner(mainStage);
179-
180-
final Optional<String> result = noteDialog.showAndWait();
181-
if (result.isPresent()) {
182-
currentWork.setNotes(result.get());
183-
} else {
184-
// cancel pressed
185-
return;
186-
}
179+
if (showNoNoteSelectet(currentWork)) return;
187180
}
188181
}
189182
controller.changeProject(newProject, minusSeconds);
190183

191184
}
192185

186+
private boolean showNoNoteSelectet(Work currentWork) {
187+
final TextInputDialog noteDialog = new TextInputDialog();
188+
noteDialog.setTitle("Empty Notes");
189+
noteDialog.setHeaderText("Switch projects without notes?");
190+
noteDialog.setContentText(
191+
"What did you do for project '" + model.activeWorkItem.get().getProject().getName() + "' ?");
192+
noteDialog.initOwner(mainStage);
193+
194+
final Optional<String> result = noteDialog.showAndWait();
195+
if (result.isPresent()) {
196+
currentWork.setNotes(result.get());
197+
} else {
198+
// cancel pressed
199+
return true;
200+
}
201+
return false;
202+
}
203+
193204
private void addProjectToProjectSelectionNodeMap(final Project project) {
194205
final Node projectElement = createListEntryForProject(project);
195206
projectSelectionNodeMap.put(project, projectElement);

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ public class SettingsController {
9292
@FXML
9393
private CheckBox emptyNoteReminderCheckBox;
9494

95+
@FXML
96+
private CheckBox emptyNoteReminderCheckBoxIsWork;
97+
9598
@FXML
9699
private Button saveButton;
97100

@@ -204,7 +207,7 @@ private void initialize() {
204207
useHotkeyCheckBox.isSelected(), displayProjectsRightCheckBox.isSelected(),
205208
hideProjectsOnMouseExitCheckBox.isSelected(), model.screenSettings.proportionalX.get(),
206209
model.screenSettings.proportionalY.get(), model.screenSettings.screenHash.get(),
207-
saveWindowPositionCheckBox.isSelected(), emptyNoteReminderCheckBox.isSelected()));
210+
saveWindowPositionCheckBox.isSelected(), emptyNoteReminderCheckBox.isSelected(), emptyNoteReminderCheckBoxIsWork.isSelected()));
208211
thisStage.close();
209212

210213
});
@@ -295,6 +298,7 @@ void update() {
295298
hideProjectsOnMouseExitCheckBox.setSelected(model.hideProjectsOnMouseExit.get());
296299
saveWindowPositionCheckBox.setSelected(model.screenSettings.saveWindowPosition.get());
297300
emptyNoteReminderCheckBox.setSelected(model.remindIfNotesAreEmpty.get());
301+
emptyNoteReminderCheckBoxIsWork.setSelected(model.remindIfNotesAreEmptyIsWork.get());
298302
}
299303

300304
public void setStage(final Stage thisStage) {
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE settings
2+
ADD COLUMN empty_note_reminder_only_work BOOLEAN NOT NULL DEFAULT(false)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE settings
2+
RENAME COLUMN empty_note_reminder_only_work TO empty_note_reminder_is_work

src/main/resources/layouts/settings.fxml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,35 @@
283283
</children>
284284
</Group>
285285
</children>
286+
</VBox> <VBox styleClass="menuBorder">
287+
<children>
288+
<Group>
289+
<children>
290+
<VBox>
291+
<children>
292+
<HBox spacing="10.0">
293+
<children>
294+
<Label text="Note Reminder">
295+
<font>
296+
<Font name="Open Sans Bold" size="12.0" />
297+
</font>
298+
</Label>
299+
</children>
300+
</HBox>
301+
<HBox spacing="10.0">
302+
<children>
303+
<CheckBox fx:id="emptyNoteReminderCheckBoxIsWork" mnemonicParsing="false" text="Ask for notes when switching from project marked as work (if empty)" wrapText="true" HBox.hgrow="NEVER">
304+
<font>
305+
<Font name="Open Sans Regular" size="12.0" />
306+
</font>
307+
</CheckBox>
308+
</children>
309+
</HBox>
310+
</children>
311+
</VBox>
312+
</children>
313+
</Group>
314+
</children>
286315
</VBox>
287316
<HBox spacing="10.0">
288317
<children>

0 commit comments

Comments
 (0)