Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge branch 'jb48449' into 'master'
[nemo-calendar] Allow filtering multiple events from each notebook. Contributes to JB#48449

See merge request mer-core/nemo-qml-plugin-calendar!81
  • Loading branch information
jpetrell committed Mar 9, 2021
2 parents f744c44 + a61735f commit 2537ef4
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 6 deletions.
18 changes: 16 additions & 2 deletions src/calendaragendamodel.cpp
Expand Up @@ -138,11 +138,25 @@ void CalendarAgendaModel::doRefresh(QList<CalendarEventOccurrence *> newEvents)
QList<CalendarEventOccurrence *> events = mEvents;
QList<CalendarEventOccurrence *> skippedEvents;

QSet<QString> alreadyAddedCalendarUids;
// filter out if necessary
if (mFilterMode == FilterNonAllDay) {
if (mFilterMode != FilterNone) {
QList<CalendarEventOccurrence *>::iterator it = newEvents.begin();
while (it != newEvents.end()) {
if (!(*it)->eventObject()->allDay()) {
bool skip = false;
if (mFilterMode & FilterNonAllDay && !(*it)->eventObject()->allDay()) {
skip = true;
}
if (mFilterMode & FilterMultipleEventsPerNotebook) {
QString uid = (*it)->eventObject()->calendarUid();
if (alreadyAddedCalendarUids.contains(uid)) {
skip = true;
} else {
alreadyAddedCalendarUids.insert(uid);
}
}

if (skip) {
skippedEvents.append(*it);
it = newEvents.erase(it);
} else {
Expand Down
13 changes: 9 additions & 4 deletions src/calendaragendamodel.h
Expand Up @@ -44,24 +44,27 @@ class CalendarAgendaModel : public QAbstractListModel, public QQmlParserStatus
{
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)
Q_PROPERTY(FilterModes filterMode READ filterMode WRITE setFilterMode NOTIFY filterModeChanged)

public:
enum AgendaRoles {
EventObjectRole = Qt::UserRole,
OccurrenceObjectRole,
SectionBucketRole
};
Q_ENUM(AgendaRoles)

enum FilterMode {
FilterNone,
FilterNonAllDay
FilterNonAllDay = 0x1,
FilterMultipleEventsPerNotebook = 0x2
};
Q_ENUM(FilterMode)
Q_DECLARE_FLAGS(FilterModes, FilterMode)
Q_FLAG(FilterModes)

explicit CalendarAgendaModel(QObject *parent = 0);
virtual ~CalendarAgendaModel();
Expand Down Expand Up @@ -109,4 +112,6 @@ private slots:
int mFilterMode;
};

Q_DECLARE_OPERATORS_FOR_FLAGS(CalendarAgendaModel::FilterModes)

#endif // CALENDARAGENDAMODEL_H

0 comments on commit 2537ef4

Please sign in to comment.