Skip to content

Commit 6c9df2e

Browse files
Implemented durationMode in TimeSpinner3D
Added setDurationMode(boolean) logic to toggle duration mode (0-24h range, no meridiem). Updated addComponents to include "hours" and "minutes" labels when in duration mode. Updated rebuildHours to adjust startHour/endHour for duration mode. Verified with TimeSpinner3DTest.
1 parent e5f712e commit 6c9df2e

File tree

1 file changed

+47
-10
lines changed

1 file changed

+47
-10
lines changed

CodenameOne/src/com/codename1/ui/spinner/TimeSpinner3D.java

Lines changed: 47 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -156,17 +156,30 @@ void addComponents() {
156156
setLayout(new LayeredLayout());
157157
addComponent(hour);
158158

159-
addComponent(minute);
160159
LayeredLayout ll = (LayeredLayout) getLayout();
161-
if (showMeridiem) {
162-
//content.addComponent(createSeparator());
163-
addComponent(amPM);
164-
ll.setInsets(hour, "0 67% 0 0")
165-
.setInsets(minute, "0 33% 0 33%")
166-
.setInsets(amPM, "0 0 0 67%");
160+
if (durationMode) {
161+
Label hoursLabel = new Label(getUIManager().localize("hours", "hours"), "TimeSpinnerHoursLabel");
162+
Label minutesLabel = new Label(getUIManager().localize("minutes", "minutes"), "TimeSpinnerMinutesLabel");
163+
addComponent(hoursLabel);
164+
addComponent(minute);
165+
addComponent(minutesLabel);
166+
167+
ll.setInsets(hour, "0 75% 0 0");
168+
ll.setInsets(hoursLabel, "0 50% 0 25%");
169+
ll.setInsets(minute, "0 25% 0 50%");
170+
ll.setInsets(minutesLabel, "0 0 0 75%");
167171
} else {
168-
ll.setInsets(hour, "0 50% 0 0")
169-
.setInsets(minute, "0 0 0 50%");
172+
addComponent(minute);
173+
if (showMeridiem) {
174+
//content.addComponent(createSeparator());
175+
addComponent(amPM);
176+
ll.setInsets(hour, "0 67% 0 0")
177+
.setInsets(minute, "0 33% 0 33%")
178+
.setInsets(amPM, "0 0 0 67%");
179+
} else {
180+
ll.setInsets(hour, "0 50% 0 0")
181+
.setInsets(minute, "0 0 0 50%");
182+
}
170183
}
171184

172185

@@ -352,7 +365,10 @@ public void setShowMeridiem(boolean showMeridiem) {
352365
}
353366

354367
private void rebuildHours() {
355-
if (showMeridiem) {
368+
if (durationMode) {
369+
startHour = 0;
370+
endHour = 24;
371+
} else if (showMeridiem) {
356372
startHour = 1;
357373
endHour = 12;
358374
} else {
@@ -449,6 +465,27 @@ public void setCurrentMeridiem(boolean currentMeridiem) {
449465
}
450466
}
451467

468+
/**
469+
* Duration mode uses the time spinner to indicate a duration in hours and minutes
470+
*
471+
* @return the durationMode
472+
*/
473+
public boolean isDurationMode() {
474+
return durationMode;
475+
}
476+
477+
/**
478+
* Duration mode uses the time spinner to indicate a duration in hours and minutes
479+
*
480+
* @param durationMode the durationMode to set
481+
*/
482+
public void setDurationMode(boolean durationMode) {
483+
this.durationMode = durationMode;
484+
if (durationMode) {
485+
showMeridiem = false;
486+
}
487+
rebuildHours();
488+
}
452489

453490
/**
454491
* Show or hide the hours spinner.

0 commit comments

Comments
 (0)