summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Gehad <gehadelrobey@gmail.com>2014-03-20 22:57:49 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-03-21 21:26:09 -0700
commit8ca4437624ad84b9bec934436cc42182e96f359a (patch)
treeff84eba5c3adc66307509904fb47071f5b828707
parentcc2369c5f9dbaebb8fae2e652e27f189d0454fc1 (diff)
downloadsubsurface-8ca4437624ad84b9bec934436cc42182e96f359a.tar.gz
Add current time and adjusted time to gui when adjusting dive's timestamp
This patch adds the current dive time and the adjusted time to the time shift window. I added a function to dive.c to get the timestamp of the first selected dive. This will view the time of the first selected dive only even when multi dives are selected but it does change the times for multiple dives properly. Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-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;
};