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





 <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">That's some very good quality code :)

This API is useful, so I agree to the idea. We need a way to configure handler preferences, especially for tube apps. You will definitely need to distinguish between requested=true/false (think of krfb/krdc) and perhaps TargetHandleType=1/2 for extensibility.

I am not totally sure how this is going to blend with the .desktop files, but here are my thoughts. There are 2 kinds of .desktop files:

1) Ones that specify actions to start (channels with requested=true). These can populate the CL with actions on contacts for example. For this kind, we will either need a mechanism to group together apps that do the same action (for example vino and krfb) and use this API to know which one is the preferred app to use, or we can let them both be there as actions with the app name in parenthesis or something like that.

2) Ones that specify notification messages for the approver. Here the approver will have to choose the preferred app and use its .desktop file as a source for the messages. I think it should be possible to use this API for this purpose.

One last thing. I don't really like having desktop sharing in the API. I think that all tube apps should be equal and use the .desktop file specification. We may want to remove it one day (say krfb breaks and nobody maintains it...) or we may want to exchange it with another app that speaks another protocol (other than rfb). The API should stay clean of these changes. But in any case, I think that for the moment it can stay and we can remove it after the whole thing with the .desktop files has been implemented (we don't keep BC anyway).</pre>
 <br />







<p>- George</p>


<br />
<p>On November 12th, 2012, 4:20 p.m., Daniele Elmo Domenichelli 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 Telepathy.</div>
<div>By Daniele Elmo Domenichelli.</div>


<p style="color: grey;"><i>Updated Nov. 12, 2012, 4:20 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;">Together with https://git.reviewboard.kde.org/r/107169 , I would like to have methods to set and get preferred handlers, so here it is, documentation included.

In future, when we have the .desktop magic working, I would like to add methods to retrieve available handlers for one channel type in order to have some interface where we can configure them, for now I suggest we start using preferredHandlerForXXX everywhere.</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;">Run this test, works as expected both reading and writing, but I'm too lazy to write proper unit tests, since we don't have them yet in ktp-common-internals (yes, we definitely should have them, but that's another patch)

    kDebug() << KTp::Handlers::defaultHandlerForTextChat();
    kDebug() << KTp::Handlers::defaultHandlerForFileTransfer();
    kDebug() << KTp::Handlers::defaultHandlerForAudioVideo();
    kDebug() << KTp::Handlers::defaultHandlerForDesktopSharing();

    kDebug() << KTp::Handlers::preferredHandlerForTextChat();
    kDebug() << KTp::Handlers::preferredHandlerForFileTransfer();
    kDebug() << KTp::Handlers::preferredHandlerForAudioVideo();
    kDebug() << KTp::Handlers::preferredHandlerForDesktopSharing();

    kDebug() << KTp::Handlers::preferredHandlerForTextChat(QLatin1String("A"));
    kDebug() << KTp::Handlers::preferredHandlerForFileTransfer(QLatin1String("B"));
    kDebug() << KTp::Handlers::preferredHandlerForAudioVideo(QLatin1String("C"));
    kDebug() << KTp::Handlers::preferredHandlerForDesktopSharing(QLatin1String("D"));

    KTp::Handlers::setPreferredHandlerForTextChat(QLatin1String("E"));
    KTp::Handlers::setPreferredHandlerForFileTransfer(QLatin1String("F"));
    KTp::Handlers::setPreferredHandlerForAudioVideo(QLatin1String("G"));
    KTp::Handlers::setPreferredHandlerForDesktopSharing(QLatin1String("H"));

    kDebug() << KTp::Handlers::preferredHandlerForTextChat(QLatin1String("I"));
    kDebug() << KTp::Handlers::preferredHandlerForFileTransfer(QLatin1String("J"));
    kDebug() << KTp::Handlers::preferredHandlerForAudioVideo(QLatin1String("K"));
    kDebug() << KTp::Handlers::preferredHandlerForDesktopSharing(QLatin1String("L"));

    KTp::Handlers::unsetPreferredHandlerForTextChat();
    KTp::Handlers::unsetPreferredHandlerForFileTransfer();
    KTp::Handlers::unsetPreferredHandlerForAudioVideo();
    KTp::Handlers::unsetPreferredHandlerForDesktopSharing();

    kDebug() << KTp::Handlers::preferredHandlerForTextChat();
    kDebug() << KTp::Handlers::preferredHandlerForFileTransfer();
    kDebug() << KTp::Handlers::preferredHandlerForAudioVideo();
    kDebug() << KTp::Handlers::preferredHandlerForDesktopSharing();
</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>KTp/CMakeLists.txt <span style="color: grey">(0fd12f084384c4df308707b8879e51d8b5908c69)</span></li>

 <li>KTp/handlers.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>KTp/handlers.cpp <span style="color: grey">(PRE-CREATION)</span></li>

</ul>

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




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








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