summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dive.c12
-rw-r--r--dive.h1
-rw-r--r--qt-ui/shifttimes.ui46
-rw-r--r--qt-ui/simplewidgets.cpp22
-rw-r--r--qt-ui/simplewidgets.h3
5 files changed, 83 insertions, 1 deletions
diff --git a/dive.c b/dive.c
index 6deee8b08..9a836038d 100644
--- a/dive.c
+++ b/dive.c
@@ -2176,3 +2176,15 @@ void shift_times(const timestamp_t amount)
dive->when += amount;
}
}
+
+timestamp_t get_times()
+{
+ int i;
+ struct dive *dive;
+
+ for_each_dive(i, dive) {
+ if (dive->selected)
+ break;
+ }
+ return dive->when;
+}
diff --git a/dive.h b/dive.h
index 6c9a5b566..dd321a7b9 100644
--- a/dive.h
+++ b/dive.h
@@ -722,6 +722,7 @@ extern struct zip *subsurface_zip_open_readonly(const char *path, int flags, int
extern int subsurface_zip_close(struct zip *zip);
extern void shift_times(const timestamp_t amount);
+extern timestamp_t get_times();
extern xsltStylesheetPtr get_stylesheet(const char *name);
diff --git a/qt-ui/shifttimes.ui b/qt-ui/shifttimes.ui
index 55932a2d3..8aaa247ce 100644
--- a/qt-ui/shifttimes.ui
+++ b/qt-ui/shifttimes.ui
@@ -10,7 +10,7 @@
<x>0</x>
<y>0</y>
<width>343</width>
- <height>177</height>
+ <height>224</height>
</rect>
</property>
<property name="sizePolicy">
@@ -65,6 +65,38 @@
<number>9</number>
</property>
<item>
+ <layout class="QFormLayout" name="formLayout">
+ <item row="2" column="0">
+ <widget class="QLabel" name="shiftedTimeLabel">
+ <property name="text">
+ <string>Shifted time:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="currentTimeLabel">
+ <property name="text">
+ <string>Current time:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="currentTime">
+ <property name="text">
+ <string>0:0</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="shiftedTime">
+ <property name="text">
+ <string>0:0</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
<widget class="QTimeEdit" name="timeEdit">
<property name="date">
<date>
@@ -166,5 +198,17 @@
</hint>
</hints>
</connection>
+ <connection>
+ <sender>timeEdit</sender>
+ <signal>timeChanged(const QTime)</signal>
+ <receiver>ShiftTimesDialog</receiver>
+ <slot>changeTime()</slot>
+ </connection>
+ <connection>
+ <sender>backwards</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>ShiftTimesDialog</receiver>
+ <slot>changeTime()</slot>
+ </connection>
</connections>
</ui>
diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp
index 2ec984b7a..be3add815 100644
--- a/qt-ui/simplewidgets.cpp
+++ b/qt-ui/simplewidgets.cpp
@@ -18,6 +18,7 @@
#include "../dive.h"
#include "../file.h"
#include "mainwindow.h"
+#include "helpers.h"
class MinMaxAvgWidgetPrivate {
public:
@@ -155,10 +156,31 @@ void ShiftTimesDialog::buttonClicked(QAbstractButton *button)
}
}
+void ShiftTimesDialog::showEvent(QShowEvent * event)
+{
+ ui.timeEdit->setTime(QTime(0, 0, 0, 0));
+ when = get_times();//get time of first selected dive
+ ui.currentTime->setText(get_dive_date_string(when));
+ ui.shiftedTime->setText(get_dive_date_string(when));
+}
+
+void ShiftTimesDialog::changeTime()
+{
+ int amount;
+
+ amount = ui.timeEdit->time().hour() * 3600 + ui.timeEdit->time().minute() * 60;
+ if (ui.backwards->isChecked())
+ amount *= -1;
+
+ ui.shiftedTime->setText (get_dive_date_string(amount+when));
+}
+
ShiftTimesDialog::ShiftTimesDialog(QWidget *parent) : QDialog(parent)
{
ui.setupUi(this);
connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
+ connect(ui.timeEdit, SIGNAL(timeChanged(const QTime)), this, SLOT(changeTime()));
+ connect(ui.backwards, SIGNAL(toggled(bool)), this, SLOT(changeTime()));
}
void ShiftImageTimesDialog::buttonClicked(QAbstractButton *button)
diff --git a/qt-ui/simplewidgets.h b/qt-ui/simplewidgets.h
index 6e4166f35..178dfece8 100644
--- a/qt-ui/simplewidgets.h
+++ b/qt-ui/simplewidgets.h
@@ -52,12 +52,15 @@ class ShiftTimesDialog : public QDialog {
Q_OBJECT
public:
static ShiftTimesDialog *instance();
+ void showEvent ( QShowEvent * event );
private
slots:
void buttonClicked(QAbstractButton *button);
+ void changeTime ();
private:
explicit ShiftTimesDialog(QWidget *parent);
+ int64_t when;
Ui::ShiftTimesDialog ui;
};