Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 98d6b53e11e983e268c3e19f14e091a0 > files > 2830

kdepim-devel-doc-3.5.9-9mdv2008.1.x86_64.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">

<head>
  <title>kontact: iconsidepane.cpp Source File (kontact)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta http-equiv="Content-Style-Type" content="text/css" />

  <meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline DE v2.0" l gen true for "http://www.kde.org"  r (nz 1 vz 1 lz 1 oz 1 cb 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://www.kde.org"  r (n 0 s 0 v 0 l 0))' />

  <meta name="trademark" content="KDE e.V." />
  <meta name="description" content="K Desktop Environment Homepage, KDE.org" />
  <meta name="MSSmartTagsPreventParsing" content="true" />
  <meta name="robots" content="all" />

  <link rel="shortcut icon" href="../../favicon.ico" />

<link rel="stylesheet" media="screen" type="text/css" title="APIDOX" href="doxygen.css" />



<style type="text/css">
<!--
hr { display: none; }
#content h2 { margin-left: 0px; }
table.mdTable { background-color: #f8f8f8; border: .2em solid #d7d7d7; }
td.mdRow { padding: 8px 20px; }
td.md { font-weight: bold; }
td.mdname1 { font-weight: bold; color: #602020; }
td.mdname { font-weight: bold; color: #602020;  }

-->
</style>

</head>

<body>

<div id="nav_header_top" align="right">
  <a href="#content" class="doNotDisplay" accesskey="2">Skip to main content ::</a>

  <a href="../.."><img id="nav_header_logo" alt="Home" align="left" src="../../kde_gear_64.png" border="0" /></a>
  <span class="doNotDisplay">::</span>
  <img id="nav_header_logo_right" alt="" align="right" src="../../pimlogo.png" border="0" />

  <div id="nav_header_title" align="left">KDE PIM API Reference</div>


</div>

<div id="nav_header_bottom" align="right">
  <span class="doNotDisplay">:: <a href="#navigation" accesskey="5">Skip to Link Menu</a><br/></span>
  <div id="nav_header_bottom_left" style="text-align: left;">
/ <a href="../../">API Reference</a>
 / <a href=".">kontact</a>
  </div>
</div>


<table id="main" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
      <td valign="top" class="menuheader" height="0"></td>

  <td id="contentcolumn" valign="top" rowspan="2" >
    <div id="content" style="padding-top: 0px;"><div style="width:100%; margin: 0px; padding: 0px;">
    <h2><a name="content"></a>kontact</h2>


<!-- Generated by Doxygen 1.5.5 -->
<h1>iconsidepane.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment">  This file is part of KDE Kontact.</span>
<a name="l00003"></a>00003 <span class="comment"></span>
<a name="l00004"></a>00004 <span class="comment">  Copyright (C) 2003 Cornelius Schumacher &lt;schumacher@kde.org&gt;</span>
<a name="l00005"></a>00005 <span class="comment"></span>
<a name="l00006"></a>00006 <span class="comment">  This program is free software; you can redistribute it and/or</span>
<a name="l00007"></a>00007 <span class="comment">  modify it under the terms of the GNU General Public</span>
<a name="l00008"></a>00008 <span class="comment">  License as published by the Free Software Foundation; either</span>
<a name="l00009"></a>00009 <span class="comment">  version 2 of the License, or (at your option) any later version.</span>
<a name="l00010"></a>00010 <span class="comment"></span>
<a name="l00011"></a>00011 <span class="comment">  This program is distributed in the hope that it will be useful,</span>
<a name="l00012"></a>00012 <span class="comment">  but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00013"></a>00013 <span class="comment">  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
<a name="l00014"></a>00014 <span class="comment">  General Public License for more details.</span>
<a name="l00015"></a>00015 <span class="comment"></span>
<a name="l00016"></a>00016 <span class="comment">  You should have received a copy of the GNU General Public License</span>
<a name="l00017"></a>00017 <span class="comment">  along with this program; see the file COPYING.  If not, write to</span>
<a name="l00018"></a>00018 <span class="comment">  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,</span>
<a name="l00019"></a>00019 <span class="comment">  Boston, MA 02110-1301, USA.</span>
<a name="l00020"></a>00020 <span class="comment"> */</span>
<a name="l00021"></a>00021 
<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;qptrlist.h&gt;</span>
<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;qwidgetstack.h&gt;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;qsignal.h&gt;</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;qobjectlist.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;qlabel.h&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;qimage.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;qpainter.h&gt;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;qbitmap.h&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;qfontmetrics.h&gt;</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;qsignalmapper.h&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;qstyle.h&gt;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;qframe.h&gt;</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;qdrawutil.h&gt;</span>
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;qcursor.h&gt;</span>
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;qtimer.h&gt;</span>
<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;qtooltip.h&gt;</span>
<a name="l00038"></a>00038 
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;kpopupmenu.h&gt;</span>
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;kapplication.h&gt;</span>
<a name="l00041"></a>00041 <span class="preprocessor">#include &lt;kdialog.h&gt;</span>
<a name="l00042"></a>00042 <span class="preprocessor">#include &lt;klocale.h&gt;</span>
<a name="l00043"></a>00043 <span class="preprocessor">#include &lt;kiconloader.h&gt;</span>
<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;sidebarextension.h&gt;</span>
<a name="l00045"></a>00045 
<a name="l00046"></a>00046 <span class="preprocessor">#include &lt;kdebug.h&gt;</span>
<a name="l00047"></a>00047 
<a name="l00048"></a>00048 <span class="preprocessor">#include "mainwindow.h"</span>
<a name="l00049"></a>00049 
<a name="l00050"></a>00050 <span class="preprocessor">#include "plugin.h"</span>
<a name="l00051"></a>00051 
<a name="l00052"></a>00052 <span class="preprocessor">#include "prefs.h"</span>
<a name="l00053"></a>00053 <span class="preprocessor">#include "iconsidepane.h"</span>
<a name="l00054"></a>00054 
<a name="l00055"></a>00055 <span class="keyword">namespace </span>Kontact
<a name="l00056"></a>00056 {
<a name="l00057"></a>00057 
<a name="l00058"></a>00058 <span class="comment">//ugly wrapper class for adding an operator&lt; to the Plugin class</span>
<a name="l00059"></a>00059 
<a name="l00060"></a>00060 <span class="keyword">class </span>PluginProxy
<a name="l00061"></a>00061 {
<a name="l00062"></a>00062   <span class="keyword">public</span>:
<a name="l00063"></a>00063     PluginProxy()
<a name="l00064"></a>00064       : mPlugin( 0 )
<a name="l00065"></a>00065     { }
<a name="l00066"></a>00066 
<a name="l00067"></a>00067     PluginProxy( <a class="code" href="classKontact_1_1Plugin.html" title="Base class for all Plugins in Kontact.">Plugin</a> *plugin )
<a name="l00068"></a>00068       : mPlugin( plugin )
<a name="l00069"></a>00069     { }
<a name="l00070"></a>00070 
<a name="l00071"></a>00071     PluginProxy &amp; operator=( <a class="code" href="classKontact_1_1Plugin.html" title="Base class for all Plugins in Kontact.">Plugin</a> *plugin )
<a name="l00072"></a>00072     {
<a name="l00073"></a>00073       mPlugin = plugin;
<a name="l00074"></a>00074       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00075"></a>00075     }
<a name="l00076"></a>00076 
<a name="l00077"></a>00077     <span class="keywordtype">bool</span> operator&lt;( PluginProxy &amp;rhs )<span class="keyword"> const</span>
<a name="l00078"></a>00078 <span class="keyword">    </span>{
<a name="l00079"></a>00079       <span class="keywordflow">return</span> mPlugin-&gt;<a class="code" href="classKontact_1_1Plugin.html#74d18be0a202daf34ae8701561f7dc38" title="Return the weight of the plugin.">weight</a>() &lt; rhs.mPlugin-&gt;weight();
<a name="l00080"></a>00080     }
<a name="l00081"></a>00081 
<a name="l00082"></a>00082     <a class="code" href="classKontact_1_1Plugin.html" title="Base class for all Plugins in Kontact.">Plugin</a> *plugin()<span class="keyword"> const</span>
<a name="l00083"></a>00083 <span class="keyword">    </span>{
<a name="l00084"></a>00084       <span class="keywordflow">return</span> mPlugin;
<a name="l00085"></a>00085     }
<a name="l00086"></a>00086 
<a name="l00087"></a>00087   <span class="keyword">private</span>:
<a name="l00088"></a>00088     <a class="code" href="classKontact_1_1Plugin.html" title="Base class for all Plugins in Kontact.">Plugin</a> *mPlugin;
<a name="l00089"></a>00089 };
<a name="l00090"></a>00090 
<a name="l00091"></a>00091 } <span class="comment">//namespace</span>
<a name="l00092"></a>00092 
<a name="l00093"></a>00093 <span class="keyword">using namespace </span>Kontact;
<a name="l00094"></a>00094 
<a name="l00095"></a>00095 EntryItem::EntryItem( <a class="code" href="classKontact_1_1Navigator.html" title="Navigation pane showing all parts relevant to the user.">Navigator</a> *parent, <a class="code" href="classKontact_1_1Plugin.html" title="Base class for all Plugins in Kontact.">Kontact::Plugin</a> *plugin )
<a name="l00096"></a>00096   : QListBoxItem( parent ),
<a name="l00097"></a>00097     mPlugin( plugin ),
<a name="l00098"></a>00098     mHasHover( false ),
<a name="l00099"></a>00099     mPaintActive( false )
<a name="l00100"></a>00100 {
<a name="l00101"></a>00101   reloadPixmap();
<a name="l00102"></a>00102   setCustomHighlighting( <span class="keyword">true</span> );
<a name="l00103"></a>00103   setText( plugin-&gt;<a class="code" href="classKontact_1_1Plugin.html#be2af021ae05cc8fd27ea30edfec3fdf" title="Returns the localized title.">title</a>() );
<a name="l00104"></a>00104 }
<a name="l00105"></a>00105 
<a name="l00106"></a>00106 EntryItem::~EntryItem()
<a name="l00107"></a>00107 {
<a name="l00108"></a>00108 }
<a name="l00109"></a>00109 
<a name="l00110"></a>00110 <span class="keywordtype">void</span> EntryItem::reloadPixmap()
<a name="l00111"></a>00111 {
<a name="l00112"></a>00112   <span class="keywordtype">int</span> size = (int)navigator()-&gt;<a class="code" href="classKontact_1_1Navigator.html#f846389d9834e6f4384657a4d7070dfb">viewMode</a>();
<a name="l00113"></a>00113   <span class="keywordflow">if</span> ( size != 0 )
<a name="l00114"></a>00114     mPixmap = KGlobal::iconLoader()-&gt;loadIcon( mPlugin-&gt;<a class="code" href="classKontact_1_1Plugin.html#629ffa812c981fd02c8936c8fd04ddc8" title="Returns the icon name.">icon</a>(),
<a name="l00115"></a>00115                                                KIcon::Desktop, size,
<a name="l00116"></a>00116                                                mPlugin-&gt;<a class="code" href="classKontact_1_1Plugin.html#ad73ef0c1b5cd785eeb6e03f0e9d6dd7">disabled</a>() ? 
<a name="l00117"></a>00117                                                  KIcon::DisabledState 
<a name="l00118"></a>00118                                                : KIcon::DefaultState);
<a name="l00119"></a>00119   <span class="keywordflow">else</span>
<a name="l00120"></a>00120     mPixmap = QPixmap();
<a name="l00121"></a>00121 }
<a name="l00122"></a>00122 
<a name="l00123"></a>00123 <a class="code" href="classKontact_1_1Navigator.html" title="Navigation pane showing all parts relevant to the user.">Navigator</a>* EntryItem::navigator()<span class="keyword"> const</span>
<a name="l00124"></a>00124 <span class="keyword"></span>{
<a name="l00125"></a>00125   <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classKontact_1_1Navigator.html" title="Navigation pane showing all parts relevant to the user.">Navigator</a>*<span class="keyword">&gt;</span>( listBox() );
<a name="l00126"></a>00126 }
<a name="l00127"></a>00127 
<a name="l00128"></a><a class="code" href="classKontact_1_1EntryItem.html#3d4b3665884b8331e89876457f02707f">00128</a> <span class="keywordtype">int</span> <a class="code" href="classKontact_1_1EntryItem.html#3d4b3665884b8331e89876457f02707f" title="returns the width of this item.">EntryItem::width</a>( <span class="keyword">const</span> QListBox *listbox )<span class="keyword"> const</span>
<a name="l00129"></a>00129 <span class="keyword"></span>{
<a name="l00130"></a>00130   <span class="keywordtype">int</span> w = 0;
<a name="l00131"></a>00131   <span class="keywordflow">if</span>( navigator()-&gt;showIcons() ) {
<a name="l00132"></a>00132     w = navigator()-&gt;<a class="code" href="classKontact_1_1Navigator.html#f846389d9834e6f4384657a4d7070dfb">viewMode</a>();
<a name="l00133"></a>00133     <span class="keywordflow">if</span> ( navigator()-&gt;viewMode() == SmallIcons )
<a name="l00134"></a>00134       w += 4;
<a name="l00135"></a>00135   }
<a name="l00136"></a>00136   <span class="keywordflow">if</span>( navigator()-&gt;showText() ) {
<a name="l00137"></a>00137     <span class="keywordflow">if</span> ( navigator()-&gt;viewMode() == SmallIcons )
<a name="l00138"></a>00138       w += listbox-&gt;fontMetrics().width( text() );
<a name="l00139"></a>00139     <span class="keywordflow">else</span>
<a name="l00140"></a>00140       w = QMAX( w, listbox-&gt;fontMetrics().width( text() ) );
<a name="l00141"></a>00141   }
<a name="l00142"></a>00142   <span class="keywordflow">return</span> w + ( KDialog::marginHint() * 2 );
<a name="l00143"></a>00143 }
<a name="l00144"></a>00144 
<a name="l00145"></a><a class="code" href="classKontact_1_1EntryItem.html#5673ad64d9eb144911f34a32d330d049">00145</a> <span class="keywordtype">int</span> <a class="code" href="classKontact_1_1EntryItem.html#5673ad64d9eb144911f34a32d330d049" title="returns the height of this item.">EntryItem::height</a>( <span class="keyword">const</span> QListBox *listbox )<span class="keyword"> const</span>
<a name="l00146"></a>00146 <span class="keyword"></span>{
<a name="l00147"></a>00147   <span class="keywordtype">int</span> h = 0;
<a name="l00148"></a>00148   <span class="keywordflow">if</span> ( navigator()-&gt;showIcons() )
<a name="l00149"></a>00149     h = (int)navigator()-&gt;<a class="code" href="classKontact_1_1Navigator.html#f846389d9834e6f4384657a4d7070dfb">viewMode</a>() + 4;
<a name="l00150"></a>00150   <span class="keywordflow">if</span> ( navigator()-&gt;showText() ) {
<a name="l00151"></a>00151     <span class="keywordflow">if</span> ( navigator()-&gt;viewMode() == SmallIcons || !navigator()-&gt;showIcons() )
<a name="l00152"></a>00152       h = QMAX( h, listbox-&gt;fontMetrics().lineSpacing() ) + KDialog::spacingHint() * 2;
<a name="l00153"></a>00153     <span class="keywordflow">else</span>
<a name="l00154"></a>00154       h = (int)navigator()-&gt;<a class="code" href="classKontact_1_1Navigator.html#f846389d9834e6f4384657a4d7070dfb">viewMode</a>() + listbox-&gt;fontMetrics().lineSpacing() + 4;
<a name="l00155"></a>00155   }
<a name="l00156"></a>00156   <span class="keywordflow">return</span> h;
<a name="l00157"></a>00157 }
<a name="l00158"></a>00158 
<a name="l00159"></a>00159 <span class="keywordtype">void</span> EntryItem::paint( QPainter *p )
<a name="l00160"></a>00160 {
<a name="l00161"></a>00161   reloadPixmap();
<a name="l00162"></a>00162 
<a name="l00163"></a>00163   QListBox *box = listBox();
<a name="l00164"></a>00164   <span class="keywordtype">bool</span> iconAboveText = ( navigator()-&gt;<a class="code" href="classKontact_1_1Navigator.html#f846389d9834e6f4384657a4d7070dfb">viewMode</a>() &gt; SmallIcons )
<a name="l00165"></a>00165                      &amp;&amp; navigator()-&gt;<a class="code" href="classKontact_1_1Navigator.html#de57ec617242a2e89a15d7ac7cd8eaed">showIcons</a>();
<a name="l00166"></a>00166   <span class="keywordtype">int</span> w = box-&gt;viewport()-&gt;width();
<a name="l00167"></a>00167   <span class="keywordtype">int</span> y = iconAboveText ? 2 :
<a name="l00168"></a>00168                         ( ( <a class="code" href="classKontact_1_1EntryItem.html#5673ad64d9eb144911f34a32d330d049" title="returns the height of this item.">height</a>( box ) - mPixmap.height() ) / 2 );
<a name="l00169"></a>00169 
<a name="l00170"></a>00170   <span class="comment">// draw selected</span>
<a name="l00171"></a>00171   <span class="keywordflow">if</span> ( isCurrent() || isSelected() || mHasHover || mPaintActive ) {
<a name="l00172"></a>00172     <span class="keywordtype">int</span> h = <a class="code" href="classKontact_1_1EntryItem.html#5673ad64d9eb144911f34a32d330d049" title="returns the height of this item.">height</a>( box );
<a name="l00173"></a>00173 
<a name="l00174"></a>00174     QBrush brush;
<a name="l00175"></a>00175     <span class="keywordflow">if</span> ( isCurrent() || isSelected() || mPaintActive )
<a name="l00176"></a>00176       brush = box-&gt;colorGroup().brush( QColorGroup::Highlight );
<a name="l00177"></a>00177     <span class="keywordflow">else</span>
<a name="l00178"></a>00178       brush = box-&gt;colorGroup().highlight().light( 115 );
<a name="l00179"></a>00179     p-&gt;fillRect( 1, 0, w - 2, h - 1, brush );
<a name="l00180"></a>00180     QPen pen = p-&gt;pen();
<a name="l00181"></a>00181     QPen oldPen = pen;
<a name="l00182"></a>00182     pen.setColor( box-&gt;colorGroup().mid() );
<a name="l00183"></a>00183     p-&gt;setPen( pen );
<a name="l00184"></a>00184 
<a name="l00185"></a>00185     p-&gt;drawPoint( 1, 0 );
<a name="l00186"></a>00186     p-&gt;drawPoint( 1, h - 2 );
<a name="l00187"></a>00187     p-&gt;drawPoint( w - 2, 0 );
<a name="l00188"></a>00188     p-&gt;drawPoint( w - 2, h - 2 );
<a name="l00189"></a>00189 
<a name="l00190"></a>00190     p-&gt;setPen( oldPen );
<a name="l00191"></a>00191   }
<a name="l00192"></a>00192 
<a name="l00193"></a>00193   <span class="keywordflow">if</span> ( !mPixmap.isNull() &amp;&amp; navigator()-&gt;<a class="code" href="classKontact_1_1Navigator.html#de57ec617242a2e89a15d7ac7cd8eaed">showIcons</a>() ) {
<a name="l00194"></a>00194       <span class="keywordtype">int</span> x = iconAboveText ? ( ( w - mPixmap.width() ) / 2 ) :
<a name="l00195"></a>00195                               KDialog::marginHint();
<a name="l00196"></a>00196     p-&gt;drawPixmap( x, y, mPixmap );
<a name="l00197"></a>00197   }
<a name="l00198"></a>00198 
<a name="l00199"></a>00199   QColor shadowColor = listBox()-&gt;colorGroup().background().dark(115);
<a name="l00200"></a>00200   <span class="keywordflow">if</span> ( isCurrent() || isSelected() ) {
<a name="l00201"></a>00201     p-&gt;setPen( box-&gt;colorGroup().highlightedText() );
<a name="l00202"></a>00202   }
<a name="l00203"></a>00203 
<a name="l00204"></a>00204   <span class="keywordflow">if</span> ( !text().isEmpty() &amp;&amp; navigator()-&gt;<a class="code" href="classKontact_1_1Navigator.html#e1df73560ce146bb685fdd18becdaddb">showText</a>() ) {
<a name="l00205"></a>00205     QFontMetrics fm = p-&gt;fontMetrics();
<a name="l00206"></a>00206 
<a name="l00207"></a>00207     <span class="keywordtype">int</span> x = 0;
<a name="l00208"></a>00208     <span class="keywordflow">if</span> ( iconAboveText ) {
<a name="l00209"></a>00209       x = ( w - fm.width( text() ) ) / 2;
<a name="l00210"></a>00210       y += fm.height() - fm.descent();
<a name="l00211"></a>00211       <span class="keywordflow">if</span> ( navigator()-&gt;showIcons() )
<a name="l00212"></a>00212         y += mPixmap.height();
<a name="l00213"></a>00213     } <span class="keywordflow">else</span> {
<a name="l00214"></a>00214       x = KDialog::marginHint() + 4;
<a name="l00215"></a>00215       <span class="keywordflow">if</span>( navigator()-&gt;showIcons() ) {
<a name="l00216"></a>00216         x += mPixmap.width();
<a name="l00217"></a>00217       }
<a name="l00218"></a>00218 
<a name="l00219"></a>00219       <span class="keywordflow">if</span> ( !navigator()-&gt;showIcons() || mPixmap.height() &lt; fm.height() )
<a name="l00220"></a>00220         y = <a class="code" href="classKontact_1_1EntryItem.html#5673ad64d9eb144911f34a32d330d049" title="returns the height of this item.">height</a>( box )/2 - fm.height()/2 + fm.ascent();
<a name="l00221"></a>00221       <span class="keywordflow">else</span>
<a name="l00222"></a>00222         y += mPixmap.height()/2 - fm.height()/2 + fm.ascent();
<a name="l00223"></a>00223     }
<a name="l00224"></a>00224 
<a name="l00225"></a>00225     <span class="keywordflow">if</span> ( plugin()-&gt;disabled() ) {
<a name="l00226"></a>00226       p-&gt;setPen( box-&gt;palette().disabled().text( ) );
<a name="l00227"></a>00227     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( isCurrent() || isSelected() || mHasHover ) {
<a name="l00228"></a>00228       p-&gt;setPen( box-&gt;colorGroup().highlight().dark(115) );
<a name="l00229"></a>00229       p-&gt;drawText( x + ( QApplication::reverseLayout() ? -1 : 1),
<a name="l00230"></a>00230           y + 1, text() );
<a name="l00231"></a>00231       p-&gt;setPen( box-&gt;colorGroup().highlightedText() );
<a name="l00232"></a>00232     }
<a name="l00233"></a>00233     <span class="keywordflow">else</span>
<a name="l00234"></a>00234       p-&gt;setPen( box-&gt;colorGroup().text() );
<a name="l00235"></a>00235 
<a name="l00236"></a>00236     p-&gt;drawText( x, y, text() );
<a name="l00237"></a>00237   }
<a name="l00238"></a>00238 
<a name="l00239"></a>00239   <span class="comment">// ensure that we don't have a stale flag around</span>
<a name="l00240"></a>00240   <span class="keywordflow">if</span> (  isCurrent() || isSelected() ) mHasHover = <span class="keyword">false</span>;
<a name="l00241"></a>00241 }
<a name="l00242"></a>00242 
<a name="l00243"></a>00243 <span class="keywordtype">void</span> EntryItem::setHover( <span class="keywordtype">bool</span> hasHover )
<a name="l00244"></a>00244 {
<a name="l00245"></a>00245   mHasHover = hasHover;
<a name="l00246"></a>00246 }
<a name="l00247"></a>00247 
<a name="l00248"></a>00248 <span class="keywordtype">void</span> EntryItem::setPaintActive( <span class="keywordtype">bool</span> paintActive )
<a name="l00249"></a>00249 {
<a name="l00250"></a>00250   mPaintActive = paintActive;
<a name="l00251"></a>00251 }
<a name="l00252"></a>00252 
<a name="l00253"></a>00253 Navigator::Navigator( SidePaneBase *parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name )
<a name="l00254"></a>00254   : KListBox( parent, name ), mSidePane( parent ),
<a name="l00255"></a>00255     mShowIcons( true ), mShowText( true )
<a name="l00256"></a>00256 {
<a name="l00257"></a>00257   mMouseOn = 0;
<a name="l00258"></a>00258   mHighlightItem = 0;
<a name="l00259"></a>00259   mViewMode = sizeIntToEnum( Prefs::self()-&gt;sidePaneIconSize() );
<a name="l00260"></a>00260   mShowIcons = Prefs::self()-&gt;sidePaneShowIcons();
<a name="l00261"></a>00261   mShowText = Prefs::self()-&gt;sidePaneShowText();
<a name="l00262"></a>00262   setSelectionMode( KListBox::Single );
<a name="l00263"></a>00263   viewport()-&gt;setBackgroundMode( PaletteBackground );
<a name="l00264"></a>00264   setFrameStyle( QFrame::NoFrame );
<a name="l00265"></a>00265   setHScrollBarMode( QScrollView::AlwaysOff );
<a name="l00266"></a>00266   setAcceptDrops( <span class="keyword">true</span> );
<a name="l00267"></a>00267 
<a name="l00268"></a>00268   setFocusPolicy( NoFocus );
<a name="l00269"></a>00269 
<a name="l00270"></a>00270   connect( <span class="keyword">this</span>, SIGNAL( selectionChanged( QListBoxItem* ) ),
<a name="l00271"></a>00271            SLOT( slotExecuted( QListBoxItem* ) ) );
<a name="l00272"></a>00272   connect( <span class="keyword">this</span>, SIGNAL( rightButtonPressed( QListBoxItem*, <span class="keyword">const</span> QPoint&amp; ) ),
<a name="l00273"></a>00273            SLOT( slotShowRMBMenu( QListBoxItem*, <span class="keyword">const</span> QPoint&amp; ) ) );
<a name="l00274"></a>00274   connect( <span class="keyword">this</span>, SIGNAL( onItem( QListBoxItem * ) ),
<a name="l00275"></a>00275             SLOT(  slotMouseOn( QListBoxItem * ) ) );
<a name="l00276"></a>00276   connect( <span class="keyword">this</span>, SIGNAL( onViewport() ), SLOT(  slotMouseOff() ) );
<a name="l00277"></a>00277 
<a name="l00278"></a>00278   mMapper = <span class="keyword">new</span> QSignalMapper( <span class="keyword">this</span> );
<a name="l00279"></a>00279   connect( mMapper, SIGNAL( mapped( <span class="keywordtype">int</span> ) ), SLOT( shortCutSelected( <span class="keywordtype">int</span> ) ) );
<a name="l00280"></a>00280 
<a name="l00281"></a>00281   QToolTip::remove( <span class="keyword">this</span> );
<a name="l00282"></a>00282   <span class="keywordflow">if</span> ( !mShowText )
<a name="l00283"></a>00283     <span class="keyword">new</span> <a class="code" href="classKontact_1_1EntryItemToolTip.html" title="Tooltip that changes text depending on the item it is above.">EntryItemToolTip</a>( <span class="keyword">this</span> );
<a name="l00284"></a>00284 
<a name="l00285"></a>00285 }
<a name="l00286"></a>00286 
<a name="l00287"></a>00287 QSize Navigator::sizeHint()<span class="keyword"> const</span>
<a name="l00288"></a>00288 <span class="keyword"></span>{
<a name="l00289"></a>00289   <span class="keywordflow">return</span> QSize( 100, 100 );
<a name="l00290"></a>00290 }
<a name="l00291"></a>00291 
<a name="l00292"></a>00292 <span class="keywordtype">void</span> Navigator::highlightItem( <a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a> * item )
<a name="l00293"></a>00293 {
<a name="l00294"></a>00294   mHighlightItem = item;
<a name="l00295"></a>00295 
<a name="l00296"></a>00296   setPaintActiveItem( mHighlightItem, <span class="keyword">true</span> );
<a name="l00297"></a>00297 
<a name="l00298"></a>00298   QTimer::singleShot( 2000, <span class="keyword">this</span>, SLOT( slotStopHighlight() ) );
<a name="l00299"></a>00299 }
<a name="l00300"></a>00300 
<a name="l00301"></a>00301 <span class="keywordtype">void</span> Navigator::slotStopHighlight()
<a name="l00302"></a>00302 {
<a name="l00303"></a>00303   setPaintActiveItem( mHighlightItem, <span class="keyword">false</span> );
<a name="l00304"></a>00304 }
<a name="l00305"></a>00305 
<a name="l00306"></a>00306 <span class="keywordtype">void</span> Navigator::setSelected( QListBoxItem *item, <span class="keywordtype">bool</span> selected )
<a name="l00307"></a>00307 {
<a name="l00308"></a>00308   <span class="comment">// Reimplemented to avoid the immediate activation of</span>
<a name="l00309"></a>00309   <span class="comment">// the item. might turn out it doesn't work, we check that</span>
<a name="l00310"></a>00310   <span class="comment">// an confirm from MainWindow::selectPlugin()</span>
<a name="l00311"></a>00311   <span class="keywordflow">if</span> ( selected ) {
<a name="l00312"></a>00312     <a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a> *entry = <span class="keyword">static_cast&lt;</span><a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a>*<span class="keyword">&gt;</span>( item );
<a name="l00313"></a>00313     emit pluginActivated( entry-&gt;<a class="code" href="classKontact_1_1EntryItem.html#ac6193537611d5165806b98929d74a0e">plugin</a>() );
<a name="l00314"></a>00314   }
<a name="l00315"></a>00315 }
<a name="l00316"></a>00316 
<a name="l00317"></a>00317 <span class="keywordtype">void</span> Navigator::updatePlugins( QValueList&lt;Kontact::Plugin*&gt; plugins_ )
<a name="l00318"></a>00318 {
<a name="l00319"></a>00319   QValueList&lt;Kontact::PluginProxy&gt; plugins;
<a name="l00320"></a>00320   QValueList&lt;Kontact::Plugin*&gt;::ConstIterator end_ = plugins_.end();
<a name="l00321"></a>00321   QValueList&lt;Kontact::Plugin*&gt;::ConstIterator it_ = plugins_.begin();
<a name="l00322"></a>00322   <span class="keywordflow">for</span> ( ; it_ != end_; ++it_ )
<a name="l00323"></a>00323     plugins += PluginProxy( *it_ );
<a name="l00324"></a>00324 
<a name="l00325"></a>00325   clear();
<a name="l00326"></a>00326 
<a name="l00327"></a>00327   mActions.setAutoDelete( <span class="keyword">true</span> );
<a name="l00328"></a>00328   mActions.clear();
<a name="l00329"></a>00329   mActions.setAutoDelete( <span class="keyword">false</span> );
<a name="l00330"></a>00330 
<a name="l00331"></a>00331   <span class="keywordtype">int</span> counter = 0;
<a name="l00332"></a>00332   <span class="keywordtype">int</span> minWidth = 0;
<a name="l00333"></a>00333   qBubbleSort( plugins );
<a name="l00334"></a>00334   QValueList&lt;Kontact::PluginProxy&gt;::ConstIterator end = plugins.end();
<a name="l00335"></a>00335   QValueList&lt;Kontact::PluginProxy&gt;::ConstIterator it = plugins.begin();
<a name="l00336"></a>00336   <span class="keywordflow">for</span> ( ; it != end; ++it ) {
<a name="l00337"></a>00337     <a class="code" href="classKontact_1_1Plugin.html" title="Base class for all Plugins in Kontact.">Kontact::Plugin</a> *plugin = ( *it ).plugin();
<a name="l00338"></a>00338     <span class="keywordflow">if</span> ( !plugin-&gt;<a class="code" href="classKontact_1_1Plugin.html#b0859419aae6ac875c98fc588e18d3b6" title="Returns wether the plugin provides a part that should be shown in the sidebar.">showInSideBar</a>() )
<a name="l00339"></a>00339       <span class="keywordflow">continue</span>;
<a name="l00340"></a>00340 
<a name="l00341"></a>00341     <a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a> *item = <span class="keyword">new</span> <a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a>( <span class="keyword">this</span>, plugin );
<a name="l00342"></a>00342     item-&gt;setSelectable( !plugin-&gt;<a class="code" href="classKontact_1_1Plugin.html#ad73ef0c1b5cd785eeb6e03f0e9d6dd7">disabled</a>() );
<a name="l00343"></a>00343 
<a name="l00344"></a>00344     <span class="keywordflow">if</span> ( item-&gt;<a class="code" href="classKontact_1_1EntryItem.html#3d4b3665884b8331e89876457f02707f" title="returns the width of this item.">width</a>( <span class="keyword">this</span> ) &gt; minWidth )
<a name="l00345"></a>00345       minWidth = item-&gt;<a class="code" href="classKontact_1_1EntryItem.html#3d4b3665884b8331e89876457f02707f" title="returns the width of this item.">width</a>( <span class="keyword">this</span> );
<a name="l00346"></a>00346 
<a name="l00347"></a>00347     QString name = QString( <span class="stringliteral">"CTRL+%1"</span> ).arg( counter + 1 );
<a name="l00348"></a>00348     KAction *action = <span class="keyword">new</span> KAction( plugin-&gt;<a class="code" href="classKontact_1_1Plugin.html#be2af021ae05cc8fd27ea30edfec3fdf" title="Returns the localized title.">title</a>(), plugin-&gt;<a class="code" href="classKontact_1_1Plugin.html#629ffa812c981fd02c8936c8fd04ddc8" title="Returns the icon name.">icon</a>(), KShortcut( name ),
<a name="l00349"></a>00349                                    mMapper, SLOT( map() ),
<a name="l00350"></a>00350                                    mSidePane-&gt;actionCollection(), name.latin1() );
<a name="l00351"></a>00351     mActions.append( action );
<a name="l00352"></a>00352     mMapper-&gt;setMapping( action, counter );
<a name="l00353"></a>00353     counter++;
<a name="l00354"></a>00354   }
<a name="l00355"></a>00355 
<a name="l00356"></a>00356   parentWidget()-&gt;setFixedWidth( minWidth );
<a name="l00357"></a>00357 }
<a name="l00358"></a>00358 
<a name="l00359"></a>00359 <span class="keywordtype">void</span> Navigator::dragEnterEvent( QDragEnterEvent *event )
<a name="l00360"></a>00360 {
<a name="l00361"></a>00361   kdDebug(5600) &lt;&lt; <span class="stringliteral">"Navigator::dragEnterEvent()"</span> &lt;&lt; endl;
<a name="l00362"></a>00362 
<a name="l00363"></a>00363   dragMoveEvent( event );
<a name="l00364"></a>00364 }
<a name="l00365"></a>00365 
<a name="l00366"></a>00366 <span class="keywordtype">void</span> Navigator::dragMoveEvent( QDragMoveEvent *event )
<a name="l00367"></a>00367 {
<a name="l00368"></a>00368   kdDebug(5600) &lt;&lt; <span class="stringliteral">"Navigator::dragEnterEvent()"</span> &lt;&lt; endl;
<a name="l00369"></a>00369 
<a name="l00370"></a>00370   kdDebug(5600) &lt;&lt; <span class="stringliteral">"  Format: "</span> &lt;&lt; <span class="keyword">event</span>-&gt;format() &lt;&lt; endl;
<a name="l00371"></a>00371 
<a name="l00372"></a>00372   QListBoxItem *item = itemAt( event-&gt;pos() );
<a name="l00373"></a>00373 
<a name="l00374"></a>00374   <span class="keywordflow">if</span> ( !item ) {
<a name="l00375"></a>00375     <span class="keyword">event</span>-&gt;accept( <span class="keyword">false</span> );
<a name="l00376"></a>00376     <span class="keywordflow">return</span>;
<a name="l00377"></a>00377   }
<a name="l00378"></a>00378 
<a name="l00379"></a>00379   <a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a> *entry = <span class="keyword">static_cast&lt;</span><a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a>*<span class="keyword">&gt;</span>( item );
<a name="l00380"></a>00380 
<a name="l00381"></a>00381   kdDebug(5600) &lt;&lt; <span class="stringliteral">"  PLUGIN: "</span> &lt;&lt; entry-&gt;<a class="code" href="classKontact_1_1EntryItem.html#ac6193537611d5165806b98929d74a0e">plugin</a>()-&gt;<a class="code" href="classKontact_1_1Plugin.html#8035513498229a238d7de32ded6bfee1" title="Returns the identifier.">identifier</a>() &lt;&lt; endl;
<a name="l00382"></a>00382 
<a name="l00383"></a>00383   <span class="keyword">event</span>-&gt;accept( entry-&gt;<a class="code" href="classKontact_1_1EntryItem.html#ac6193537611d5165806b98929d74a0e">plugin</a>()-&gt;<a class="code" href="classKontact_1_1Plugin.html#c6eccf506ff50251493c3903a84e6f91" title="Return, if the plugin can handle the drag object of the given mime type.">canDecodeDrag</a>( event ) );
<a name="l00384"></a>00384 }
<a name="l00385"></a>00385 
<a name="l00386"></a>00386 <span class="keywordtype">void</span> Navigator::dropEvent( QDropEvent *event )
<a name="l00387"></a>00387 {
<a name="l00388"></a>00388   kdDebug(5600) &lt;&lt; <span class="stringliteral">"Navigator::dropEvent()"</span> &lt;&lt; endl;
<a name="l00389"></a>00389 
<a name="l00390"></a>00390   QListBoxItem *item = itemAt( event-&gt;pos() );
<a name="l00391"></a>00391 
<a name="l00392"></a>00392   <span class="keywordflow">if</span> ( !item ) {
<a name="l00393"></a>00393     <span class="keywordflow">return</span>;
<a name="l00394"></a>00394   }
<a name="l00395"></a>00395 
<a name="l00396"></a>00396   <a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a> *entry = <span class="keyword">static_cast&lt;</span><a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a>*<span class="keyword">&gt;</span>( item );
<a name="l00397"></a>00397 
<a name="l00398"></a>00398   kdDebug(5600) &lt;&lt; <span class="stringliteral">"  PLUGIN: "</span> &lt;&lt; entry-&gt;<a class="code" href="classKontact_1_1EntryItem.html#ac6193537611d5165806b98929d74a0e">plugin</a>()-&gt;<a class="code" href="classKontact_1_1Plugin.html#8035513498229a238d7de32ded6bfee1" title="Returns the identifier.">identifier</a>() &lt;&lt; endl;
<a name="l00399"></a>00399 
<a name="l00400"></a>00400   entry-&gt;<a class="code" href="classKontact_1_1EntryItem.html#ac6193537611d5165806b98929d74a0e">plugin</a>()-&gt;<a class="code" href="classKontact_1_1Plugin.html#97b7923349a8d61127da445e282cd5c5" title="Process drop event.">processDropEvent</a>( event );
<a name="l00401"></a>00401 }
<a name="l00402"></a>00402 
<a name="l00403"></a>00403 <span class="keywordtype">void</span> Navigator::resizeEvent( QResizeEvent *event )
<a name="l00404"></a>00404 {
<a name="l00405"></a>00405   QListBox::resizeEvent( event );
<a name="l00406"></a>00406   triggerUpdate( <span class="keyword">true</span> );
<a name="l00407"></a>00407 }
<a name="l00408"></a>00408 
<a name="l00409"></a>00409 <span class="keywordtype">void</span> Navigator::enterEvent( QEvent *event )
<a name="l00410"></a>00410 {
<a name="l00411"></a>00411   <span class="comment">// work around Qt behaviour: onItem is not emmitted in enterEvent()</span>
<a name="l00412"></a>00412   KListBox::enterEvent( event );
<a name="l00413"></a>00413   emit onItem( itemAt( mapFromGlobal( QCursor::pos() ) ) );
<a name="l00414"></a>00414 }
<a name="l00415"></a>00415 
<a name="l00416"></a>00416 <span class="keywordtype">void</span> Navigator::leaveEvent( QEvent *event )
<a name="l00417"></a>00417 {
<a name="l00418"></a>00418   KListBox::leaveEvent( event );
<a name="l00419"></a>00419   slotMouseOn( 0 );
<a name="l00420"></a>00420   mMouseOn = 0;
<a name="l00421"></a>00421 }
<a name="l00422"></a>00422 
<a name="l00423"></a>00423 <span class="keywordtype">void</span> Navigator::slotExecuted( QListBoxItem *item )
<a name="l00424"></a>00424 {
<a name="l00425"></a>00425   <span class="keywordflow">if</span> ( !item )
<a name="l00426"></a>00426     <span class="keywordflow">return</span>;
<a name="l00427"></a>00427 
<a name="l00428"></a>00428   <a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a> *entry = <span class="keyword">static_cast&lt;</span><a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a>*<span class="keyword">&gt;</span>( item );
<a name="l00429"></a>00429 
<a name="l00430"></a>00430   emit pluginActivated( entry-&gt;<a class="code" href="classKontact_1_1EntryItem.html#ac6193537611d5165806b98929d74a0e">plugin</a>() );
<a name="l00431"></a>00431 }
<a name="l00432"></a>00432 
<a name="l00433"></a>00433 IconViewMode Navigator::sizeIntToEnum(<span class="keywordtype">int</span> size)<span class="keyword"> const</span>
<a name="l00434"></a>00434 <span class="keyword"></span>{
<a name="l00435"></a>00435   <span class="keywordflow">switch</span> ( size ) {
<a name="l00436"></a>00436     <span class="keywordflow">case</span> int(LargeIcons):
<a name="l00437"></a>00437       return LargeIcons;
<a name="l00438"></a>00438       <span class="keywordflow">break</span>;
<a name="l00439"></a>00439     <span class="keywordflow">case</span> int(NormalIcons):
<a name="l00440"></a>00440       return NormalIcons;
<a name="l00441"></a>00441       <span class="keywordflow">break</span>;
<a name="l00442"></a>00442     <span class="keywordflow">case</span> int(SmallIcons):
<a name="l00443"></a>00443       return SmallIcons;
<a name="l00444"></a>00444       <span class="keywordflow">break</span>;
<a name="l00445"></a>00445     <span class="keywordflow">default</span>:
<a name="l00446"></a>00446       <span class="comment">// Stick with sane values</span>
<a name="l00447"></a>00447       <span class="keywordflow">return</span> NormalIcons;
<a name="l00448"></a>00448       kdDebug() &lt;&lt; <span class="stringliteral">"View mode not implemented!"</span> &lt;&lt; endl;
<a name="l00449"></a>00449       <span class="keywordflow">break</span>;
<a name="l00450"></a>00450   }
<a name="l00451"></a>00451 }
<a name="l00452"></a>00452 
<a name="l00453"></a>00453 <span class="keywordtype">void</span> Navigator::slotShowRMBMenu( QListBoxItem *, <span class="keyword">const</span> QPoint &amp;pos )
<a name="l00454"></a>00454 {
<a name="l00455"></a>00455   KPopupMenu menu;
<a name="l00456"></a>00456   menu.insertTitle( i18n( <span class="stringliteral">"Icon Size"</span> ) );
<a name="l00457"></a>00457   menu.insertItem( i18n( <span class="stringliteral">"Large"</span> ), (<span class="keywordtype">int</span>)LargeIcons );
<a name="l00458"></a>00458   menu.setItemEnabled( (<span class="keywordtype">int</span>)LargeIcons, mShowIcons );
<a name="l00459"></a>00459   menu.insertItem( i18n( <span class="stringliteral">"Normal"</span> ), (<span class="keywordtype">int</span>)NormalIcons );
<a name="l00460"></a>00460   menu.setItemEnabled( (<span class="keywordtype">int</span>)NormalIcons, mShowIcons );
<a name="l00461"></a>00461   menu.insertItem( i18n( <span class="stringliteral">"Small"</span> ), (<span class="keywordtype">int</span>)SmallIcons );
<a name="l00462"></a>00462   menu.setItemEnabled( (<span class="keywordtype">int</span>)SmallIcons, mShowIcons );
<a name="l00463"></a>00463 
<a name="l00464"></a>00464   menu.setItemChecked( (<span class="keywordtype">int</span>)mViewMode, <span class="keyword">true</span> );
<a name="l00465"></a>00465   menu.insertSeparator();
<a name="l00466"></a>00466 
<a name="l00467"></a>00467   menu.insertItem( i18n( <span class="stringliteral">"Show Icons"</span> ), (<span class="keywordtype">int</span>)ShowIcons );
<a name="l00468"></a>00468   menu.setItemChecked( (<span class="keywordtype">int</span>)ShowIcons, mShowIcons );
<a name="l00469"></a>00469   menu.setItemEnabled( (<span class="keywordtype">int</span>)ShowIcons, mShowText );
<a name="l00470"></a>00470   menu.insertItem( i18n( <span class="stringliteral">"Show Text"</span> ), (<span class="keywordtype">int</span>)ShowText );
<a name="l00471"></a>00471   menu.setItemChecked( (<span class="keywordtype">int</span>)ShowText, mShowText );
<a name="l00472"></a>00472   menu.setItemEnabled( (<span class="keywordtype">int</span>)ShowText, mShowIcons );
<a name="l00473"></a>00473   <span class="keywordtype">int</span> choice = menu.exec( pos );
<a name="l00474"></a>00474 
<a name="l00475"></a>00475   <span class="keywordflow">if</span> ( choice == -1 )
<a name="l00476"></a>00476     <span class="keywordflow">return</span>;
<a name="l00477"></a>00477 
<a name="l00478"></a>00478   <span class="keywordflow">if</span> ( choice &gt;= SmallIcons ) {
<a name="l00479"></a>00479     mViewMode = sizeIntToEnum( choice );
<a name="l00480"></a>00480     Prefs::self()-&gt;setSidePaneIconSize( choice );
<a name="l00481"></a>00481   } <span class="keywordflow">else</span> {
<a name="l00482"></a>00482     <span class="comment">// either icons or text were toggled</span>
<a name="l00483"></a>00483     <span class="keywordflow">if</span> ( choice == ShowIcons ) {
<a name="l00484"></a>00484       mShowIcons = !mShowIcons;
<a name="l00485"></a>00485       Prefs::self()-&gt;setSidePaneShowIcons( mShowIcons );
<a name="l00486"></a>00486       QToolTip::remove( <span class="keyword">this</span> );
<a name="l00487"></a>00487       <span class="keywordflow">if</span> ( !mShowText )
<a name="l00488"></a>00488         <span class="keyword">new</span> <a class="code" href="classKontact_1_1EntryItemToolTip.html" title="Tooltip that changes text depending on the item it is above.">EntryItemToolTip</a>( <span class="keyword">this</span> );
<a name="l00489"></a>00489     } <span class="keywordflow">else</span> {
<a name="l00490"></a>00490       mShowText = !mShowText;
<a name="l00491"></a>00491       Prefs::self()-&gt;setSidePaneShowText( mShowText );
<a name="l00492"></a>00492       QToolTip::remove( <span class="keyword">this</span> );
<a name="l00493"></a>00493     }
<a name="l00494"></a>00494   }
<a name="l00495"></a>00495   <span class="keywordtype">int</span> maxWidth = 0;
<a name="l00496"></a>00496   QListBoxItem* it = 0;
<a name="l00497"></a>00497   <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; (it = item(i)) != 0; ++i)
<a name="l00498"></a>00498   {
<a name="l00499"></a>00499     <span class="keywordtype">int</span> width = it-&gt;width(<span class="keyword">this</span>);
<a name="l00500"></a>00500     <span class="keywordflow">if</span> (width &gt; maxWidth)
<a name="l00501"></a>00501       maxWidth = width;
<a name="l00502"></a>00502   }
<a name="l00503"></a>00503   parentWidget()-&gt;setFixedWidth( maxWidth );
<a name="l00504"></a>00504 
<a name="l00505"></a>00505   triggerUpdate( <span class="keyword">true</span> );
<a name="l00506"></a>00506 }
<a name="l00507"></a>00507 
<a name="l00508"></a>00508 <span class="keywordtype">void</span> Navigator::shortCutSelected( <span class="keywordtype">int</span> pos )
<a name="l00509"></a>00509 {
<a name="l00510"></a>00510   setCurrentItem( pos );
<a name="l00511"></a>00511 }
<a name="l00512"></a>00512 
<a name="l00513"></a>00513 <span class="keywordtype">void</span> Navigator::setHoverItem( QListBoxItem* item, <span class="keywordtype">bool</span> hover )
<a name="l00514"></a>00514 {
<a name="l00515"></a>00515     <span class="keyword">static_cast&lt;</span><a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a>*<span class="keyword">&gt;</span>( item )-&gt;setHover( hover );
<a name="l00516"></a>00516     updateItem( item );
<a name="l00517"></a>00517 }
<a name="l00518"></a>00518 
<a name="l00519"></a>00519 <span class="keywordtype">void</span> Navigator::setPaintActiveItem( QListBoxItem* item, <span class="keywordtype">bool</span> paintActive )
<a name="l00520"></a>00520 {
<a name="l00521"></a>00521     <span class="keyword">static_cast&lt;</span><a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a>*<span class="keyword">&gt;</span>( item )-&gt;setPaintActive( paintActive );
<a name="l00522"></a>00522     updateItem( item );
<a name="l00523"></a>00523 }
<a name="l00524"></a>00524 
<a name="l00525"></a>00525 <span class="keywordtype">void</span> Navigator::slotMouseOn( QListBoxItem* newItem )
<a name="l00526"></a>00526 {
<a name="l00527"></a>00527   QListBoxItem* oldItem = mMouseOn;
<a name="l00528"></a>00528   <span class="keywordflow">if</span> ( oldItem == newItem ) <span class="keywordflow">return</span>;
<a name="l00529"></a>00529 
<a name="l00530"></a>00530   <span class="keywordflow">if</span> ( oldItem &amp;&amp; !oldItem-&gt;isCurrent() &amp;&amp; !oldItem-&gt;isSelected() )
<a name="l00531"></a>00531   {
<a name="l00532"></a>00532     setHoverItem( oldItem, <span class="keyword">false</span> );
<a name="l00533"></a>00533   }
<a name="l00534"></a>00534 
<a name="l00535"></a>00535   <span class="keywordflow">if</span> ( newItem &amp;&amp; !newItem-&gt;isCurrent() &amp;&amp; !newItem-&gt;isSelected() )
<a name="l00536"></a>00536   {
<a name="l00537"></a>00537     setHoverItem( newItem, <span class="keyword">true</span> );
<a name="l00538"></a>00538   }
<a name="l00539"></a>00539   mMouseOn = newItem;
<a name="l00540"></a>00540 }
<a name="l00541"></a>00541 
<a name="l00542"></a>00542 <span class="keywordtype">void</span> Navigator::slotMouseOff()
<a name="l00543"></a>00543 {
<a name="l00544"></a>00544   slotMouseOn( 0 );
<a name="l00545"></a>00545 }
<a name="l00546"></a>00546 
<a name="l00547"></a>00547 IconSidePane::IconSidePane( <a class="code" href="classKontact_1_1Core.html" title="This class provides the interface to the Kontact core for the plugins.">Core</a> *core, QWidget *parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name )
<a name="l00548"></a>00548   : SidePaneBase( core, parent, name )
<a name="l00549"></a>00549 {
<a name="l00550"></a>00550   mNavigator = <span class="keyword">new</span> <a class="code" href="classKontact_1_1Navigator.html" title="Navigation pane showing all parts relevant to the user.">Navigator</a>( <span class="keyword">this</span> );
<a name="l00551"></a>00551   connect( mNavigator, SIGNAL( pluginActivated( <a class="code" href="classKontact_1_1Plugin.html" title="Base class for all Plugins in Kontact.">Kontact::Plugin</a>* ) ),
<a name="l00552"></a>00552            SIGNAL( pluginSelected( <a class="code" href="classKontact_1_1Plugin.html" title="Base class for all Plugins in Kontact.">Kontact::Plugin</a>* ) ) );
<a name="l00553"></a>00553 
<a name="l00554"></a>00554   setAcceptDrops( <span class="keyword">true</span> );
<a name="l00555"></a>00555 }
<a name="l00556"></a>00556 
<a name="l00557"></a>00557 IconSidePane::~IconSidePane()
<a name="l00558"></a>00558 {
<a name="l00559"></a>00559 }
<a name="l00560"></a>00560 
<a name="l00561"></a>00561 <span class="keywordtype">void</span> IconSidePane::updatePlugins()
<a name="l00562"></a>00562 {
<a name="l00563"></a>00563   mNavigator-&gt;updatePlugins( core()-&gt;pluginList() );
<a name="l00564"></a>00564 }
<a name="l00565"></a>00565 
<a name="l00566"></a>00566 <span class="keywordtype">void</span> IconSidePane::selectPlugin( <a class="code" href="classKontact_1_1Plugin.html" title="Base class for all Plugins in Kontact.">Kontact::Plugin</a> *plugin )
<a name="l00567"></a>00567 {
<a name="l00568"></a>00568   <span class="keywordtype">bool</span> blocked = signalsBlocked();
<a name="l00569"></a>00569   blockSignals( <span class="keyword">true</span> );
<a name="l00570"></a>00570 
<a name="l00571"></a>00571   <span class="keywordflow">for</span> ( uint i = 0; i &lt; mNavigator-&gt;count(); ++i ) {
<a name="l00572"></a>00572     <a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a> *item = <span class="keyword">static_cast&lt;</span><a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a>*<span class="keyword">&gt;</span>( mNavigator-&gt;item( i ) );
<a name="l00573"></a>00573     <span class="keywordflow">if</span> ( item-&gt;<a class="code" href="classKontact_1_1EntryItem.html#ac6193537611d5165806b98929d74a0e">plugin</a>() == plugin ) {
<a name="l00574"></a>00574       mNavigator-&gt;setCurrentItem( i );
<a name="l00575"></a>00575       <span class="keywordflow">break</span>;
<a name="l00576"></a>00576     }
<a name="l00577"></a>00577   }
<a name="l00578"></a>00578 
<a name="l00579"></a>00579   blockSignals( blocked );
<a name="l00580"></a>00580 }
<a name="l00581"></a>00581 
<a name="l00582"></a>00582 <span class="keywordtype">void</span> IconSidePane::selectPlugin( <span class="keyword">const</span> QString &amp;name )
<a name="l00583"></a>00583 {
<a name="l00584"></a>00584   <span class="keywordtype">bool</span> blocked = signalsBlocked();
<a name="l00585"></a>00585   blockSignals( <span class="keyword">true</span> );
<a name="l00586"></a>00586 
<a name="l00587"></a>00587   <span class="keywordflow">for</span> ( uint i = 0; i &lt; mNavigator-&gt;count(); ++i ) {
<a name="l00588"></a>00588     <a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a> *item = <span class="keyword">static_cast&lt;</span><a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a>*<span class="keyword">&gt;</span>( mNavigator-&gt;item( i ) );
<a name="l00589"></a>00589     <span class="keywordflow">if</span> ( item-&gt;<a class="code" href="classKontact_1_1EntryItem.html#ac6193537611d5165806b98929d74a0e">plugin</a>()-&gt;<a class="code" href="classKontact_1_1Plugin.html#8035513498229a238d7de32ded6bfee1" title="Returns the identifier.">identifier</a>() == name ) {
<a name="l00590"></a>00590       mNavigator-&gt;setCurrentItem( i );
<a name="l00591"></a>00591       <span class="keywordflow">break</span>;
<a name="l00592"></a>00592     }
<a name="l00593"></a>00593   }
<a name="l00594"></a>00594 
<a name="l00595"></a>00595   blockSignals( blocked );
<a name="l00596"></a>00596 }
<a name="l00597"></a>00597 
<a name="l00598"></a>00598 <span class="keywordtype">void</span> IconSidePane::indicateForegrunding( <a class="code" href="classKontact_1_1Plugin.html" title="Base class for all Plugins in Kontact.">Kontact::Plugin</a> *plugin )
<a name="l00599"></a>00599 {
<a name="l00600"></a>00600   <span class="keywordflow">for</span> ( uint i = 0; i &lt; mNavigator-&gt;count(); ++i ) {
<a name="l00601"></a>00601     <a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a> *item = <span class="keyword">static_cast&lt;</span><a class="code" href="classKontact_1_1EntryItem.html" title="A QListBoxPixmap Square Box with an optional icon and a text underneath.">EntryItem</a>*<span class="keyword">&gt;</span>( mNavigator-&gt;item( i ) );
<a name="l00602"></a>00602     <span class="keywordflow">if</span> ( item-&gt;<a class="code" href="classKontact_1_1EntryItem.html#ac6193537611d5165806b98929d74a0e">plugin</a>() == plugin ) {
<a name="l00603"></a>00603       mNavigator-&gt;highlightItem( item );
<a name="l00604"></a>00604       <span class="keywordflow">break</span>;
<a name="l00605"></a>00605     }
<a name="l00606"></a>00606   }
<a name="l00607"></a>00607 
<a name="l00608"></a>00608 
<a name="l00609"></a>00609 }
<a name="l00610"></a>00610 <span class="preprocessor">#include "iconsidepane.moc"</span>
<a name="l00611"></a>00611 
<a name="l00612"></a>00612 <span class="comment">// vim: sw=2 sts=2 et tw=80</span>
</pre></div></div>
    </div></div>


      </td>
  </tr>
  <tr>
    <td valign="top" id="leftmenu" width="25%">
      <a name="navigation"></a>
      <div class="menu_box"><h2>kontact</h2>
<div class="nav_list">
<ul><li><a href="index.html">Main Page</a></li><li><a href="hierarchy.html">Class Hierarchy</a></li><li><a href="classes.html">Alphabetical List</a></li><li><a href="annotated.html">Class List</a></li><li><a href="files.html">File List</a></li><li><a href="functions.html">Class Members</a></li></ul>
<!--
<h2>Class Picker</h2>
<div style="text-align: center;">
<form name="guideform">
<select name="guidelinks" style="width:100%;" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value">
<option value="annotated.html">-- Choose --</option>
  <option value="classKontact_1_1Core.html">kontact::core</option>,  <option value="classKontact_1_1EntryItem.html">kontact::entryitem</option>,  <option value="classKontact_1_1EntryItemToolTip.html">kontact::entryitemtooltip</option>,  <option value="classKontact_1_1Navigator.html">kontact::navigator</option>,  <option value="classKontact_1_1Plugin.html">kontact::plugin</option>,  <option value="classKontact_1_1Summary.html">kontact::summary</option>,  <option value="classKontact_1_1UniqueAppHandler.html">kontact::uniqueapphandler</option>,  <option value="classKontact_1_1UniqueAppHandlerFactory.html">kontact::uniqueapphandlerfactory</option>,  <option value="classKontact_1_1UniqueAppHandlerFactoryBase.html">kontact::uniqueapphandlerfactorybase</option>,  <option value="classKontact_1_1UniqueAppWatcher.html">kontact::uniqueappwatcher</option>,
</select>
</form>
</div>
-->
</div></div>
<div class="menu_box"><h2>API Dox</h2>
<div class="nav_list">
<ul>
<li><a href="../../akregator/html/index.html">akregator</a></li><li>&nbsp;&nbsp;<a href="../../akregator/src/html/index.html">src</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<a href="../../akregator/src/librss/html/index.html">librss</a></li><li><a href="../../certmanager/html/index.html">certmanager</a></li><li>&nbsp;&nbsp;<a href="../../certmanager/lib/html/index.html">lib</a></li><li><a href="../../kaddressbook/html/index.html">kaddressbook</a></li><li><a href="../../kalarm/html/index.html">kalarm</a></li><li>&nbsp;&nbsp;<a href="../../kalarm/lib/html/index.html">lib</a></li><li><a href="../../kandy/html/index.html">kandy</a></li><li><a href="../../karm/html/index.html">karm</a></li><li><a href="../../kdgantt/html/index.html">kdgantt</a></li><li><a href="../../kgantt/html/index.html">kgantt</a></li><li><a href="../../kioslaves/html/index.html">kioslaves</a></li><li>&nbsp;&nbsp;<a href="../../kioslaves/imap4/html/index.html">imap4</a></li><li>&nbsp;&nbsp;<a href="../../kioslaves/mbox/html/index.html">mbox</a></li><li><a href="../../kitchensync/html/index.html">kitchensync</a></li><li><a href="../../kmail/html/index.html">kmail</a></li><li><a href="../../knotes/html/index.html">knotes</a></li><li><a href="../../konsolekalendar/html/index.html">konsolekalendar</a></li><li><a href="../../kontact/html/index.html">kontact</a></li><li><a href="../../korganizer/html/index.html">korganizer</a></li><li><a href="../../kpilot/html/index.html">kpilot</a></li><li>&nbsp;&nbsp;<a href="../../kpilot/kpilot/html/index.html">kpilot</a></li><li>&nbsp;&nbsp;<a href="../../kpilot/lib/html/index.html">lib</a></li><li><a href="../../libemailfunctions/html/index.html">libemailfunctions</a></li><li><a href="../../libkcal/html/index.html">libkcal</a></li><li><a href="../../libkdepim/html/index.html">libkdepim</a></li><li><a href="../../libkholidays/html/index.html">libkholidays</a></li><li><a href="../../libkmime/html/index.html">libkmime</a></li><li><a href="../../libkpgp/html/index.html">libkpgp</a></li><li><a href="../../libkpimidentities/html/index.html">libkpimidentities</a></li>
</ul></div></div>


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

<span class="doNotDisplay">
  <a href="http://www.kde.org/" accesskey="8">KDE Home</a> |
  <a href="http://accessibility.kde.org/" accesskey="9">KDE Accessibility Home</a> |
  <a href="http://www.kde.org/media/accesskeys.php" accesskey="0">Description of Access Keys</a>
</span>


<div style="height: 8px"></div>

<div id="footer">
  <div id="footer_left">
    Maintained by <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;groo&#116;&#64;kde&#46;or&#x67;">Adriaan de Groot</a>
and
<a href="&#109;a&#105;&#108;&#116;&#111;&#58;w&#105;nter&#64;kde&#46;or&#x67">Allen Winter</a>.
<br/>
    KDE and K Desktop Environment are trademarks of <a href="http://www.kde.org/areas/kde-ev/" title="Homepage of the KDE non-profit Organization">KDE e.V.</a> |
    <a href="http://www.kde.org/contact/impressum.php">Legal</a>
  </div>
  <div id="footer_right"><img src="/media/images/footer_right.png" style="margin: 0px" alt="" /></div>
</div>

<!--
WARNING: DO NOT SEND MAIL TO THE FOLLOWING EMAIL ADDRESS! YOU WILL
BE BLOCKED INSTANTLY AND PERMANENTLY!
<a href="mailto:aaaatrap-425acc3b5374943f@kde.org">Block me</a>
WARNING END
-->

</body>
</html>