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








<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On April 21st, 2011, 3:13 p.m., <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="http://git.reviewboard.kde.org/r/101134/diff/1-2/?file=14477#file14477line348" style="color: black; font-weight: bold; text-decoration: underline;">main-widget.cpp</a>
    <span style="font-weight: normal;">

     (Diff revisions 1 - 2)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void MainWidget::monitorPresence(const Tp::AccountPtr &amp;account)</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">345</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="n">watcher</span><span class="p">.</span><span class="n">setFuture</span><span class="p">(</span><span class="n">QtConcurrent</span><span class="o">::</span><span class="n">filtered</span><span class="p">(</span><span class="n">account</span><span class="o">-&gt;</span><span class="n">connection</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">contactManager</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allKnownContacts</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;">It&#39;s possible for the account to be ready and connected before the ContactManager is ready (ContactListStateSuccess). At which point allKnownContacts() returns an empty list if you use it too early. I think this code falls into that trap, at which point we may miss contacts that were added whilst we were offline.</pre>
 </blockquote>



 <p>On April 21st, 2011, 3:34 p.m., <b>Dario Freddi</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;">This is actually the point which drove me mad while testing. In a situation where the user starts the contact list already connected, everything works fine as the Contact manager is guaranteed to be ready, but you are indeed right when connecting the accounts from within the list. Any hints on how to improve that specific situation?</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;">What I did in the model was to connect 

void onAccountHasJustComeOnline()
{
  connect(connectionManager.data(),stateChanged(state), onStateChanged(state));
  onStateChanged(connectionManager-&gt;status());
}

then 
void onConnectionManagerStateChanged(status)
{
  if (status == ContactListStateSuccess) {
       do stuff that uses allKnownContacts.
  }
}


OR

you could watch the main model (not the filtered one) for when contacts are added (rowsInserted) as this will also contain all new people who are in the pending subscription state.</pre>
<br />




<p>- David</p>


<br />
<p>On April 21st, 2011, 1:34 p.m., Dario Freddi 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 Dario Freddi.</div>


<p style="color: grey;"><i>Updated April 21, 2011, 1:34 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;">This is a simple hack to make contact list aware of new presence subscription requests. It consists of a modal dialog - in a bright future where this will be moved out, it will be displayed as a KNotification instead. To ease the user&#39;s life, on acceptance the request is accepted and a subscription is made (a-la-windows live).</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;">Briefly tested and working, needs more testing.</pre>
  </td>
 </tr>
</table>



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


 <a href="http://bugs.kde.org/show_bug.cgi?id=270665">270665</a>


</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>main-widget.h <span style="color: grey">(9180d64de553487de089d7ef907b444dc742a92f)</span></li>

 <li>main-widget.cpp <span style="color: grey">(305a453f5162e688e28b9345eada3cfaecea2325)</span></li>

</ul>

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




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








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