aboutsummaryrefslogtreecommitdiffstats
path: root/qt-ui/models.h
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-04-21 22:12:36 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-04-22 09:42:13 -0700
commita0280ae7d2cdd483bc53c7bc91a8aa438f9234de (patch)
tree1953e0422d8c714d4616f7266622b2b1fde3c185 /qt-ui/models.h
parent5da11cbc6a1d3339cbb519cf74e4377b8cbaee5f (diff)
downloadsubsurface-a0280ae7d2cdd483bc53c7bc91a8aa438f9234de.tar.gz
Move model related code from MainWindow and adjustments.
Moves the DiveTrip model related code to models.h The DiveTripModel was implemented in three parts: DiveTripModel.h DiveTripModel.cpp MainWindow.cpp (the code to populate the model) This patch changes the DiveTripModel from it's original implementation to the file models.h, wich should store all models (Dirk requested the Qt developers to not create 2 files per class, but instead to use a file for functionality, and data-models are one functionality.) Besides that, this code cleans up a bit the style: removed operator<< for .push_back, const references where they apply, moved the internal DiveItem class to the .cpp since it should be visible only to the DiveTripModel class, and redesigned the current interface of the model to be identical of the GTK one (used the UTF8-star and 2 subscribed, for instance). Amit (the creator of the original code) should comment here if it's ok with my changes. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/models.h')
-rw-r--r--qt-ui/models.h34
1 files changed, 31 insertions, 3 deletions
diff --git a/qt-ui/models.h b/qt-ui/models.h
index 8d86102cb..d64faf0bd 100644
--- a/qt-ui/models.h
+++ b/qt-ui/models.h
@@ -15,7 +15,7 @@
class TankInfoModel : public QAbstractTableModel {
Q_OBJECT
public:
- enum { DESCRIPTION, ML, BAR};
+ enum Column { DESCRIPTION, ML, BAR};
TankInfoModel();
/*reimp*/ QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
@@ -30,10 +30,12 @@ private:
int rows;
};
+/* Encapsulation of the Cylinder Model, that presents the
+ * Current cylinders that are used on a dive. */
class CylindersModel : public QAbstractTableModel {
Q_OBJECT
public:
- enum {TYPE, SIZE, MAXPRESS, START, END, O2, HE};
+ enum Column {TYPE, SIZE, MAXPRESS, START, END, O2, HE};
explicit CylindersModel(QObject* parent = 0);
/*reimp*/ QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
@@ -53,8 +55,10 @@ private:
QMap<dive*, int> usedRows;
};
+/* Encapsulation of the Weight Model, that represents
+ * the current weights on a dive. */
class WeightModel : public QAbstractTableModel {
- enum{TYPE, WEIGHT};
+ enum Column {TYPE, WEIGHT};
/*reimp*/ QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
/*reimp*/ int columnCount(const QModelIndex& parent = QModelIndex()) const;
/*reimp*/ QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
@@ -67,4 +71,28 @@ private:
int rows;
};
+/*! An AbstractItemModel for recording dive trip information such as a list of dives.
+*
+*/
+class DiveItem; // Represents a single item on the model, implemented in the .cpp since it's private for this class.
+class DiveTripModel : public QAbstractItemModel
+{
+public:
+ enum Column {NR, DATE, RATING, DEPTH, DURATION, TEMPERATURE, TOTALWEIGHT, SUIT, CYLINDER, NITROX, SAC, OTU, MAXCNS, LOCATION, COLUMNS };
+
+ DiveTripModel(QObject *parent = 0);
+
+ /*reimp*/ Qt::ItemFlags flags(const QModelIndex &index) const;
+ /*reimp*/ QVariant data(const QModelIndex &index, int role) const;
+ /*reimp*/ QVariant headerData(int section, Qt::Orientation orientation, int role) const;
+ /*reimp*/ int rowCount(const QModelIndex &parent) 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;
+
+private:
+ DiveItem *itemForIndex(const QModelIndex& index) const;
+ DiveItem *rootItem;
+};
+
#endif