diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f0309180..fca2b2282 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -253,6 +253,7 @@ set(SUBSURFACE_MODELS_LIB_SRCS qt-models/models.cpp qt-models/filtermodels.cpp qt-models/tankinfomodel.cpp + qt-models/weigthsysteminfomodel.cpp qt-models/completionmodels.cpp ) source_group("Subsurface Models" FILES ${SUBSURFACE_MODELS}) diff --git a/qt-models/models.cpp b/qt-models/models.cpp index b2d317456..5b0fc1a0f 100644 --- a/qt-models/models.cpp +++ b/qt-models/models.cpp @@ -16,7 +16,7 @@ #include "display.h" #include "color.h" #include "cleanertablemodel.h" - +#include "weigthsysteminfomodel.h" #include #include #include @@ -319,128 +319,6 @@ void WeightModel::updateDive() } } -WSInfoModel *WSInfoModel::instance() -{ - static QScopedPointer self(new WSInfoModel()); - return self.data(); -} - -bool WSInfoModel::insertRows(int row, int count, const QModelIndex &parent) -{ - beginInsertRows(parent, rowCount(), rowCount()); - rows += count; - endInsertRows(); - return true; -} - -bool WSInfoModel::setData(const QModelIndex &index, const QVariant &value, int role) -{ - struct ws_info_t *info = &ws_info[index.row()]; - switch (index.column()) { - case DESCRIPTION: - info->name = strdup(value.toByteArray().data()); - break; - case GR: - info->grams = value.toInt(); - break; - } - emit dataChanged(index, index); - return true; -} - -void WSInfoModel::clear() -{ -} - -QVariant WSInfoModel::data(const QModelIndex &index, int role) const -{ - QVariant ret; - if (!index.isValid()) { - return ret; - } - struct ws_info_t *info = &ws_info[index.row()]; - - int gr = info->grams; - switch (role) { - case Qt::FontRole: - ret = defaultModelFont(); - break; - case Qt::DisplayRole: - case Qt::EditRole: - switch (index.column()) { - case GR: - ret = gr; - break; - case DESCRIPTION: - ret = gettextFromC::instance()->tr(info->name); - break; - } - break; - } - return ret; -} - -int WSInfoModel::rowCount(const QModelIndex &parent) const -{ - return rows + 1; -} - -const QString &WSInfoModel::biggerString() const -{ - return biggerEntry; -} - -WSInfoModel::WSInfoModel() : rows(-1) -{ - setHeaderDataStrings(QStringList() << tr("Description") << tr("kg")); - struct ws_info_t *info = ws_info; - for (info = ws_info; info->name; info++, rows++) { - QString wsInfoName = gettextFromC::instance()->tr(info->name); - if (wsInfoName.count() > biggerEntry.count()) - biggerEntry = wsInfoName; - } - - if (rows > -1) { - beginInsertRows(QModelIndex(), 0, rows); - endInsertRows(); - } -} - -void WSInfoModel::updateInfo() -{ - struct ws_info_t *info = ws_info; - beginRemoveRows(QModelIndex(), 0, this->rows); - endRemoveRows(); - rows = -1; - for (info = ws_info; info->name; info++, rows++) { - QString wsInfoName = gettextFromC::instance()->tr(info->name); - if (wsInfoName.count() > biggerEntry.count()) - biggerEntry = wsInfoName; - } - - if (rows > -1) { - beginInsertRows(QModelIndex(), 0, rows); - endInsertRows(); - } -} - -void WSInfoModel::update() -{ - if (rows > -1) { - beginRemoveRows(QModelIndex(), 0, rows); - endRemoveRows(); - rows = -1; - } - struct ws_info_t *info = ws_info; - for (info = ws_info; info->name; info++, rows++) - ; - - if (rows > -1) { - beginInsertRows(QModelIndex(), 0, rows); - endInsertRows(); - } -} - //################################################################################################# //# //# Tree Model - a Basic Tree Model so I don't need to kill myself repeating this for every model. diff --git a/qt-models/models.h b/qt-models/models.h index 9e18ba26d..70e34e65f 100644 --- a/qt-models/models.h +++ b/qt-models/models.h @@ -21,32 +21,6 @@ #include "../divecomputer.h" #include "cleanertablemodel.h" -/* Encapsulate ws_info */ -class WSInfoModel : public CleanerTableModel { - Q_OBJECT -public: - static WSInfoModel *instance(); - - enum Column { - DESCRIPTION, - GR - }; - WSInfoModel(); - - /*reimp*/ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; - /*reimp*/ int rowCount(const QModelIndex &parent = QModelIndex()) const; - /*reimp*/ bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); - /*reimp*/ bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); - const QString &biggerString() const; - void clear(); - void update(); - void updateInfo(); - -private: - int rows; - QString biggerEntry; -}; - /* Retrieve the trash icon pixmap, common to most table models */ const QPixmap &trashIcon(); diff --git a/qt-models/weigthsysteminfomodel.cpp b/qt-models/weigthsysteminfomodel.cpp new file mode 100644 index 000000000..1ddc2e940 --- /dev/null +++ b/qt-models/weigthsysteminfomodel.cpp @@ -0,0 +1,126 @@ +#include "weigthsysteminfomodel.h" +#include "dive.h" +#include "metrics.h" +#include "gettextfromc.h" + +WSInfoModel *WSInfoModel::instance() +{ + static QScopedPointer self(new WSInfoModel()); + return self.data(); +} + +bool WSInfoModel::insertRows(int row, int count, const QModelIndex &parent) +{ + beginInsertRows(parent, rowCount(), rowCount()); + rows += count; + endInsertRows(); + return true; +} + +bool WSInfoModel::setData(const QModelIndex &index, const QVariant &value, int role) +{ + struct ws_info_t *info = &ws_info[index.row()]; + switch (index.column()) { + case DESCRIPTION: + info->name = strdup(value.toByteArray().data()); + break; + case GR: + info->grams = value.toInt(); + break; + } + emit dataChanged(index, index); + return true; +} + +void WSInfoModel::clear() +{ +} + +QVariant WSInfoModel::data(const QModelIndex &index, int role) const +{ + QVariant ret; + if (!index.isValid()) { + return ret; + } + struct ws_info_t *info = &ws_info[index.row()]; + + int gr = info->grams; + switch (role) { + case Qt::FontRole: + ret = defaultModelFont(); + break; + case Qt::DisplayRole: + case Qt::EditRole: + switch (index.column()) { + case GR: + ret = gr; + break; + case DESCRIPTION: + ret = gettextFromC::instance()->tr(info->name); + break; + } + break; + } + return ret; +} + +int WSInfoModel::rowCount(const QModelIndex &parent) const +{ + return rows + 1; +} + +const QString &WSInfoModel::biggerString() const +{ + return biggerEntry; +} + +WSInfoModel::WSInfoModel() : rows(-1) +{ + setHeaderDataStrings(QStringList() << tr("Description") << tr("kg")); + struct ws_info_t *info = ws_info; + for (info = ws_info; info->name; info++, rows++) { + QString wsInfoName = gettextFromC::instance()->tr(info->name); + if (wsInfoName.count() > biggerEntry.count()) + biggerEntry = wsInfoName; + } + + if (rows > -1) { + beginInsertRows(QModelIndex(), 0, rows); + endInsertRows(); + } +} + +void WSInfoModel::updateInfo() +{ + struct ws_info_t *info = ws_info; + beginRemoveRows(QModelIndex(), 0, this->rows); + endRemoveRows(); + rows = -1; + for (info = ws_info; info->name; info++, rows++) { + QString wsInfoName = gettextFromC::instance()->tr(info->name); + if (wsInfoName.count() > biggerEntry.count()) + biggerEntry = wsInfoName; + } + + if (rows > -1) { + beginInsertRows(QModelIndex(), 0, rows); + endInsertRows(); + } +} + +void WSInfoModel::update() +{ + if (rows > -1) { + beginRemoveRows(QModelIndex(), 0, rows); + endRemoveRows(); + rows = -1; + } + struct ws_info_t *info = ws_info; + for (info = ws_info; info->name; info++, rows++) + ; + + if (rows > -1) { + beginInsertRows(QModelIndex(), 0, rows); + endInsertRows(); + } +} diff --git a/qt-models/weigthsysteminfomodel.h b/qt-models/weigthsysteminfomodel.h new file mode 100644 index 000000000..757f4eb03 --- /dev/null +++ b/qt-models/weigthsysteminfomodel.h @@ -0,0 +1,32 @@ +#ifndef WEIGTHSYSTEMINFOMODEL_H +#define WEIGHTSYSTEMINFOMODEL_H + +#include "cleanertablemodel.h" + +/* Encapsulate ws_info */ +class WSInfoModel : public CleanerTableModel { + Q_OBJECT +public: + static WSInfoModel *instance(); + + enum Column { + DESCRIPTION, + GR + }; + WSInfoModel(); + + /*reimp*/ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + /*reimp*/ int rowCount(const QModelIndex &parent = QModelIndex()) const; + /*reimp*/ bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); + /*reimp*/ bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); + const QString &biggerString() const; + void clear(); + void update(); + void updateInfo(); + +private: + int rows; + QString biggerEntry; +}; + +#endif diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index ffc813257..7fd344fb8 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -30,6 +30,7 @@ #include "printdialog.h" #endif #include "tankinfomodel.h" +#include "weigthsysteminfomodel.h" #include "diveplannermodel.h" #include "divelogimportdialog.h" #include "divelogexportdialog.h" diff --git a/qt-ui/modeldelegates.cpp b/qt-ui/modeldelegates.cpp index b300c9a4a..783fcc225 100644 --- a/qt-ui/modeldelegates.cpp +++ b/qt-ui/modeldelegates.cpp @@ -7,6 +7,7 @@ #include "starwidget.h" #include "profile/profilewidget2.h" #include "tankinfomodel.h" +#include "weigthsysteminfomodel.h" #include #include