X-Git-Url: https://www.flypig.org.uk/git/?p=harbour-pedalo.git;a=blobdiff_plain;f=src%2Fjourneymodel.cpp;h=2919d83388c47fe3cd520936c4e8d12f8d47c12d;hp=7286c6db7b104d4370edc29464cf2d6fc4339754;hb=70180c4c4fd2807d16f90562d6876f3f07d388b1;hpb=e917baa52e7157c7c41424527c3881c22ff65588 diff --git a/src/journeymodel.cpp b/src/journeymodel.cpp index 7286c6d..2919d83 100644 --- a/src/journeymodel.cpp +++ b/src/journeymodel.cpp @@ -14,13 +14,35 @@ QHash JourneyModel::roleNames() const { void JourneyModel::addJourney(const Journey &journey) { - beginInsertRows(QModelIndex(), rowCount(), rowCount()); - journeys << journey; + // Find position to add it + QList::const_iterator it = journeys.constBegin(); + + unsigned int position = 0; + while ((it != journeys.constEnd()) && (journey.getStart() < (*it).getStart())) { + position++; + it++; + } + + beginInsertRows(QModelIndex(), position, position); + journeys.insert(position, journey); endInsertRows(); } void JourneyModel::addJourney(QDateTime start, quint32 duration, quint32 overtook, quint32 overtakenby) { - addJourney(Journey(start.currentMSecsSinceEpoch(), duration, overtook, overtakenby)); + quint64 startepoch = start.toMSecsSinceEpoch(); + addJourney(Journey(startepoch, duration, overtook, overtakenby)); +} + +void JourneyModel::editJourney(quint32 index, QDateTime start, quint32 duration, quint32 overtook, quint32 overtakenby) { + quint64 startepoch = start.toMSecsSinceEpoch(); + journeys.replace(index, Journey(startepoch, duration, overtook, overtakenby)); + emit dataChanged(createIndex(index, 0), createIndex(index, 0)); +} + +void JourneyModel::deleteJourney(quint32 index) { + beginRemoveRows(QModelIndex(), index, index); + journeys.removeAt(index); + endRemoveRows(); } int JourneyModel::rowCount(const QModelIndex & parent) const { @@ -102,3 +124,36 @@ QTime JourneyModel::epochToTime(quint64 epoch) { date.setMSecsSinceEpoch(epoch); return date.time(); } + +QDateTime JourneyModel::epochToDateTime(quint64 epoch) { + QDateTime date; + + date.setMSecsSinceEpoch(epoch); + return date; +} + +QList const & JourneyModel::getData() const { + return journeys; +} + +void JourneyModel::sort(int column, Qt::SortOrder order) { + switch (column) { + case JourneyRoles::StartRole: + switch (order) { + case Qt::SortOrder::AscendingOrder: + std::sort(journeys.begin(), journeys.end(), JourneyTimeAscending()); + break; + case Qt::SortOrder::DescendingOrder: + std::sort(journeys.begin(), journeys.end(), JourneyTimeDescending()); + break; + default: + // Do nothing + break; + } + break; + default: + // Do nothing + break; + } +} +