From 26c87fafc2cd2c0329b780699ba90f21a5592031 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Fri, 11 Oct 2013 10:50:40 -0300 Subject: Begin to Cleanup the Models, trying to reduce boilerplate. The Model View system in Qt is *very* verbose, this is the beginning of a series of patches that will concentrate the boilerplate somewhere and reduce the amount of lines and will also try to make the code cleaner and easyer to understand, Signed-off-by: Tomaz Canabrava --- qt-ui/models.cpp | 30 ++++++++++++++++-------------- qt-ui/models.h | 19 +++++++++++++++---- qt-ui/subsurfacewebservices.cpp | 1 - 3 files changed, 31 insertions(+), 19 deletions(-) (limited to 'qt-ui') diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp index 72c4e62d6..492b0ac4c 100644 --- a/qt-ui/models.cpp +++ b/qt-ui/models.cpp @@ -25,11 +25,16 @@ QFont defaultModelFont() return font; } -CylindersModel::CylindersModel(QObject* parent): QAbstractTableModel(parent), current(0), rows(0) +CleanerTableModel::CleanerTableModel(): QAbstractTableModel() { } -QVariant CylindersModel::headerData(int section, Qt::Orientation orientation, int role) const +int CleanerTableModel::columnCount(const QModelIndex& parent) const +{ + return headers.count(); +} + +QVariant CleanerTableModel::headerData(int section, Qt::Orientation orientation, int role) const { QVariant ret; @@ -41,22 +46,19 @@ QVariant CylindersModel::headerData(int section, Qt::Orientation orientation, in ret = defaultModelFont(); break; case Qt::DisplayRole: - switch(section) { - case TYPE: ret = tr("Type"); break; - case SIZE: ret = tr("Size"); break; - case WORKINGPRESS: ret = tr("WorkPress"); break; - case START: ret = tr("StartPress"); break; - case END: ret = tr("EndPress "); break; - case O2: ret = tr("O2% "); break; - case HE: ret = tr("He% "); break; - } + return headers.at(section); } - return ret; } -int CylindersModel::columnCount(const QModelIndex& parent) const +void CleanerTableModel::setHeaderDataStrings(const QStringList& newHeaders) { - return COLUMNS; + headers = newHeaders; +} + +CylindersModel::CylindersModel(QObject* parent): current(0), rows(0) +{ + // enum{REMOVE, TYPE, SIZE, WORKINGPRESS, START, END, O2, HE,}; + setHeaderDataStrings( QStringList() << "" << tr("Type") << tr("Size") << tr("WorkPress") << tr("StartPress") << tr("O2%") << tr("HE")); } static QVariant percent_string(fraction_t fraction) diff --git a/qt-ui/models.h b/qt-ui/models.h index 75c3e08ac..24f829add 100644 --- a/qt-ui/models.h +++ b/qt-ui/models.h @@ -17,6 +17,19 @@ QFont defaultModelFont(); +// Encapsulates Boilerplate. +class CleanerTableModel : public QAbstractTableModel{ + Q_OBJECT +public: + CleanerTableModel(); + virtual int columnCount(const QModelIndex& parent = QModelIndex()) const; + virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; +protected: + void setHeaderDataStrings(const QStringList& headers); +private: + QStringList headers; +}; + /* Encapsulates the tank_info global variable * to show on Qt's Model View System.*/ class TankInfoModel : public QAbstractTableModel { @@ -67,14 +80,12 @@ private: /* Encapsulation of the Cylinder Model, that presents the * Current cylinders that are used on a dive. */ -class CylindersModel : public QAbstractTableModel { +class CylindersModel : public CleanerTableModel { Q_OBJECT public: - enum Column {REMOVE, TYPE, SIZE, WORKINGPRESS, START, END, O2, HE, COLUMNS}; + enum Column {REMOVE, TYPE, SIZE, WORKINGPRESS, START, END, O2, HE}; explicit CylindersModel(QObject* parent = 0); - /*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; /*reimp*/ int rowCount(const QModelIndex& parent = QModelIndex()) const; /*reimp*/ Qt::ItemFlags flags(const QModelIndex& index) const; diff --git a/qt-ui/subsurfacewebservices.cpp b/qt-ui/subsurfacewebservices.cpp index cd6273087..2a560efdd 100644 --- a/qt-ui/subsurfacewebservices.cpp +++ b/qt-ui/subsurfacewebservices.cpp @@ -32,7 +32,6 @@ SubsurfaceWebServices::SubsurfaceWebServices(QWidget* parent, Qt::WindowFlags f) ui.userID->setText(s.value("webservice_uid").toString()); } - static void clear_table(struct dive_table *table) { int i; -- cgit v1.2.3-70-g09d2