From 026186a3da84e3eabbaa531083b33f53091afbaa Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20Perrin?= Date: Sun, 5 Jan 2020 14:40:06 +0000 Subject: [PATCH] Allow to specify a time offset in blocks of 1024-week 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 | 14 ++++++++++---- src/tim/prune/lang/prune-texts_en.properties | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/tim/prune/function/AddTimeOffset.java b/src/tim/prune/function/AddTimeOffset.java index 2e259bb..199ae50 100644 --- a/src/tim/prune/function/AddTimeOffset.java +++ b/src/tim/prune/function/AddTimeOffset.java @@ -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,8 +103,11 @@ 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(3); + _dayField = new WholeNumberField(4); descPanel.add(_dayField); descPanel.add(makeRightLabel("dialog.addtimeoffset.hours")); _hourField = new WholeNumberField(3); @@ -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; } diff --git a/src/tim/prune/lang/prune-texts_en.properties b/src/tim/prune/lang/prune-texts_en.properties index 7693926..aa440a3 100644 --- a/src/tim/prune/lang/prune-texts_en.properties +++ b/src/tim/prune/lang/prune-texts_en.properties @@ -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 -- 2.43.0