From 4244d3cdd947edd67255cd66995f63b1e77071d8 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 | 12 +++++++++--- src/tim/prune/lang/prune-texts_en.properties | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/tim/prune/function/AddTimeOffset.java b/src/tim/prune/function/AddTimeOffset.java index 9e8306f..ed75a5e 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,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; } diff --git a/src/tim/prune/lang/prune-texts_en.properties b/src/tim/prune/lang/prune-texts_en.properties index f2910cf..c219c55 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