<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/101786/">http://git.reviewboard.kde.org/r/101786/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On June 27th, 2011, 8:33 a.m., <b>Sebastian Trueg</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I will have to review this project in general as I did a while back before looking at the code:
The user is not really concerned with the status of any Nepomuk services since that is an implementation detail. Thus, your main widget is not very end user friendly. It could be a great developer tool though if it also provided the possibility to start and stop services.

The there are a few issues:
- The tooltip just shows &quot;Running Running Running Running Running&quot; without any details
- The menu has two quit actions
- The systray applet does not provide actions to suspend/resume strigi or show its detailed status.
- I have two entries for the strigi service here

Also I see no need for a plugin system when there is only one single plugin.

So for now I would have to vote against this merge as it does not bring any useful features to the user while at the same time removing essential ones.</pre>
 </blockquote>




 <p>On June 27th, 2011, 9:12 a.m., <b>Artem Serebriyskiy</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">There are more plugins, they are just autogenerated at build time. Separate plugins are necessary only if service want&#39;s to export some functionality to user, like suspend/resume for strigi. I will provide separate backend for backup too.

About issues:
1. Well, I will see what can i do, because tooltips are not working on my system at all.
About other issues - well, it is possible that I commited really wrong version, but  all other issues seem incorrect( no offence) ( or may be I don&#39;t understand them correctly). See attached screensoot please:
2. The menu has one quit action - in context menu.
3. The systray applet do provide actions for suspend/resume strigi, both from widget and from context menu. If this actions don&#39;t work, then it is a bug and I will fix it.
4. There is one entry for strigi service.

Other:
I think the question about role of this applet - for developer or for user - should be solved later, after we solve this weird situation with 4 issues.

Please, attach your screenshot too.
</pre>
 </blockquote>





 <p>On June 28th, 2011, 4:19 p.m., <b>Sebastian Trueg</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I would not know how to attach a screenshot. Here is a link though: http://simplest-image-hosting.net/jpg-0-plasma-desktopt22088

And here the console log (I renamed it to nepomukcontroller2 to avoid a collision with the one from kde-runtime since I build from your scratch repo): 

nepomukcontroller2(26210) KXMLGUIClient::setXMLFile: cannot find .rc file &quot;systraynepomukfilewatchpluginui.rc&quot; for component &quot;nepomukcontroller2&quot; 
nepomukcontroller2(26210) Nepomuk::SystrayPluginManager::SystrayPluginManager: Load plugin: &quot;Nepomuk file watch service system tray plugin&quot;
nepomukcontroller2(26210) KXMLGUIClient::setXMLFile: cannot find .rc file &quot;systraynepomukqueryservicepluginui.rc&quot; for component &quot;nepomukcontroller2&quot; 
nepomukcontroller2(26210) Nepomuk::SystrayPluginManager::SystrayPluginManager: Load plugin: &quot;Nepomuk query service  system tray plugin&quot;
nepomukcontroller2(26210) KXMLGUIClient::setXMLFile: cannot find .rc file &quot;systraynepomukstoragepluginui.rc&quot; for component &quot;nepomukcontroller2&quot; 
nepomukcontroller2(26210) Nepomuk::SystrayPluginManager::SystrayPluginManager: Load plugin: &quot;Nepomuk storage  system tray plugin&quot;
nepomukcontroller2(26210) KXMLGUIClient::setXMLFile: cannot find .rc file &quot;systraystrigipluginui.rc&quot; for component &quot;nepomukcontroller2&quot; 
nepomukcontroller2(26210) Nepomuk::SystrayPluginManager::SystrayPluginManager: Load plugin: &quot;Strigi system tray plugin&quot;
nepomukcontroller2(26210) KXMLGUIClient::setXMLFile: cannot find .rc file &quot;systraystrigipluginui.rc&quot; for component &quot;nepomukcontroller2&quot; 
nepomukcontroller2(26210) Nepomuk::SystrayPluginManager::SystrayPluginManager: Load plugin: &quot;Strigi system tray plugin&quot;
nepomukcontroller2(26210) Nepomuk::SystemTray::pluginInitialized: Plugin:  &quot;Nepomuk file watch service&quot;  finish initialization
nepomukcontroller2(26210) Nepomuk::SystrayServiceWidget::SystrayServiceWidget: Plugin already initialized
nepomukcontroller2(26210) Nepomuk::SystrayServiceWidget::doInit: Failed to retrieve menu
nepomukcontroller2(26210) Nepomuk::SystemTray::updateToolTip: Plugin  &quot;Nepomuk file watch service&quot; changed status to  &quot;Not started&quot;
nepomukcontroller2(26210) Nepomuk::SystemTray::pluginInitialized: Plugin:  &quot;Nepomuk query service&quot;  finish initialization
nepomukcontroller2(26210) Nepomuk::SystrayServiceWidget::SystrayServiceWidget: Plugin already initialized
nepomukcontroller2(26210) Nepomuk::SystrayServiceWidget::doInit: Failed to retrieve menu
nepomukcontroller2(26210) Nepomuk::SystemTray::updateToolTip: Plugin  &quot;Nepomuk query service&quot; changed status to  &quot;Not started&quot;
nepomukcontroller2(26210) Nepomuk::SystemTray::pluginInitialized: Plugin:  &quot;Nepomuk storage&quot;  finish initialization
nepomukcontroller2(26210) Nepomuk::SystrayServiceWidget::SystrayServiceWidget: Plugin already initialized
nepomukcontroller2(26210) Nepomuk::SystrayServiceWidget::doInit: Failed to retrieve menu
nepomukcontroller2(26210) Nepomuk::SystemTray::updateToolTip: Plugin  &quot;Nepomuk storage&quot; changed status to  &quot;Not started&quot;
nepomukcontroller2(26210) Nepomuk::SystemTray::pluginInitialized: Plugin:  &quot;strigi_basic&quot;  finish initialization
nepomukcontroller2(26210) Nepomuk::SystrayServiceWidget::SystrayServiceWidget: Plugin already initialized
nepomukcontroller2(26210) Nepomuk::SystrayServiceWidget::doInit: Failed to retrieve menu
nepomukcontroller2(26210) Nepomuk::SystemTray::updateToolTip: Plugin  &quot;strigi_basic&quot; changed status to  &quot;Not started&quot;
nepomukcontroller2(26210) Nepomuk::SystemTray::updateToolTip: Plugin  &quot;strigi_basic&quot; changed status to  &quot;Not started&quot;
nepomukcontroller2(26210) Nepomuk::SystemTray::pluginInitialized: Plugin:  &quot;strigi_basic&quot;  finish initialization
nepomukcontroller2(26210) Nepomuk::SystrayServiceWidget::SystrayServiceWidget: Plugin already initialized
nepomukcontroller2(26210) Nepomuk::SystrayServiceWidget::doInit: Failed to retrieve menu
nepomukcontroller2(26210) Nepomuk::SystemTray::updateToolTip: Plugin  &quot;strigi_basic&quot; changed status to  &quot;Not started&quot;
nepomukcontroller2(26210) Nepomuk::SystemTray::updateToolTip: Plugin  &quot;strigi_basic&quot; changed status to  &quot;Not started&quot;
nepomukcontroller2(26210) Nepomuk::SystemTray::updateToolTip: Plugin  &quot;Nepomuk query service&quot; changed status to  &quot;Running&quot;
nepomukcontroller2(26210) Nepomuk::SystemTray::updateToolTip: Plugin  &quot;Nepomuk storage&quot; changed status to  &quot;Running&quot;</pre>
 </blockquote>





 <p>On June 28th, 2011, 10:08 p.m., <b>Artem Serebriyskiy</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Ok. I am sorry for all this mess. I was sure that using the same name for new application would be more convinient. In contrary, it creates hard to catch bugs.

So, I was able to reproduce last 2 issues after I do the same thing - rename nepomukcontroller to another name. As you can see in 
&gt;&gt; nepomukcontroller2(26210) KXMLGUIClient::setXMLFile: cannot find .rc file &quot;systraystrigipluginui.rc&quot; for component &quot;nepomukcontroller2&quot;
plugin failed to load ui. Because of this, it failed to create menu and thus to provide any actions. The ui files location is determineg using apps name. I am not sure what name is used - name of executable or name given to KAboutData.

The issuse with 2 strigi plugins was caused by the same problem. It  looks like that ksycoca return 2 plugins for strigi service. One from location ~/kde/share/kde4/services/nepomukcontroller2 and one from ~/kde/share/kde4/services/nepomukcontroller. Because of this, plugin is loaded twice. Or it is possible that only one file actually exists, but ksycoca cached both entries.

Anyway, I renamed application myself. Now it is called nepomuksystray_qt. I hope this name is not in use. After install, you must have no messages like &quot;KXMLGUIClient::setXMLFile: cannot find .rc file ... &quot; and all actions should appear.
If you still will have 2(3,4) entries for strigi service, then check the output please. It now writes things like:
&gt;&gt; Nepomuk::SystrayPluginManager::SystrayPluginManager: Load plugin: &lt;PLUGIN NAME&gt; defined in &lt;PATH TO DESKTOP FILE&gt;
There must exist only one plugin for every service. If you have more then one, then remove extra .desktop files and update ksycoca.

The changes are only in repo, I wouldn&#39;d publish a patch here until I get a conformation from you.

Thanks for your patience and sorry again for this mess.
</pre>
 </blockquote>





 <p>On June 29th, 2011, 7:50 a.m., <b>Sebastian Trueg</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">No need to be sorry. Apparently I did cause it myself by not renaming properly. :/

Now it works, here, too.

Now how about some start/stop service actions?</pre>
 </blockquote>





 <p>On June 29th, 2011, 4:05 p.m., <b>Artem Serebriyskiy</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">No problem with that. But I still think that this system tray should be for user too. 
So, I have added a so-called &quot;development mode&quot;. In development mode, you can start/stop services and plugin may export extra actions. To enable this mode you must edit config file ( ~/.kde/share/config/nepomuksystray_qtrc ) and add following lines:
[main]
devMode=true

Then restart system tray. You will see start/stop actions only in main widget - not in context menu.</pre>
 </blockquote>





 <p>On July 4th, 2011, 9:20 a.m., <b>Sebastian Trueg</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I checked the current state with the backup plugin. It makes sense to have this in the systray. But:

1. The systray tooltip provides information about the number of running services. This is of no interest to the user. The current systray shows the indexing state. While this is rather random it puts users at ease when nepomuk uses resources. It might make more sense to allow the plugins to provide useful information in some way (that is if you are fixed on the whole plugin design which IMHO is a bit over-engineered).

2. The main widget is not very pretty. It shows non-localized service names and uses a list with buttons that do not fit the rest of KDE. It would be much more helpful to have generic information in there like the current systray widget does. Seeing the state of services is not interesting to the user. It is an implementation detail!

3. Having a developer mode which needs to be activated in a config file is like having no such mode at all. It would make more sense to provide a config dialog which allowed to set some &quot;advanced mode&quot;.</pre>
 </blockquote>





 <p>On July 4th, 2011, 11:02 a.m., <b>Artem Serebriyskiy</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">1. Ok. I will see what I can invent here.
2. The main widget is awfull, I know. I was never a good designer. I am currently trying to find someone who can create a good mockup that I can implement.
3. Well, I was afraid that if I create KCM for system tray applet, you will kill me in place :). There is a question: currently &#39;advanced mode&#39; must be enabled on application initialization. So switching to &#39;advanced mode&#39; will require KCM to restart applet(automatically, of course. No manual typing &#39;kquitapp blablabla&#39;). Is it ok with you ?  </pre>
 </blockquote>








