Review Request 125817: Add plugin system for Calendar events

Martin Klapetek martin.klapetek at gmail.com
Sat Oct 31 05:11:30 UTC 2015



> On Oct. 31, 2015, 2:08 a.m., David Edmundson wrote:
> > src/declarativeimports/calendar/daysmodel.h, line 44
> > <https://git.reviewboard.kde.org/r/125817/diff/4/?file=413167#file413167line44>
> >
> >     I think we need some sort of
> >     
> >     QStringList availablePlugins()
> >     
> >     setPlugins( QStringList plugins);

What for?


> On Oct. 31, 2015, 2:08 a.m., David Edmundson wrote:
> > src/declarativeimports/calendar/daysmodel.cpp, line 63
> > <https://git.reviewboard.kde.org/r/125817/diff/4/?file=413168#file413168line63>
> >
> >     who deletes it?

Right, needs a qDeleteAll in ~


> On Oct. 31, 2015, 2:08 a.m., David Edmundson wrote:
> > src/declarativeimports/calendar/daysmodel.cpp, line 167
> > <https://git.reviewboard.kde.org/r/125817/diff/4/?file=413168#file413168line167>
> >
> >     Are you sure this works?
> >     
> >     From what I see you're copying the event, then replacing the copy.
> >     
> >     (though the autos make it confusing, so I may be wrong)

Yes, it does work. This looks through the stored events and replaces the stored one with the one that is passed as the method argument.


> On Oct. 31, 2015, 2:08 a.m., David Edmundson wrote:
> > src/declarativeimports/calendar/daysmodel.cpp, line 179
> > <https://git.reviewboard.kde.org/r/125817/diff/4/?file=413168#file413168line179>
> >
> >     this can be an invalid index, best to check it
> >     
> >     (in each case we do this)

But then all it does is emit dataChanged() with invalid signal...but I'll add a check anyway.


> On Oct. 31, 2015, 2:08 a.m., David Edmundson wrote:
> > src/declarativeimports/calendar/daysmodel.cpp, line 209
> > <https://git.reviewboard.kde.org/r/125817/diff/4/?file=413168#file413168line209>
> >
> >     who owns this?
> >     
> >     Q_INVOKABLE tries to be clever, which basically means I never know.
> >     
> >     If QML owns it (which I think it does) you're potentially returning null values if this is called twice
> >     
> >     if you own it, you're leaking this if you have m_qmlData when the model is deleted

Ah, good spot. Should be owned by the model, ideally. All problems solved.


> On Oct. 31, 2015, 2:08 a.m., David Edmundson wrote:
> > src/declarativeimports/calendar/plasmacalendarintegration/calendareventsplugin.h, line 173
> > <https://git.reviewboard.kde.org/r/125817/diff/4/?file=413173#file413173line173>
> >
> >     Unless needed otherwise, I'd put the UID in the constructor.
> >     
> >     If a plugin uses this, you screw everything up

> If a plugin uses this, you screw everything up

I don't follow. Note that uid is not a mandatory property. You can have events without uid. As the comment above it says, it's useful only if you want to implement eventModified/eventRemoved (so that it can locate the events in the model), which in case of eg. holidays is not needed, cause they are not going to be modified/removed. So there's no need to make those plugins more complex for no reason.


> On Oct. 31, 2015, 2:08 a.m., David Edmundson wrote:
> > src/declarativeimports/calendar/plasmacalendarintegration/calendareventsplugin.h, line 202
> > <https://git.reviewboard.kde.org/r/125817/diff/4/?file=413173#file413173line202>
> >
> >     rather than this much docs, would it make sense to have a protected method that takes a list, then in this class you turn that into the hash?

Well if the only reason to do that is because "there's too much to read", then no :P


- Martin


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/125817/#review87768
-----------------------------------------------------------


On Oct. 28, 2015, 6:18 p.m., Martin Klapetek wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/125817/
> -----------------------------------------------------------
> 
> (Updated Oct. 28, 2015, 6:18 p.m.)
> 
> 
> Review request for Plasma and Daniel Vrátil.
> 
> 
> Repository: plasma-framework
> 
> 
> Description
> -------
> 
> This adds a simple plugin interface that can be subclassed
> and provide events integration with Plasma Calendar applet.
> 
> It's asynchronous and I've kept it deliberately simple.
> For now the Calendar tells the plugins which date range
> is being displayed, the plugins load the data and then
> emit the dataReady() signal containing the events.
> 
> The events are stored in a multihash for quick access
> by the Calendar's agenda part but also for overall
> easy-to-use (eg. in teh model data()).
> 
> The event data is stored in EventData class, which has
> a pretty self-explanatory members, except perhaps the
> "isMinor" one. The intention with this is to support
> namedays, where in some countries the calendars have
> different name every day. This is just a minor holiday
> and as such should not mark the calendar grid, otherwise
> the whole grid would be in a different color.
> 
> Putting the interface here might raise the question of
> depending on plasma-framework, but plugins provided by
> KDE can go to plasma-workspace and other 3rd party ones
> would just have to live with it. I don't think it will
> be a problem but if it turns out it is, we can rethink
> the placement.
> 
> 
> Diffs
> -----
> 
>   src/declarativeimports/calendar/CMakeLists.txt 40ead91 
>   src/declarativeimports/calendar/calendarplugin.cpp bafe80c 
>   src/declarativeimports/calendar/daysmodel.h a5bdac9 
>   src/declarativeimports/calendar/daysmodel.cpp 2d059a8 
>   src/declarativeimports/calendar/eventdatadecorator.h PRE-CREATION 
>   src/declarativeimports/calendar/eventdatadecorator.cpp PRE-CREATION 
>   src/declarativeimports/calendar/plasmacalendarintegration/CMakeLists.txt PRE-CREATION 
>   src/declarativeimports/calendar/plasmacalendarintegration/PlasmaCalendarIntegrationConfig.cmake.in PRE-CREATION 
>   src/declarativeimports/calendar/plasmacalendarintegration/calendareventsplugin.h PRE-CREATION 
>   src/declarativeimports/calendar/plasmacalendarintegration/calendareventsplugin.cpp PRE-CREATION 
>   src/declarativeimports/calendar/plasmacalendarintegration/eventdata_p.cpp PRE-CREATION 
>   src/declarativeimports/calendar/plasmacalendarintegration/plasmacalendarintegration_export.h PRE-CREATION 
> 
> Diff: https://git.reviewboard.kde.org/r/125817/diff/
> 
> 
> Testing
> -------
> 
> I have a simple KHolidays based plugin written (patch should be up later today)
> and patches in the Calendar applet.
> 
> Everything works as expected:
> * the days are marked as containing an event
> * the agenda part displays details of that event (name)
> 
> 
> Thanks,
> 
> Martin Klapetek
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20151031/ca0fe60c/attachment-0001.html>


More information about the Plasma-devel mailing list