diff options
Diffstat (limited to 'qt-models/divelistmodel.cpp')
-rw-r--r-- | qt-models/divelistmodel.cpp | 81 |
1 files changed, 15 insertions, 66 deletions
diff --git a/qt-models/divelistmodel.cpp b/qt-models/divelistmodel.cpp index e812f3df7..e6514064f 100644 --- a/qt-models/divelistmodel.cpp +++ b/qt-models/divelistmodel.cpp @@ -12,15 +12,15 @@ DiveListModel::DiveListModel(QObject *parent) : QAbstractListModel(parent) void DiveListModel::addDive(dive *d) { beginInsertRows(QModelIndex(), rowCount(), rowCount()); - m_dives.append(Dive(d)); + m_dives.append(new DiveObjectHelper(d)); endInsertRows(); } void DiveListModel::updateDive(dive *d) { for (int i = 0; i < m_dives.count(); i++) { - if (m_dives.at(i).id() == d->id) { - Dive newDive(d); + if (m_dives.at(i)->id() == d->id) { + DiveObjectHelper *newDive = new DiveObjectHelper(d); m_dives.replace(i, newDive); break; } @@ -31,6 +31,7 @@ void DiveListModel::clear() { if (m_dives.count()) { beginRemoveRows(QModelIndex(), 0, m_dives.count() - 1); + qDeleteAll(m_dives); m_dives.clear(); endRemoveRows(); } @@ -46,76 +47,20 @@ QVariant DiveListModel::data(const QModelIndex &index, int role) const if(index.row() < 0 || index.row() > m_dives.count()) return QVariant(); - const Dive &dive = m_dives[index.row()]; - - if (role == DiveNumberRole) - return dive.number(); - else if (role == DiveTripRole) - return dive.trip(); - else if (role == DiveDateRole) - return (qlonglong)dive.timestamp(); - else if (role == DiveDateStringRole) - return dive.date() + " " + dive.time(); - else if (role == DiveRatingRole) - return QString::number(dive.rating()); - else if (role == DiveDepthRole) - return dive.depth(); - else if (role == DiveDurationRole) - return dive.duration(); - else if (role == DiveAirTemperatureRole) - return dive.airTemp(); - else if (role == DiveWaterTemperatureRole) - return dive.waterTemp(); - else if (role == DiveWeightRole) - return dive.weight(0); - else if (role == DiveSuitRole) - return dive.suit(); - else if (role == DiveCylinderRole) - return dive.cylinder(0); - else if (role == DiveGasRole) - return dive.gas(); - else if (role == DiveSacRole) - return dive.sac(); - else if (role == DiveLocationRole) - return dive.location(); - else if (role == DiveGPSRole) - return dive.gps(); - else if (role == DiveNotesRole) - return dive.notes(); - else if (role == DiveBuddyRole) - return dive.buddy(); - else if (role == DiveMasterRole) - return dive.divemaster(); - else if (role == DiveIdRole) - return QString::number(dive.id()); + DiveObjectHelper *curr_dive = m_dives[index.row()]; + switch(role) { + case DiveRole: return QVariant::fromValue<QObject*>(curr_dive); + case DiveDateRole: return (qlonglong)curr_dive->timestamp(); + } return QVariant(); - } QHash<int, QByteArray> DiveListModel::roleNames() const { QHash<int, QByteArray> roles; - roles[DiveNumberRole] = "diveNumber"; - roles[DiveTripRole] = "trip"; - roles[DiveDateStringRole] = "date"; - roles[DiveRatingRole] = "rating"; - roles[DiveDepthRole] = "depth"; - roles[DiveDurationRole] = "duration"; - roles[DiveAirTemperatureRole] = "airtemp"; - roles[DiveWaterTemperatureRole] = "watertemp"; - roles[DiveWeightRole] = "weight"; - roles[DiveSuitRole] = "suit"; - roles[DiveCylinderRole] = "cylinder"; - roles[DiveGasRole] = "gas"; - roles[DiveSacRole] = "sac"; - roles[DiveLocationRole] = "location"; - roles[DiveGPSRole] = "gps"; - roles[DiveNotesRole] = "notes"; - roles[DiveBuddyRole] = "buddy"; - roles[DiveMasterRole] = "divemaster"; - roles[DiveIdRole] = "id"; - + roles[DiveRole] = "dive"; + roles[DiveDateRole] = "date"; return roles; } @@ -140,3 +85,7 @@ DiveListModel *DiveListModel::instance() { return m_instance; } + +DiveObjectHelper* DiveListModel::at(int i){ + return m_dives.at(i); +}
\ No newline at end of file |