[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-panel-devel
Subject: Re: Review Request: Preconfigurable plasmoids
From: "Aaron J. Seigo" <aseigo () kde ! org>
Date: 2011-04-29 10:24:58
Message-ID: 20110429102458.31048.42761 () vidsolbach ! de
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/101251/#review2961
-----------------------------------------------------------
plasma/pluginloader.cpp
<http://git.reviewboard.kde.org/r/101251/#comment2540>
coding style: 'if (' not 'if('
same for all lines that follow in this patch.
plasma/pluginloader.cpp
<http://git.reviewboard.kde.org/r/101251/#comment2539>
config does not need to cascade. you only need a KSimpleConfig here
plasma/pluginloader.cpp
<http://git.reviewboard.kde.org/r/101251/#comment2541>
applet->config() probably does not return the actual config group, but a \
temporary group that gets migrated later. i assume this works (and that you have test \
it :). this would be overly easy to break, however.
as a result, i'd like to see an automated test in kdelibs/plasma/tests/ that \
tests this mechanism, otherwise it will be far too easy for it to break accidentally \
leaving all widgets that use it non-operational.
- Aaron J.
On April 29, 2011, 1:09 a.m., David Palacio wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/101251/
> -----------------------------------------------------------
>
> (Updated April 29, 2011, 1:09 a.m.)
>
>
> Review request for Plasma.
>
>
> Summary
> -------
>
> There is some code duplication in that some plasmoids share very much of program \
> logic but actually differ in just a setting. E.g. the recently made \
> ShowActivityManager plasmoid, which just is a DBus call launcher. The Icon plasmoid \
> is an example of this made right. I'd like to have more generic plasmoids. Even \
> better, I'd like to have an easy way to configure them. \
>
> Let's see the code. config.patch shows a way to load a config metadata file and \
> fill a designated plasmoid with the configuration data (metadata.desktop). We \
> search for a X-Plasma-ConfigApplet property that defines the plasmoid to configure \
> and load. Additional properties define the plasmoid settings. This allows us, for \
> example, to easily provide access to any webservice without code duplication. \
>
>
> Diffs
> -----
>
> plasma/data/servicetypes/plasma-applet.desktop 8fabddb
> plasma/pluginloader.cpp e57cac5
>
> Diff: http://git.reviewboard.kde.org/r/101251/diff
>
>
> Testing
> -------
>
> Loading of plasmoids works.
>
> Testcase: Install these widgets:
> http://kde-look.org/content/show.php/Label?content=99881
> http://kde-look.org/content/show.php?content=141270
>
> Add configlabel to desktop.
>
>
> Thanks,
>
> David
>
>
[Attachment #5 (text/html)]
<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 \
solid;"> <tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="http://git.reviewboard.kde.org/r/101251/">http://git.reviewboard.kde.org/r/101251/</a>
</td>
</tr>
</table>
<br />
<div>
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; \
border-collapse: collapse; margin: 2px padding: 2px;"> <thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; \
font-size: 9pt; padding: 4px 8px; text-align: left;"> <a \
href="http://git.reviewboard.kde.org/r/101251/diff/3/?file=15592#file15592line110" \
style="color: black; font-weight: bold; text-decoration: \
underline;">plasma/pluginloader.cpp</a> <span style="font-weight: normal;">
(Diff revision 3)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">Applet \
*PluginLoader::loadApplet(const QString &name, uint appletId, const QVariantList \
&args)</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" \
align="right"><font size="2"></font></th> <td bgcolor="#c5ffc4" width="50%"><pre \
style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td> <th \
bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid \
#C0C0C0;" align="right"><font size="2">110</font></th> <td bgcolor="#c5ffc4" \
width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span \
class="k">if</span><span class="p">(</span><span class="o">!</span><span \
class="n">offer</span><span class="o">-></span><span \
class="n">property</span><span class="p">(</span><span \
class="s">"X-Plasma-ConfigApplet"</span><span class="p">).</span><span \
class="n">toString</span><span class="p">().</span><span \
class="n">isEmpty</span><span class="p">())</span> <span \
class="p">{</span></pre></td> </tr>
</tbody>
</table>
<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; \
white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">coding \
style: 'if (' not 'if('
same for all lines that follow in this patch.</pre>
</div>
<br />
<div>
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; \
border-collapse: collapse; margin: 2px padding: 2px;"> <thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; \
font-size: 9pt; padding: 4px 8px; text-align: left;"> <a \
href="http://git.reviewboard.kde.org/r/101251/diff/3/?file=15592#file15592line119" \
style="color: black; font-weight: bold; text-decoration: \
underline;">plasma/pluginloader.cpp</a> <span style="font-weight: normal;">
(Diff revision 3)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">Applet \
*PluginLoader::loadApplet(const QString &name, uint appletId, const QVariantList \
&args)</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" \
align="right"><font size="2"></font></th> <td bgcolor="#c5ffc4" width="50%"><pre \
style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td> <th \
bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid \
#C0C0C0;" align="right"><font size="2">119</font></th> <td bgcolor="#c5ffc4" \
width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span \
class="n">KConfig</span> <span class="n">desktop</span><span class="p">(</span><span \
class="n">offer</span><span class="o">-></span><span \
class="n">entryPath</span><span class="p">(),</span> <span \
class="n">KConfig</span><span class="o">::</span><span \
class="n">CascadeConfig</span><span class="p">,</span> <span \
class="s">"services"</span><span class="p">);</span></pre></td> </tr>
</tbody>
</table>
<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; \
white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">config does \
not need to cascade. you only need a KSimpleConfig here</pre> </div>
<br />
<div>
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; \
border-collapse: collapse; margin: 2px padding: 2px;"> <thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; \
font-size: 9pt; padding: 4px 8px; text-align: left;"> <a \
href="http://git.reviewboard.kde.org/r/101251/diff/3/?file=15592#file15592line121" \
style="color: black; font-weight: bold; text-decoration: \
underline;">plasma/pluginloader.cpp</a> <span style="font-weight: normal;">
(Diff revision 3)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">Applet \
*PluginLoader::loadApplet(const QString &name, uint appletId, const QVariantList \
&args)</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" \
align="right"><font size="2"></font></th> <td bgcolor="#c5ffc4" width="50%"><pre \
style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td> <th \
bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid \
#C0C0C0;" align="right"><font size="2">121</font></th> <td bgcolor="#c5ffc4" \
width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span \
class="n">KConfigGroup</span> <span class="n">config</span> <span class="o">=</span> \
<span class="n">applet</span><span class="o">-></span><span \
class="n">config</span><span class="p">();</span></pre></td> </tr>
</tbody>
</table>
<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; \
white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: \
break-word;">applet->config() probably does not return the actual config group, \
but a temporary group that gets migrated later. i assume this works (and that you \
have test it :). this would be overly easy to break, however.
as a result, i'd like to see an automated test in kdelibs/plasma/tests/ that \
tests this mechanism, otherwise it will be far too easy for it to break accidentally \
leaving all widgets that use it non-operational.</pre> </div>
<br />
<p>- Aaron J.</p>
<br />
<p>On April 29th, 2011, 1:09 a.m., David Palacio wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" \
style="background-image: \
url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); \
background-position: left top; background-repeat: repeat-x; border: 1px black \
solid;"> <tr>
<td>
<div>Review request for Plasma.</div>
<div>By David Palacio.</div>
<p style="color: grey;"><i>Updated April 29, 2011, 1:09 a.m.</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: \
1px solid #b8b5a0"> <tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: \
-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: \
break-word;">There is some code duplication in that some plasmoids share very much of \
program logic but actually differ in just a setting. E.g. the recently made \
ShowActivityManager plasmoid, which just is a DBus call launcher. The Icon plasmoid \
is an example of this made right. I'd like to have more generic plasmoids. Even \
better, I'd like to have an easy way to configure them. \
Let's see the code. config.patch shows a way to load a config metadata file and \
fill a designated plasmoid with the configuration data (metadata.desktop). We search \
for a X-Plasma-ConfigApplet property that defines the plasmoid to configure and load. \
Additional properties define the plasmoid settings. This allows us, for example, to \
easily provide access to any webservice without code duplication. \
</pre> </td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: \
1px solid #b8b5a0"> <tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: \
-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: \
break-word;">Loading of plasmoids works.
Testcase: Install these widgets:
http://kde-look.org/content/show.php/Label?content=99881
http://kde-look.org/content/show.php?content=141270
Add configlabel to desktop.</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>plasma/data/servicetypes/plasma-applet.desktop <span style="color: \
grey">(8fabddb)</span></li>
<li>plasma/pluginloader.cpp <span style="color: grey">(e57cac5)</span></li>
</ul>
<p><a href="http://git.reviewboard.kde.org/r/101251/diff/" style="margin-left: \
3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>
_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic