Skip to content

Commit

Permalink
[nemo-qml-plugin-calendar] Allow to get agenda model data by row index
Browse files Browse the repository at this point in the history
  • Loading branch information
pvuorela committed Jun 3, 2014
1 parent ca31c5c commit 5127e4f
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 10 deletions.
32 changes: 23 additions & 9 deletions src/calendaragendamodel.cpp
Expand Up @@ -37,6 +37,8 @@
#include "calendareventoccurrence.h"
#include "calendarmanager.h"

#include <QDebug>

NemoCalendarAgendaModel::NemoCalendarAgendaModel(QObject *parent)
: QAbstractListModel(parent), mIsComplete(true), mFilterMode(FilterNone)
{
Expand Down Expand Up @@ -189,6 +191,7 @@ void NemoCalendarAgendaModel::doRefresh(QList<NemoCalendarEventOccurrence *> new
if (insertCount) {
beginInsertRows(QModelIndex(), mEventsIndex, mEventsIndex + insertCount - 1);
for (int ii = 0; ii < insertCount; ++ii) {
newEvents.at(newEventsCounter + ii)->setParent(this);
mEvents.insert(mEventsIndex++, newEvents.at(newEventsCounter + ii));
}
newEventsCounter += insertCount;
Expand Down Expand Up @@ -233,18 +236,29 @@ int NemoCalendarAgendaModel::rowCount(const QModelIndex &index) const

QVariant NemoCalendarAgendaModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid() || index.row() >= mEvents.count())
if (!index.isValid())
return QVariant();

return get(index.row(), role);
}

QVariant NemoCalendarAgendaModel::get(int index, int role) const
{
if (index < 0 || index >= mEvents.count()) {
qWarning() << "CalendarAgendaModel: Invalid index";
return QVariant();
}

switch (role) {
case EventObjectRole:
return QVariant::fromValue<QObject *>(mEvents.at(index.row())->eventObject());
case OccurrenceObjectRole:
return QVariant::fromValue<QObject *>(mEvents.at(index.row()));
case SectionBucketRole:
return mEvents.at(index.row())->startTime().date();
default:
return QVariant();
case EventObjectRole:
return QVariant::fromValue<QObject *>(mEvents.at(index)->eventObject());
case OccurrenceObjectRole:
return QVariant::fromValue<QObject *>(mEvents.at(index));
case SectionBucketRole:
return mEvents.at(index)->startTime().date();
default:
qWarning() << "CalendarAgendaModel: Unknown role asked";
return QVariant();
}
}

Expand Down
4 changes: 3 additions & 1 deletion src/calendaragendamodel.h
Expand Up @@ -45,13 +45,14 @@ class NemoCalendarAgendaModel : public QAbstractListModel, public QQmlParserStat
Q_OBJECT
Q_INTERFACES(QQmlParserStatus)
Q_ENUMS(FilterMode)
Q_ENUMS(AgendaRoles)
Q_PROPERTY(int count READ count NOTIFY countChanged)
Q_PROPERTY(QDate startDate READ startDate WRITE setStartDate NOTIFY startDateChanged)
Q_PROPERTY(QDate endDate READ endDate WRITE setEndDate NOTIFY endDateChanged)
Q_PROPERTY(int filterMode READ filterMode WRITE setFilterMode NOTIFY filterModeChanged)

public:
enum {
enum AgendaRoles {
EventObjectRole = Qt::UserRole,
OccurrenceObjectRole,
SectionBucketRole
Expand Down Expand Up @@ -81,6 +82,7 @@ class NemoCalendarAgendaModel : public QAbstractListModel, public QQmlParserStat

int rowCount(const QModelIndex &index) const;
QVariant data(const QModelIndex &index, int role) const;
Q_INVOKABLE QVariant get(int index, int role) const;

virtual void classBegin();
virtual void componentComplete();
Expand Down

0 comments on commit 5127e4f

Please sign in to comment.