summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--qt-models/models.cpp101
-rw-r--r--qt-models/models.h31
-rw-r--r--qt-models/treemodel.cpp103
-rw-r--r--qt-models/treemodel.h39
5 files changed, 144 insertions, 131 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dfa6eead9..1dc46c928 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -256,6 +256,7 @@ set(SUBSURFACE_MODELS_LIB_SRCS
qt-models/weigthsysteminfomodel.cpp
qt-models/weightmodel.cpp
qt-models/divecomputermodel.cpp
+ qt-models/treemodel.cpp
qt-models/divecomputerextradatamodel.cpp
qt-models/completionmodels.cpp
)
diff --git a/qt-models/models.cpp b/qt-models/models.cpp
index bbd5d7a0c..15e66f5b5 100644
--- a/qt-models/models.cpp
+++ b/qt-models/models.cpp
@@ -50,107 +50,6 @@ const QPixmap &trashIcon()
*
*/
-TreeItem::TreeItem()
-{
- parent = NULL;
-}
-
-TreeItem::~TreeItem()
-{
- qDeleteAll(children);
-}
-
-Qt::ItemFlags TreeItem::flags(const QModelIndex &index) const
-{
- return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
-}
-
-int TreeItem::row() const
-{
- if (parent)
- return parent->children.indexOf(const_cast<TreeItem *>(this));
- return 0;
-}
-
-QVariant TreeItem::data(int column, int role) const
-{
- return QVariant();
-}
-
-TreeModel::TreeModel(QObject *parent) : QAbstractItemModel(parent)
-{
- columns = 0; // I'm not sure about this one - I can't see where it gets initialized
- rootItem = new TreeItem();
-}
-
-TreeModel::~TreeModel()
-{
- delete rootItem;
-}
-
-QVariant TreeModel::data(const QModelIndex &index, int role) const
-{
- if (!index.isValid())
- return QVariant();
-
- TreeItem *item = static_cast<TreeItem *>(index.internalPointer());
- QVariant val = item->data(index.column(), role);
-
- if (role == Qt::FontRole && !val.isValid())
- return defaultModelFont();
- else
- return val;
-}
-
-bool TreeItem::setData(const QModelIndex &index, const QVariant &value, int role)
-{
- return false;
-}
-
-QModelIndex TreeModel::index(int row, int column, const QModelIndex &parent) const
-{
- if (!hasIndex(row, column, parent))
- return QModelIndex();
-
- TreeItem *parentItem = (!parent.isValid()) ? rootItem : static_cast<TreeItem *>(parent.internalPointer());
-
- TreeItem *childItem = parentItem->children[row];
-
- return (childItem) ? createIndex(row, column, childItem) : QModelIndex();
-}
-
-QModelIndex TreeModel::parent(const QModelIndex &index) const
-{
- if (!index.isValid())
- return QModelIndex();
-
- TreeItem *childItem = static_cast<TreeItem *>(index.internalPointer());
- TreeItem *parentItem = childItem->parent;
-
- if (parentItem == rootItem || !parentItem)
- return QModelIndex();
-
- return createIndex(parentItem->row(), 0, parentItem);
-}
-
-int TreeModel::rowCount(const QModelIndex &parent) const
-{
- TreeItem *parentItem;
-
- if (!parent.isValid())
- parentItem = rootItem;
- else
- parentItem = static_cast<TreeItem *>(parent.internalPointer());
-
- int amount = parentItem->children.count();
- return amount;
-}
-
-int TreeModel::columnCount(const QModelIndex &parent) const
-{
- return columns;
-}
-
/*################################################################
*
* Implementation of the Dive List.
diff --git a/qt-models/models.h b/qt-models/models.h
index ec025af9d..e2a474e41 100644
--- a/qt-models/models.h
+++ b/qt-models/models.h
@@ -20,25 +20,11 @@
#include "../divelist.h"
#include "../divecomputer.h"
#include "cleanertablemodel.h"
-
+#include "treemodel.h"
/*! An AbstractItemModel for recording dive trip information such as a list of dives.
*
*/
-struct TreeItem {
- Q_DECLARE_TR_FUNCTIONS(TreeItemDT);
-
-public:
- virtual ~TreeItem();
- TreeItem();
- virtual QVariant data(int column, int role) const;
- virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
- virtual Qt::ItemFlags flags(const QModelIndex &index) const;
-
- int row() const;
- QList<TreeItem *> children;
- TreeItem *parent;
-};
struct DiveItem : public TreeItem {
enum Column {
@@ -75,21 +61,6 @@ struct DiveItem : public TreeItem {
struct TripItem;
-class TreeModel : public QAbstractItemModel {
- Q_OBJECT
-public:
- TreeModel(QObject *parent = 0);
- virtual ~TreeModel();
- virtual QVariant data(const QModelIndex &index, int role) const;
- /*reimp*/ int rowCount(const QModelIndex &parent = QModelIndex()) const;
- /*reimp*/ int columnCount(const QModelIndex &parent = QModelIndex()) const;
- /*reimp*/ QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
- /*reimp*/ QModelIndex parent(const QModelIndex &child) const;
-
-protected:
- int columns;
- TreeItem *rootItem;
-};
class DiveTripModel : public TreeModel {
Q_OBJECT
diff --git a/qt-models/treemodel.cpp b/qt-models/treemodel.cpp
new file mode 100644
index 000000000..558f690b2
--- /dev/null
+++ b/qt-models/treemodel.cpp
@@ -0,0 +1,103 @@
+#include "treemodel.h"
+#include "metrics.h"
+
+TreeItem::TreeItem()
+{
+ parent = NULL;
+}
+
+TreeItem::~TreeItem()
+{
+ qDeleteAll(children);
+}
+
+Qt::ItemFlags TreeItem::flags(const QModelIndex &index) const
+{
+ return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
+}
+
+int TreeItem::row() const
+{
+ if (parent)
+ return parent->children.indexOf(const_cast<TreeItem *>(this));
+ return 0;
+}
+
+QVariant TreeItem::data(int column, int role) const
+{
+ return QVariant();
+}
+
+TreeModel::TreeModel(QObject *parent) : QAbstractItemModel(parent)
+{
+ columns = 0; // I'm not sure about this one - I can't see where it gets initialized
+ rootItem = new TreeItem();
+}
+
+TreeModel::~TreeModel()
+{
+ delete rootItem;
+}
+
+QVariant TreeModel::data(const QModelIndex &index, int role) const
+{
+ if (!index.isValid())
+ return QVariant();
+
+ TreeItem *item = static_cast<TreeItem *>(index.internalPointer());
+ QVariant val = item->data(index.column(), role);
+
+ if (role == Qt::FontRole && !val.isValid())
+ return defaultModelFont();
+ else
+ return val;
+}
+
+bool TreeItem::setData(const QModelIndex &index, const QVariant &value, int role)
+{
+ return false;
+}
+
+QModelIndex TreeModel::index(int row, int column, const QModelIndex &parent) const
+{
+ if (!hasIndex(row, column, parent))
+ return QModelIndex();
+
+ TreeItem *parentItem = (!parent.isValid()) ? rootItem : static_cast<TreeItem *>(parent.internalPointer());
+
+ TreeItem *childItem = parentItem->children[row];
+
+ return (childItem) ? createIndex(row, column, childItem) : QModelIndex();
+}
+
+QModelIndex TreeModel::parent(const QModelIndex &index) const
+{
+ if (!index.isValid())
+ return QModelIndex();
+
+ TreeItem *childItem = static_cast<TreeItem *>(index.internalPointer());
+ TreeItem *parentItem = childItem->parent;
+
+ if (parentItem == rootItem || !parentItem)
+ return QModelIndex();
+
+ return createIndex(parentItem->row(), 0, parentItem);
+}
+
+int TreeModel::rowCount(const QModelIndex &parent) const
+{
+ TreeItem *parentItem;
+
+ if (!parent.isValid())
+ parentItem = rootItem;
+ else
+ parentItem = static_cast<TreeItem *>(parent.internalPointer());
+
+ int amount = parentItem->children.count();
+ return amount;
+}
+
+int TreeModel::columnCount(const QModelIndex &parent) const
+{
+ return columns;
+}
diff --git a/qt-models/treemodel.h b/qt-models/treemodel.h
new file mode 100644
index 000000000..e95e53a91
--- /dev/null
+++ b/qt-models/treemodel.h
@@ -0,0 +1,39 @@
+#ifndef TREEMODEL_H
+#define TREEMODEL_H
+
+#include <QAbstractItemModel>
+#include <QCoreApplication>
+
+struct TreeItem {
+ Q_DECLARE_TR_FUNCTIONS(TreeItemDT)
+
+public:
+ virtual ~TreeItem();
+ TreeItem();
+ virtual QVariant data(int column, int role) const;
+ virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
+ virtual Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ int row() const;
+ QList<TreeItem *> children;
+ TreeItem *parent;
+};
+
+
+class TreeModel : public QAbstractItemModel {
+ Q_OBJECT
+public:
+ TreeModel(QObject *parent = 0);
+ virtual ~TreeModel();
+ virtual QVariant data(const QModelIndex &index, int role) const;
+ /*reimp*/ int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ /*reimp*/ int columnCount(const QModelIndex &parent = QModelIndex()) const;
+ /*reimp*/ QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
+ /*reimp*/ QModelIndex parent(const QModelIndex &child) const;
+
+protected:
+ int columns;
+ TreeItem *rootItem;
+};
+
+#endif