</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">If it is too hard to do it dynamically restarting should be fine.</pre>
<br />








<p>- Sebastian</p>


<br />
<p>On June 27th, 2011, 9:35 p.m., Artem Serebriyskiy 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 Nepomuk.</div>
<div>By Artem Serebriyskiy.</div>


<p style="color: grey;"><i>Updated June 27, 2011, 9:35 p.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;">Merge project nepomuk-system-tray into kde-runtime.

(Quick note: There were a merge request about 6-8 month ago, it was done in bug tracker and I think it is long gone )

Description of the project: provides library and several runtime components ( well, currently one, plasma dataengine is in [slow] development ) for quering and displaying status(es) of nepomuk service(s).

2 main parts + plugins:
library - view independed, async, plugin-based framework that allow you to track status of the service
runtime/[systemtray] - current implementation of system tray, done with usual technologies ( no plasma/QML )
plugins/ - library with written plugin for strigi and build-time plugin autogeneration for other services.

Personal repo is git@git.kde.org:nepomuk-system-tray</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;">Testing:
( My machine ) GNU/Linux x86_64, 2.6.38.

Compiles, works. There are problems with resizing of main widget - Qt doesn&#39;t support automatic resizing of top-level windows, so a dirty-dirty hack is used.</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>nepomuk/controller/CMakeLists.txt <span style="color: grey">(76c452d)</span></li>

 <li>nepomuk/controller/Messages.sh <span style="color: grey">(ea4aa1e)</span></li>

 <li>nepomuk/controller/lib/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/lib/config.h.in <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/lib/nepomuksystray_export.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/lib/serverclient.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/lib/systrayplugin.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/lib/systrayplugin.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/lib/systraypluginmanager.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/lib/systraypluginmanager.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/main.cpp <span style="color: grey">(c14c165)</span></li>

 <li>nepomuk/controller/nepomukcontroller.desktop <span style="color: grey">(debbfff)</span></li>

 <li>nepomuk/controller/plugins/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/plugins/basic_template/nepomuksystray_template.desktop.in <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/plugins/basic_template/systraytemplatepluginui.rc.in <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/plugins/basic_template/templateplugin.cpp.in <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/plugins/basic_template/templateplugin.h.in <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/plugins/nepomuksystray_plugin.desktop <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/plugins/strigi/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/plugins/strigi/nepomuksystray_strigi.desktop <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/plugins/strigi/strigiplugin.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/plugins/strigi/strigiplugin.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/plugins/strigi/systraystrigipluginui.rc <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/main.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/mainWidget.ui <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/mainWindow.ui <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/mainwidget.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/mainwidget.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/nepomukcontroller.desktop <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/nepomukcontrollerrc <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/nepomukcontrollerui.rc <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/serviceWidget.ui <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/servicewidget.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/servicewidget.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/systray.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/runtime/systemtray/systray.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>nepomuk/controller/systray.h <span style="color: grey">(3e2adb6)</span></li>

 <li>nepomuk/controller/systray.cpp <span style="color: grey">(920877b)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/101786/diff/" style="margin-left: 3em;">View Diff</a></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Screenshots </h1>

<div>

 <a href="http://git.reviewboard.kde.org/r/101786/s/190/"><img src="http://git.reviewboard.kde.org/media/uploaded/images/2011/06/27/screenshot_nepomuksystemtray_400x100.png" style="border: 1px black solid;" alt="systray-on-dev-machin" /></a>

 <a href="http://git.reviewboard.kde.org/r/101786/s/192/"><img src="http://git.reviewboard.kde.org/media/uploaded/images/2011/06/27/screenshot_nepomuksystemtray-xephyr_400x100.png" style="border: 1px black solid;" alt="nepomuk-systray-xephyr" /></a>

</div>


  </td>
 </tr>
</table>








  </div>
 </body>
</html>