#include "eventmodel.h" #include EventModel::EventModel() { mEvents.clear(); } void EventModel::createTimeGroups() { mGroups.clear(); mParents.clear(); if (mEvents.empty()) { return; } const int timeSpan = 5400; QTime startTime = mEvents.first().start().time(); mGroups << EventModel::Group(QString("%1 - %2").arg(startTime.toString("HH:mm"), startTime.addSecs(timeSpan).toString("HH:mm")), 0); QTime nextGroupTime = mEvents.first().start().time().addSecs(timeSpan); for (int i=0; i(index.internalPointer())->id(); } } return QVariant(); } QModelIndex EventModel::index(int row, int column, const QModelIndex& parent) const { // TODO: add checks for out of range rows if (!parent.isValid()) { return createIndex(row, column, 0); } else if (parent.internalId() == 0) { const Group& group = mGroups.at(parent.row()); Event* event = const_cast(&mEvents.at(row + group.mFirstEventIndex)); return createIndex(row, column, reinterpret_cast(event)); } else { return QModelIndex(); } } QModelIndex EventModel::parent(const QModelIndex & index) const { if (index.isValid()) { if (index.internalId() == 0) { return QModelIndex(); } Event * event = static_cast(index.internalPointer()); return createIndex(mParents[event->id()], 0, 0); } return QModelIndex(); } int EventModel::columnCount(const QModelIndex & parent) const { Q_UNUSED(parent); return 1; } int EventModel::rowCount (const QModelIndex & parent) const { if (!parent.isValid()) { return mGroups.count(); } if (parent.internalId() == 0) { return mGroups.at(parent.row()).mChildCount; } return 0; } void EventModel::loadEvents(const QDate &aDate, int aConferenceId) { for(int i=0; i