diff --git a/Readme.md b/Readme.md index 0c5bce4..e50e996 100644 --- a/Readme.md +++ b/Readme.md @@ -183,6 +183,7 @@ Smileys can be colored or white-black (can be set in configuration) * SHIFT + Q - Increase speed of time * CTRL + Q - Decrease speed of time * ALT + Q - Reset speed of time +* COMMA - Switch between foreward and backward speed * D - Reset custom time values to the real time * SHIFT + A - Increase arrival time * CTRL + A - Decrease arrival time diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java index d908023..e382a33 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java @@ -260,7 +260,9 @@ public class TimeCalcConfiguration { .getKey(), Integer.MAX_VALUE); public final IntegerProperty speedProperty = new IntegerProperty(TimeCalcProperty.SPEED - .getKey(), 1); + .getKey(), 1); + public final BooleanProperty speedNegativeProperty = new BooleanProperty(TimeCalcProperty.SPEED_NEGATIVE + .getKey(), false); // private final Map mapOfProperties @@ -337,6 +339,7 @@ public class TimeCalcConfiguration { profileNameProperty, activityNeededFlagsProperty, speedProperty, + speedNegativeProperty, clockHiddenProperty, batteryMinuteHiddenProperty, batteryHourHiddenProperty, diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcKeyAdapter.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcKeyAdapter.java index a078ac8..8e7fb39 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcKeyAdapter.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcKeyAdapter.java @@ -129,6 +129,11 @@ public class TimeCalcKeyAdapter extends KeyAdapter { case KeyEvent.VK_U: { int ms_ = msToAdd; + boolean negative = false; + if(ms_ < 0) { + ms_ = Math.abs(ms_); + negative = true; + } //System.out.println("going to add ms:" +msToAdd); int s_ = msToAdd / 1000; ms_ = ms_ - s_ * 1000; @@ -138,6 +143,10 @@ public class TimeCalcKeyAdapter extends KeyAdapter { ms_ = ms_ - h_ * 1000 * 60 * 60; int d_ = msToAdd / 1000 / 60 / 60 / 24; ms_ = ms_ - d_ * 1000 * 60 * 60 * 24; + if(negative && (increase || decrease)) { + increase = false; + decrease = true; + } //Utils.showNotification((increase ? "Increasing" : (decrease ? "Decreasing" : "Reseting")) + " second."); updateProperty(timeCalcConfiguration.testDayCustomProperty, increase, decrease, reset, Calendar.DAY_OF_MONTH, d_); @@ -149,12 +158,6 @@ public class TimeCalcKeyAdapter extends KeyAdapter { Calendar.SECOND, s_); updateProperty(timeCalcConfiguration.testMillisecondCustomProperty, increase, decrease, reset, Calendar.MILLISECOND, ms_); - - - - - - break; } case KeyEvent.VK_K: { @@ -182,13 +185,15 @@ public class TimeCalcKeyAdapter extends KeyAdapter { final double newSpeed = this.mainWindow.getSpeed(); if(oldSpeed != newSpeed) { - TTime t= TTime.ofMilliseconds(((int)(Math.pow(2,newSpeed) * 1000))); + final double msDouble = Math.pow(2,newSpeed) * 1000; + TTime t= TTime.ofMilliseconds(((int)msDouble)); Utils.showNotification("Speed was changed from " + ((int)oldSpeed) + " to: " + ((int)newSpeed) + " (" + (NumberFormats.FORMATTER_FIVE_DECIMAL_PLACES.format(Math.pow(2, newSpeed))) + ") (" + - (newSpeed <= -10 ? "few" : (newSpeed <=21 ? t : "many")) + (newSpeed <= -10 ? (NumberFormats.FORMATTER_SIX_DECIMAL_PLACES.format(msDouble) + "ms") : (/*newSpeed <=21*/ t.getHour() < 24 ? t : ((long)(msDouble / 1000d / 60d / 60d / 24d) + " days"))) +" /1s)"); } else { + if(decrease){ Utils.showNotification("Current speed cannot be decreased: " + NumberFormats.FORMATTER_TWO_DECIMAL_PLACES.format(oldSpeed)); @@ -692,6 +697,10 @@ public class TimeCalcKeyAdapter extends KeyAdapter { Utils.showNotification((timeCalcConfiguration.testEnabledProperty.isEnabled()? "Enabled" : "Disabled") + " \"Test mode\"."); break; } + case KeyEvent.VK_COMMA: { + timeCalcConfiguration.speedNegativeProperty.flip(); + break; + } default: if (!numberKeyWasPressed) { Utils.showNotification( diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java index d6a9f66..a25cf8a 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java @@ -124,7 +124,8 @@ public enum TimeCalcProperty { TEST_CLOCK_CUSTOM_SECOND("test.clock.custom.second", "Test : Clock : Custom : Second", Integer.class), TEST_CLOCK_CUSTOM_MILLISECOND("test.clock.custom.millisecond", "Test : Clock : Custom : Millisecond", Integer.class), ACTIVITY_NEEDED_FLAGS("activity.needed-flags", "Activity : Needed flags", String.class), - SPEED("speed", "Speed", Integer.class); + SPEED("speed", "Speed", Integer.class), + SPEED_NEGATIVE("speed.negative", "Speed : Negative", Integer.class); @Getter private final String key; diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ConfigWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ConfigWindow.java index c9549ae..096c474 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ConfigWindow.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ConfigWindow.java @@ -228,6 +228,8 @@ public class ConfigWindow extends TWindow { = new JTextField(TimeCalcProperty.ACTIVITY_NEEDED_FLAGS.getKey()); public final JTextField speedProperty = new JTextField(TimeCalcProperty.SPEED.getKey()); + public final JCheckBox speedNegativeProperty + = new JCheckBox(TimeCalcProperty.SPEED_NEGATIVE.getKey()); // public final JCheckBox clockHiddenProperty @@ -546,6 +548,7 @@ public class ConfigWindow extends TWindow { profileNameProperty, activityNeededFlagsProperty, speedProperty, + speedNegativeProperty, visibilityDefaultProperty, visibilitySupportedColoredProperty)); // diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java index 3e77db8..bf66a75 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java @@ -120,6 +120,7 @@ public class MainWindow extends TWindow { private final ProgressDot progressDot; private int speed = Integer.MIN_VALUE; private final TimeCalcKeyAdapter timeCalcKeyAdapter; + private double msRemaining = 0d; { ChangeListener valueMustBeTime @@ -878,8 +879,10 @@ public class MainWindow extends TWindow { if (time.millisecondCustomProperty.getValue() == Integer.MAX_VALUE) { time.millisecondCustomProperty.setValue(time.millisecondProperty.getValue()); } - int msShouldBeAdded = speed < -6 ? 1 : (int) (Math.pow(2, speed) * 100d); - this.timeCalcKeyAdapter.setMsToAdd(msShouldBeAdded); + double msShouldBeAdded = speed < -6 ? 1 : (Math.pow(2, speed) * 100d) + this.msRemaining; + int msShouldBeAddedInt = (int)Math.floor(msShouldBeAdded); + this.msRemaining = msShouldBeAdded - msShouldBeAddedInt; + this.timeCalcKeyAdapter.setMsToAdd((timeCalcConfiguration.speedNegativeProperty.isEnabled() ? (-1) : 1) * msShouldBeAddedInt); this.timeCalcKeyAdapter.processShifCtrlAltModeKeyCodes(KeyEvent.VK_U, true, false, false); }).start(); @@ -1333,7 +1336,7 @@ public class MainWindow extends TWindow { --this.speed; timeCalcConfiguration.speedProperty.setValue(this.speed); } - public static final int MIN_SPEED = -15; + public static final int MIN_SPEED = -10; public int getSpeed() { return speed; diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/TTime.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/TTime.java index 6c86790..eb1e441 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/TTime.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/utils/common/TTime.java @@ -199,6 +199,14 @@ public class TTime implements Comparable { public int toTotalMilliseconds() { return ((negative ? (-1) : 1)) * (hour * 60 * 60 * 1000 + minute * 60 * 1000 + second * 1000 + millisecond); } + + public long toTotalMillisecondsLong() { + long h = hour; + long m = minute; + long s = second; + long d = millisecond; + return ((negative ? (-1l) : 1l)) * (h * 60l * 60l * 1000l + m * 60l * 1000l + s * 1000l + d); + } @Override public int compareTo(TTime o) { diff --git a/modules/time-calc-app/src/main/resources/help/Readme.md b/modules/time-calc-app/src/main/resources/help/Readme.md index 0c5bce4..e50e996 100644 --- a/modules/time-calc-app/src/main/resources/help/Readme.md +++ b/modules/time-calc-app/src/main/resources/help/Readme.md @@ -183,6 +183,7 @@ Smileys can be colored or white-black (can be set in configuration) * SHIFT + Q - Increase speed of time * CTRL + Q - Decrease speed of time * ALT + Q - Reset speed of time +* COMMA - Switch between foreward and backward speed * D - Reset custom time values to the real time * SHIFT + A - Increase arrival time * CTRL + A - Decrease arrival time diff --git a/modules/time-calc-app/src/main/resources/timecalc-default.conf b/modules/time-calc-app/src/main/resources/timecalc-default.conf index e43842d..4029c41 100644 --- a/modules/time-calc-app/src/main/resources/timecalc-default.conf +++ b/modules/time-calc-app/src/main/resources/timecalc-default.conf @@ -92,6 +92,7 @@ test.clock.custom.second=2147483647 test.clock.custom.millisecond=2147483647 activity.needed-flags= speed=0 +speed.negative=false #TODO: logs.detailed=false