summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--desktop-widgets/diveplanner.cpp1
-rw-r--r--desktop-widgets/modeldelegates.cpp18
-rw-r--r--desktop-widgets/modeldelegates.h10
-rw-r--r--qt-models/diveplannermodel.cpp1
-rw-r--r--qt-models/models.cpp30
-rw-r--r--qt-models/models.h11
6 files changed, 71 insertions, 0 deletions
diff --git a/desktop-widgets/diveplanner.cpp b/desktop-widgets/diveplanner.cpp
index fd7dc948e..b22d268d8 100644
--- a/desktop-widgets/diveplanner.cpp
+++ b/desktop-widgets/diveplanner.cpp
@@ -114,6 +114,7 @@ DivePlannerWidget::DivePlannerWidget(QWidget *parent, Qt::WindowFlags f) : QWidg
ui.tableWidget->setModel(plannerModel);
plannerModel->setRecalc(true);
ui.tableWidget->view()->setItemDelegateForColumn(DivePlannerPointsModel::GAS, new AirTypesDelegate(this));
+ ui.tableWidget->view()->setItemDelegateForColumn(DivePlannerPointsModel::DIVEMODE, new DiveTypesDelegate(this));
ui.cylinderTableWidget->setTitle(tr("Available gases"));
ui.cylinderTableWidget->setBtnToolTip(tr("Add cylinder"));
ui.cylinderTableWidget->setModel(CylindersModel::instance());
diff --git a/desktop-widgets/modeldelegates.cpp b/desktop-widgets/modeldelegates.cpp
index 24dc767c4..6a33e60f4 100644
--- a/desktop-widgets/modeldelegates.cpp
+++ b/desktop-widgets/modeldelegates.cpp
@@ -407,6 +407,24 @@ AirTypesDelegate::AirTypesDelegate(QObject *parent) : ComboBoxDelegate(GasSelect
{
}
+void DiveTypesDelegate::revertModelData(QWidget *widget, QAbstractItemDelegate::EndEditHint hint)
+{
+ Q_UNUSED(widget)
+ Q_UNUSED(hint)
+}
+
+void DiveTypesDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
+{
+ if (!index.isValid())
+ return;
+ QComboBox *combo = qobject_cast<QComboBox *>(editor);
+ model->setData(index, QVariant(combo->currentIndex()));
+}
+
+DiveTypesDelegate::DiveTypesDelegate(QObject *parent) : ComboBoxDelegate(DiveTypeSelectionModel::instance(), parent, false)
+{
+}
+
SpinBoxDelegate::SpinBoxDelegate(int min, int max, int step, QObject *parent):
QStyledItemDelegate(parent),
min(min),
diff --git a/desktop-widgets/modeldelegates.h b/desktop-widgets/modeldelegates.h
index 4c46d9b7c..a479b36f0 100644
--- a/desktop-widgets/modeldelegates.h
+++ b/desktop-widgets/modeldelegates.h
@@ -92,6 +92,16 @@ slots:
void revertModelData(QWidget *widget, QAbstractItemDelegate::EndEditHint hint);
};
+class DiveTypesDelegate : public ComboBoxDelegate {
+ Q_OBJECT
+public:
+ explicit DiveTypesDelegate(QObject *parent = 0);
+ virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
+public
+slots:
+ void revertModelData(QWidget *widget, QAbstractItemDelegate::EndEditHint hint);
+};
+
class SpinBoxDelegate : public QStyledItemDelegate {
Q_OBJECT
public:
diff --git a/qt-models/diveplannermodel.cpp b/qt-models/diveplannermodel.cpp
index c86526c1a..7a21ef6ce 100644
--- a/qt-models/diveplannermodel.cpp
+++ b/qt-models/diveplannermodel.cpp
@@ -55,6 +55,7 @@ void DivePlannerPointsModel::createSimpleDive()
}
updateMaxDepth();
GasSelectionModel::instance()->repopulate();
+ DiveTypeSelectionModel::instance()->repopulate();
}
void DivePlannerPointsModel::setupStartTime()
diff --git a/qt-models/models.cpp b/qt-models/models.cpp
index a799b605d..f15073111 100644
--- a/qt-models/models.cpp
+++ b/qt-models/models.cpp
@@ -67,6 +67,36 @@ QVariant GasSelectionModel::data(const QModelIndex &index, int role) const
}
return QStringListModel::data(index, role);
}
+// Dive Type Model for the divetype combo box
+
+Qt::ItemFlags DiveTypeSelectionModel::flags(const QModelIndex &index) const
+{
+ Q_UNUSED(index);
+ return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
+}
+
+DiveTypeSelectionModel *DiveTypeSelectionModel::instance()
+{
+ static DiveTypeSelectionModel self;
+ return &self;
+}
+
+void DiveTypeSelectionModel::repopulate()
+{
+ QStringList modes = QStringList();
+ for (int i = 0; i < FREEDIVE; i++)
+ modes.append(QString(divemode_text[i]));
+ setStringList(modes);
+}
+
+QVariant DiveTypeSelectionModel::data(const QModelIndex &index, int role) const
+{
+ if (role == Qt::FontRole) {
+ return defaultModelFont();
+ }
+ return QStringListModel::data(index, role);
+}
+
// Language Model, The Model to populate the list of possible Languages.
diff --git a/qt-models/models.h b/qt-models/models.h
index ab8130a57..445e3a2a6 100644
--- a/qt-models/models.h
+++ b/qt-models/models.h
@@ -33,6 +33,17 @@ slots:
void repopulate();
};
+class DiveTypeSelectionModel : public QStringListModel {
+ Q_OBJECT
+public:
+ static DiveTypeSelectionModel *instance();
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+ virtual QVariant data(const QModelIndex &index, int role) const;
+public
+slots:
+ void repopulate();
+};
+
class LanguageModel : public QAbstractListModel {
Q_OBJECT