summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-01 15:37:41 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-01 16:02:34 -0700
commitf45618f0c7ce5af85e0f69aab49ef20a1663bca1 (patch)
tree839eab034e60bd663e61810e1d4c84d1ac7b85ca /qt-ui
parent482bea84c2f218f515b3b16556197379623a8028 (diff)
downloadsubsurface-f45618f0c7ce5af85e0f69aab49ef20a1663bca1.tar.gz
Create Add Weightsystem dialog
My first attempt to create a Qt dialog and to hook it up with the program. Unsurprisingly this doesn't quite work as expected (i.e., the values I enter aren't populated in the model), but it's a start... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/addweightsystemdialog.cpp38
-rw-r--r--qt-ui/addweightsystemdialog.h30
-rw-r--r--qt-ui/addweightsystemdialog.ui109
-rw-r--r--qt-ui/maintab.cpp14
4 files changed, 188 insertions, 3 deletions
diff --git a/qt-ui/addweightsystemdialog.cpp b/qt-ui/addweightsystemdialog.cpp
new file mode 100644
index 000000000..6ac1c02f9
--- /dev/null
+++ b/qt-ui/addweightsystemdialog.cpp
@@ -0,0 +1,38 @@
+/*
+ * addweightsystemdialog.cpp
+ *
+ * classes for the add weightsystem dialog of Subsurface
+ *
+ */
+#include "addweightsystemdialog.h"
+#include "ui_addweightsystemdialog.h"
+#include <QComboBox>
+#include <QDoubleSpinBox>
+#include "../conversions.h"
+#include "models.h"
+
+AddWeightsystemDialog::AddWeightsystemDialog(QWidget *parent) : ui(new Ui::AddWeightsystemDialog())
+{
+ ui->setupUi(this);
+}
+
+void AddWeightsystemDialog::setWeightsystem(weightsystem_t *ws)
+{
+ currentWeightsystem = ws;
+
+ ui->description->insert(QString(ws->description));
+ if (get_units()->weight == units::KG)
+ ui->weight->setValue(ws->weight.grams / 1000);
+ else
+ ui->weight->setValue(grams_to_lbs(ws->weight.grams));
+}
+
+void AddWeightsystemDialog::updateWeightsystem()
+{
+ currentWeightsystem->description = strdup(ui->description->text().toUtf8().data());
+ if (get_units()->weight == units::KG)
+ currentWeightsystem->weight.grams = ui->weight->value() * 1000;
+ else
+ currentWeightsystem->weight.grams = lbs_to_grams(ui->weight->value());
+}
+
diff --git a/qt-ui/addweightsystemdialog.h b/qt-ui/addweightsystemdialog.h
new file mode 100644
index 000000000..e99dc08d8
--- /dev/null
+++ b/qt-ui/addweightsystemdialog.h
@@ -0,0 +1,30 @@
+/*
+ * addweightsystemdialog.h
+ *
+ * header file for the add weightsystem dialog of Subsurface
+ *
+ */
+#ifndef ADDWEIGHTSYSTEMDIALOG_H
+#define ADDWEIGHTSYSTEMDIALOG_H
+
+#include <QDialog>
+#include "../dive.h"
+
+namespace Ui{
+ class AddWeightsystemDialog;
+}
+
+class AddWeightsystemDialog : public QDialog{
+ Q_OBJECT
+public:
+ explicit AddWeightsystemDialog(QWidget* parent = 0);
+ void setWeightsystem(weightsystem_t *ws);
+ void updateWeightsystem();
+
+private:
+ Ui::AddWeightsystemDialog *ui;
+ weightsystem_t *currentWeightsystem;
+};
+
+
+#endif
diff --git a/qt-ui/addweightsystemdialog.ui b/qt-ui/addweightsystemdialog.ui
new file mode 100644
index 000000000..11e60d562
--- /dev/null
+++ b/qt-ui/addweightsystemdialog.ui
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AddWeightsystemDialog</class>
+ <widget class="QDialog" name="AddWeightsystemDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>408</width>
+ <height>186</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Dialog</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0" rowspan="2">
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Weightsystem</string>
+ </property>
+ <layout class="QFormLayout" name="formLayout">
+ <property name="fieldGrowthPolicy">
+ <enum>QFormLayout::ExpandingFieldsGrow</enum>
+ </property>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Description</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Weight</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="weight">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="inputMethodHints">
+ <set>Qt::ImhFormattedNumbersOnly</set>
+ </property>
+ <property name="accelerated">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="description"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>AddWeightsystemDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>269</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>260</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>AddWeightsystemDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>290</x>
+ <y>269</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>260</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index 4174ce5dd..f26a72a8a 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -7,6 +7,7 @@
#include "maintab.h"
#include "ui_maintab.h"
#include "addcylinderdialog.h"
+#include "addweightsystemdialog.h"
#include <QLabel>
@@ -91,10 +92,17 @@ void MainTab::on_addWeight_clicked()
if (weightModel->rowCount() >= MAX_WEIGHTSYSTEMS)
return;
- /* this needs a dialog - right now we just fill in a dummy */
+ AddWeightsystemDialog dialog(this);
weightsystem_t *newWeightsystem = (weightsystem_t *) malloc(sizeof(weightsystem_t));
- newWeightsystem->description = "Just testing";
- newWeightsystem->weight.grams = 15000;
+ newWeightsystem->description = "";
+ newWeightsystem->weight.grams = 0;
+
+ dialog.setWeightsystem(newWeightsystem);
+ int result = dialog.exec();
+ if (result == QDialog::Rejected)
+ return;
+
+ dialog.updateWeightsystem();
weightModel->add(newWeightsystem);
}