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










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On March 12th, 2014, 2:10 p.m. UTC, <b>David Edmundson</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



<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="https://git.reviewboard.kde.org/r/116748/diff/2/?file=253427#file253427line357" style="color: black; font-weight: bold; text-decoration: underline;">global-presence-chooser.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 2)

    </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; ">void GlobalPresenceChooser::onUserActivatedComboChange(int index)</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">357</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="n">m_globalPresence</span><span class="o">-></span><span class="n">setPresence</span><span class="p">(</span><span class="n">presence</span><span class="p">);</span></pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">So we clear out the presence just before we activate now playing.

I can see two main problems:

1) the kded won't be able to restore the statusMessage when you deactivate

2) you're now in a race between us messaging the kded to start the now playing, and us telling each CM to change state and the kded monitoring that.

I can only imagine this making things even messier as we'll end up going

contact list -> kded: activateNowPlaying

kded -> CM: setStatusMessageTo("Now Listening to...")

contact list -> CM: setStatusMessage("")

CM -> KDED: I've changed presenceMessage!

I think if KDED is working as designed it would then disable the nowPlaying..

Either way: we're in a set of races trying to set the message to multiple things at once. 
</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I don't think this is much of an issue with both presence changers (applet and chooser) having been designed such that the presences are fairly close to hard-coded as far as the application is concerned. ie. Every status message is pretty well settable from the other irregardless of which presence + status message was just set. nowPlaying shouldn't be above a custom presence + status message pairing. Re-entering a custom status message state is manually accomplished instead because kded sees that nowPlaying is just filling another slot that must neccessary be initially empty, just like the model expects from nowPlaying, where the presence is a variable constant which the status message isn't tied to.
 
Ideally disabling the nowPlaying plugin works from 
a) a single application, with no option but to put the configuration in the most user-friendly place possible.
b) possibly is configured -only- in the systemsettings and enabled / disabled by kconfig from elsewhere in a single user-facing place.

I don't necessarily prefer disabling plugins in the kded automatically, but I think that a clean and consistently interacting set of agents and applications should take individual care of cleanup of configured status plugins on presence change instead.</pre>
<br />




<p>- James</p>


<br />
<p>On March 12th, 2014, 6:50 a.m. UTC, James Smith wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://git.reviewboard.kde.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Telepathy.</div>
<div>By James Smith.</div>


<p style="color: grey;"><i>Updated March 12, 2014, 6:50 a.m.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
ktp-contact-list
</div>


<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;">Fixes a state affinity issue where the contact list won't recognise a nowplaying plugin enable event when there is a custom status message set.</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;">Compile, run-check.</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>global-presence-chooser.cpp <span style="color: grey">(2047473)</span></li>

</ul>

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







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








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