CC&#39;ing to plasma-devel since this might be interesting for others.<br><br><div class="gmail_quote">2010/3/18 Christophe Olinger <span dir="ltr">&lt;<a href="mailto:olingerc@binarylooks.com">olingerc@binarylooks.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hi Alessandro and Marco<br>
(should I post this to plasma-devel?)<br>
<br>
Currently I am going through Alessandro&#39;s work class by class and try<br>
to understand how you planned the whole media center. It’s amazing how<br>
much you have done already! Unfortunately, at the same time I am<br>
learning all about KDE and Plasma development so it all goes much<br>
slower than I want and with lots of going through plasma code and<br>
trying to find stuff.<br>
<br>
I want to use as much as possible of what you have done already so<br>
here a quick heads up on how I wanted to proceed. Please be very<br>
strict about how you imagined it and tell me what to change, I am kind<br>
of inexperienced in all this:<br>
<br>
1) you created the plasmediacenter shell which you use as a<br>
springboard to load all your stuff. A standard corona, your<br>
MediaCenter::MediaContainment then browser, playlist, controller,<br>
player. The following things come to my mind (please correct me if I’m<br>
wrong):<br>
•       independently of whether we are looking at pictures, videos or<br>
music, you wanted to always have these 4 components<br></blockquote><div> </div><div>right <br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

•       From the previous I suppose you wanted to do all these media<br>
consumption types in the same workspace, the user would not use a<br>
different app when he wants to look at pictures than the app he uses<br>
to listen to Music.<br></blockquote><div><br>right, that&#39;s Media Center :)<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

•       Maybe you just wanted to start from something generic and later<br>
wanted to adapt the workspace to what the user currently does.<br></blockquote><div><br>pretty correct assumption.<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<br>
In my mind, I actually only thought about a mediacenter for pictures,<br>
but I really want my work to fit into yours. This is how I imagined my<br>
app:  (SEE MOCKUP)<br></blockquote><div></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
•       On plasmamediacenter_pictures startup (or switch to “picturemode”<br>
within plasmamediacenter) we will see a full screen browser (or a<br>
browser that fills completely its dedicated space, for example if we<br>
have the plasma-netbook panel visible)<br></blockquote><div> </div><div>We already have this behavior with the browser applet.<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

•       This browser will be in grid mode and shows picture thumbnails (with<br>
or without names)<br>
•       Navigation will be done via a bottom horizontally maximized widget<br>
with an upper directory button and home button. At the home screen we<br>
can also select to browse via nepomuk or other models (flickr...)<br>
(bottom, because I think it is easier to reach with your figures if<br>
you have a tablet, maybe top is easier?)<br>
•       At the right there will be a vertically maximized widget that<br>
contains the following:<br>
o       A widget that allows switching between grid and single picture mode<br>
(icons changes depending on current mode)<br></blockquote><div><br>Again, mediabrowser applet already does this.<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

o       A widget that allows to set a zoom state for the grid browser (4x4,<br>
8x8, 16x16,...) or in  single browser mode (unnecessary for pinch to<br>
zoom)<br>
o       rotate button<br>
o       tag widget (tagging on the item will be too small I think<br>
•       both side panels can be hidden using a button on the bottom right<br>
•       tapping a picture selects it, double tapping switches between single<br>
/ grid mode<br>
•       dragging the grid view allows for scrolling<br>
•       maybe I can allow a list view later<br>
•       flicking in single picture mode switches picture<br>
•       pinch to zoom<br>
<br>
Your browser already has most of the necessary stuff so here are some questions:<br></blockquote><div><br>Well i do not think is worth developing your own app and then merge your
 work with Plasma MC.<br>
You&#39;d better start hacking directly on MC, imho, sending patches. This 
way we can guide you for the first steps and then you can keep going on 
your own.<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
•       For my browser should I create a new mediabrowser_pics class in<br>
which I create a new abstractmediaitemview object with the necessary<br>
configurations and based on your grid:view? All the nice models and<br>
stuff are already in this class.<br></blockquote><div><br>ATM we have a video dataengine that expects plugins for it to be developed. YouTube is already there. The video-dataengine makes it easier developing a plugin for the mediabrowser applet. This way you simply write your own QAbstractItemModel that fetches from the video-dataengine and then package it all inside a ModelPackage (the abstract interfaces for mediabrowser-applet plugins).<br>
 <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
•       I don’t want to change your mediabrowser class and applet, so if I<br>
want to create a new applet, I have to duplicate all your basic<br>
mediabrowser classes (abstractitemview, grid view and the models), or<br>
is it possible to create a second .desktop file in a directory which<br>
would create an applet based on the same classes but with other<br>
configuration settings.<br></blockquote><div><br>Again, i feel you should directly contribute with patches. Do not be scared, we can give you hints :-)<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

•       How can I do this without duplicating stuff, or do I have to make<br>
your current code more generic? (taking the abstractitemview, gridview<br>
and stuff into some sort of libs directory?)<br>
•       Should I create a new mediacontainment, since I would not really use<br>
your autohide feature, or is it easily turned off by configuring an<br>
object of type mediacontainment?<br>
•       I could also use a generic plasma containment<br>
•       The bottom and right panel would be new applets? Should I base them<br>
on plasma panels? I could take your mediacontroller applet to inspire<br>
me.<br>
•       So basically I create a new shell which does the following:<br>
o       new corona<br>
o       new containment (plasma or media containment?)<br>
o       configure containment (or is this better done in a new containment class?)<br>
o       add browser applet<br>
o       add bottom and right panel widgets<br>
o       add player<br>
•       The single browser mode would be an actual player applet<br>
<br>
The whole thing is easily adaptable to a video browser I think. we<br>
just need to add the playback controller widget. And somewhere a<br>
playlist. Then we also have a music applet already. Hmmm. I hope this<br>
is not completely different from what you planned.<br></blockquote><div><br>This is too similar instead. See above :-)<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<br>
BTW, I think I’ll adapt the whole thing to a touch interface<br>
immediately, that means no hover events or rightclick events. (Maybe I<br>
can keep hover? for the netbook or desktop even)<br>
<br>
Okay, that was a brain dump par excellence. I hope you see what I want to say.<br>
<br>
<br>
Cheers,<br>
<br>
Chris<br>
</blockquote></div><br><br clear="all"><br>-- <br>Alessandro Diaferia<br>KDE Developer<br>KDE e.V. member<br><br>