]> gitweb.fperrin.net Git - GpsPrune.git/commitdiff
Allow to specify a time offset in blocks of 1024-week
authorFrédéric Perrin <fred@fperrin.net>
Sun, 5 Jan 2020 14:40:06 +0000 (14:40 +0000)
committerFrédéric Perrin <fred@fperrin.net>
Fri, 21 May 2021 19:30:13 +0000 (20:30 +0100)
The GPS protocol rolls over the week number every 1024 weeks, and some GPS
receivers may have an internal clock so far off it won't detect that roll over,
resulting in timestamps that are about 19 years, 7 months off

src/tim/prune/function/AddTimeOffset.java
src/tim/prune/lang/prune-texts_en.properties

index 9e8306feffe340955ca8adb82656dca9ea491a32..ed75a5ec7104d441770435ee56dbc290000cfb86 100644 (file)
@@ -33,8 +33,8 @@ public class AddTimeOffset extends GenericFunction
 {
        private JDialog _dialog = null;
        private JRadioButton _addRadio = null, _subtractRadio = null;
-       private WholeNumberField _dayField = null, _hourField = null;
-       private WholeNumberField _minuteField = null;
+       private WholeNumberField _1024weekField = null, _dayField = null;
+       private WholeNumberField _hourField = null, _minuteField = null;
        private JButton _okButton = null;
 
 
@@ -103,6 +103,9 @@ public class AddTimeOffset extends GenericFunction
                // Make a central panel with the text boxes
                JPanel descPanel = new JPanel();
                descPanel.setLayout(new GridLayout(0, 2));
+               descPanel.add(makeRightLabel("dialog.addtimeoffset.1024week"));
+               _1024weekField = new WholeNumberField(3);
+               descPanel.add(_1024weekField);
                descPanel.add(makeRightLabel("dialog.addtimeoffset.days"));
                _dayField = new WholeNumberField(4);
                descPanel.add(_dayField);
@@ -128,9 +131,11 @@ public class AddTimeOffset extends GenericFunction
                                _okButton.setEnabled(getOffsetSecs() != 0L);
                        }
                };
+               _1024weekField.addKeyListener(keyListener);
                _dayField.addKeyListener(keyListener);
                _hourField.addKeyListener(keyListener);
                _minuteField.addKeyListener(keyListener);
+               _1024weekField.addMouseListener(mouseListener);
                _dayField.addMouseListener(mouseListener);
                _hourField.addMouseListener(mouseListener);
                _minuteField.addMouseListener(mouseListener);
@@ -180,7 +185,8 @@ public class AddTimeOffset extends GenericFunction
        {
                long offsetSecs = _minuteField.getValue() * 60L
                  + _hourField.getValue() * 60L * 60L
-                 + _dayField.getValue() * 60L * 60L * 24L;
+                 + _dayField.getValue() * 60L * 60L * 24L
+                 + _1024weekField.getValue() * 60L * 60L * 24L * 7L * 1024L;
                if (_subtractRadio.isSelected()) {offsetSecs = -offsetSecs;}
                return offsetSecs;
        }
index f2910cfbc6b3f18c77c928d763a8dc671156b570..c219c5546d77c310b14e7042c4af575047923aeb 100644 (file)
@@ -302,6 +302,7 @@ dialog.pointnameedit.lowercase=lower case
 dialog.pointnameedit.titlecase=Title Case
 dialog.addtimeoffset.add=Add time
 dialog.addtimeoffset.subtract=Subtract time
+dialog.addtimeoffset.1024week=1024-week block
 dialog.addtimeoffset.days=Days
 dialog.addtimeoffset.hours=Hours
 dialog.addtimeoffset.minutes=Minutes