diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f98692d4..bc4a4a21b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -264,8 +264,8 @@ set(SUBSURFACE_MODELS_LIB_SRCS qt-models/completionmodels.cpp qt-models/profileprintmodel.cpp qt-models/divepicturemodel.cpp - qt-models/diveplotdatamodel.cpp - + qt-models/diveplotdatamodel.cpp + qt-models/divelocationmodel.cpp ) source_group("Subsurface Models" FILES ${SUBSURFACE_MODELS}) diff --git a/qt-models/divelocationmodel.cpp b/qt-models/divelocationmodel.cpp new file mode 100644 index 000000000..a5303da49 --- /dev/null +++ b/qt-models/divelocationmodel.cpp @@ -0,0 +1,42 @@ +#include "divelocationmodel.h" +#include "dive.h" + +LocationInformationModel::LocationInformationModel(QObject *obj) : QAbstractListModel(obj), internalRowCount(0) +{ +} + +int LocationInformationModel::rowCount(const QModelIndex &parent) const +{ + Q_UNUSED(parent); + return internalRowCount; +} + +QVariant LocationInformationModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid()) + return QVariant(); + struct dive_site *ds = get_dive_site(index.row()); + + switch(role) { + case Qt::DisplayRole : return qPrintable(ds->name); + } + + return QVariant(); +} + +void LocationInformationModel::update() +{ + int i; + struct dive_site *ds; + for_each_dive_site (i, ds); + + if (rowCount()) { + beginRemoveRows(QModelIndex(), 0, rowCount()-1); + endRemoveRows(); + } + if (i) { + beginInsertRows(QModelIndex(), 0, i); + internalRowCount = i; + endInsertRows(); + } +} diff --git a/qt-models/divelocationmodel.h b/qt-models/divelocationmodel.h new file mode 100644 index 000000000..1bf7cedfd --- /dev/null +++ b/qt-models/divelocationmodel.h @@ -0,0 +1,17 @@ +#ifndef DIVELOCATIONMODEL_H +#define DIVELOCATIONMODEL_H + +#include + +class LocationInformationModel : public QAbstractListModel { +Q_OBJECT +public: + LocationInformationModel(QObject *obj = 0); + int rowCount(const QModelIndex &parent = QModelIndex()) const; + QVariant data(const QModelIndex &index = QModelIndex(), int role = Qt::DisplayRole) const; + void update(); +private: + int internalRowCount; +}; + +#endif diff --git a/qt-ui/locationinformation.cpp b/qt-ui/locationinformation.cpp index e2fa8466f..1ba7fd402 100644 --- a/qt-ui/locationinformation.cpp +++ b/qt-ui/locationinformation.cpp @@ -5,50 +5,10 @@ #include "qthelper.h" #include "globe.h" #include "filtermodels.h" - +#include "divelocationmodel.h" #include #include -LocationInformationModel::LocationInformationModel(QObject *obj) : QAbstractListModel(obj), internalRowCount(0) -{ -} - -int LocationInformationModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return internalRowCount; -} - -QVariant LocationInformationModel::data(const QModelIndex &index, int role) const -{ - if (!index.isValid()) - return QVariant(); - struct dive_site *ds = get_dive_site(index.row()); - - switch(role) { - case Qt::DisplayRole : return qPrintable(ds->name); - } - - return QVariant(); -} - -void LocationInformationModel::update() -{ - int i; - struct dive_site *ds; - for_each_dive_site (i, ds); - - if (rowCount()) { - beginRemoveRows(QModelIndex(), 0, rowCount()-1); - endRemoveRows(); - } - if (i) { - beginInsertRows(QModelIndex(), 0, i); - internalRowCount = i; - endInsertRows(); - } -} - LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBox(parent), modified(false) { ui.setupUi(this); diff --git a/qt-ui/locationinformation.h b/qt-ui/locationinformation.h index 1fb6e8d43..2a34512bd 100644 --- a/qt-ui/locationinformation.h +++ b/qt-ui/locationinformation.h @@ -5,17 +5,6 @@ #include #include -class LocationInformationModel : public QAbstractListModel { -Q_OBJECT -public: - LocationInformationModel(QObject *obj = 0); - int rowCount(const QModelIndex &parent = QModelIndex()) const; - QVariant data(const QModelIndex &index = QModelIndex(), int role = Qt::DisplayRole) const; - void update(); -private: - int internalRowCount; -}; - class LocationInformationWidget : public QGroupBox { Q_OBJECT public: