Extender api review round 4

Rob Scheepmaker r.scheepmaker at student.utwente.nl
Tue Sep 2 13:58:15 CEST 2008


Hello all,

I think it's a good idea to finalize the extender api discussion. I've scanned 
through the previous threat, and I believe the following suggestions are still 
'open' (please say so if I've missed anything):

- allow using qgraphicsitems in ExtenderItems instead of just QGWs. I agree 
with this suggestion, just haven't implemented it yet. I will soon.

- No virtual initExtenderItem in Applet. I really doubt this is a good idea. 
It would either mean moving this virtual to another class, and I really don't 
want to require people to have to re-implement other classes then Applet (or 
PopupApplet). Other solution would be a signal/slot mechanism. Advantage of 
this would be that it won't break binary compatibility, but that isn't really 
an issue since I believe it's kind of decided that binary compatibility would 
only be an issue after 4.2.

- No extender() in Applet. That is certainly a possibility. This point is 
mainly an aesthetic one. Personally, I think having the extender() function 
leads to nicer code. In practice, I can't think of a situation where you don't 
need a pointer to your extender after creating it. So why don't track that for 
your applet, and spare your applet the hassle of having an extra member for 
something that is already known internally?
Of course, this entire point is more a matter of taste, and if a lot of people 
object to having this function, I'll remove it. I just think it's nice to 
have. And just being able to do

new Extender(this)

rocks... ;)

Then there are 2 things that I wanted to bring under your attention, because 
I'm not sure it's done the right way... these are:

- Theming. Currently the dragger svg, contains a preferred-icon-size-hint 
element. This decides which size the icons in the draghandle will get, and 
also decides which vertical size the draghandle gets (iconsize + margins). I 
can certainly see different themes having different emphasis on saving screen 
real estate vs having nice, big, easy to hit with you mouse icons, and this 
makes it possible. It does however feel a bit hackish, and was wondering if 
there's a nicer way to accomplish this.

- Detached extender items. When an ExtenderItem gets detached, the 
ExtenderApplet applet (in playground atm) get's loaded, and the ExtenderItem 
is added to it's extender (since ExtenderItems are always contained in an 
extender). Not only does this bring the issue of a part of libplasma being 
dependent on an applet, it also feels wrong to have a certain applet hardcoded 
as the default extender container. Possible solution for that last problem 
would maybe be something like associating applets with a plasma/extenderitem 
mime type or something like that, but still, I think it should work without 
requiring the user to have a certain applet installed. Any suggestions?

Cheers,
Rob Scheepmaker (pinda)

-


More information about the Plasma-devel mailing list