On April 6, 2010, Frederik Gladhorn wrote: > What if I get a second sourceRequestEvent() for the same source string? Do
if the source already exists, it won't get called again. sourceRequestEvent is *only* called when the source does not exist. once it exists, calls are made to updateSourEvent as needed (e.g. due to a connected visualization requesting a polling interval when calling connectSource). the DataEngine may also decide to update the source on its own. there are a few issues i see in the current code in playground: a) eventData["StartDate"] = model->index(row, Akonadi::CalendarModel::DateTimeStart).data().toDateTime().toString(); that last toString() probably isn't needed. puting the QDateTime object in there is just fine. b) this is in akonadiCalendarSourceRequest, but it should be in initAkonadiCalendar (to avoid multiple connections): connect(m_calendarModel, SIGNAL(rowsInserted(QModelIndex, int , int )), this, SLOT(calendarModelRowsInserted(QModelIndex,int,int))); c) when a source is requested, akonadiCalendarSourceRequest is called. this creates a new Akonadi::DateRangeFilterProxyModel and that remains around for the lifetime of the engine. what i'd recommend here is creating a subclass of Plasma::DataContainer that has the Akonadi::DateRangeFilterProxyModel as a member. then in sourceRequetEvent, the engine could just do something like: initAkonadiCalendar(); addSource(new AkonadiDateRangeSource(name, start, end)); return true; this hypothetical AkonadiDateRangeSource class would subclass Plasma::DataContainer, call setObjectName(name) in its constructor, connect the signals to itself which call setData() on itself as appropriate and then setNeedsUpdate() (which schedules the signals for the visualizations that are connected). this way, when the source goes out of use (e.g. all the visualizations disconnect from it) then the Akonadi::DateRangeFilterProxyModel would also get deleted. it would also move all of the Akonadi code related to the events date ranges out into its own class (nice for code clarity) -- Aaron J. Seigo humru othro a kohnu se GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA EE75 D6B7 2EB1 A7F1 DB43 KDE core developer sponsored by Qt Development Frameworks _______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel