summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2015-05-28 17:51:07 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-05-29 14:11:52 -0700
commita56429d31e1b734d19865dfefd5338b07292590e (patch)
tree74417080d56fc83904d490b88a4230abe1e3526d
parent257f8063c4437eced155ec5ad0b40791ca814dfb (diff)
downloadsubsurface-a56429d31e1b734d19865dfefd5338b07292590e.tar.gz
Move DiveComputerModel to qt-models
Another attempt to make it easyer to create the mobile version of Subsurface. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--CMakeLists.txt1
-rw-r--r--qt-models/divecomputermodel.cpp108
-rw-r--r--qt-models/divecomputermodel.h34
-rw-r--r--qt-models/models.cpp112
-rw-r--r--qt-models/models.h27
-rw-r--r--qt-ui/divecomputermanagementdialog.cpp1
6 files changed, 144 insertions, 139 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6487e56d7..dfa6eead9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -255,6 +255,7 @@ set(SUBSURFACE_MODELS_LIB_SRCS
qt-models/tankinfomodel.cpp
qt-models/weigthsysteminfomodel.cpp
qt-models/weightmodel.cpp
+ qt-models/divecomputermodel.cpp
qt-models/divecomputerextradatamodel.cpp
qt-models/completionmodels.cpp
)
diff --git a/qt-models/divecomputermodel.cpp b/qt-models/divecomputermodel.cpp
new file mode 100644
index 000000000..51b1a767b
--- /dev/null
+++ b/qt-models/divecomputermodel.cpp
@@ -0,0 +1,108 @@
+#include "divecomputermodel.h"
+#include "dive.h"
+#include "divelist.h"
+
+DiveComputerModel::DiveComputerModel(QMultiMap<QString, DiveComputerNode> &dcMap, QObject *parent) : CleanerTableModel()
+{
+ setHeaderDataStrings(QStringList() << "" << tr("Model") << tr("Device ID") << tr("Nickname"));
+ dcWorkingMap = dcMap;
+ numRows = 0;
+}
+
+QVariant DiveComputerModel::data(const QModelIndex &index, int role) const
+{
+ QList<DiveComputerNode> values = dcWorkingMap.values();
+ DiveComputerNode node = values.at(index.row());
+
+ QVariant ret;
+ if (role == Qt::DisplayRole || role == Qt::EditRole) {
+ switch (index.column()) {
+ case ID:
+ ret = QString("0x").append(QString::number(node.deviceId, 16));
+ break;
+ case MODEL:
+ ret = node.model;
+ break;
+ case NICKNAME:
+ ret = node.nickName;
+ break;
+ }
+ }
+
+ if (index.column() == REMOVE) {
+ switch (role) {
+ case Qt::DecorationRole:
+ ret = trashIcon();
+ break;
+ case Qt::SizeHintRole:
+ ret = trashIcon().size();
+ break;
+ case Qt::ToolTipRole:
+ ret = tr("Clicking here will remove this dive computer.");
+ break;
+ }
+ }
+ return ret;
+}
+
+int DiveComputerModel::rowCount(const QModelIndex &parent) const
+{
+ return numRows;
+}
+
+void DiveComputerModel::update()
+{
+ QList<DiveComputerNode> values = dcWorkingMap.values();
+ int count = values.count();
+
+ if (numRows) {
+ beginRemoveRows(QModelIndex(), 0, numRows - 1);
+ numRows = 0;
+ endRemoveRows();
+ }
+
+ if (count) {
+ beginInsertRows(QModelIndex(), 0, count - 1);
+ numRows = count;
+ endInsertRows();
+ }
+}
+
+Qt::ItemFlags DiveComputerModel::flags(const QModelIndex &index) const
+{
+ Qt::ItemFlags flags = QAbstractItemModel::flags(index);
+ if (index.column() == NICKNAME)
+ flags |= Qt::ItemIsEditable;
+ return flags;
+}
+
+bool DiveComputerModel::setData(const QModelIndex &index, const QVariant &value, int role)
+{
+ QList<DiveComputerNode> values = dcWorkingMap.values();
+ DiveComputerNode node = values.at(index.row());
+ dcWorkingMap.remove(node.model, node);
+ node.nickName = value.toString();
+ dcWorkingMap.insert(node.model, node);
+ emit dataChanged(index, index);
+ return true;
+}
+
+void DiveComputerModel::remove(const QModelIndex &index)
+{
+ QList<DiveComputerNode> values = dcWorkingMap.values();
+ DiveComputerNode node = values.at(index.row());
+ dcWorkingMap.remove(node.model, node);
+ update();
+}
+
+void DiveComputerModel::dropWorkingList()
+{
+ // how do I prevent the memory leak ?
+}
+
+void DiveComputerModel::keepWorkingList()
+{
+ if (dcList.dcMap != dcWorkingMap)
+ mark_divelist_changed(true);
+ dcList.dcMap = dcWorkingMap;
+}
diff --git a/qt-models/divecomputermodel.h b/qt-models/divecomputermodel.h
new file mode 100644
index 000000000..bed48b81a
--- /dev/null
+++ b/qt-models/divecomputermodel.h
@@ -0,0 +1,34 @@
+#ifndef DIVECOMPUTERMODEL_H
+#define DIVECOMPUTERMODEL_H
+
+#include "cleanertablemodel.h"
+#include "divecomputer.h"
+
+class DiveComputerModel : public CleanerTableModel {
+ Q_OBJECT
+public:
+ enum {
+ REMOVE,
+ MODEL,
+ ID,
+ NICKNAME
+ };
+ DiveComputerModel(QMultiMap<QString, DiveComputerNode> &dcMap, QObject *parent = 0);
+ virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+ virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ virtual Qt::ItemFlags flags(const QModelIndex &index) const;
+ virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
+ void update();
+ void keepWorkingList();
+ void dropWorkingList();
+
+public
+slots:
+ void remove(const QModelIndex &index);
+
+private:
+ int numRows;
+ QMultiMap<QString, DiveComputerNode> dcWorkingMap;
+};
+
+#endif
diff --git a/qt-models/models.cpp b/qt-models/models.cpp
index 15e5d9a00..bbd5d7a0c 100644
--- a/qt-models/models.cpp
+++ b/qt-models/models.cpp
@@ -699,118 +699,6 @@ bool DiveTripModel::setData(const QModelIndex &index, const QVariant &value, int
return diveItem->setData(index, value, role);
}
-/*####################################################################
- *
- * Dive Computer Model
- *
- *####################################################################
- */
-
-DiveComputerModel::DiveComputerModel(QMultiMap<QString, DiveComputerNode> &dcMap, QObject *parent) : CleanerTableModel()
-{
- setHeaderDataStrings(QStringList() << "" << tr("Model") << tr("Device ID") << tr("Nickname"));
- dcWorkingMap = dcMap;
- numRows = 0;
-}
-
-QVariant DiveComputerModel::data(const QModelIndex &index, int role) const
-{
- QList<DiveComputerNode> values = dcWorkingMap.values();
- DiveComputerNode node = values.at(index.row());
-
- QVariant ret;
- if (role == Qt::DisplayRole || role == Qt::EditRole) {
- switch (index.column()) {
- case ID:
- ret = QString("0x").append(QString::number(node.deviceId, 16));
- break;
- case MODEL:
- ret = node.model;
- break;
- case NICKNAME:
- ret = node.nickName;
- break;
- }
- }
-
- if (index.column() == REMOVE) {
- switch (role) {
- case Qt::DecorationRole:
- ret = trashIcon();
- break;
- case Qt::SizeHintRole:
- ret = trashIcon().size();
- break;
- case Qt::ToolTipRole:
- ret = tr("Clicking here will remove this dive computer.");
- break;
- }
- }
- return ret;
-}
-
-int DiveComputerModel::rowCount(const QModelIndex &parent) const
-{
- return numRows;
-}
-
-void DiveComputerModel::update()
-{
- QList<DiveComputerNode> values = dcWorkingMap.values();
- int count = values.count();
-
- if (numRows) {
- beginRemoveRows(QModelIndex(), 0, numRows - 1);
- numRows = 0;
- endRemoveRows();
- }
-
- if (count) {
- beginInsertRows(QModelIndex(), 0, count - 1);
- numRows = count;
- endInsertRows();
- }
-}
-
-Qt::ItemFlags DiveComputerModel::flags(const QModelIndex &index) const
-{
- Qt::ItemFlags flags = QAbstractItemModel::flags(index);
- if (index.column() == NICKNAME)
- flags |= Qt::ItemIsEditable;
- return flags;
-}
-
-bool DiveComputerModel::setData(const QModelIndex &index, const QVariant &value, int role)
-{
- QList<DiveComputerNode> values = dcWorkingMap.values();
- DiveComputerNode node = values.at(index.row());
- dcWorkingMap.remove(node.model, node);
- node.nickName = value.toString();
- dcWorkingMap.insert(node.model, node);
- emit dataChanged(index, index);
- return true;
-}
-
-void DiveComputerModel::remove(const QModelIndex &index)
-{
- QList<DiveComputerNode> values = dcWorkingMap.values();
- DiveComputerNode node = values.at(index.row());
- dcWorkingMap.remove(node.model, node);
- update();
-}
-
-void DiveComputerModel::dropWorkingList()
-{
- // how do I prevent the memory leak ?
-}
-
-void DiveComputerModel::keepWorkingList()
-{
- if (dcList.dcMap != dcWorkingMap)
- mark_divelist_changed(true);
- dcList.dcMap = dcWorkingMap;
-}
-
/*#################################################################
* #
* # Yearly Statistics Model
diff --git a/qt-models/models.h b/qt-models/models.h
index 095791694..ec025af9d 100644
--- a/qt-models/models.h
+++ b/qt-models/models.h
@@ -138,33 +138,6 @@ private:
Layout currentLayout;
};
-class DiveComputerModel : public CleanerTableModel {
- Q_OBJECT
-public:
- enum {
- REMOVE,
- MODEL,
- ID,
- NICKNAME
- };
- DiveComputerModel(QMultiMap<QString, DiveComputerNode> &dcMap, QObject *parent = 0);
- virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
- virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
- virtual Qt::ItemFlags flags(const QModelIndex &index) const;
- virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
- void update();
- void keepWorkingList();
- void dropWorkingList();
-
-public
-slots:
- void remove(const QModelIndex &index);
-
-private:
- int numRows;
- QMultiMap<QString, DiveComputerNode> dcWorkingMap;
-};
-
class YearlyStatisticsModel : public TreeModel {
Q_OBJECT
public:
diff --git a/qt-ui/divecomputermanagementdialog.cpp b/qt-ui/divecomputermanagementdialog.cpp
index 552f6058f..17434a9e5 100644
--- a/qt-ui/divecomputermanagementdialog.cpp
+++ b/qt-ui/divecomputermanagementdialog.cpp
@@ -1,6 +1,7 @@
#include "divecomputermanagementdialog.h"
#include "mainwindow.h"
#include "helpers.h"
+#include "divecomputermodel.h"
#include "models.h"
#include <QMessageBox>
#include <QShortcut>