Sophie

Sophie

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

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>kdgantt: KDGanttViewSubwidgets.cpp Source File (kdgantt)</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=".">kdgantt</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>kdgantt</h2>


<!-- Generated by Doxygen 1.5.5 -->
<h1>KDGanttViewSubwidgets.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* -*- Mode: C++ -*-</span>
<a name="l00002"></a>00002 <span class="comment">   $Id: KDGanttViewSubwidgets.cpp 766119 2008-01-25 10:19:31Z tilladam $</span>
<a name="l00003"></a>00003 <span class="comment">   KDGantt - a multi-platform charting engine</span>
<a name="l00004"></a>00004 <span class="comment">*/</span>
<a name="l00005"></a>00005 
<a name="l00006"></a>00006 <span class="comment">/****************************************************************************</span>
<a name="l00007"></a>00007 <span class="comment"> ** Copyright (C)  2002-2004 Klarälvdalens Datakonsult AB.  All rights reserved.</span>
<a name="l00008"></a>00008 <span class="comment"> **</span>
<a name="l00009"></a>00009 <span class="comment"> ** This file is part of the KDGantt library.</span>
<a name="l00010"></a>00010 <span class="comment"> **</span>
<a name="l00011"></a>00011 <span class="comment"> ** This file may be distributed and/or modified under the terms of the</span>
<a name="l00012"></a>00012 <span class="comment"> ** GNU General Public License version 2 as published by the Free Software</span>
<a name="l00013"></a>00013 <span class="comment"> ** Foundation and appearing in the file LICENSE.GPL included in the</span>
<a name="l00014"></a>00014 <span class="comment"> ** packaging of this file.</span>
<a name="l00015"></a>00015 <span class="comment"> **</span>
<a name="l00016"></a>00016 <span class="comment"> ** Licensees holding valid commercial KDGantt licenses may use this file in</span>
<a name="l00017"></a>00017 <span class="comment"> ** accordance with the KDGantt Commercial License Agreement provided with</span>
<a name="l00018"></a>00018 <span class="comment"> ** the Software.</span>
<a name="l00019"></a>00019 <span class="comment"> **</span>
<a name="l00020"></a>00020 <span class="comment"> ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE</span>
<a name="l00021"></a>00021 <span class="comment"> ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.</span>
<a name="l00022"></a>00022 <span class="comment"> **</span>
<a name="l00023"></a>00023 <span class="comment"> ** See http://www.klaralvdalens-datakonsult.se/Public/products/ for</span>
<a name="l00024"></a>00024 <span class="comment"> **   information about KDGantt Commercial License Agreements.</span>
<a name="l00025"></a>00025 <span class="comment"> **</span>
<a name="l00026"></a>00026 <span class="comment"> ** Contact info@klaralvdalens-datakonsult.se if any conditions of this</span>
<a name="l00027"></a>00027 <span class="comment"> ** licensing are not clear to you.</span>
<a name="l00028"></a>00028 <span class="comment"> **</span>
<a name="l00029"></a>00029 <span class="comment"> ** As a special exception, permission is given to link this program</span>
<a name="l00030"></a>00030 <span class="comment"> ** with any edition of Qt, and distribute the resulting executable,</span>
<a name="l00031"></a>00031 <span class="comment"> ** without including the source code for Qt in the source distribution.</span>
<a name="l00032"></a>00032 <span class="comment"> **</span>
<a name="l00033"></a>00033 <span class="comment"> **********************************************************************/</span>
<a name="l00034"></a>00034 
<a name="l00035"></a>00035 
<a name="l00036"></a>00036 <span class="preprocessor">#include "KDGanttViewSubwidgets.h"</span>
<a name="l00037"></a>00037 <span class="preprocessor">#include "KDGanttViewEventItem.h"</span>
<a name="l00038"></a>00038 <span class="preprocessor">#include "KDGanttViewSummaryItem.h"</span>
<a name="l00039"></a>00039 <span class="preprocessor">#include "KDGanttViewTaskItem.h"</span>
<a name="l00040"></a>00040 <span class="preprocessor">#ifndef KDGANTT_MASTER_CVS</span>
<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#include "KDGanttViewSubwidgets.moc"</span>
<a name="l00042"></a>00042 <span class="preprocessor">#endif</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span>
<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;qlabel.h&gt;</span>
<a name="l00045"></a>00045 <span class="preprocessor">#include &lt;qheader.h&gt;</span>
<a name="l00046"></a>00046 <span class="preprocessor">#include &lt;qpainter.h&gt;</span>
<a name="l00047"></a>00047 <span class="preprocessor">#include &lt;qrect.h&gt;</span>
<a name="l00048"></a>00048 <span class="preprocessor">#include &lt;qtooltip.h&gt;</span>
<a name="l00049"></a>00049 <span class="preprocessor">#include &lt;qapplication.h&gt;</span>
<a name="l00050"></a>00050 <span class="preprocessor">#include &lt;qdrawutil.h&gt;</span>
<a name="l00051"></a>00051 <span class="preprocessor">#include &lt;qpalette.h&gt;</span>
<a name="l00052"></a>00052 <span class="preprocessor">#include &lt;qdragobject.h&gt;</span>
<a name="l00053"></a>00053 <span class="preprocessor">#include &lt;qptrlist.h&gt;</span>
<a name="l00054"></a>00054 <span class="preprocessor">#include &lt;qpen.h&gt;</span>
<a name="l00055"></a>00055 
<a name="l00056"></a>00056 <span class="preprocessor">#include &lt;kglobal.h&gt;</span>
<a name="l00057"></a>00057 <span class="preprocessor">#include &lt;klocale.h&gt;</span>
<a name="l00058"></a>00058 <span class="preprocessor">#include &lt;kcalendarsystem.h&gt;</span>
<a name="l00059"></a>00059 <span class="preprocessor">#include &lt;kdebug.h&gt;</span>
<a name="l00060"></a>00060 
<a name="l00061"></a>00061 KDTimeTableWidget:: KDTimeTableWidget( QWidget* parent,<a class="code" href="classKDGanttView.html">KDGanttView</a>* myGantt)
<a name="l00062"></a>00062     : QCanvas (parent)
<a name="l00063"></a>00063 {
<a name="l00064"></a>00064     myGanttView = myGantt;
<a name="l00065"></a>00065     taskLinksVisible = <span class="keyword">true</span>;
<a name="l00066"></a>00066     flag_blockUpdating = <span class="keyword">false</span>;
<a name="l00067"></a>00067     int_blockUpdating = 0;
<a name="l00068"></a>00068     gridPen.setStyle(Qt::DotLine);
<a name="l00069"></a>00069     gridPen.setColor(QColor(100,100,100));
<a name="l00070"></a>00070     maximumComputedGridHeight = 0;
<a name="l00071"></a>00071     denseLineCount = 0;
<a name="l00072"></a>00072     denseLineBrush = QBrush( QColor ( 240,240,240 ));
<a name="l00073"></a>00073     noInfoLineBrush = QBrush(  QColor ( 100,100,100 ), Qt::FDiagPattern );
<a name="l00074"></a>00074     pendingHeight = 0;
<a name="l00075"></a>00075     pendingWidth = 0;
<a name="l00076"></a>00076     retune(256);
<a name="l00077"></a>00077     resize(1,1);
<a name="l00078"></a>00078 }
<a name="l00079"></a>00079 
<a name="l00080"></a>00080 QPtrList&lt;KDGanttViewTaskLink&gt; KDTimeTableWidget::taskLinks()
<a name="l00081"></a>00081 {
<a name="l00082"></a>00082     <span class="keywordflow">return</span> myTaskLinkList;
<a name="l00083"></a>00083 }
<a name="l00084"></a>00084 
<a name="l00085"></a>00085 <span class="keywordtype">void</span> KDTimeTableWidget::clearTaskLinks()
<a name="l00086"></a>00086 {
<a name="l00087"></a>00087     <span class="comment">// cannot use clear() here, as tasklinks will remove themselves from my list when deleted!</span>
<a name="l00088"></a>00088     QPtrListIterator&lt;KDGanttViewTaskLink&gt; it(myTaskLinkList);
<a name="l00089"></a>00089     <span class="keywordflow">while</span> (it.current()) {
<a name="l00090"></a>00090         <span class="keyword">delete</span> it.current();
<a name="l00091"></a>00091     }
<a name="l00092"></a>00092 
<a name="l00093"></a>00093 }
<a name="l00094"></a>00094 
<a name="l00095"></a>00095 <span class="keywordtype">void</span> KDTimeTableWidget::resetWidth( <span class="keywordtype">int</span> wid )
<a name="l00096"></a>00096 {
<a name="l00097"></a>00097     <span class="keywordflow">if</span> ( wid == width() ) {
<a name="l00098"></a>00098         <span class="keywordflow">if</span> (pendingHeight)
<a name="l00099"></a>00099             pendingWidth = wid;
<a name="l00100"></a>00100         <span class="keywordflow">else</span>
<a name="l00101"></a>00101             pendingWidth = 0;
<a name="l00102"></a>00102         <span class="keywordflow">return</span>;
<a name="l00103"></a>00103     }
<a name="l00104"></a>00104     <span class="keywordflow">if</span> ( ! pendingHeight )
<a name="l00105"></a>00105         pendingHeight = height();
<a name="l00106"></a>00106     pendingWidth = wid;
<a name="l00107"></a>00107     updateMyContent();
<a name="l00108"></a>00108 }
<a name="l00109"></a>00109 
<a name="l00110"></a>00110 <span class="keywordtype">void</span> KDTimeTableWidget::checkHeight( <span class="keywordtype">int</span> hei )
<a name="l00111"></a>00111 {
<a name="l00112"></a>00112     <span class="keywordflow">if</span>( hei &lt; height() )
<a name="l00113"></a>00113         <span class="keywordflow">return</span>;
<a name="l00114"></a>00114     <span class="keywordflow">if</span> ( pendingHeight &lt; hei+100)
<a name="l00115"></a>00115         pendingHeight = hei+100;
<a name="l00116"></a>00116     <span class="keywordflow">if</span> ( !  pendingWidth )
<a name="l00117"></a>00117         pendingWidth = width();
<a name="l00118"></a>00118     maximumComputedGridHeight = 0; <span class="comment">//force recomputing all</span>
<a name="l00119"></a>00119     updateMyContent();
<a name="l00120"></a>00120 }
<a name="l00121"></a>00121 
<a name="l00122"></a>00122 
<a name="l00123"></a>00123 <span class="keywordtype">void</span> KDTimeTableWidget::setNoInformationBrush( <span class="keyword">const</span> QBrush&amp; brush )
<a name="l00124"></a>00124 {
<a name="l00125"></a>00125     noInfoLineBrush = brush;
<a name="l00126"></a>00126     updateMyContent();
<a name="l00127"></a>00127 }
<a name="l00128"></a>00128 QBrush KDTimeTableWidget::noInformationBrush()<span class="keyword"> const</span>
<a name="l00129"></a>00129 <span class="keyword"></span>{
<a name="l00130"></a>00130     <span class="keywordflow">return</span> noInfoLineBrush;
<a name="l00131"></a>00131 }
<a name="l00132"></a>00132 
<a name="l00133"></a>00133 <span class="keywordtype">void</span> KDTimeTableWidget::removeItemFromTasklinks( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* item)
<a name="l00134"></a>00134 {
<a name="l00135"></a>00135     QPtrListIterator&lt;KDGanttViewTaskLink&gt; it((myTaskLinkList));
<a name="l00136"></a>00136     <span class="keywordflow">for</span> ( ; it.current(); ++it ) {
<a name="l00137"></a>00137         it.current()-&gt;removeItemFromList( item );
<a name="l00138"></a>00138     }
<a name="l00139"></a>00139 }
<a name="l00140"></a>00140 
<a name="l00141"></a>00141 <span class="keywordtype">void</span> KDTimeTableWidget::expandItem( QListViewItem * item)
<a name="l00142"></a>00142 {
<a name="l00143"></a>00143     item-&gt;invalidateHeight () ;
<a name="l00144"></a>00144     <span class="comment">//qApp-&gt;processEvents();</span>
<a name="l00145"></a>00145     updateMyContent();
<a name="l00146"></a>00146 }
<a name="l00147"></a>00147 <span class="keywordtype">void</span> KDTimeTableWidget::collapseItem( QListViewItem * item)
<a name="l00148"></a>00148 {
<a name="l00149"></a>00149     item-&gt;invalidateHeight () ;
<a name="l00150"></a>00150     <span class="comment">//qApp-&gt;processEvents();</span>
<a name="l00151"></a>00151     updateMyContent();
<a name="l00152"></a>00152 }
<a name="l00153"></a>00153 
<a name="l00154"></a>00154 <span class="keywordtype">void</span> KDTimeTableWidget::highlightItem( QListViewItem * item )
<a name="l00155"></a>00155 {
<a name="l00156"></a>00156     <span class="keyword">static</span> <span class="keywordtype">bool</span> itemwashighlighted;
<a name="l00157"></a>00157     <span class="keyword">static</span> <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* highlightedItem = 0;
<a name="l00158"></a>00158     <span class="keywordflow">if</span> (highlightedItem)
<a name="l00159"></a>00159         highlightedItem-&gt;<a class="code" href="classKDGanttViewItem.html#47cc5f117c149e5e0e086667f9e26fed">setHighlight</a>(itemwashighlighted);
<a name="l00160"></a>00160     highlightedItem = ( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*)item;
<a name="l00161"></a>00161     itemwashighlighted = highlightedItem-&gt;<a class="code" href="classKDGanttViewItem.html#32d11adbaddfb0fa74a1a6d96dfe2bcf">highlight</a>();
<a name="l00162"></a>00162     highlightedItem-&gt;<a class="code" href="classKDGanttViewItem.html#47cc5f117c149e5e0e086667f9e26fed">setHighlight</a>(<span class="keyword">true</span>);
<a name="l00163"></a>00163     item-&gt;invalidateHeight () ;
<a name="l00164"></a>00164     myGanttView-&gt;myListView-&gt;contentsY();
<a name="l00165"></a>00165     updateMyContent();
<a name="l00166"></a>00166 }
<a name="l00167"></a>00167 <span class="keywordtype">int</span>  KDTimeTableWidget::computeHeight()
<a name="l00168"></a>00168 {
<a name="l00169"></a>00169     <span class="comment">// compute height of ListView</span>
<a name="l00170"></a>00170     <span class="comment">// show only items shown in ListView</span>
<a name="l00171"></a>00171     <span class="keywordtype">int</span> hei = 0;
<a name="l00172"></a>00172     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* temp;
<a name="l00173"></a>00173     temp = myGanttView-&gt;<a class="code" href="classKDGanttViewItem.html#b18336f62e6f479ca43ec1d172ff8ac5">firstChild</a>();
<a name="l00174"></a>00174     <span class="keywordflow">while</span> (temp) {
<a name="l00175"></a>00175         hei += temp-&gt;<a class="code" href="classKDGanttViewItem.html#66373b192b00d99dea5730062a358a2f">computeHeight</a>();
<a name="l00176"></a>00176         temp = temp-&gt;<a class="code" href="classKDGanttViewItem.html#95fcce35f0113bdf7afe2aceb821dbe3">nextSibling</a>();
<a name="l00177"></a>00177     }
<a name="l00178"></a>00178     <span class="comment">// set hei  to 1 to avoid canavs to be a null pixmap</span>
<a name="l00179"></a>00179     <span class="keywordflow">if</span> (hei == 0) {
<a name="l00180"></a>00180         hei = 1;
<a name="l00181"></a>00181     }
<a name="l00182"></a>00182     <span class="comment">//qDebug("COMPUTED HEI %d ", hei);</span>
<a name="l00183"></a>00183     emit heightComputed( hei );
<a name="l00184"></a>00184     <span class="keywordflow">return</span> hei;
<a name="l00185"></a>00185 }
<a name="l00186"></a>00186 <span class="keywordtype">void</span> KDTimeTableWidget::computeVerticalGrid()
<a name="l00187"></a>00187 {
<a name="l00188"></a>00188     <span class="comment">// recompute the vertical grid</span>
<a name="l00189"></a>00189     <span class="comment">// compute the vertical grid</span>
<a name="l00190"></a>00190     <span class="comment">// if we have too much lines, hide them</span>
<a name="l00191"></a>00191     <span class="comment">//qDebug("computeVerticalGrid() ");</span>
<a name="l00192"></a>00192     <span class="keywordtype">int</span> cw =  myGanttView-&gt;myTimeHeader-&gt;myGridMinorWidth;
<a name="l00193"></a>00193     <span class="keywordtype">int</span> i = 0;
<a name="l00194"></a>00194     <span class="keywordtype">int</span> h ;
<a name="l00195"></a>00195     <span class="keywordflow">if</span> (pendingHeight &gt; height() )
<a name="l00196"></a>00196         h = pendingHeight;
<a name="l00197"></a>00197     <span class="keywordflow">else</span>
<a name="l00198"></a>00198         h = height();
<a name="l00199"></a>00199     <span class="keywordtype">int</span> wid;
<a name="l00200"></a>00200     <span class="keywordflow">if</span> ( pendingWidth )
<a name="l00201"></a>00201         wid = pendingWidth;
<a name="l00202"></a>00202     <span class="keywordflow">else</span>
<a name="l00203"></a>00203         wid = width();
<a name="l00204"></a>00204     KDCanvasLine* templine;
<a name="l00205"></a>00205     KDCanvasRectangle* temprect;
<a name="l00206"></a>00206     QColor colcol;
<a name="l00207"></a>00207     QPen colPen;
<a name="l00208"></a>00208     <span class="keywordtype">bool</span> colorIterator = <span class="keyword">true</span>;
<a name="l00209"></a>00209 
<a name="l00210"></a>00210 
<a name="l00211"></a>00211     <span class="keywordflow">if</span> (myGanttView-&gt;showMinorTicks()){<span class="comment">//minor</span>
<a name="l00212"></a>00212         colPen.setWidth(cw);
<a name="l00213"></a>00213         QPtrListIterator&lt;KDCanvasRectangle&gt; itcol(columnColorList);
<a name="l00214"></a>00214         QPtrListIterator&lt;KDCanvasLine&gt; itgrid(verGridList);
<a name="l00215"></a>00215         <span class="keywordflow">for</span> ( ; itgrid.current(); ++itgrid ) {
<a name="l00216"></a>00216             <span class="keywordflow">if</span> (i &lt; wid) {
<a name="l00217"></a>00217                 itgrid.current()-&gt;setPoints(i,0,i,h);
<a name="l00218"></a>00218                 itgrid.current()-&gt;show();
<a name="l00219"></a>00219 
<a name="l00220"></a>00220                 <span class="keywordflow">if</span> (myGanttView-&gt;myTimeHeader-&gt;getColumnColor(colcol,i,i+cw))
<a name="l00221"></a>00221                     {
<a name="l00222"></a>00222 
<a name="l00223"></a>00223                         colPen.setColor(colcol);
<a name="l00224"></a>00224                         <span class="keywordflow">if</span> (colorIterator)
<a name="l00225"></a>00225                             colorIterator = itcol.current();
<a name="l00226"></a>00226                         <span class="keywordflow">if</span> (colorIterator)
<a name="l00227"></a>00227                             {<span class="comment">/*</span>
<a name="l00228"></a>00228 <span class="comment">                               itcol.current()-&gt;setPen(colPen);</span>
<a name="l00229"></a>00229 <span class="comment">                               itcol.current()-&gt;setPoints(i+(cw/2),0,i+(cw/2),h);</span>
<a name="l00230"></a>00230 <span class="comment">                             */</span>
<a name="l00231"></a>00231 
<a name="l00232"></a>00232                                 itcol.current()-&gt;setPen( QPen::NoPen );
<a name="l00233"></a>00233                                 itcol.current()-&gt;setBrush( QBrush( colcol, SolidPattern) );
<a name="l00234"></a>00234                                 itcol.current()-&gt;setSize(cw ,h );
<a name="l00235"></a>00235                                 itcol.current()-&gt;move( i, 0 );
<a name="l00236"></a>00236                                 itcol.current()-&gt;show();
<a name="l00237"></a>00237                                 ++itcol;
<a name="l00238"></a>00238                             } <span class="keywordflow">else</span> {
<a name="l00239"></a>00239 
<a name="l00240"></a>00240                                 <span class="comment">/*</span>
<a name="l00241"></a>00241 <span class="comment">                                  templine = new KDCanvasLine(this,0,Type_is_KDGanttGridItem);</span>
<a name="l00242"></a>00242 <span class="comment">                                  templine-&gt;setPen(colPen);</span>
<a name="l00243"></a>00243 <span class="comment">                                  templine-&gt;setPoints(i+(cw/2),0,i+(cw/2),h);</span>
<a name="l00244"></a>00244 <span class="comment">                                */</span>
<a name="l00245"></a>00245                                 temprect = <span class="keyword">new</span> KDCanvasRectangle(<span class="keyword">this</span>,0,Type_is_KDGanttGridItem);
<a name="l00246"></a>00246                                 temprect-&gt;setPen( QPen::NoPen );
<a name="l00247"></a>00247                                 temprect-&gt;setBrush( QBrush( colcol, SolidPattern) );
<a name="l00248"></a>00248                                 temprect-&gt;setSize(cw ,h );
<a name="l00249"></a>00249                                 temprect-&gt;move( i, 0 );
<a name="l00250"></a>00250                                 temprect-&gt;setZ(-20);
<a name="l00251"></a>00251                                 temprect-&gt;show();
<a name="l00252"></a>00252                                 columnColorList.append(temprect);
<a name="l00253"></a>00253                             }
<a name="l00254"></a>00254                     }
<a name="l00255"></a>00255                 i += cw;
<a name="l00256"></a>00256             } <span class="keywordflow">else</span> {
<a name="l00257"></a>00257                 itgrid.current()-&gt;hide();
<a name="l00258"></a>00258             }
<a name="l00259"></a>00259         }
<a name="l00260"></a>00260         <span class="comment">// create additional Lines for vertical grid</span>
<a name="l00261"></a>00261         <span class="keywordflow">for</span> ( ;i &lt; wid;i += cw) {
<a name="l00262"></a>00262             templine = <span class="keyword">new</span> KDCanvasLine(<span class="keyword">this</span>,0,Type_is_KDGanttGridItem);
<a name="l00263"></a>00263             templine-&gt;setPen(gridPen);
<a name="l00264"></a>00264             templine-&gt;setPoints(i,0,i,h);
<a name="l00265"></a>00265             templine-&gt;setZ(0);
<a name="l00266"></a>00266             templine-&gt;show();
<a name="l00267"></a>00267             verGridList.append(templine);
<a name="l00268"></a>00268             <span class="keywordflow">if</span> (myGanttView-&gt;myTimeHeader-&gt;getColumnColor(colcol,i,i+cw))
<a name="l00269"></a>00269                 {
<a name="l00270"></a>00270                     colPen.setColor(colcol);
<a name="l00271"></a>00271                     <span class="keywordflow">if</span> (colorIterator)
<a name="l00272"></a>00272                         colorIterator = itcol.current();
<a name="l00273"></a>00273                     <span class="keywordflow">if</span> (colorIterator)
<a name="l00274"></a>00274                         {<span class="comment">/*</span>
<a name="l00275"></a>00275 <span class="comment">                           itcol.current()-&gt;setPen(colPen);</span>
<a name="l00276"></a>00276 <span class="comment">                           itcol.current()-&gt;setPoints(i+(cw/2),0,i+(cw/2),h);</span>
<a name="l00277"></a>00277 <span class="comment">                         */</span>
<a name="l00278"></a>00278                             itcol.current()-&gt;setPen( QPen::NoPen );
<a name="l00279"></a>00279                             itcol.current()-&gt;setBrush( QBrush( colcol, SolidPattern) );
<a name="l00280"></a>00280                             itcol.current()-&gt;setSize(cw ,h );
<a name="l00281"></a>00281                             itcol.current()-&gt;move( i, 0 );
<a name="l00282"></a>00282                             itcol.current()-&gt;show();
<a name="l00283"></a>00283                             ++itcol;
<a name="l00284"></a>00284                         } <span class="keywordflow">else</span> {
<a name="l00285"></a>00285                             temprect = <span class="keyword">new</span> KDCanvasRectangle(<span class="keyword">this</span>,0,Type_is_KDGanttGridItem);
<a name="l00286"></a>00286                             temprect-&gt;setPen( QPen::NoPen );
<a name="l00287"></a>00287                             temprect-&gt;setBrush( QBrush( colcol, SolidPattern) );
<a name="l00288"></a>00288                             temprect-&gt;setSize(cw ,h );
<a name="l00289"></a>00289                             temprect-&gt;move( i, 0 );
<a name="l00290"></a>00290                             temprect-&gt;setZ(-20);
<a name="l00291"></a>00291                             temprect-&gt;show();
<a name="l00292"></a>00292                             columnColorList.append(temprect);
<a name="l00293"></a>00293                             <span class="comment">/*</span>
<a name="l00294"></a>00294 <span class="comment">                              templine = new KDCanvasLine(this,0,Type_is_KDGanttGridItem);</span>
<a name="l00295"></a>00295 <span class="comment">                              templine-&gt;setPen(colPen);</span>
<a name="l00296"></a>00296 <span class="comment">                              templine-&gt;setPoints(i+(cw/2),0,i+(cw/2),h);</span>
<a name="l00297"></a>00297 <span class="comment">                              templine-&gt;setZ(-20);</span>
<a name="l00298"></a>00298 <span class="comment">                              templine-&gt;show();</span>
<a name="l00299"></a>00299 <span class="comment">                              columnColorList.append(templine);</span>
<a name="l00300"></a>00300 <span class="comment">                            */</span>
<a name="l00301"></a>00301                         }
<a name="l00302"></a>00302                 }
<a name="l00303"></a>00303         }
<a name="l00304"></a>00304         <span class="keywordflow">if</span> (colorIterator)
<a name="l00305"></a>00305             <span class="keywordflow">for</span> ( ; itcol.current(); ++itcol )
<a name="l00306"></a>00306                 itcol.current()-&gt;hide();
<a name="l00307"></a>00307     } <span class="keywordflow">else</span> {<span class="comment">//major</span>
<a name="l00308"></a>00308         <span class="keywordflow">if</span> (myGanttView-&gt;showMajorTicks()) {
<a name="l00309"></a>00309             QValueList&lt;int&gt;::iterator intIt = myGanttView-&gt;myTimeHeader-&gt;majorTicks.begin();
<a name="l00310"></a>00310             QValueList&lt;int&gt;::iterator intItEnd = myGanttView-&gt;myTimeHeader-&gt;majorTicks.end();
<a name="l00311"></a>00311             QPtrListIterator&lt;KDCanvasRectangle&gt; itcol(columnColorList);
<a name="l00312"></a>00312             QPtrListIterator&lt;KDCanvasLine&gt; itgrid(verGridList);
<a name="l00313"></a>00313             <span class="keywordtype">int</span> left = 0;
<a name="l00314"></a>00314             <span class="keywordflow">for</span> ( ; itgrid.current(); ++itgrid ) {
<a name="l00315"></a>00315                 <span class="keywordflow">if</span> (intIt != intItEnd) {
<a name="l00316"></a>00316                     left = (*intIt);
<a name="l00317"></a>00317                     ++intIt;
<a name="l00318"></a>00318                     itgrid.current()-&gt;setPoints(left,0,left,h);
<a name="l00319"></a>00319                     itgrid.current()-&gt;show();
<a name="l00320"></a>00320                     <span class="comment">//int right = (*intIt);</span>
<a name="l00321"></a>00321                     <span class="keywordflow">if</span> ((*intIt))
<a name="l00322"></a>00322                         <span class="keywordflow">if</span> (myGanttView-&gt;myTimeHeader-&gt;getColumnColor(colcol,left,(*intIt) ))
<a name="l00323"></a>00323                             {
<a name="l00324"></a>00324                                 <span class="keywordtype">int</span> mid = (-left+(*intIt));
<a name="l00325"></a>00325                                 colPen.setColor(colcol);
<a name="l00326"></a>00326                                 colPen.setWidth((*intIt)-left);
<a name="l00327"></a>00327                                 <span class="keywordflow">if</span> (colorIterator)
<a name="l00328"></a>00328                                     colorIterator = itcol.current();
<a name="l00329"></a>00329                                 <span class="keywordflow">if</span> (colorIterator)
<a name="l00330"></a>00330                                     {<span class="comment">/*</span>
<a name="l00331"></a>00331 <span class="comment">                                       itcol.current()-&gt;setPen(colPen);</span>
<a name="l00332"></a>00332 <span class="comment">                                       itcol.current()-&gt;setPoints(i+mid,0,mid,h);</span>
<a name="l00333"></a>00333 <span class="comment">                                     */</span>
<a name="l00334"></a>00334                                         itcol.current()-&gt;setPen( QPen::NoPen );
<a name="l00335"></a>00335                                         itcol.current()-&gt;setBrush( QBrush( colcol, SolidPattern) );
<a name="l00336"></a>00336                                         itcol.current()-&gt;setSize(mid ,h );
<a name="l00337"></a>00337                                         itcol.current()-&gt;move( left, 0 );
<a name="l00338"></a>00338                                         itcol.current()-&gt;show();
<a name="l00339"></a>00339                                         ++itcol;
<a name="l00340"></a>00340                                     } <span class="keywordflow">else</span> {
<a name="l00341"></a>00341                                         temprect = <span class="keyword">new</span> KDCanvasRectangle(<span class="keyword">this</span>,0,Type_is_KDGanttGridItem);
<a name="l00342"></a>00342                                         temprect-&gt;setPen( QPen::NoPen );
<a name="l00343"></a>00343                                         temprect-&gt;setBrush( QBrush( colcol, SolidPattern) );
<a name="l00344"></a>00344                                         temprect-&gt;setSize(mid,h );
<a name="l00345"></a>00345                                         temprect-&gt;move( left, 0 );
<a name="l00346"></a>00346                                         temprect-&gt;setZ(-20);
<a name="l00347"></a>00347                                         temprect-&gt;show();
<a name="l00348"></a>00348                                         columnColorList.append(temprect);
<a name="l00349"></a>00349                                         <span class="comment">/*</span>
<a name="l00350"></a>00350 <span class="comment">                                          templine = new KDCanvasLine(this,0,Type_is_KDGanttGridItem);</span>
<a name="l00351"></a>00351 <span class="comment">                                          templine-&gt;setPen(colPen);</span>
<a name="l00352"></a>00352 <span class="comment">                                          templine-&gt;setPoints(mid,0,i+mid,h);</span>
<a name="l00353"></a>00353 <span class="comment">                                          templine-&gt;setZ(-20);</span>
<a name="l00354"></a>00354 <span class="comment">                                          templine-&gt;show();</span>
<a name="l00355"></a>00355 <span class="comment">                                          columnColorList.append(templine);</span>
<a name="l00356"></a>00356 <span class="comment">                                        */</span>
<a name="l00357"></a>00357 
<a name="l00358"></a>00358                                     }
<a name="l00359"></a>00359                             }
<a name="l00360"></a>00360 
<a name="l00361"></a>00361                 } <span class="keywordflow">else</span> {
<a name="l00362"></a>00362                     itgrid.current()-&gt;hide();
<a name="l00363"></a>00363                 }
<a name="l00364"></a>00364             }
<a name="l00365"></a>00365             KDCanvasLine* templine;
<a name="l00366"></a>00366             <span class="comment">// create additional Lines for vertical grid</span>
<a name="l00367"></a>00367             <span class="keywordflow">for</span> ( ;intIt != intItEnd  ;++intIt) {
<a name="l00368"></a>00368 
<a name="l00369"></a>00369                 templine = <span class="keyword">new</span> KDCanvasLine(<span class="keyword">this</span>,0,Type_is_KDGanttGridItem);
<a name="l00370"></a>00370                 templine-&gt;setPen(gridPen);
<a name="l00371"></a>00371                 templine-&gt;setPoints((*intIt),0,(*intIt),h);
<a name="l00372"></a>00372                 templine-&gt;setZ(0);
<a name="l00373"></a>00373                 templine-&gt;show();
<a name="l00374"></a>00374                 verGridList.append(templine);
<a name="l00375"></a>00375                 <span class="keywordflow">if</span> ((*intIt))
<a name="l00376"></a>00376                     <span class="keywordflow">if</span> (myGanttView-&gt;myTimeHeader-&gt;getColumnColor(colcol,left,(*intIt)))
<a name="l00377"></a>00377                         {
<a name="l00378"></a>00378                             <span class="keywordtype">int</span> mid = (-left+(*intIt));
<a name="l00379"></a>00379                             colPen.setColor(colcol);
<a name="l00380"></a>00380                             colPen.setWidth((*intIt)-left);
<a name="l00381"></a>00381                             <span class="keywordflow">if</span> (colorIterator)
<a name="l00382"></a>00382                                 colorIterator = itcol.current();
<a name="l00383"></a>00383                             <span class="keywordflow">if</span> (colorIterator)
<a name="l00384"></a>00384                                 {<span class="comment">/*</span>
<a name="l00385"></a>00385 <span class="comment">                                   itcol.current()-&gt;setPen(colPen);</span>
<a name="l00386"></a>00386 <span class="comment">                                   itcol.current()-&gt;setPoints(i+mid,0,mid,h);</span>
<a name="l00387"></a>00387 <span class="comment">                                 */</span>
<a name="l00388"></a>00388                                     itcol.current()-&gt;setPen( QPen::NoPen );
<a name="l00389"></a>00389                                     itcol.current()-&gt;setBrush( QBrush( colcol, SolidPattern) );
<a name="l00390"></a>00390                                     itcol.current()-&gt;setSize(mid ,h );
<a name="l00391"></a>00391                                     itcol.current()-&gt;move( left, 0 );
<a name="l00392"></a>00392                                     itcol.current()-&gt;show();
<a name="l00393"></a>00393                                     ++itcol;
<a name="l00394"></a>00394                                 } <span class="keywordflow">else</span> {
<a name="l00395"></a>00395                                     temprect = <span class="keyword">new</span> KDCanvasRectangle(<span class="keyword">this</span>,0,Type_is_KDGanttGridItem);
<a name="l00396"></a>00396                                     temprect-&gt;setPen( QPen::NoPen );
<a name="l00397"></a>00397                                     temprect-&gt;setBrush( QBrush( colcol, SolidPattern) );
<a name="l00398"></a>00398                                     temprect-&gt;setSize(mid ,h );
<a name="l00399"></a>00399                                     temprect-&gt;move( left, 0 );
<a name="l00400"></a>00400                                     temprect-&gt;setZ(-20);
<a name="l00401"></a>00401                                     temprect-&gt;show();
<a name="l00402"></a>00402                                     columnColorList.append(temprect);
<a name="l00403"></a>00403                                     <span class="comment">/*</span>
<a name="l00404"></a>00404 <span class="comment">                                      templine = new KDCanvasLine(this,0,Type_is_KDGanttGridItem);</span>
<a name="l00405"></a>00405 <span class="comment">                                      templine-&gt;setPen(colPen);</span>
<a name="l00406"></a>00406 <span class="comment">                                      templine-&gt;setPoints(mid,0,i+mid,h);</span>
<a name="l00407"></a>00407 <span class="comment">                                      templine-&gt;setZ(-20);</span>
<a name="l00408"></a>00408 <span class="comment">                                      templine-&gt;show();</span>
<a name="l00409"></a>00409 <span class="comment">                                      columnColorList.append(templine);</span>
<a name="l00410"></a>00410 <span class="comment">                                    */</span>
<a name="l00411"></a>00411                                 }
<a name="l00412"></a>00412                         }
<a name="l00413"></a>00413                 left = (*intIt);
<a name="l00414"></a>00414             }
<a name="l00415"></a>00415             <span class="keywordflow">if</span> (colorIterator)
<a name="l00416"></a>00416                 <span class="keywordflow">for</span> ( ; itcol.current(); ++itcol ) {
<a name="l00417"></a>00417                     itcol.current()-&gt;hide();
<a name="l00418"></a>00418                 }
<a name="l00419"></a>00419 
<a name="l00420"></a>00420         }
<a name="l00421"></a>00421         <span class="keywordflow">else</span> {
<a name="l00422"></a>00422             <span class="comment">//hideall</span>
<a name="l00423"></a>00423             QPtrListIterator&lt;KDCanvasLine&gt; itgrid(verGridList);
<a name="l00424"></a>00424             <span class="keywordflow">for</span> ( ; itgrid.current(); ++itgrid ) {
<a name="l00425"></a>00425                 itgrid.current()-&gt;hide();
<a name="l00426"></a>00426             }
<a name="l00427"></a>00427             QPtrListIterator&lt;KDCanvasRectangle&gt; itcol(columnColorList);
<a name="l00428"></a>00428             <span class="keywordflow">for</span> ( ; itcol.current(); ++itcol ) {
<a name="l00429"></a>00429                 itcol.current()-&gt;hide();
<a name="l00430"></a>00430             }
<a name="l00431"></a>00431         }
<a name="l00432"></a>00432     }
<a name="l00433"></a>00433 }
<a name="l00434"></a>00434 <span class="keywordtype">void</span> KDTimeTableWidget::computeHorizontalGrid()
<a name="l00435"></a>00435 {
<a name="l00436"></a>00436     <span class="comment">// compute  horizontal grid</span>
<a name="l00437"></a>00437     <span class="comment">//qDebug("computeHorizontalGrid() ");</span>
<a name="l00438"></a>00438     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* temp = myGanttView-&gt;<a class="code" href="classKDGanttViewItem.html#b18336f62e6f479ca43ec1d172ff8ac5">firstChild</a>();
<a name="l00439"></a>00439     <span class="keywordtype">int</span> wid;
<a name="l00440"></a>00440     <span class="keywordflow">if</span> ( pendingWidth )
<a name="l00441"></a>00441         wid = pendingWidth;
<a name="l00442"></a>00442     <span class="keywordflow">else</span>
<a name="l00443"></a>00443         wid = width();
<a name="l00444"></a>00444     KDCanvasLine* templine;
<a name="l00445"></a>00445     QPtrListIterator&lt;KDCanvasLine&gt; ithor(horGridList);
<a name="l00446"></a>00446     <span class="keywordflow">if</span> ( ithor.current() ) {
<a name="l00447"></a>00447         templine = ithor.current();
<a name="l00448"></a>00448         ++ithor;
<a name="l00449"></a>00449     } <span class="keywordflow">else</span> {
<a name="l00450"></a>00450         templine = <span class="keyword">new</span> KDCanvasLine(<span class="keyword">this</span>,0,Type_is_KDGanttGridItem);
<a name="l00451"></a>00451         templine-&gt;setPen(gridPen);
<a name="l00452"></a>00452         templine-&gt;setZ(0);
<a name="l00453"></a>00453         horGridList.append(templine);
<a name="l00454"></a>00454     }
<a name="l00455"></a>00455     templine-&gt;setPoints(0,0,wid,0);
<a name="l00456"></a>00456     templine-&gt;show();
<a name="l00457"></a>00457     <span class="keywordtype">int</span> posY;
<a name="l00458"></a>00458     <span class="keywordflow">while</span> ( temp ) {
<a name="l00459"></a>00459         posY = temp-&gt;itemPos() + temp-&gt;height();
<a name="l00460"></a>00460         <span class="keywordflow">if</span> ( ithor.current() ) {
<a name="l00461"></a>00461             templine = ithor.current();
<a name="l00462"></a>00462             ++ithor;
<a name="l00463"></a>00463         } <span class="keywordflow">else</span> {
<a name="l00464"></a>00464             <span class="comment">//new vertical grid line</span>
<a name="l00465"></a>00465             templine = <span class="keyword">new</span> KDCanvasLine(<span class="keyword">this</span>,0,Type_is_KDGanttGridItem);
<a name="l00466"></a>00466             templine-&gt;setPen(gridPen);
<a name="l00467"></a>00467             templine-&gt;setZ(0);
<a name="l00468"></a>00468             horGridList.append(templine);
<a name="l00469"></a>00469         }
<a name="l00470"></a>00470         <span class="keywordflow">if</span> ( templine-&gt;endPoint() != QPoint(wid,posY ))
<a name="l00471"></a>00471             templine-&gt;setPoints(0,posY,wid,posY );
<a name="l00472"></a>00472         <span class="keywordflow">if</span> ( !templine-&gt;isVisible() )
<a name="l00473"></a>00473             templine-&gt;show();
<a name="l00474"></a>00474         <span class="comment">//QString ts = "asGroup";</span>
<a name="l00475"></a>00475         <span class="comment">//if (!temp-&gt;displaySubitemsAsGroup() )</span>
<a name="l00476"></a>00476         <span class="comment">//  ts = " NOT asGroup";</span>
<a name="l00477"></a>00477         <span class="comment">//qDebug("temp name %s %s", temp-&gt;listViewText(0).latin1(), ts.latin1());</span>
<a name="l00478"></a>00478 
<a name="l00479"></a>00479         temp = temp-&gt;<a class="code" href="classKDGanttViewItem.html#225847e52dde05af559289986ff02435">itemBelow</a> ();
<a name="l00480"></a>00480     }
<a name="l00481"></a>00481     <span class="keywordflow">while</span> ( ithor.current() ) {
<a name="l00482"></a>00482         <span class="keywordflow">if</span> ( ithor.current()-&gt;isVisible() )
<a name="l00483"></a>00483             ithor.current()-&gt;hide();
<a name="l00484"></a>00484         ++ithor;
<a name="l00485"></a>00485     }
<a name="l00486"></a>00486 }
<a name="l00487"></a>00487 
<a name="l00488"></a>00488 <span class="keywordtype">void</span> KDTimeTableWidget::computeDenseLines()
<a name="l00489"></a>00489 {
<a name="l00490"></a>00490     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* temp = myGanttView-&gt;<a class="code" href="classKDGanttViewItem.html#b18336f62e6f479ca43ec1d172ff8ac5">firstChild</a>();
<a name="l00491"></a>00491     <span class="keywordtype">int</span> wid;
<a name="l00492"></a>00492     <span class="keywordflow">if</span> ( pendingWidth )
<a name="l00493"></a>00493         wid = pendingWidth;
<a name="l00494"></a>00494     <span class="keywordflow">else</span>
<a name="l00495"></a>00495         wid = width();
<a name="l00496"></a>00496     QPtrListIterator&lt;KDCanvasRectangle&gt; ithordense(horDenseList);
<a name="l00497"></a>00497     KDCanvasRectangle* denseLine;
<a name="l00498"></a>00498     <span class="keywordtype">int</span> tempDenseLineCount = 0;
<a name="l00499"></a>00499     <span class="keywordflow">while</span> ( temp ) {
<a name="l00500"></a>00500         <span class="keywordflow">if</span> ( temp-&gt;isVisible() ) {
<a name="l00501"></a>00501             ++tempDenseLineCount;
<a name="l00502"></a>00502             <span class="keywordflow">if</span> ( tempDenseLineCount == denseLineCount ) {
<a name="l00503"></a>00503                 tempDenseLineCount = 0;
<a name="l00504"></a>00504                 <span class="keywordflow">if</span> ( ithordense.current() ) {
<a name="l00505"></a>00505                     denseLine = ithordense.current();
<a name="l00506"></a>00506                     ++ithordense;
<a name="l00507"></a>00507                 } <span class="keywordflow">else</span> {
<a name="l00508"></a>00508                     denseLine =<span class="keyword">new</span> KDCanvasRectangle(<span class="keyword">this</span>,0,Type_is_KDGanttGridItem);
<a name="l00509"></a>00509                     denseLine-&gt;setZ(-2);
<a name="l00510"></a>00510                     horDenseList.append( denseLine );
<a name="l00511"></a>00511                 }
<a name="l00512"></a>00512                 <span class="keywordflow">if</span> ( denseLine-&gt;rect() != QRect(0, temp-&gt;itemPos(),wid, temp-&gt;height()) ) {
<a name="l00513"></a>00513                     denseLine-&gt;move( 0, temp-&gt;itemPos() );
<a name="l00514"></a>00514                     denseLine-&gt;setSize( wid, temp-&gt;height());
<a name="l00515"></a>00515                 }
<a name="l00516"></a>00516                 <span class="keywordflow">if</span> (denseLine-&gt;brush() != denseLineBrush ) {
<a name="l00517"></a>00517                     denseLine-&gt;setPen( QPen(  Qt::NoPen ) );
<a name="l00518"></a>00518                     denseLine-&gt;setBrush( denseLineBrush);
<a name="l00519"></a>00519                 }
<a name="l00520"></a>00520                 <span class="keywordflow">if</span> (!denseLine-&gt;isVisible() )
<a name="l00521"></a>00521                     denseLine-&gt;show();
<a name="l00522"></a>00522 
<a name="l00523"></a>00523             } <span class="keywordflow">else</span> {
<a name="l00524"></a>00524                 ;
<a name="l00525"></a>00525             }
<a name="l00526"></a>00526         }
<a name="l00527"></a>00527         temp = temp-&gt;<a class="code" href="classKDGanttViewItem.html#225847e52dde05af559289986ff02435">itemBelow</a> ();
<a name="l00528"></a>00528     }
<a name="l00529"></a>00529     <span class="keywordflow">while</span> ( ithordense.current() ) {
<a name="l00530"></a>00530         <span class="keywordflow">if</span> ( ithordense.current()-&gt;isVisible() ) {
<a name="l00531"></a>00531             ithordense.current()-&gt;hide();
<a name="l00532"></a>00532         }
<a name="l00533"></a>00533         ++ithordense;
<a name="l00534"></a>00534     }
<a name="l00535"></a>00535 }
<a name="l00536"></a>00536 <span class="keywordtype">void</span> KDTimeTableWidget::computeShowNoInformation()
<a name="l00537"></a>00537 {
<a name="l00538"></a>00538     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* temp = myGanttView-&gt;<a class="code" href="classKDGanttViewItem.html#b18336f62e6f479ca43ec1d172ff8ac5">firstChild</a>();
<a name="l00539"></a>00539     <span class="keywordtype">int</span> wid;
<a name="l00540"></a>00540     <span class="keywordflow">if</span> ( pendingWidth )
<a name="l00541"></a>00541         wid = pendingWidth;
<a name="l00542"></a>00542     <span class="keywordflow">else</span>
<a name="l00543"></a>00543         wid = width();
<a name="l00544"></a>00544     QPtrListIterator&lt;KDCanvasRectangle&gt; itnoinfo(showNoInfoList);
<a name="l00545"></a>00545     KDCanvasRectangle* noInfoLine;
<a name="l00546"></a>00546     <span class="keywordflow">while</span> ( temp ) {
<a name="l00547"></a>00547         <span class="keywordflow">if</span> ( temp-&gt;<a class="code" href="classKDGanttViewItem.html#af096df66f336bf5caf4de42bafeb922">showNoInformation</a>() ) {
<a name="l00548"></a>00548             <span class="keywordflow">if</span> ( itnoinfo.current() ) {
<a name="l00549"></a>00549                 noInfoLine = itnoinfo.current();
<a name="l00550"></a>00550                 ++itnoinfo;
<a name="l00551"></a>00551             } <span class="keywordflow">else</span> {
<a name="l00552"></a>00552                 noInfoLine =<span class="keyword">new</span> KDCanvasRectangle(<span class="keyword">this</span>,0,Type_is_KDGanttGridItem);
<a name="l00553"></a>00553                 showNoInfoList.append( noInfoLine );
<a name="l00554"></a>00554                 noInfoLine-&gt;setZ(-1);
<a name="l00555"></a>00555             }
<a name="l00556"></a>00556             noInfoLine-&gt;move( 0, temp-&gt;itemPos() );
<a name="l00557"></a>00557             noInfoLine-&gt;setSize( wid, temp-&gt;height());
<a name="l00558"></a>00558             noInfoLine-&gt;setPen( QPen(  Qt::NoPen ) );
<a name="l00559"></a>00559             noInfoLine-&gt;setBrush( noInfoLineBrush);
<a name="l00560"></a>00560             noInfoLine-&gt;show();
<a name="l00561"></a>00561         }
<a name="l00562"></a>00562         temp = temp-&gt;<a class="code" href="classKDGanttViewItem.html#225847e52dde05af559289986ff02435">itemBelow</a> ();
<a name="l00563"></a>00563     }
<a name="l00564"></a>00564     <span class="keywordflow">while</span> ( itnoinfo.current() ) {
<a name="l00565"></a>00565         itnoinfo.current()-&gt;hide();
<a name="l00566"></a>00566         ++itnoinfo;
<a name="l00567"></a>00567     }
<a name="l00568"></a>00568 
<a name="l00569"></a>00569 }
<a name="l00570"></a>00570 
<a name="l00571"></a>00571 <span class="keywordtype">void</span> KDTimeTableWidget::computeTaskLinks()
<a name="l00572"></a>00572 {
<a name="l00573"></a>00573     <span class="comment">//compute and show tasklinks</span>
<a name="l00574"></a>00574     QPtrListIterator&lt;KDGanttViewTaskLink&gt; it((myTaskLinkList));
<a name="l00575"></a>00575     <span class="keywordflow">for</span> ( ; it.current(); ++it ) {
<a name="l00576"></a>00576         <span class="keywordflow">if</span> (it.current()-&gt;isVisible())
<a name="l00577"></a>00577             it.current()-&gt;showMe(<span class="keyword">true</span>);
<a name="l00578"></a>00578         <span class="keywordflow">else</span>
<a name="l00579"></a>00579             it.current()-&gt;showMe(<span class="keyword">false</span>);
<a name="l00580"></a>00580     }
<a name="l00581"></a>00581 }
<a name="l00582"></a>00582 
<a name="l00583"></a>00583 <span class="comment">// updateMyContent() can be blocked by blockUpdating( true ) or inc_blockUpdating()</span>
<a name="l00584"></a>00584 <span class="comment">// updateMyContent() is blocked, if the GanttView is hidden after startup</span>
<a name="l00585"></a>00585 
<a name="l00586"></a>00586 <span class="keywordtype">void</span> KDTimeTableWidget::updateMyContent()
<a name="l00587"></a>00587 {
<a name="l00588"></a>00588     <span class="keywordflow">if</span> ( flag_blockUpdating || int_blockUpdating ) {
<a name="l00589"></a>00589         <span class="comment">// qDebug("KDTimeTableWidget::updateMyContent() blocked! ");</span>
<a name="l00590"></a>00590         <span class="keywordflow">return</span>;
<a name="l00591"></a>00591     }
<a name="l00592"></a>00592     <span class="comment">//qDebug("KDTimeTableWidget::updateMyContent() ********************************* ");</span>
<a name="l00593"></a>00593     <span class="comment">/*</span>
<a name="l00594"></a>00594 <span class="comment">    // debug output</span>
<a name="l00595"></a>00595 <span class="comment">    KDGanttViewItem* temp =  myGanttView-&gt;firstChild();</span>
<a name="l00596"></a>00596 <span class="comment">    while (temp != 0) {</span>
<a name="l00597"></a>00597 <span class="comment">    temp-&gt;printinfo("  " );</span>
<a name="l00598"></a>00598 <span class="comment">    temp = temp-&gt;nextSibling();</span>
<a name="l00599"></a>00599 <span class="comment">    }</span>
<a name="l00600"></a>00600 <span class="comment">    */</span>
<a name="l00601"></a>00601     <span class="keywordtype">int</span> hei = computeHeight();
<a name="l00602"></a>00602     minimumHeight = hei;
<a name="l00603"></a>00603     <span class="keywordtype">int</span> viewport_hei = myGanttView-&gt;myCanvasView-&gt;viewport()-&gt;height();
<a name="l00604"></a>00604     <span class="keywordflow">if</span> ( viewport_hei &gt; hei )
<a name="l00605"></a>00605         hei = viewport_hei + 100;
<a name="l00606"></a>00606     <span class="keywordflow">if</span> ( myGanttView-&gt;myTimeHeader-&gt;registerStartTime() )
<a name="l00607"></a>00607         <span class="keywordflow">return</span>; <span class="comment">// try again via timeheader computeTicks();</span>
<a name="l00608"></a>00608     <span class="keywordflow">if</span> ( myGanttView-&gt;myTimeHeader-&gt;registerEndTime() )
<a name="l00609"></a>00609         <span class="keywordflow">return</span>; <span class="comment">// try again via timeheader computeTicks();</span>
<a name="l00610"></a>00610     <span class="keywordflow">if</span> ( hei &gt; height() ) {
<a name="l00611"></a>00611         <span class="keywordflow">if</span> ( !  pendingWidth )
<a name="l00612"></a>00612             pendingWidth = width();
<a name="l00613"></a>00613         <span class="keywordflow">if</span> ( pendingHeight &lt; hei )
<a name="l00614"></a>00614             pendingHeight = hei;
<a name="l00615"></a>00615     }
<a name="l00616"></a>00616     <span class="keywordflow">if</span> (pendingHeight &gt; hei )
<a name="l00617"></a>00617         hei =  pendingHeight;
<a name="l00618"></a>00618     <span class="keywordflow">if</span> (hei &gt; maximumComputedGridHeight)
<a name="l00619"></a>00619         {
<a name="l00620"></a>00620             maximumComputedGridHeight = hei;
<a name="l00621"></a>00621             <span class="comment">// compute the background interval lines</span>
<a name="l00622"></a>00622             myGanttView-&gt;myTimeHeader-&gt;computeIntervals( hei );
<a name="l00623"></a>00623             <span class="comment">//compute VerticalGrid and column color</span>
<a name="l00624"></a>00624             computeVerticalGrid();
<a name="l00625"></a>00625         }
<a name="l00626"></a>00626     computeTaskLinks();
<a name="l00627"></a>00627     computeHorizontalGrid();
<a name="l00628"></a>00628     computeDenseLines();
<a name="l00629"></a>00629     computeShowNoInformation();
<a name="l00630"></a>00630     <span class="comment">//setAllChanged();</span>
<a name="l00631"></a>00631     update();
<a name="l00632"></a>00632     <span class="keywordflow">if</span> (pendingWidth &amp;&amp; pendingHeight ) {
<a name="l00633"></a>00633         resize( pendingWidth, pendingHeight );
<a name="l00634"></a>00634         pendingWidth = 0;
<a name="l00635"></a>00635         pendingHeight = 0;
<a name="l00636"></a>00636         emit heightComputed( 0 );
<a name="l00637"></a>00637 
<a name="l00638"></a>00638     }
<a name="l00639"></a>00639     pendingWidth = 0;
<a name="l00640"></a>00640     pendingHeight = 0;
<a name="l00641"></a>00641     <span class="comment">//qDebug("KDTimeTableWidget::updateMyContent() -------------------------");</span>
<a name="l00642"></a>00642 }
<a name="l00643"></a>00643 <span class="comment">// used for blocking recursive methods</span>
<a name="l00644"></a>00644 <span class="comment">// e.g. KDGanttViewItem::setHighlight() and  displaySubitemsAsGroup() == true</span>
<a name="l00645"></a>00645 
<a name="l00646"></a>00646 <span class="keywordtype">void</span> KDTimeTableWidget::inc_blockUpdating( )
<a name="l00647"></a>00647 {
<a name="l00648"></a>00648     ++ int_blockUpdating;
<a name="l00649"></a>00649 }
<a name="l00650"></a>00650 <span class="comment">// used for blocking recursive methods</span>
<a name="l00651"></a>00651 <span class="keywordtype">void</span> KDTimeTableWidget::dec_blockUpdating( )
<a name="l00652"></a>00652 {
<a name="l00653"></a>00653     -- int_blockUpdating;
<a name="l00654"></a>00654 }
<a name="l00655"></a>00655 <span class="comment">// if false(i.e. unblock), sets int_blockUpdating to 0</span>
<a name="l00656"></a>00656 <span class="keywordtype">void</span> KDTimeTableWidget::setBlockUpdating( <span class="keywordtype">bool</span> block )
<a name="l00657"></a>00657 {
<a name="l00658"></a>00658     <span class="keywordflow">if</span> ( !block )
<a name="l00659"></a>00659         int_blockUpdating = 0;
<a name="l00660"></a>00660     flag_blockUpdating = block;
<a name="l00661"></a>00661 }
<a name="l00662"></a>00662 <span class="keywordtype">bool</span> KDTimeTableWidget::blockUpdating()
<a name="l00663"></a>00663 {
<a name="l00664"></a>00664     <span class="keywordflow">return</span> flag_blockUpdating;
<a name="l00665"></a>00665 }
<a name="l00666"></a>00666 
<a name="l00667"></a>00667 <span class="keywordtype">void</span> KDTimeTableWidget::setShowTaskLinks( <span class="keywordtype">bool</span> show )
<a name="l00668"></a>00668 {
<a name="l00669"></a>00669     taskLinksVisible = show;
<a name="l00670"></a>00670     updateMyContent();
<a name="l00671"></a>00671 }
<a name="l00672"></a>00672 <span class="keywordtype">bool</span> KDTimeTableWidget::showTaskLinks()
<a name="l00673"></a>00673 {
<a name="l00674"></a>00674     <span class="keywordflow">return</span> taskLinksVisible;
<a name="l00675"></a>00675 }
<a name="l00676"></a>00676 <span class="keywordtype">void</span> KDTimeTableWidget::setHorBackgroundLines( <span class="keywordtype">int</span> count,  QBrush brush )
<a name="l00677"></a>00677 {
<a name="l00678"></a>00678     denseLineBrush = brush;
<a name="l00679"></a>00679     denseLineCount = 0;
<a name="l00680"></a>00680     <span class="keywordflow">if</span> ( count &gt; 1 )
<a name="l00681"></a>00681         denseLineCount = count;
<a name="l00682"></a>00682 }
<a name="l00683"></a>00683 
<a name="l00684"></a>00684 
<a name="l00685"></a>00685 <span class="keywordtype">int</span> KDTimeTableWidget::horBackgroundLines(  QBrush&amp; brush )
<a name="l00686"></a>00686 {
<a name="l00687"></a>00687     brush =  denseLineBrush;
<a name="l00688"></a>00688     <span class="keywordflow">return</span> denseLineCount;
<a name="l00689"></a>00689 }
<a name="l00690"></a>00690 
<a name="l00691"></a>00691 <span class="keywordtype">int</span> KDTimeTableWidget::getCoordX( QDateTime dt ) {
<a name="l00692"></a>00692     <span class="keywordflow">return</span> myGanttView-&gt;myTimeHeader-&gt;getCoordX(dt);
<a name="l00693"></a>00693 }
<a name="l00694"></a>00694 
<a name="l00695"></a>00695 <span class="comment">/* ***************************************************************</span>
<a name="l00696"></a>00696 <span class="comment">   KDTimeHeaderWidget:: KDTimeHeaderWidget</span>
<a name="l00697"></a>00697 <span class="comment">   ***************************************************************** */</span>
<a name="l00698"></a>00698 KDTimeHeaderWidget:: KDTimeHeaderWidget( QWidget* parent,<a class="code" href="classKDGanttView.html">KDGanttView</a>* gant )
<a name="l00699"></a>00699     : QWidget (parent)
<a name="l00700"></a>00700 {
<a name="l00701"></a>00701     myToolTip = <span class="keyword">new</span> KDTimeHeaderToolTip(<span class="keyword">this</span>,<span class="keyword">this</span>);
<a name="l00702"></a>00702     mySizeHint = 0;
<a name="l00703"></a>00703     myGanttView = gant;
<a name="l00704"></a>00704     flagDoNotRecomputeAfterChange = <span class="keyword">true</span>;
<a name="l00705"></a>00705     QDateTime start = (QDateTime::currentDateTime ()).addSecs(-3600);
<a name="l00706"></a>00706     setHorizonStart(start);
<a name="l00707"></a>00707     setHorizonEnd( start.addSecs(3600*2));
<a name="l00708"></a>00708     flagStartTimeSet = <span class="keyword">false</span>;
<a name="l00709"></a>00709     flagEndTimeSet = <span class="keyword">false</span>;
<a name="l00710"></a>00710     myCenterDateTime = QDateTime::currentDateTime ();
<a name="l00711"></a>00711     setScale(KDGanttView::Auto);
<a name="l00712"></a>00712     <span class="comment">//setScale(KDGanttView::Hour);</span>
<a name="l00713"></a>00713     myMaxScale = KDGanttView::Month;
<a name="l00714"></a>00714     myMinScale = KDGanttView::Minute;
<a name="l00715"></a>00715     myAutoScaleMinorTickcount = 100;
<a name="l00716"></a>00716     setMajorScaleCount( 1 );
<a name="l00717"></a>00717     setMinorScaleCount( 1);
<a name="l00718"></a>00718     setMinimumColumnWidth( 5 );
<a name="l00719"></a>00719     setYearFormat(KDGanttView::FourDigit );
<a name="l00720"></a>00720     setHourFormat( KDGanttView::Hour_12 );
<a name="l00721"></a>00721     myZoomFactor = 1.0;
<a name="l00722"></a>00722     setWeekendBackgroundColor(QColor(220,220,220) );
<a name="l00723"></a>00723     setWeekendDays( 6, 7 );
<a name="l00724"></a>00724     myGridMinorWidth = 0;
<a name="l00725"></a>00725     myPopupMenu = <span class="keyword">new</span> QPopupMenu(<span class="keyword">this</span>);
<a name="l00726"></a>00726     QPopupMenu * zoomPopupMenu = <span class="keyword">new</span> QPopupMenu(<span class="keyword">this</span>);
<a name="l00727"></a>00727     myPopupMenu-&gt;insertItem (i18n(<span class="stringliteral">"Zoom"</span>),zoomPopupMenu, 1);
<a name="l00728"></a>00728     zoomPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Zoom to 100%"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,21,21 );
<a name="l00729"></a>00729     zoomPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Zoom to Fit"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,20,20 );
<a name="l00730"></a>00730     zoomPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Zoom In (x 2)"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,22,22 );
<a name="l00731"></a>00731     zoomPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Zoom In (x 6)"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,24,24 );
<a name="l00732"></a>00732     zoomPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Zoom In (x 12)"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,26,26 );
<a name="l00733"></a>00733     zoomPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Zoom Out (x 1/2)"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,23,23 );
<a name="l00734"></a>00734     zoomPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Zoom Out (x 1/6)"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,25,25 );
<a name="l00735"></a>00735     zoomPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Zoom Out (x 1/12)"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,27,27 );
<a name="l00736"></a>00736     scalePopupMenu = <span class="keyword">new</span> QPopupMenu(<span class="keyword">this</span>);
<a name="l00737"></a>00737     myPopupMenu-&gt;insertItem (i18n(<span class="stringliteral">"Scale"</span>),scalePopupMenu, 2);
<a name="l00738"></a>00738     scalePopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Minute"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,1,1 );
<a name="l00739"></a>00739     scalePopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Hour"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,2,2 );
<a name="l00740"></a>00740     scalePopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Day"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,3,3 );
<a name="l00741"></a>00741     scalePopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Week"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,4,4 );
<a name="l00742"></a>00742     scalePopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Month"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,5,5 );
<a name="l00743"></a>00743     scalePopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Auto"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,6,6 );
<a name="l00744"></a>00744     scalePopupMenu-&gt;setCheckable ( <span class="keyword">true</span> );
<a name="l00745"></a>00745     timePopupMenu = <span class="keyword">new</span> QPopupMenu(<span class="keyword">this</span>);
<a name="l00746"></a>00746     myPopupMenu-&gt;insertItem (i18n(<span class="stringliteral">"Time Format"</span>),timePopupMenu, 3);
<a name="l00747"></a>00747     timePopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"24 Hour"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,40,40 );
<a name="l00748"></a>00748     timePopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"12 PM Hour"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,41,41 );
<a name="l00749"></a>00749     timePopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"24:00 Hour"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,42,42 );
<a name="l00750"></a>00750     yearPopupMenu = <span class="keyword">new</span> QPopupMenu(<span class="keyword">this</span>);
<a name="l00751"></a>00751     myPopupMenu-&gt;insertItem (i18n(<span class="stringliteral">"Year Format"</span>),yearPopupMenu, 4);
<a name="l00752"></a>00752     yearPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Four Digit"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,50,50 );
<a name="l00753"></a>00753     yearPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Two Digit"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,51,51 );
<a name="l00754"></a>00754     yearPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Two Digit Apostrophe"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,52,52 );
<a name="l00755"></a>00755     yearPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"No Date on Minute/Hour Scale"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,53,53 );
<a name="l00756"></a>00756 
<a name="l00757"></a>00757     gridPopupMenu = <span class="keyword">new</span> QPopupMenu(<span class="keyword">this</span>);
<a name="l00758"></a>00758     myPopupMenu-&gt;insertItem (i18n(<span class="stringliteral">"Grid"</span>),gridPopupMenu,5);
<a name="l00759"></a>00759     gridPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Show Minor Grid"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,10,10 );
<a name="l00760"></a>00760     gridPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Show Major Grid"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,11,11 );
<a name="l00761"></a>00761     gridPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Show No Grid"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,12,12 );
<a name="l00762"></a>00762     myPopupMenu-&gt;insertItem( i18n(<span class="stringliteral">"Print"</span>),<span class="keyword">this</span>, SLOT(setSettings(<span class="keywordtype">int</span>)),0 ,30,30 );
<a name="l00763"></a>00763     connect(myPopupMenu, SIGNAL (  aboutToShow () ) , <span class="keyword">this</span>, SLOT( preparePopupMenu() )) ;
<a name="l00764"></a>00764     flagZoomToFit = <span class="keyword">false</span>;
<a name="l00765"></a>00765     setShowMinorTicks( <span class="keyword">true</span> );
<a name="l00766"></a>00766     myRealEnd =  myHorizonEnd;
<a name="l00767"></a>00767     myRealStart = myHorizonStart;
<a name="l00768"></a>00768     autoComputeTimeLine = <span class="keyword">true</span>;
<a name="l00769"></a>00769     flagDoNotRecomputeAfterChange = <span class="keyword">false</span>;
<a name="l00770"></a>00770     flagDoNotRepaintAfterChange = <span class="keyword">false</span>;
<a name="l00771"></a>00771     setShowPopupMenu(<span class="keyword">false</span>,<span class="keyword">false</span>,<span class="keyword">false</span>,<span class="keyword">false</span>,<span class="keyword">false</span>,<span class="keyword">false</span>,<span class="keyword">false</span>);
<a name="l00772"></a>00772     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j =1;j&lt;8;++j)
<a name="l00773"></a>00773         weekdayColor[j] = Qt::white;
<a name="l00774"></a>00774     myMinimumWidth = 0;
<a name="l00775"></a>00775     mouseDown = <span class="keyword">false</span>;
<a name="l00776"></a>00776     beginMouseDown = 0;
<a name="l00777"></a>00777     endMouseDown = 0;
<a name="l00778"></a>00778 }
<a name="l00779"></a>00779 
<a name="l00780"></a>00780 KDTimeHeaderWidget::~KDTimeHeaderWidget()
<a name="l00781"></a>00781 {
<a name="l00782"></a>00782     <span class="keyword">delete</span> myToolTip;
<a name="l00783"></a>00783 }
<a name="l00784"></a>00784 <span class="keywordtype">void</span>  KDTimeHeaderWidget::preparePopupMenu()
<a name="l00785"></a>00785 {
<a name="l00786"></a>00786     myPopupMenu-&gt;setItemVisible ( 1, flagShowZoom  );
<a name="l00787"></a>00787     myPopupMenu-&gt;setItemVisible ( 2, flagShowScale );
<a name="l00788"></a>00788     myPopupMenu-&gt;setItemVisible ( 3, flagShowTime );
<a name="l00789"></a>00789     myPopupMenu-&gt;setItemVisible ( 4, flagShowYear );
<a name="l00790"></a>00790     myPopupMenu-&gt;setItemVisible ( 5, flagShowGrid);
<a name="l00791"></a>00791     myPopupMenu-&gt;setItemVisible ( 30, flagShowPrint );
<a name="l00792"></a>00792     <span class="keywordflow">if</span> (flagZoomToFit)
<a name="l00793"></a>00793         myPopupMenu-&gt;changeItem( 1, i18n(<span class="stringliteral">"Zoom (Fit)"</span>));
<a name="l00794"></a>00794     <span class="keywordflow">else</span>
<a name="l00795"></a>00795         myPopupMenu-&gt;changeItem( 1, i18n(<span class="stringliteral">"Zoom (%1)"</span>).arg( QString::number( zoomFactor(), <span class="charliteral">'f'</span>,3) ) );
<a name="l00796"></a>00796     <span class="keywordtype">int</span> i = 0;
<a name="l00797"></a>00797     <span class="keywordtype">int</span> id;
<a name="l00798"></a>00798     <span class="keywordflow">while</span> ( ( <span class="keywordtype">id</span> = scalePopupMenu-&gt;idAt( i++ )) &gt;= 0 ) {
<a name="l00799"></a>00799         scalePopupMenu-&gt;setItemChecked ( <span class="keywordtype">id</span>, <span class="keyword">false</span> );
<a name="l00800"></a>00800     }
<a name="l00801"></a>00801     scalePopupMenu-&gt;setItemChecked ( scalePopupMenu-&gt;idAt ( (<span class="keywordtype">int</span>)( scale()) ), true );
<a name="l00802"></a>00802     i = 0;
<a name="l00803"></a>00803     <span class="keywordflow">while</span> ( ( <span class="keywordtype">id</span> = timePopupMenu-&gt;idAt( i++ )) &gt;= 0 ) {
<a name="l00804"></a>00804         timePopupMenu-&gt;setItemChecked ( <span class="keywordtype">id</span>, <span class="keyword">false</span> );
<a name="l00805"></a>00805     }
<a name="l00806"></a>00806     timePopupMenu-&gt;setItemChecked ( timePopupMenu-&gt;idAt ( (<span class="keywordtype">int</span>)( hourFormat()) ), true );
<a name="l00807"></a>00807     i = 0;
<a name="l00808"></a>00808     <span class="keywordflow">while</span> ( ( <span class="keywordtype">id</span> = yearPopupMenu-&gt;idAt( i++ )) &gt;= 0 ) {
<a name="l00809"></a>00809         yearPopupMenu-&gt;setItemChecked ( <span class="keywordtype">id</span>, <span class="keyword">false</span> );
<a name="l00810"></a>00810     }
<a name="l00811"></a>00811     yearPopupMenu-&gt;setItemChecked ( yearPopupMenu-&gt;idAt ( (<span class="keywordtype">int</span>)( yearFormat()) ), true );
<a name="l00812"></a>00812     i = 0;
<a name="l00813"></a>00813     <span class="keywordflow">while</span> ( ( <span class="keywordtype">id</span> = gridPopupMenu-&gt;idAt( i++ )) &gt;= 0 ) {
<a name="l00814"></a>00814         gridPopupMenu-&gt;setItemChecked ( <span class="keywordtype">id</span>, <span class="keyword">false</span> );
<a name="l00815"></a>00815     }
<a name="l00816"></a>00816 
<a name="l00817"></a>00817     gridPopupMenu-&gt;setItemChecked ( gridPopupMenu-&gt;idAt ( 0 ), showMinorTicks() );
<a name="l00818"></a>00818     gridPopupMenu-&gt;setItemChecked ( gridPopupMenu-&gt;idAt ( 1 ), showMajorTicks() );
<a name="l00819"></a>00819     gridPopupMenu-&gt;setItemChecked ( gridPopupMenu-&gt;idAt ( 2 ),
<a name="l00820"></a>00820                                     !(showMajorTicks() || showMinorTicks()) );
<a name="l00821"></a>00821 
<a name="l00822"></a>00822 
<a name="l00823"></a>00823 }
<a name="l00824"></a>00824 
<a name="l00825"></a>00825 QString  KDTimeHeaderWidget::getToolTipText(QPoint p)
<a name="l00826"></a>00826 {
<a name="l00827"></a>00827     <span class="keywordflow">return</span> KGlobal::locale()-&gt;formatDateTime(getDateTimeForIndex(p.x()));
<a name="l00828"></a>00828 }
<a name="l00829"></a>00829 <span class="keywordtype">void</span> KDTimeHeaderWidget::addTickRight( <span class="keywordtype">int</span> num )
<a name="l00830"></a>00830 {
<a name="l00831"></a>00831     <span class="keywordtype">int</span> secs = ((num*getTickTime())-30);
<a name="l00832"></a>00832     setHorizonEnd(getDateTimeForIndex(width()).addSecs(secs));
<a name="l00833"></a>00833     <span class="comment">//qApp-&gt;processEvents();</span>
<a name="l00834"></a>00834 }
<a name="l00835"></a>00835 
<a name="l00836"></a>00836 <span class="keywordtype">void</span> KDTimeHeaderWidget::addTickLeft( <span class="keywordtype">int</span> num )
<a name="l00837"></a>00837 {
<a name="l00838"></a>00838     <span class="keywordtype">int</span> secs = ((num*getTickTime())-30);
<a name="l00839"></a>00839     setHorizonStart(getDateTimeForIndex(0).addSecs(-secs));
<a name="l00840"></a>00840     <span class="comment">//qApp-&gt;processEvents();</span>
<a name="l00841"></a>00841 }
<a name="l00842"></a>00842 <span class="comment">// the time in secs of one minor grid tick</span>
<a name="l00843"></a>00843 <span class="keywordtype">int</span> KDTimeHeaderWidget::getTickTime()
<a name="l00844"></a>00844 {
<a name="l00845"></a>00845     <span class="keywordflow">return</span> getDateTimeForIndex(0).secsTo(getDateTimeForIndex(myGridMinorWidth));
<a name="l00846"></a>00846 }
<a name="l00847"></a>00847 
<a name="l00848"></a>00848 
<a name="l00849"></a>00849 <span class="keywordtype">void</span> KDTimeHeaderWidget::checkWidth( <span class="keywordtype">int</span> wid )
<a name="l00850"></a>00850 {
<a name="l00851"></a>00851     <span class="comment">// we have to set the minimum width one pixel higher than the</span>
<a name="l00852"></a>00852     <span class="comment">// viewport width of the canvas view in  order to</span>
<a name="l00853"></a>00853     <span class="comment">// avoid that the horiz. scrollbar of the canvasview is hidden</span>
<a name="l00854"></a>00854     myMinimumWidth = wid + 1;
<a name="l00855"></a>00855     <span class="keywordflow">if</span> ( myMinimumWidth  &gt; width() ||
<a name="l00856"></a>00856          ( myMinimumWidth &gt; mySizeHint &amp;&amp;
<a name="l00857"></a>00857            myMinimumWidth &lt; (width() - myGridMinorWidth  )) )
<a name="l00858"></a>00858         computeTicks();
<a name="l00859"></a>00859 
<a name="l00860"></a>00860     <span class="comment">// Update (horizontal) scrollbar,</span>
<a name="l00861"></a>00861     <span class="comment">// We probably come from an external resize and then we must</span>
<a name="l00862"></a>00862     <span class="comment">// calculate on basis of myCanvasView.</span>
<a name="l00863"></a>00863     <span class="comment">// (NOTE: we have disconnected the auto QScrollView scrollbar update)</span>
<a name="l00864"></a>00864     <span class="keywordflow">if</span> (myGanttView &amp;&amp; myGanttView-&gt;myCanvasView)
<a name="l00865"></a>00865         myGanttView-&gt;myCanvasView-&gt;updateScrollBars();
<a name="l00866"></a>00866 }
<a name="l00867"></a>00867 
<a name="l00868"></a>00868 <span class="keywordtype">bool</span> KDTimeHeaderWidget::registerStartTime()
<a name="l00869"></a>00869 {
<a name="l00870"></a>00870 
<a name="l00871"></a>00871     QListViewItemIterator it( myGanttView-&gt;myListView );
<a name="l00872"></a>00872     <span class="keywordflow">if</span> (!flagStartTimeSet) {
<a name="l00873"></a>00873         QDateTime temp , time;
<a name="l00874"></a>00874         <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* item;
<a name="l00875"></a>00875         <span class="keywordtype">bool</span> setNewTime = <span class="keyword">false</span>;
<a name="l00876"></a>00876         item = (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*)myGanttView-&gt;myListView-&gt;<a class="code" href="classKDGanttViewItem.html#b18336f62e6f479ca43ec1d172ff8ac5">firstChild</a>();
<a name="l00877"></a>00877         <span class="keywordflow">if</span> ( item ) {
<a name="l00878"></a>00878             temp = item-&gt;<a class="code" href="classKDGanttViewItem.html#4c9a5cddca28053bbef9ade165ecda21">startTime</a>();
<a name="l00879"></a>00879             time = temp;
<a name="l00880"></a>00880             <span class="comment">//  while ( item != 0)</span>
<a name="l00881"></a>00881             <span class="keywordflow">for</span> ( ; it.current(); ++it ) {
<a name="l00882"></a>00882                 item = ( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* )it.current();
<a name="l00883"></a>00883                 <span class="keywordflow">if</span> (item-&gt;<a class="code" href="classKDGanttViewItem.html#b86216754d59421f19cada09675980c9">isVisibleInGanttView</a>) {
<a name="l00884"></a>00884                     <span class="keywordflow">if</span> ( !setNewTime )
<a name="l00885"></a>00885                         temp = item-&gt;<a class="code" href="classKDGanttViewItem.html#4c9a5cddca28053bbef9ade165ecda21">startTime</a>();
<a name="l00886"></a>00886                     <span class="keywordflow">switch</span>( item-&gt;<a class="code" href="classKDGanttViewItem.html#2231811406d35ff1731bbdbb9b57454a">type</a>() ) {
<a name="l00887"></a>00887                     <span class="keywordflow">case</span> KDGanttViewItem::Event:
<a name="l00888"></a>00888                         time = ((<a class="code" href="classKDGanttViewEventItem.html">KDGanttViewEventItem</a>*)item)-&gt;leadTime();
<a name="l00889"></a>00889                         setNewTime = <span class="keyword">true</span>;
<a name="l00890"></a>00890                         <span class="keywordflow">break</span>;
<a name="l00891"></a>00891                     <span class="keywordflow">case</span> KDGanttViewItem::Summary:
<a name="l00892"></a>00892                     <span class="keywordflow">case</span> KDGanttViewItem::Task:
<a name="l00893"></a>00893                         time = item-&gt;<a class="code" href="classKDGanttViewItem.html#4c9a5cddca28053bbef9ade165ecda21">startTime</a>();
<a name="l00894"></a>00894                         setNewTime = <span class="keyword">true</span>;
<a name="l00895"></a>00895                         <span class="keywordflow">break</span>;
<a name="l00896"></a>00896                     <span class="keywordflow">default</span>:
<a name="l00897"></a>00897                         time = temp;
<a name="l00898"></a>00898                     }
<a name="l00899"></a>00899                     <span class="keywordflow">if</span> ( time &lt; temp) {
<a name="l00900"></a>00900                         temp = time ;
<a name="l00901"></a>00901                     }
<a name="l00902"></a>00902                 }
<a name="l00903"></a>00903             }
<a name="l00904"></a>00904             <span class="keywordflow">if</span> ( setNewTime )
<a name="l00905"></a>00905                 <span class="keywordflow">if</span> ( myHorizonStart != temp) {
<a name="l00906"></a>00906                     myHorizonStart = temp;
<a name="l00907"></a>00907                     computeTicks();
<a name="l00908"></a>00908                     <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00909"></a>00909                 }
<a name="l00910"></a>00910         }
<a name="l00911"></a>00911     }
<a name="l00912"></a>00912     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00913"></a>00913 }
<a name="l00914"></a>00914 
<a name="l00915"></a>00915 
<a name="l00916"></a>00916 <span class="keywordtype">bool</span> KDTimeHeaderWidget::registerEndTime()
<a name="l00917"></a>00917 {
<a name="l00918"></a>00918     <span class="keywordflow">if</span> (!flagEndTimeSet) {
<a name="l00919"></a>00919         QDateTime temp , time;
<a name="l00920"></a>00920         <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* item;
<a name="l00921"></a>00921         <span class="keywordtype">bool</span> setNewTime = <span class="keyword">false</span>;
<a name="l00922"></a>00922         item = (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*)myGanttView-&gt;myListView-&gt;<a class="code" href="classKDGanttViewItem.html#b18336f62e6f479ca43ec1d172ff8ac5">firstChild</a>();
<a name="l00923"></a>00923         <span class="keywordflow">if</span> ( item ) {
<a name="l00924"></a>00924             temp = item-&gt;<a class="code" href="classKDGanttViewItem.html#4c9a5cddca28053bbef9ade165ecda21">startTime</a>();
<a name="l00925"></a>00925             time = temp;
<a name="l00926"></a>00926             QListViewItemIterator it( myGanttView-&gt;myListView );
<a name="l00927"></a>00927             <span class="keywordflow">for</span> ( ; it.current(); ++it ) {
<a name="l00928"></a>00928                 item = ( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* )it.current();
<a name="l00929"></a>00929                 <span class="keywordflow">if</span> (item-&gt;<a class="code" href="classKDGanttViewItem.html#b86216754d59421f19cada09675980c9">isVisibleInGanttView</a>) {
<a name="l00930"></a>00930                     <span class="keywordflow">if</span> ( !setNewTime )
<a name="l00931"></a>00931                         temp = item-&gt;<a class="code" href="classKDGanttViewItem.html#4c9a5cddca28053bbef9ade165ecda21">startTime</a>();
<a name="l00932"></a>00932                     <span class="keywordflow">switch</span>( item-&gt;<a class="code" href="classKDGanttViewItem.html#2231811406d35ff1731bbdbb9b57454a">type</a>() ) {
<a name="l00933"></a>00933                     <span class="keywordflow">case</span> KDGanttViewItem::Event:
<a name="l00934"></a>00934                         time = ((<a class="code" href="classKDGanttViewEventItem.html">KDGanttViewEventItem</a>*)item)-&gt;startTime();
<a name="l00935"></a>00935                         setNewTime = <span class="keyword">true</span>;
<a name="l00936"></a>00936                         <span class="keywordflow">break</span>;
<a name="l00937"></a>00937                     <span class="keywordflow">case</span> KDGanttViewItem::Summary:
<a name="l00938"></a>00938                         time = item-&gt;<a class="code" href="classKDGanttViewItem.html#e4e511a8aaa5a145d52725aa6c34cdef">endTime</a>();
<a name="l00939"></a>00939                         <span class="keywordflow">if</span> ( time &lt; ((<a class="code" href="classKDGanttViewSummaryItem.html">KDGanttViewSummaryItem</a>*)item)-&gt;actualEndTime())
<a name="l00940"></a>00940                             time = ((<a class="code" href="classKDGanttViewSummaryItem.html">KDGanttViewSummaryItem</a>*)item)-&gt;actualEndTime();
<a name="l00941"></a>00941                         setNewTime = <span class="keyword">true</span>;
<a name="l00942"></a>00942                         <span class="keywordflow">break</span>;
<a name="l00943"></a>00943                     <span class="keywordflow">case</span> KDGanttViewItem::Task:
<a name="l00944"></a>00944                         time = item-&gt;<a class="code" href="classKDGanttViewItem.html#e4e511a8aaa5a145d52725aa6c34cdef">endTime</a>();
<a name="l00945"></a>00945                         setNewTime = <span class="keyword">true</span>;
<a name="l00946"></a>00946                         <span class="keywordflow">break</span>;
<a name="l00947"></a>00947                     <span class="keywordflow">default</span>:
<a name="l00948"></a>00948                         time = temp;
<a name="l00949"></a>00949                     }
<a name="l00950"></a>00950                     <span class="keywordflow">if</span> ( time &gt; temp)
<a name="l00951"></a>00951                         temp = time ;
<a name="l00952"></a>00952                 }
<a name="l00953"></a>00953             }
<a name="l00954"></a>00954 
<a name="l00955"></a>00955             <span class="keywordflow">if</span> ( setNewTime )
<a name="l00956"></a>00956                 <span class="keywordflow">if</span> (myHorizonEnd != temp ) {
<a name="l00957"></a>00957                     myHorizonEnd = temp;
<a name="l00958"></a>00958                     computeTicks();
<a name="l00959"></a>00959                     <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00960"></a>00960                 }
<a name="l00961"></a>00961         }
<a name="l00962"></a>00962     }
<a name="l00963"></a>00963     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00964"></a>00964 }
<a name="l00965"></a>00965 
<a name="l00966"></a>00966 
<a name="l00967"></a>00967 <span class="keywordtype">void</span> KDTimeHeaderWidget::setShowPopupMenu( <span class="keywordtype">bool</span> show,
<a name="l00968"></a>00968                                            <span class="keywordtype">bool</span> showZoom,
<a name="l00969"></a>00969                                            <span class="keywordtype">bool</span> showScale,
<a name="l00970"></a>00970                                            <span class="keywordtype">bool</span> showTime,
<a name="l00971"></a>00971                                            <span class="keywordtype">bool</span> showYear,
<a name="l00972"></a>00972                                            <span class="keywordtype">bool</span> showGrid,
<a name="l00973"></a>00973                                            <span class="keywordtype">bool</span> showPrint)
<a name="l00974"></a>00974 {
<a name="l00975"></a>00975     flagShowPopupMenu = show;
<a name="l00976"></a>00976     flagShowZoom = showZoom;
<a name="l00977"></a>00977     flagShowScale  = showScale;
<a name="l00978"></a>00978     flagShowTime  = showTime;
<a name="l00979"></a>00979     flagShowYear = showYear;
<a name="l00980"></a>00980     flagShowGrid  = showGrid;
<a name="l00981"></a>00981     flagShowPrint = showPrint;
<a name="l00982"></a>00982 }
<a name="l00983"></a>00983 
<a name="l00984"></a>00984 
<a name="l00985"></a>00985 <span class="keywordtype">bool</span> KDTimeHeaderWidget::showPopupMenu()<span class="keyword"> const</span>
<a name="l00986"></a>00986 <span class="keyword"></span>{
<a name="l00987"></a>00987     <span class="keywordflow">return</span> flagShowPopupMenu;
<a name="l00988"></a>00988 }
<a name="l00989"></a>00989 
<a name="l00990"></a>00990 <span class="keywordtype">void</span> KDTimeHeaderWidget::setSettings(<span class="keywordtype">int</span> i)
<a name="l00991"></a>00991 {
<a name="l00992"></a>00992 
<a name="l00993"></a>00993     <span class="keywordflow">switch</span> (i) {
<a name="l00994"></a>00994     <span class="keywordflow">case</span> 1:
<a name="l00995"></a>00995         setScale(KDGanttView::Minute );
<a name="l00996"></a>00996         <span class="keywordflow">break</span>;
<a name="l00997"></a>00997     <span class="keywordflow">case</span> 2:
<a name="l00998"></a>00998         setScale(KDGanttView::Hour );
<a name="l00999"></a>00999         <span class="keywordflow">break</span>;
<a name="l01000"></a>01000     <span class="keywordflow">case</span> 3:
<a name="l01001"></a>01001         setScale(KDGanttView::Day );
<a name="l01002"></a>01002         <span class="keywordflow">break</span>;
<a name="l01003"></a>01003     <span class="keywordflow">case</span> 4:
<a name="l01004"></a>01004         setScale(KDGanttView::Week );
<a name="l01005"></a>01005         <span class="keywordflow">break</span>;
<a name="l01006"></a>01006     <span class="keywordflow">case</span> 5:
<a name="l01007"></a>01007         setScale(KDGanttView::Month );
<a name="l01008"></a>01008         <span class="keywordflow">break</span>;
<a name="l01009"></a>01009     <span class="keywordflow">case</span> 6:
<a name="l01010"></a>01010         setScale(KDGanttView::Auto );
<a name="l01011"></a>01011         <span class="keywordflow">break</span>;
<a name="l01012"></a>01012     <span class="keywordflow">case</span> 10:
<a name="l01013"></a>01013         setShowMinorTicks( <span class="keyword">true</span> );
<a name="l01014"></a>01014         <span class="keywordflow">break</span>;
<a name="l01015"></a>01015     <span class="keywordflow">case</span> 11:
<a name="l01016"></a>01016         setShowMajorTicks( <span class="keyword">true</span> );{
<a name="l01017"></a>01017 
<a name="l01018"></a>01018         }
<a name="l01019"></a>01019         <span class="keywordflow">break</span>;
<a name="l01020"></a>01020     <span class="keywordflow">case</span> 12:
<a name="l01021"></a>01021         setShowMajorTicks( <span class="keyword">false</span> );
<a name="l01022"></a>01022         setShowMinorTicks( <span class="keyword">false</span>);
<a name="l01023"></a>01023         <span class="keywordflow">break</span>;
<a name="l01024"></a>01024     <span class="keywordflow">case</span> 20:
<a name="l01025"></a>01025         zoomToFit();
<a name="l01026"></a>01026         <span class="keywordflow">break</span>;
<a name="l01027"></a>01027     <span class="keywordflow">case</span> 21:
<a name="l01028"></a>01028         zoom(1.0);
<a name="l01029"></a>01029         <span class="keywordflow">break</span>;
<a name="l01030"></a>01030     <span class="keywordflow">case</span> 22:
<a name="l01031"></a>01031         zoom(2.0,<span class="keyword">false</span>);
<a name="l01032"></a>01032         <span class="keywordflow">break</span>;
<a name="l01033"></a>01033     <span class="keywordflow">case</span> 23:
<a name="l01034"></a>01034         zoom(0.5,<span class="keyword">false</span>);
<a name="l01035"></a>01035         <span class="keywordflow">break</span>;
<a name="l01036"></a>01036     <span class="keywordflow">case</span> 24:
<a name="l01037"></a>01037         zoom(6.0,<span class="keyword">false</span>);
<a name="l01038"></a>01038         <span class="keywordflow">break</span>;
<a name="l01039"></a>01039     <span class="keywordflow">case</span> 25:
<a name="l01040"></a>01040         zoom(0.16666,<span class="keyword">false</span>);
<a name="l01041"></a>01041         <span class="keywordflow">break</span>;
<a name="l01042"></a>01042     <span class="keywordflow">case</span> 26:
<a name="l01043"></a>01043         zoom(12.0,<span class="keyword">false</span>);
<a name="l01044"></a>01044         <span class="keywordflow">break</span>;
<a name="l01045"></a>01045     <span class="keywordflow">case</span> 27:
<a name="l01046"></a>01046         zoom(0.08333,<span class="keyword">false</span>);
<a name="l01047"></a>01047         <span class="keywordflow">break</span>;
<a name="l01048"></a>01048     <span class="keywordflow">case</span> 30:
<a name="l01049"></a>01049         myGanttView-&gt;print();
<a name="l01050"></a>01050         <span class="keywordflow">break</span>;
<a name="l01051"></a>01051     <span class="keywordflow">case</span> 40:
<a name="l01052"></a>01052     <span class="keywordflow">case</span> 41:
<a name="l01053"></a>01053     <span class="keywordflow">case</span> 42:
<a name="l01054"></a>01054         setHourFormat( (<a class="code" href="classKDGanttView.html#3cc8d9bf7fcde8ef1dc49f692a38d76a">KDGanttView::HourFormat</a>) (i - 40) );
<a name="l01055"></a>01055         <span class="keywordflow">break</span>;
<a name="l01056"></a>01056     <span class="keywordflow">case</span> 50:
<a name="l01057"></a>01057     <span class="keywordflow">case</span> 51:
<a name="l01058"></a>01058     <span class="keywordflow">case</span> 52:
<a name="l01059"></a>01059     <span class="keywordflow">case</span> 53:
<a name="l01060"></a>01060         setYearFormat( (<a class="code" href="classKDGanttView.html#0c534282fb7c3850052d6e0551d2f553">KDGanttView::YearFormat</a>) ( i - 50) );
<a name="l01061"></a>01061         <span class="keywordflow">break</span>;
<a name="l01062"></a>01062 
<a name="l01063"></a>01063     <span class="keywordflow">case</span> 60:
<a name="l01064"></a>01064 
<a name="l01065"></a>01065         <span class="keywordflow">break</span>;
<a name="l01066"></a>01066 
<a name="l01067"></a>01067     <span class="keywordflow">case</span> 61:
<a name="l01068"></a>01068 
<a name="l01069"></a>01069         <span class="keywordflow">break</span>;
<a name="l01070"></a>01070 
<a name="l01071"></a>01071     <span class="keywordflow">case</span> 62:
<a name="l01072"></a>01072 
<a name="l01073"></a>01073         <span class="keywordflow">break</span>;
<a name="l01074"></a>01074 
<a name="l01075"></a>01075     <span class="keywordflow">case</span> 63:
<a name="l01076"></a>01076 
<a name="l01077"></a>01077         <span class="keywordflow">break</span>;
<a name="l01078"></a>01078 
<a name="l01079"></a>01079     <span class="keywordflow">case</span> 64:
<a name="l01080"></a>01080 
<a name="l01081"></a>01081         <span class="keywordflow">break</span>;
<a name="l01082"></a>01082     }
<a name="l01083"></a>01083     <span class="comment">// myGanttView-&gt;myTimeTable-&gt;updateMyContent();</span>
<a name="l01084"></a>01084 }
<a name="l01085"></a>01085 <span class="keywordtype">void</span> KDTimeHeaderWidget::zoomToFit()
<a name="l01086"></a>01086 {
<a name="l01087"></a>01087     flagZoomToFit = <span class="keyword">true</span>;
<a name="l01088"></a>01088     computeTicks();
<a name="l01089"></a>01089     <span class="comment">// Since we have disconnected autoupdate of scrollbars, we must do it ourselves</span>
<a name="l01090"></a>01090     <span class="keywordflow">if</span> (myGanttView &amp;&amp; myGanttView-&gt;myCanvasView)
<a name="l01091"></a>01091         myGanttView-&gt;myCanvasView-&gt;updateScrollBars();
<a name="l01092"></a>01092 }
<a name="l01093"></a>01093 <span class="keywordtype">double</span> KDTimeHeaderWidget::zoomFactor()
<a name="l01094"></a>01094 {
<a name="l01095"></a>01095     <span class="keywordflow">return</span> myZoomFactor;
<a name="l01096"></a>01096 }
<a name="l01097"></a>01097 <span class="keywordtype">double</span> KDTimeHeaderWidget::secsFromTo( QDateTime begin, QDateTime end )
<a name="l01098"></a>01098 {
<a name="l01099"></a>01099     QDateTime temp;
<a name="l01100"></a>01100     <span class="keywordtype">double</span> secs, days;
<a name="l01101"></a>01101     days = begin.daysTo(end);
<a name="l01102"></a>01102     temp = begin.addDays((<span class="keywordtype">int</span>) days);
<a name="l01103"></a>01103     secs = temp.secsTo(end);
<a name="l01104"></a>01104     secs += days * 86400.0;
<a name="l01105"></a>01105     <span class="keywordflow">return</span> secs;
<a name="l01106"></a>01106 }
<a name="l01107"></a>01107 
<a name="l01108"></a>01108 
<a name="l01109"></a>01109 <span class="keywordtype">void</span> KDTimeHeaderWidget::zoomToSelection( QDateTime start, QDateTime end)
<a name="l01110"></a>01110 {
<a name="l01111"></a>01111     <span class="keywordflow">if</span> (start &lt; myHorizonStart) {
<a name="l01112"></a>01112         myHorizonStart = start;
<a name="l01113"></a>01113         flagStartTimeSet = <span class="keyword">true</span>;
<a name="l01114"></a>01114         <span class="comment">//qDebug("myHorizonStart reset");</span>
<a name="l01115"></a>01115     }
<a name="l01116"></a>01116     <span class="keywordflow">if</span> (end &gt; myHorizonEnd) {
<a name="l01117"></a>01117         myHorizonEnd = end;
<a name="l01118"></a>01118         flagEndTimeSet = <span class="keyword">true</span>;
<a name="l01119"></a>01119         <span class="comment">//qDebug("myHorizonEnd reset ");</span>
<a name="l01120"></a>01120     }
<a name="l01121"></a>01121     flagDoNotRepaintAfterChange = <span class="keyword">true</span>;<span class="comment">//avoid flicker</span>
<a name="l01122"></a>01122     zoom(1.0); <span class="comment">// set to 100%</span>
<a name="l01123"></a>01123     <span class="keywordtype">int</span> viewWid = myGanttView-&gt;myCanvasView-&gt;viewport()-&gt;width();
<a name="l01124"></a>01124     <span class="keywordtype">int</span> timeWid =  getCoordX(end)-getCoordX(start);
<a name="l01125"></a>01125     <span class="keywordtype">double</span> fac;
<a name="l01126"></a>01126     fac  = ( (double)viewWid)/((double) timeWid  );
<a name="l01127"></a>01127     zoom (fac);
<a name="l01128"></a>01128     timeWid =  getCoordX(end)-getCoordX(start);
<a name="l01129"></a>01129     <span class="keywordtype">int</span> count = 0;
<a name="l01130"></a>01130     <span class="keywordtype">int</span> lastScaleCount = 0;
<a name="l01131"></a>01131     <span class="keywordflow">while</span> (timeWid &gt;viewWid || ( ( myRealMinorScaleCount != lastScaleCount)  &amp;&amp; timeWid*2 &lt; viewWid ) ) {
<a name="l01132"></a>01132         lastScaleCount = myRealMinorScaleCount;
<a name="l01133"></a>01133         fac = (fac * (double)viewWid)/(double)timeWid;
<a name="l01134"></a>01134         zoom (fac);
<a name="l01135"></a>01135         timeWid =  getCoordX(end)-getCoordX(start);
<a name="l01136"></a>01136         <span class="keywordflow">if</span> ( count++ &gt; 10 ) {
<a name="l01137"></a>01137             <span class="comment">//qDebug("Exiting while loop in zoomToSelection ");</span>
<a name="l01138"></a>01138             <span class="keywordflow">break</span>;
<a name="l01139"></a>01139         }
<a name="l01140"></a>01140     }
<a name="l01141"></a>01141     flagDoNotRepaintAfterChange = <span class="keyword">false</span>;
<a name="l01142"></a>01142     updateTimeTable();
<a name="l01143"></a>01143     repaint();
<a name="l01144"></a>01144     moveTimeLineTo((getCoordX(start)-(viewWid-timeWid)/2));
<a name="l01145"></a>01145     <span class="comment">// Since we have disconnected autoupdate of scrollbars, we must do it ourselves</span>
<a name="l01146"></a>01146     <span class="keywordflow">if</span> (myGanttView &amp;&amp; myGanttView-&gt;myCanvasView)
<a name="l01147"></a>01147         myGanttView-&gt;myCanvasView-&gt;updateScrollBars();
<a name="l01148"></a>01148 }
<a name="l01149"></a>01149 <span class="keywordtype">void</span> KDTimeHeaderWidget::moveTimeLineTo(<span class="keywordtype">int</span> X)
<a name="l01150"></a>01150 {
<a name="l01151"></a>01151     <span class="keywordtype">int</span> Y = myGanttView-&gt;myCanvasView-&gt;contentsY ();
<a name="l01152"></a>01152     myGanttView-&gt;myCanvasView-&gt;setContentsPos (X, Y );
<a name="l01153"></a>01153 }
<a name="l01154"></a>01154 
<a name="l01155"></a>01155 <span class="keywordtype">void</span> KDTimeHeaderWidget::zoom(<span class="keywordtype">double</span> factor, <span class="keywordtype">bool</span> absolute)
<a name="l01156"></a>01156 {
<a name="l01157"></a>01157     flagZoomToFit = <span class="keyword">false</span>;
<a name="l01158"></a>01158     <span class="keywordflow">if</span> ( factor &lt; 0.000001 ) {
<a name="l01159"></a>01159         qDebug(<span class="stringliteral">"KDGanttView::zoom() : Zoom factor to low. Nothing zoomed. "</span>);
<a name="l01160"></a>01160         <span class="keywordflow">return</span>;
<a name="l01161"></a>01161     }
<a name="l01162"></a>01162     <span class="keywordtype">double</span> newZoom;
<a name="l01163"></a>01163     <span class="keywordflow">if</span> (absolute)
<a name="l01164"></a>01164         newZoom = factor;
<a name="l01165"></a>01165     <span class="keywordflow">else</span>
<a name="l01166"></a>01166         newZoom = myZoomFactor * factor;
<a name="l01167"></a>01167     <span class="keywordtype">double</span> relativeZoom;
<a name="l01168"></a>01168     relativeZoom = newZoom / myZoomFactor;
<a name="l01169"></a>01169 
<a name="l01170"></a>01170     <span class="comment">//qDebug("zooming relative %f ", relativeZoom);</span>
<a name="l01171"></a>01171     <span class="comment">//qDebug("zooming absolute %f ", newZoom);</span>
<a name="l01172"></a>01172     <span class="keywordtype">int</span> viewWid = myGanttView-&gt;myCanvasView-&gt;viewport()-&gt;width();
<a name="l01173"></a>01173     <span class="keywordflow">if</span> ( width() * relativeZoom &lt; viewWid &amp;&amp; ( newZoom &gt; 1.01 || newZoom &lt; 0.99 ) ) {
<a name="l01174"></a>01174         qDebug(<span class="stringliteral">"KDGanttView::zoom() : Zoom factor to low for current horizon. "</span>);
<a name="l01175"></a>01175         <span class="comment">// qDebug("zooming relative %f, zooming absolute %f, viewWidth %d width %d ", relativeZoom,  newZoom, viewWid, width() );</span>
<a name="l01176"></a>01176         <span class="keywordflow">return</span>;
<a name="l01177"></a>01177     }
<a name="l01178"></a>01178     myZoomFactor = newZoom;
<a name="l01179"></a>01179     computeTicks();
<a name="l01180"></a>01180     <span class="comment">// Since we have disconnected autoupdate of scrollbars, we must do it ourselves</span>
<a name="l01181"></a>01181     <span class="keywordflow">if</span> (myGanttView &amp;&amp; myGanttView-&gt;myCanvasView)
<a name="l01182"></a>01182         myGanttView-&gt;myCanvasView-&gt;updateScrollBars();
<a name="l01183"></a>01183 }
<a name="l01184"></a>01184 
<a name="l01192"></a>01192 <span class="keywordtype">void</span> KDTimeHeaderWidget::setHorizonStart( <span class="keyword">const</span> QDateTime&amp; start )
<a name="l01193"></a>01193 {
<a name="l01194"></a>01194     myHorizonStart = start;
<a name="l01195"></a>01195     flagStartTimeSet = <span class="keyword">true</span>;
<a name="l01196"></a>01196     computeTicks();
<a name="l01197"></a>01197 }
<a name="l01198"></a>01198 
<a name="l01199"></a>01199 
<a name="l01206"></a>01206 QDateTime KDTimeHeaderWidget::horizonStart()<span class="keyword"> const</span>
<a name="l01207"></a>01207 <span class="keyword"></span>{
<a name="l01208"></a>01208     <span class="keywordflow">return</span> myHorizonStart;
<a name="l01209"></a>01209 }
<a name="l01210"></a>01210 
<a name="l01211"></a>01211 
<a name="l01219"></a>01219 <span class="keywordtype">void</span> KDTimeHeaderWidget::setHorizonEnd( <span class="keyword">const</span> QDateTime&amp; start )
<a name="l01220"></a>01220 {
<a name="l01221"></a>01221     myHorizonEnd = start;
<a name="l01222"></a>01222     flagEndTimeSet = <span class="keyword">true</span>;
<a name="l01223"></a>01223     computeTicks();
<a name="l01224"></a>01224 
<a name="l01225"></a>01225 }
<a name="l01226"></a>01226 
<a name="l01227"></a>01227 
<a name="l01234"></a>01234 QDateTime KDTimeHeaderWidget::horizonEnd()<span class="keyword"> const</span>
<a name="l01235"></a>01235 <span class="keyword"></span>{
<a name="l01236"></a>01236     <span class="keywordflow">return</span> myHorizonEnd;
<a name="l01237"></a>01237 }
<a name="l01238"></a>01238 
<a name="l01239"></a>01239 
<a name="l01248"></a>01248 <span class="keywordtype">void</span> KDTimeHeaderWidget::setScale(Scale unit )
<a name="l01249"></a>01249 {
<a name="l01250"></a>01250     myScale = unit;
<a name="l01251"></a>01251     myZoomFactor = 1.0;
<a name="l01252"></a>01252     computeTicks();
<a name="l01253"></a>01253     <span class="comment">// Since we have disconnected autoupdate of scrollbars, we must do it ourselves</span>
<a name="l01254"></a>01254     <span class="keywordflow">if</span> (myGanttView &amp;&amp; myGanttView-&gt;myCanvasView)
<a name="l01255"></a>01255         myGanttView-&gt;myCanvasView-&gt;updateScrollBars();
<a name="l01256"></a>01256 }
<a name="l01257"></a>01257 
<a name="l01258"></a>01258 
<a name="l01265"></a>01265 <a class="code" href="classKDGanttView.html#b6e196c09b319c3e91b80b1d936f2bb2">KDTimeHeaderWidget::Scale</a> KDTimeHeaderWidget::scale()<span class="keyword"> const</span>
<a name="l01266"></a>01266 <span class="keyword"></span>{
<a name="l01267"></a>01267     <span class="keywordflow">return</span> myScale;
<a name="l01268"></a>01268 }
<a name="l01269"></a>01269 
<a name="l01270"></a>01270 
<a name="l01277"></a>01277 <span class="keywordtype">void</span> KDTimeHeaderWidget::setMaximumScale( Scale unit )
<a name="l01278"></a>01278 {
<a name="l01279"></a>01279     myMaxScale = unit;
<a name="l01280"></a>01280     computeTicks();
<a name="l01281"></a>01281 }
<a name="l01282"></a>01282 
<a name="l01283"></a>01283 
<a name="l01290"></a>01290 <a class="code" href="classKDGanttView.html#b6e196c09b319c3e91b80b1d936f2bb2">KDTimeHeaderWidget::Scale</a>  KDTimeHeaderWidget::maximumScale()<span class="keyword"> const</span>
<a name="l01291"></a>01291 <span class="keyword"></span>{
<a name="l01292"></a>01292     <span class="keywordflow">return</span> myMaxScale;
<a name="l01293"></a>01293 }
<a name="l01294"></a>01294 
<a name="l01295"></a>01295 
<a name="l01302"></a>01302 <span class="keywordtype">void</span>  KDTimeHeaderWidget::setMinimumScale( Scale unit )
<a name="l01303"></a>01303 {
<a name="l01304"></a>01304     myMinScale = unit;
<a name="l01305"></a>01305     computeTicks();
<a name="l01306"></a>01306 }
<a name="l01307"></a>01307 
<a name="l01308"></a>01308 
<a name="l01315"></a>01315 <a class="code" href="classKDGanttView.html#b6e196c09b319c3e91b80b1d936f2bb2">KDTimeHeaderWidget::Scale</a>  KDTimeHeaderWidget::minimumScale()<span class="keyword"> const</span>
<a name="l01316"></a>01316 <span class="keyword"></span>{
<a name="l01317"></a>01317     <span class="keywordflow">return</span> myMinScale;
<a name="l01318"></a>01318 }
<a name="l01319"></a>01319 
<a name="l01320"></a>01320 
<a name="l01329"></a>01329 <span class="keywordtype">void</span> KDTimeHeaderWidget::setMinimumColumnWidth( <span class="keywordtype">int</span> width )
<a name="l01330"></a>01330 {
<a name="l01331"></a>01331     myMinimumColumWidth =  width;
<a name="l01332"></a>01332     computeTicks();
<a name="l01333"></a>01333 }
<a name="l01334"></a>01334 
<a name="l01335"></a>01335 
<a name="l01342"></a>01342 <span class="keywordtype">int</span> KDTimeHeaderWidget::minimumColumnWidth()<span class="keyword"> const</span>
<a name="l01343"></a>01343 <span class="keyword"></span>{
<a name="l01344"></a>01344     <span class="keywordflow">return</span> myMinimumColumWidth;
<a name="l01345"></a>01345 }
<a name="l01346"></a>01346 
<a name="l01347"></a>01347 
<a name="l01355"></a>01355 <span class="keywordtype">void</span> KDTimeHeaderWidget::setYearFormat( YearFormat format )
<a name="l01356"></a>01356 {
<a name="l01357"></a>01357     myYearFormat =  format;
<a name="l01358"></a>01358     computeTicks();
<a name="l01359"></a>01359 }
<a name="l01360"></a>01360 
<a name="l01361"></a>01361 
<a name="l01368"></a>01368 KDTimeHeaderWidget::YearFormat KDTimeHeaderWidget::yearFormat()<span class="keyword"> const</span>
<a name="l01369"></a>01369 <span class="keyword"></span>{
<a name="l01370"></a>01370     <span class="keywordflow">return</span>  myYearFormat;
<a name="l01371"></a>01371 }
<a name="l01372"></a>01372 
<a name="l01373"></a>01373 
<a name="l01381"></a>01381 <span class="keywordtype">void</span> KDTimeHeaderWidget::setHourFormat( HourFormat format )
<a name="l01382"></a>01382 {
<a name="l01383"></a>01383     myHourFormat = format;
<a name="l01384"></a>01384     computeTicks();
<a name="l01385"></a>01385 }
<a name="l01386"></a>01386 
<a name="l01387"></a>01387 
<a name="l01394"></a>01394 <a class="code" href="classKDGanttView.html#3cc8d9bf7fcde8ef1dc49f692a38d76a">KDTimeHeaderWidget::HourFormat</a> KDTimeHeaderWidget::hourFormat()<span class="keyword"> const</span>
<a name="l01395"></a>01395 <span class="keyword"></span>{
<a name="l01396"></a>01396     <span class="keywordflow">return</span> myHourFormat;
<a name="l01397"></a>01397 }
<a name="l01398"></a>01398 
<a name="l01399"></a>01399 
<a name="l01406"></a>01406 <span class="keywordtype">void</span> KDTimeHeaderWidget::setShowMajorTicks( <span class="keywordtype">bool</span> show )
<a name="l01407"></a>01407 {
<a name="l01408"></a>01408     flagShowMajorTicks = show;
<a name="l01409"></a>01409     <span class="keywordflow">if</span> (show) {
<a name="l01410"></a>01410         setShowMinorTicks(<span class="keyword">false</span>);
<a name="l01411"></a>01411     }
<a name="l01412"></a>01412     updateTimeTable();
<a name="l01413"></a>01413 }
<a name="l01414"></a>01414 
<a name="l01415"></a>01415 
<a name="l01422"></a>01422 <span class="keywordtype">bool</span> KDTimeHeaderWidget::showMajorTicks()<span class="keyword"> const</span>
<a name="l01423"></a>01423 <span class="keyword"></span>{
<a name="l01424"></a>01424     <span class="keywordflow">return</span> flagShowMajorTicks;
<a name="l01425"></a>01425 }
<a name="l01426"></a>01426 
<a name="l01427"></a>01427 
<a name="l01434"></a>01434 <span class="keywordtype">void</span> KDTimeHeaderWidget::setShowMinorTicks( <span class="keywordtype">bool</span> show )
<a name="l01435"></a>01435 {
<a name="l01436"></a>01436     flagShowMinorTicks = show;
<a name="l01437"></a>01437     <span class="keywordflow">if</span> (show)
<a name="l01438"></a>01438         setShowMajorTicks(<span class="keyword">false</span> );
<a name="l01439"></a>01439     <span class="comment">//repaintMe();</span>
<a name="l01440"></a>01440     updateTimeTable();
<a name="l01441"></a>01441 }
<a name="l01442"></a>01442 
<a name="l01443"></a>01443 
<a name="l01450"></a>01450 <span class="keywordtype">bool</span> KDTimeHeaderWidget::showMinorTicks()<span class="keyword"> const</span>
<a name="l01451"></a>01451 <span class="keyword"></span>{
<a name="l01452"></a>01452     <span class="keywordflow">return</span> flagShowMinorTicks;
<a name="l01453"></a>01453 }
<a name="l01454"></a>01454 
<a name="l01455"></a>01455 
<a name="l01464"></a>01464 <span class="keywordtype">void</span> KDTimeHeaderWidget::setColumnBackgroundColor( <span class="keyword">const</span> QDateTime&amp; column,
<a name="l01465"></a>01465                                                    <span class="keyword">const</span> QColor&amp; color,
<a name="l01466"></a>01466                                                    Scale mini, Scale maxi )
<a name="l01467"></a>01467 {
<a name="l01468"></a>01468     ColumnColorList::iterator it;
<a name="l01469"></a>01469     <span class="keywordflow">for</span> ( it = ccList.begin(); it != ccList.end(); ++it ) {
<a name="l01470"></a>01470         <span class="keywordflow">if</span> ((*it).datetime == column) {
<a name="l01471"></a>01471             (*it).color = color;
<a name="l01472"></a>01472             (*it).minScaleView = mini;
<a name="l01473"></a>01473             (*it).maxScaleView = maxi;
<a name="l01474"></a>01474             <span class="keywordflow">return</span>;
<a name="l01475"></a>01475         }
<a name="l01476"></a>01476     }
<a name="l01477"></a>01477     DateTimeColor newItem;
<a name="l01478"></a>01478     newItem.datetime = column;
<a name="l01479"></a>01479     newItem.color = color;
<a name="l01480"></a>01480     newItem.minScaleView = mini;
<a name="l01481"></a>01481     newItem.maxScaleView = maxi;
<a name="l01482"></a>01482     ccList.append(newItem);
<a name="l01483"></a>01483     updateTimeTable();
<a name="l01484"></a>01484 }
<a name="l01485"></a>01485 
<a name="l01486"></a>01486 <span class="keywordtype">void</span> KDTimeHeaderWidget::computeIntervals( <span class="keywordtype">int</span> height )
<a name="l01487"></a>01487 {
<a name="l01488"></a>01488     IntervalColorList::const_iterator it;
<a name="l01489"></a>01489     <span class="keywordflow">for</span> ( it = icList.begin(); it != icList.end(); ++it ) {
<a name="l01490"></a>01490       (*it)-&gt;layout( <span class="keyword">this</span>, height );
<a name="l01491"></a>01491     }
<a name="l01492"></a>01492 }
<a name="l01493"></a>01493 
<a name="l01494"></a>01494 <span class="keywordtype">void</span> KDTimeHeaderWidget::addIntervalBackgroundColor( KDIntervalColorRectangle* newItem )
<a name="l01495"></a>01495 {
<a name="l01496"></a>01496     icList.append(newItem);
<a name="l01497"></a>01497     updateTimeTable();
<a name="l01498"></a>01498 }
<a name="l01499"></a>01499 
<a name="l01500"></a>01500 <span class="preprocessor">#if 0</span>
<a name="l01501"></a>01501 <span class="preprocessor"></span><span class="keywordtype">bool</span> KDTimeHeaderWidget::changeBackgroundInterval( <span class="keyword">const</span> QDateTime&amp; oldstart,
<a name="l01502"></a>01502                                                    <span class="keyword">const</span> QDateTime&amp; oldend,
<a name="l01503"></a>01503                                                    <span class="keyword">const</span> QDateTime&amp; newstart,
<a name="l01504"></a>01504                                                    <span class="keyword">const</span> QDateTime&amp; newend )
<a name="l01505"></a>01505 {
<a name="l01506"></a>01506     IntervalColorList::iterator it;
<a name="l01507"></a>01507     <span class="keywordflow">for</span> ( it = icList.begin(); it != icList.end(); ++it ) {
<a name="l01508"></a>01508         <span class="keywordflow">if</span> ((*it).datetime == oldstart &amp;&amp; (*it).end == oldend ) {
<a name="l01509"></a>01509             IntervalColorList::iterator it2;
<a name="l01510"></a>01510             <span class="keywordflow">for</span> ( it2 = icList.begin(); it2 != icList.end(); ++it2 ) {
<a name="l01511"></a>01511                 <span class="keywordflow">if</span> ((*it2).datetime == newstart &amp;&amp; (*it2).end == newend )
<a name="l01512"></a>01512                     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l01513"></a>01513             }
<a name="l01514"></a>01514             (*it).datetime = newstart;
<a name="l01515"></a>01515             (*it).end = newend;
<a name="l01516"></a>01516             updateTimeTable();
<a name="l01517"></a>01517             <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l01518"></a>01518         }
<a name="l01519"></a>01519     }
<a name="l01520"></a>01520     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l01521"></a>01521 }
<a name="l01522"></a>01522 <span class="keywordtype">bool</span> KDTimeHeaderWidget::deleteBackgroundInterval( <span class="keyword">const</span> QDateTime&amp; start,
<a name="l01523"></a>01523                                                    <span class="keyword">const</span> QDateTime&amp; end)
<a name="l01524"></a>01524 {
<a name="l01525"></a>01525     IntervalColorList::iterator it;
<a name="l01526"></a>01526     <span class="keywordflow">for</span> ( it = icList.begin(); it != icList.end(); ++it ) {
<a name="l01527"></a>01527         <span class="keywordflow">if</span> ((*it).datetime == start &amp;&amp; (*it).end == end ) {
<a name="l01528"></a>01528             <span class="comment">//delete  (*it).canvasLine;</span>
<a name="l01529"></a>01529             <span class="keyword">delete</span>  (*it).canvasRect;
<a name="l01530"></a>01530             icList.remove(it);
<a name="l01531"></a>01531             updateTimeTable();
<a name="l01532"></a>01532             <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l01533"></a>01533         }
<a name="l01534"></a>01534     }
<a name="l01535"></a>01535     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l01536"></a>01536 }
<a name="l01537"></a>01537 
<a name="l01538"></a>01538 <span class="keywordtype">void</span> KDTimeHeaderWidget::setIntervalBackgroundColor( <span class="keyword">const</span> QDateTime&amp; start,
<a name="l01539"></a>01539                                                      <span class="keyword">const</span> QDateTime&amp; end,
<a name="l01540"></a>01540                                                      <span class="keyword">const</span> QColor&amp; color,
<a name="l01541"></a>01541                                                      Scale mini ,
<a name="l01542"></a>01542                                                      Scale maxi )
<a name="l01543"></a>01543 {
<a name="l01544"></a>01544 
<a name="l01545"></a>01545     IntervalColorList::iterator it;
<a name="l01546"></a>01546     <span class="keywordflow">for</span> ( it = icList.begin(); it != icList.end(); ++it ) {
<a name="l01547"></a>01547         <span class="keywordflow">if</span> ((*it).datetime == start &amp;&amp; (*it).end == end ) {
<a name="l01548"></a>01548             (*it).color = color;
<a name="l01549"></a>01549             (*it).minScaleView = mini;
<a name="l01550"></a>01550             (*it).maxScaleView = maxi;
<a name="l01551"></a>01551             <span class="keywordflow">return</span>;
<a name="l01552"></a>01552         }
<a name="l01553"></a>01553     }
<a name="l01554"></a>01554     DateTimeColor newItem;
<a name="l01555"></a>01555     <span class="keywordflow">if</span> ( start &lt;= end ) {
<a name="l01556"></a>01556         newItem.datetime = start;
<a name="l01557"></a>01557         newItem.end = end;
<a name="l01558"></a>01558     } <span class="keywordflow">else</span> {
<a name="l01559"></a>01559         newItem.datetime = end;
<a name="l01560"></a>01560         newItem.end = start;
<a name="l01561"></a>01561     }
<a name="l01562"></a>01562     newItem.color = color;
<a name="l01563"></a>01563     newItem.minScaleView = mini;
<a name="l01564"></a>01564     newItem.maxScaleView = maxi;
<a name="l01565"></a>01565     <span class="comment">//newItem.canvasLine = new KDCanvasLine(myGanttView-&gt;myTimeTable,0,Type_is_KDGanttGridItem);</span>
<a name="l01566"></a>01566     newItem.canvasRect = <span class="keyword">new</span> KDCanvasRectangle(myGanttView-&gt;myTimeTable,0,Type_is_KDGanttGridItem);
<a name="l01567"></a>01567     newItem.canvasRect-&gt;setZ(-19);
<a name="l01568"></a>01568     icList.append(newItem);
<a name="l01569"></a>01569     updateTimeTable();
<a name="l01570"></a>01570 }
<a name="l01571"></a>01571 <span class="preprocessor">#endif</span>
<a name="l01572"></a>01572 <span class="preprocessor"></span>
<a name="l01573"></a>01573 <span class="keywordtype">void</span> KDTimeHeaderWidget::clearBackgroundColor()
<a name="l01574"></a>01574 {
<a name="l01575"></a>01575 
<a name="l01576"></a>01576     IntervalColorList::iterator itic;
<a name="l01577"></a>01577     <span class="keywordflow">for</span> ( itic = icList.begin(); itic != icList.end(); ++itic ) {
<a name="l01578"></a>01578         <span class="keyword">delete</span>  (*itic);
<a name="l01579"></a>01579     }
<a name="l01580"></a>01580     ccList.clear();
<a name="l01581"></a>01581     icList.clear();
<a name="l01582"></a>01582     updateTimeTable();
<a name="l01583"></a>01583 }
<a name="l01584"></a>01584 QDateTime KDTimeHeaderWidget::getDateTimeForIndex(<span class="keywordtype">int</span> X, <span class="keywordtype">bool</span> local )
<a name="l01585"></a>01585 {
<a name="l01586"></a>01586     <span class="keywordtype">int</span> coordX = X;
<a name="l01587"></a>01587     <span class="keywordflow">if</span> ( !local ) {
<a name="l01588"></a>01588         QPoint p = QPoint ( X, 1 );
<a name="l01589"></a>01589         coordX = myGanttView-&gt;myTimeHeaderScroll-&gt;viewportToContents(myGanttView-&gt;myTimeHeaderScroll-&gt;mapFromGlobal( p )).x();
<a name="l01590"></a>01590 
<a name="l01591"></a>01591     }
<a name="l01592"></a>01592     <span class="keywordtype">double</span> secs = (secsFromTo( myRealStart, myRealEnd ) * ((double)coordX))/(<span class="keywordtype">double</span>)width();
<a name="l01593"></a>01593     <span class="keywordtype">double</span> days = secs/86400.0;
<a name="l01594"></a>01594     secs = secs - ( ((int) days) *86400.0 );
<a name="l01595"></a>01595     <span class="keywordflow">return</span> (myRealStart.addDays ( (<span class="keywordtype">int</span>) days )).addSecs( (<span class="keywordtype">int</span>) secs);
<a name="l01596"></a>01596 }
<a name="l01597"></a>01597 
<a name="l01598"></a>01598 <span class="comment">//FIXME: This doesn't work quite intuitively (imho) when scale is day</span>
<a name="l01599"></a>01599 <span class="comment">//       and each column containes more than 1 day:</span>
<a name="l01600"></a>01600 <span class="comment">//       1) If a column includes a weekend day, the whole column gets weekend color,</span>
<a name="l01601"></a>01601 <span class="comment">//       2) If a column includes 7 days, either *all* columns get weekend color, or</span>
<a name="l01602"></a>01602 <span class="comment">//          *none* get weekend color (haven't figured out why)</span>
<a name="l01603"></a>01603 <span class="comment">//       Proposal: Only use weekend color if the whole column is a weekend.</span>
<a name="l01604"></a>01604 <span class="comment">//       Alt: Color the area that actually is the weekend.</span>
<a name="l01605"></a>01605 <span class="keywordtype">bool</span> KDTimeHeaderWidget::getColumnColor(QColor&amp; col,<span class="keywordtype">int</span> coordLow, <span class="keywordtype">int</span> coordHigh)
<a name="l01606"></a>01606 {
<a name="l01607"></a>01607     <span class="keywordflow">if</span> (!flagShowMajorTicks &amp;&amp; !flagShowMinorTicks)
<a name="l01608"></a>01608         <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l01609"></a>01609     QDateTime start,end;
<a name="l01610"></a>01610     start = getDateTimeForIndex(coordLow);
<a name="l01611"></a>01611     end = getDateTimeForIndex(coordHigh).addSecs(-1);
<a name="l01612"></a>01612     Scale tempScale = myRealScale;
<a name="l01613"></a>01613     <span class="keywordflow">if</span> (flagShowMajorTicks)
<a name="l01614"></a>01614         <span class="keywordflow">switch</span> (myRealScale)
<a name="l01615"></a>01615             {
<a name="l01616"></a>01616             <span class="keywordflow">case</span> KDGanttView::Minute: tempScale = KDGanttView::Hour;  <span class="keywordflow">break</span>;
<a name="l01617"></a>01617             <span class="keywordflow">case</span> KDGanttView::Hour: tempScale = KDGanttView::Day   ;  <span class="keywordflow">break</span>;
<a name="l01618"></a>01618             <span class="keywordflow">case</span> KDGanttView::Day: tempScale = KDGanttView::Week   ;  <span class="keywordflow">break</span>;
<a name="l01619"></a>01619             <span class="keywordflow">case</span> KDGanttView::Week: tempScale = KDGanttView::Month  ;  <span class="keywordflow">break</span>;
<a name="l01620"></a>01620             <span class="keywordflow">case</span> KDGanttView::Month: <span class="keywordflow">return</span> false   ;  <span class="keywordflow">break</span>;
<a name="l01621"></a>01621             <span class="keywordflow">case</span> KDGanttView::Auto: <span class="keywordflow">return</span> false   ;  <span class="keywordflow">break</span>;
<a name="l01622"></a>01622             }
<a name="l01623"></a>01623     <span class="comment">//check defined column color</span>
<a name="l01624"></a>01624     ColumnColorList::iterator it;
<a name="l01625"></a>01625     <span class="keywordflow">for</span> ( it = ccList.begin(); it != ccList.end(); ++it ) {
<a name="l01626"></a>01626         <span class="keywordflow">if</span> ((*it).datetime  &gt;= start &amp;&amp; (*it).datetime  &lt;= end) {
<a name="l01627"></a>01627             <span class="keywordflow">if</span> (tempScale &gt;= (*it).minScaleView &amp;&amp;   tempScale &lt;= (*it).maxScaleView    ) {
<a name="l01628"></a>01628                 col = (*it).color;
<a name="l01629"></a>01629                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l01630"></a>01630             }
<a name="l01631"></a>01631         }
<a name="l01632"></a>01632     }
<a name="l01633"></a>01633 
<a name="l01634"></a>01634     <span class="keywordflow">if</span> (tempScale &gt; KDGanttView::Day) <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l01635"></a>01635 
<a name="l01636"></a>01636     start = getDateTimeForIndex((coordLow+coordHigh)/2);
<a name="l01637"></a>01637     <span class="keywordtype">int</span> day = start.date().dayOfWeek ();
<a name="l01638"></a>01638     <span class="comment">//checkweekdaycolor</span>
<a name="l01639"></a>01639     <span class="keywordflow">if</span> (weekdayColor[day] != Qt::white) {
<a name="l01640"></a>01640         col = weekdayColor[day];
<a name="l01641"></a>01641         <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l01642"></a>01642     }
<a name="l01643"></a>01643     <span class="comment">//checkweekendcolor</span>
<a name="l01644"></a>01644     <span class="keywordtype">int</span> endday = myWeekendDaysEnd;
<a name="l01645"></a>01645     col = myWeekendBackgroundColor;
<a name="l01646"></a>01646     <span class="keywordflow">if</span> (myWeekendDaysStart &gt; myWeekendDaysEnd)
<a name="l01647"></a>01647         endday +=7;
<a name="l01648"></a>01648     <span class="keywordflow">if</span> (day &gt;= myWeekendDaysStart &amp;&amp; day &lt;= endday) {
<a name="l01649"></a>01649         <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l01650"></a>01650     } <span class="keywordflow">else</span> {
<a name="l01651"></a>01651         <span class="keywordflow">if</span> (day+7 &gt;= myWeekendDaysStart &amp;&amp; day+7 &lt;= endday) {
<a name="l01652"></a>01652             <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l01653"></a>01653         }
<a name="l01654"></a>01654     }
<a name="l01655"></a>01655     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l01656"></a>01656 }
<a name="l01657"></a>01657 
<a name="l01666"></a>01666 QColor KDTimeHeaderWidget::columnBackgroundColor( <span class="keyword">const</span> QDateTime&amp; column )<span class="keyword"> const</span>
<a name="l01667"></a>01667 <span class="keyword"></span>{
<a name="l01668"></a>01668     QColor c;
<a name="l01669"></a>01669     c = white;
<a name="l01670"></a>01670     ColumnColorList::const_iterator ite;
<a name="l01671"></a>01671     <span class="keywordflow">for</span> ( ite = ccList.begin(); ite != ccList.end(); ++ite ) {
<a name="l01672"></a>01672         <span class="keywordflow">if</span> ((*ite).datetime == column) {
<a name="l01673"></a>01673             c = (*ite).color;
<a name="l01674"></a>01674         }
<a name="l01675"></a>01675     }
<a name="l01676"></a>01676     <span class="keywordflow">return</span> c;
<a name="l01677"></a>01677 }
<a name="l01678"></a>01678 
<a name="l01679"></a>01679 
<a name="l01688"></a>01688 <span class="keywordtype">void</span> KDTimeHeaderWidget::setWeekendBackgroundColor( <span class="keyword">const</span> QColor&amp; color )
<a name="l01689"></a>01689 {
<a name="l01690"></a>01690     myWeekendBackgroundColor = color ;
<a name="l01691"></a>01691     updateTimeTable();
<a name="l01692"></a>01692 }
<a name="l01693"></a>01693 
<a name="l01694"></a>01694 
<a name="l01701"></a>01701 QColor KDTimeHeaderWidget::weekendBackgroundColor()<span class="keyword"> const</span>
<a name="l01702"></a>01702 <span class="keyword"></span>{
<a name="l01703"></a>01703     <span class="keywordflow">return</span> myWeekendBackgroundColor;
<a name="l01704"></a>01704 }
<a name="l01705"></a>01705 
<a name="l01716"></a>01716 <span class="keywordtype">void</span> KDTimeHeaderWidget::setWeekdayBackgroundColor( <span class="keyword">const</span> QColor&amp; color, <span class="keywordtype">int</span>  weekday )
<a name="l01717"></a>01717 {
<a name="l01718"></a>01718     weekdayColor[weekday] = color;
<a name="l01719"></a>01719     updateTimeTable();
<a name="l01720"></a>01720 }
<a name="l01721"></a>01721 
<a name="l01722"></a>01722 
<a name="l01730"></a>01730 QColor KDTimeHeaderWidget::weekdayBackgroundColor(<span class="keywordtype">int</span> weekday)<span class="keyword"> const</span>
<a name="l01731"></a>01731 <span class="keyword"></span>{
<a name="l01732"></a>01732     <span class="keywordflow">return</span> weekdayColor[weekday];
<a name="l01733"></a>01733 }
<a name="l01734"></a>01734 
<a name="l01735"></a>01735 
<a name="l01746"></a>01746 <span class="keywordtype">void</span> KDTimeHeaderWidget::setWeekendDays( <span class="keywordtype">int</span> start, <span class="keywordtype">int</span> end )
<a name="l01747"></a>01747 {
<a name="l01748"></a>01748     myWeekendDaysStart = start;
<a name="l01749"></a>01749     myWeekendDaysEnd = end;
<a name="l01750"></a>01750     updateTimeTable();
<a name="l01751"></a>01751 }
<a name="l01752"></a>01752 
<a name="l01753"></a>01753 
<a name="l01761"></a>01761 <span class="keywordtype">void</span> KDTimeHeaderWidget::weekendDays( <span class="keywordtype">int</span>&amp; start, <span class="keywordtype">int</span>&amp; end )<span class="keyword"> const</span>
<a name="l01762"></a>01762 <span class="keyword"></span>{
<a name="l01763"></a>01763     start = myWeekendDaysStart;
<a name="l01764"></a>01764     end = myWeekendDaysEnd ;
<a name="l01765"></a>01765 }
<a name="l01766"></a>01766 
<a name="l01767"></a>01767 
<a name="l01768"></a>01768 
<a name="l01775"></a>01775 <span class="keywordtype">void</span> KDTimeHeaderWidget::setMajorScaleCount( <span class="keywordtype">int</span> count )
<a name="l01776"></a>01776 {
<a name="l01777"></a>01777     myMajorScaleCount=count;
<a name="l01778"></a>01778     computeTicks();
<a name="l01779"></a>01779 }
<a name="l01780"></a>01780 
<a name="l01781"></a>01781 
<a name="l01788"></a>01788 <span class="keywordtype">int</span> KDTimeHeaderWidget::majorScaleCount()<span class="keyword"> const</span>
<a name="l01789"></a>01789 <span class="keyword"></span>{
<a name="l01790"></a>01790     <span class="keywordflow">return</span> myMajorScaleCount;
<a name="l01791"></a>01791 }
<a name="l01792"></a>01792 
<a name="l01793"></a>01793 
<a name="l01800"></a>01800 <span class="keywordtype">void</span> KDTimeHeaderWidget::setMinorScaleCount( <span class="keywordtype">int</span> count )
<a name="l01801"></a>01801 {
<a name="l01802"></a>01802     myMinorScaleCount = count;
<a name="l01803"></a>01803     computeTicks();
<a name="l01804"></a>01804 }
<a name="l01805"></a>01805 
<a name="l01806"></a>01806 
<a name="l01813"></a>01813 <span class="keywordtype">int</span> KDTimeHeaderWidget::minorScaleCount()<span class="keyword"> const</span>
<a name="l01814"></a>01814 <span class="keyword"></span>{
<a name="l01815"></a>01815     <span class="keywordflow">return</span> myMinorScaleCount ;
<a name="l01816"></a>01816 
<a name="l01817"></a>01817 }
<a name="l01818"></a>01818 
<a name="l01819"></a>01819 
<a name="l01820"></a>01820 <span class="keywordtype">void</span> KDTimeHeaderWidget::resizeEvent ( QResizeEvent * )
<a name="l01821"></a>01821 {
<a name="l01822"></a>01822     <span class="comment">// qDebug("KDTimeHeaderWidget:: resizeEvent ");</span>
<a name="l01823"></a>01823     paintPix.resize( 800, height () );
<a name="l01824"></a>01824 }
<a name="l01825"></a>01825 
<a name="l01826"></a>01826 
<a name="l01827"></a>01827 <span class="keywordtype">void</span> KDTimeHeaderWidget::updateTimeTable()
<a name="l01828"></a>01828 {
<a name="l01829"></a>01829     <span class="comment">//qDebug("KDTimeHeaderWidget::updateTimeTable() ");</span>
<a name="l01830"></a>01830     <span class="keywordflow">if</span> (flagDoNotRecomputeAfterChange) <span class="keywordflow">return</span>;
<a name="l01831"></a>01831     <span class="comment">// setting the scrolling steps</span>
<a name="l01832"></a>01832     <span class="keywordtype">int</span> scrollLineStep = myGridMinorWidth;
<a name="l01833"></a>01833     <span class="keywordflow">if</span> (showMajorTicks()) {
<a name="l01834"></a>01834         QValueList&lt;int&gt;::iterator intIt = majorTicks.begin();
<a name="l01835"></a>01835         scrollLineStep = 5 * myGridMinorWidth;
<a name="l01836"></a>01836         <span class="keywordflow">if</span> (intIt != majorTicks.end()) {
<a name="l01837"></a>01837             <span class="keywordtype">int</span> left = *intIt;
<a name="l01838"></a>01838             ++intIt;
<a name="l01839"></a>01839             <span class="keywordflow">if</span> (intIt != majorTicks.end()) {
<a name="l01840"></a>01840                 scrollLineStep = *intIt-left;
<a name="l01841"></a>01841             }
<a name="l01842"></a>01842         }
<a name="l01843"></a>01843     }
<a name="l01844"></a>01844     myGanttView-&gt;myCanvasView-&gt;horizontalScrollBar()-&gt;setLineStep(scrollLineStep);
<a name="l01845"></a>01845     myGanttView-&gt;myTimeTable-&gt;maximumComputedGridHeight = 0;
<a name="l01846"></a>01846     myGanttView-&gt;myTimeTable-&gt;updateMyContent();
<a name="l01847"></a>01847 }
<a name="l01848"></a>01848 
<a name="l01849"></a>01849 
<a name="l01850"></a>01850 <span class="keywordtype">void</span> KDTimeHeaderWidget::setAutoScaleMinorTickCount( <span class="keywordtype">int</span> count )
<a name="l01851"></a>01851 {
<a name="l01852"></a>01852     myAutoScaleMinorTickcount = count;
<a name="l01853"></a>01853     computeTicks();
<a name="l01854"></a>01854 
<a name="l01855"></a>01855 }
<a name="l01856"></a>01856 
<a name="l01857"></a>01857 
<a name="l01858"></a>01858 <span class="keywordtype">int</span> KDTimeHeaderWidget::autoScaleMinorTickCount()
<a name="l01859"></a>01859 {
<a name="l01860"></a>01860     <span class="keywordflow">return</span> myAutoScaleMinorTickcount;
<a name="l01861"></a>01861 }
<a name="l01862"></a>01862 
<a name="l01863"></a>01863 
<a name="l01864"></a>01864 <span class="keywordtype">void</span> KDTimeHeaderWidget::repaintMe(<span class="keywordtype">int</span> left,<span class="keywordtype">int</span> paintwid, QPainter* painter)
<a name="l01865"></a>01865 {
<a name="l01866"></a>01866     <span class="keywordflow">if</span> (flagDoNotRecomputeAfterChange) <span class="keywordflow">return</span>;
<a name="l01867"></a>01867     QColorGroup qcg =QColorGroup( white, black,white, darkGray,black,gray,gray) ;
<a name="l01868"></a>01868     QPainter* p;
<a name="l01869"></a>01869     <span class="keywordtype">int</span> offsetLeft = 0;
<a name="l01870"></a>01870     <span class="keywordflow">if</span> ( paintwid &gt; paintPix.width()-100 )
<a name="l01871"></a>01871         paintPix.resize( paintwid+100, height () );
<a name="l01872"></a>01872     <span class="keywordflow">if</span> ( painter )
<a name="l01873"></a>01873         p = painter;
<a name="l01874"></a>01874     <span class="keywordflow">else</span> {
<a name="l01875"></a>01875         p = <span class="keyword">new</span> QPainter( &amp;paintPix );
<a name="l01876"></a>01876         offsetLeft = left-50;
<a name="l01877"></a>01877     }
<a name="l01878"></a>01878     <span class="keywordflow">if</span> ( mouseDown ) {
<a name="l01879"></a>01879         p-&gt;fillRect( left-offsetLeft, 0, paintwid, height(), QBrush(paletteBackgroundColor()) );
<a name="l01880"></a>01880         <span class="keywordtype">int</span> start ;
<a name="l01881"></a>01881         <span class="keywordtype">int</span> wid;
<a name="l01882"></a>01882         <span class="keywordflow">if</span> ( beginMouseDown &lt; endMouseDown ) {
<a name="l01883"></a>01883             start = beginMouseDown ;
<a name="l01884"></a>01884             wid = endMouseDown - beginMouseDown ;
<a name="l01885"></a>01885         } <span class="keywordflow">else</span> {
<a name="l01886"></a>01886             start = endMouseDown ;
<a name="l01887"></a>01887             wid = -endMouseDown + beginMouseDown ;
<a name="l01888"></a>01888         }
<a name="l01889"></a>01889         p-&gt;fillRect( start-offsetLeft, 0, wid, height(), QBrush(paletteBackgroundColor().dark()) );
<a name="l01890"></a>01890     } <span class="keywordflow">else</span> {
<a name="l01891"></a>01891         <span class="keywordflow">if</span> (! painter )
<a name="l01892"></a>01892             p-&gt;fillRect( left-offsetLeft, 0, paintwid, height(), QBrush(paletteBackgroundColor()) );
<a name="l01893"></a>01893     }
<a name="l01894"></a>01894     p-&gt;setPen(QColor(40,40,40));
<a name="l01895"></a>01895     QFont tempFont = p-&gt;font();
<a name="l01896"></a>01896     tempFont.setWeight(63);
<a name="l01897"></a>01897     p-&gt;setFont(tempFont);
<a name="l01898"></a>01898     <span class="keywordtype">int</span> hei1 = myMajorGridHeight,
<a name="l01899"></a>01899         hei2 = height(),
<a name="l01900"></a>01900         wid1 = myGridMinorWidth;
<a name="l01901"></a>01901     <span class="keywordtype">int</span> xCoord;
<a name="l01902"></a>01902     <span class="keywordtype">int</span> lwid = 1;
<a name="l01903"></a>01903 
<a name="l01904"></a>01904     QValueList&lt;QString&gt;::iterator it;
<a name="l01905"></a>01905     QValueList&lt;int&gt;::iterator intIt = majorTicks.begin();
<a name="l01906"></a>01906     <span class="keywordflow">for</span> ( it =  majorText.begin(); it !=  majorText.end(); ++it ) {
<a name="l01907"></a>01907         xCoord  = (*intIt++);
<a name="l01908"></a>01908         <span class="keywordflow">if</span> (((*intIt)&gt;= left &amp;&amp; xCoord &lt;= left+paintwid)) {
<a name="l01909"></a>01909             qDrawShadeLine ( p,xCoord-offsetLeft ,hei1+1, xCoord-offsetLeft, -2, qcg, <span class="keyword">true</span>, lwid, 1 );
<a name="l01910"></a>01910             p-&gt;drawText(xCoord+4-offsetLeft,hei1-4,(*it));
<a name="l01911"></a>01911         }
<a name="l01912"></a>01912     }
<a name="l01913"></a>01913     qDrawShadeLine ( p,left-offsetLeft  ,hei1, left+paintwid-offsetLeft, hei1, qcg, <span class="keyword">true</span>, lwid, 1 );
<a name="l01914"></a>01914     <span class="keywordtype">int</span> i = 0;
<a name="l01915"></a>01915     <span class="keywordflow">for</span> ( it =  minorText.begin(); it !=  minorText.end(); ++it ) {
<a name="l01916"></a>01916         <span class="keywordflow">if</span> (i*wid1 &gt;= left-wid1 &amp;&amp; i*wid1 &lt;= left+paintwid) {
<a name="l01917"></a>01917             qDrawShadeLine ( p,i*wid1-offsetLeft ,hei1-1, i*wid1-offsetLeft, hei2, qcg, <span class="keyword">true</span>, lwid, 1 );
<a name="l01918"></a>01918             p-&gt;drawText(i*wid1+1-offsetLeft,hei1+1,wid1-1,hei2-hei1,Qt::AlignCenter,(*it));
<a name="l01919"></a>01919         }
<a name="l01920"></a>01920         ++i;
<a name="l01921"></a>01921     }
<a name="l01922"></a>01922     p-&gt;setPen(black);
<a name="l01923"></a>01923     p-&gt;drawLine(left-offsetLeft,hei1,left+paintwid-offsetLeft,hei1);
<a name="l01924"></a>01924     qDrawShadeLine ( p,left-offsetLeft  ,hei2-1, left+paintwid-offsetLeft, hei2-1, qcg, <span class="keyword">true</span>, lwid, 1 );
<a name="l01925"></a>01925     p-&gt;drawLine(left-offsetLeft,hei2-1,left+paintwid-offsetLeft,hei2-1);
<a name="l01926"></a>01926     <span class="keywordflow">if</span> ( !painter ) {
<a name="l01927"></a>01927         p-&gt;end();
<a name="l01928"></a>01928         <span class="keyword">delete</span> p;
<a name="l01929"></a>01929         bitBlt ( <span class="keyword">this</span>, left, 0, &amp;paintPix, 50, 0, paintwid, height() );
<a name="l01930"></a>01930     }
<a name="l01931"></a>01931 }
<a name="l01932"></a>01932 
<a name="l01933"></a>01933 <span class="comment">// cuts the secs in the DateTime if scale is Minute ,</span>
<a name="l01934"></a>01934 <span class="comment">// the minutes and secs if scale is Hour and so on</span>
<a name="l01935"></a>01935 
<a name="l01936"></a>01936 QDateTime KDTimeHeaderWidget::getEvenTimeDate(QDateTime tempdatetime ,Scale sc)
<a name="l01937"></a>01937 {
<a name="l01938"></a>01938     QDate tempdate;
<a name="l01939"></a>01939     <span class="keywordtype">int</span> min, hour;
<a name="l01940"></a>01940     <span class="keywordtype">int</span> tempMinorScaleCount = myRealMinorScaleCount;
<a name="l01941"></a>01941     <span class="keywordflow">switch</span> (sc)
<a name="l01942"></a>01942         {
<a name="l01943"></a>01943         <span class="keywordflow">case</span> KDGanttView::Month:
<a name="l01944"></a>01944             tempdate = tempdatetime.date();
<a name="l01945"></a>01945             <span class="keywordflow">while</span> (tempdate.day ()!= 1 )
<a name="l01946"></a>01946                 tempdate = tempdate.addDays(-1);
<a name="l01947"></a>01947             <span class="comment">//while (tempdate.month ()!= 1 )</span>
<a name="l01948"></a>01948             <span class="comment">//tempdate = tempdate.addMonths(-1);</span>
<a name="l01949"></a>01949             tempdatetime = QDateTime (tempdate, QTime (0,0));
<a name="l01950"></a>01950             <span class="keywordflow">break</span>;
<a name="l01951"></a>01951         <span class="keywordflow">case</span> KDGanttView::Week:
<a name="l01952"></a>01952             tempdate = tempdatetime.date();
<a name="l01953"></a>01953             <span class="keywordflow">while</span> (tempdate.dayOfWeek ()!= KGlobal::locale()-&gt;weekStartDay())
<a name="l01954"></a>01954                 tempdate = tempdate.addDays(-1);
<a name="l01955"></a>01955             <span class="comment">//tempdate = tempdate.addDays(-7);</span>
<a name="l01956"></a>01956             tempdatetime = QDateTime (tempdate, QTime (0,0));
<a name="l01957"></a>01957             <span class="keywordflow">break</span>;
<a name="l01958"></a>01958         <span class="keywordflow">case</span> KDGanttView::Day:
<a name="l01959"></a>01959             tempdatetime = QDateTime (tempdatetime.date(), QTime ( 0,0 ) );
<a name="l01960"></a>01960             <span class="keywordflow">break</span>;
<a name="l01961"></a>01961         <span class="keywordflow">case</span> KDGanttView::Hour:
<a name="l01962"></a>01962             hour = tempdatetime.time().hour();
<a name="l01963"></a>01963             <span class="keywordflow">while</span> (24%tempMinorScaleCount &gt; 0 &amp;&amp; 24%tempMinorScaleCount &lt; 24)
<a name="l01964"></a>01964                 ++tempMinorScaleCount;
<a name="l01965"></a>01965             hour = ( hour /tempMinorScaleCount)*tempMinorScaleCount;
<a name="l01966"></a>01966             tempdatetime = QDateTime (tempdatetime.date(), QTime (hour, 0 ));
<a name="l01967"></a>01967             <span class="keywordflow">break</span>;
<a name="l01968"></a>01968         <span class="keywordflow">case</span> KDGanttView::Minute:
<a name="l01969"></a>01969             min = tempdatetime.time().minute();
<a name="l01970"></a>01970             <span class="keywordflow">while</span> (60%tempMinorScaleCount &gt; 0 &amp;&amp; 60%tempMinorScaleCount &lt; 60)
<a name="l01971"></a>01971                 ++tempMinorScaleCount;
<a name="l01972"></a>01972             <span class="comment">// qDebug("myMinorScaleCount %d %d %d",myMinorScaleCount, myRealMinorScaleCount, tempMinorScaleCount);</span>
<a name="l01973"></a>01973             min = (min /tempMinorScaleCount)*tempMinorScaleCount;
<a name="l01974"></a>01974             tempdatetime = QDateTime (tempdatetime.date(), QTime (tempdatetime.time().hour(),min ));
<a name="l01975"></a>01975 
<a name="l01976"></a>01976             <span class="keywordflow">break</span>;
<a name="l01977"></a>01977         <span class="keywordflow">case</span> KDGanttView::Auto:
<a name="l01978"></a>01978             <span class="keywordflow">break</span>;
<a name="l01979"></a>01979         }
<a name="l01980"></a>01980     <span class="keywordflow">return</span> tempdatetime;
<a name="l01981"></a>01981 }
<a name="l01982"></a>01982 
<a name="l01983"></a>01983 
<a name="l01984"></a>01984 <span class="keywordtype">void</span> KDTimeHeaderWidget::computeRealScale(QDateTime start)
<a name="l01985"></a>01985 {
<a name="l01986"></a>01986 
<a name="l01987"></a>01987     <span class="keywordflow">if</span> (myScale ==KDGanttView::Auto) {
<a name="l01988"></a>01988         <span class="comment">//qDebug("Autoscale ");</span>
<a name="l01989"></a>01989         <span class="comment">//double secsPerMinor = (((double)start.daysTo(myHorizonEnd))* 86400.00)/((double)myAutoScaleMinorTickcount);</span>
<a name="l01990"></a>01990         <span class="keywordtype">double</span> secsPerMinor = (((double)start.secsTo(myHorizonEnd)))/((double)myAutoScaleMinorTickcount);
<a name="l01991"></a>01991         secsPerMinor /= myZoomFactor;
<a name="l01992"></a>01992         <span class="keywordflow">if</span> (secsPerMinor &lt;= 1800) {
<a name="l01993"></a>01993             myRealScale =  KDGanttView::Minute;
<a name="l01994"></a>01994             myRealMinorScaleCount = (int) secsPerMinor/60;
<a name="l01995"></a>01995         } <span class="keywordflow">else</span> {
<a name="l01996"></a>01996             <span class="keywordflow">if</span> (secsPerMinor &lt;= 12*3600) {
<a name="l01997"></a>01997                 myRealScale =  KDGanttView::Hour;
<a name="l01998"></a>01998                 myRealMinorScaleCount = (int)  secsPerMinor/3600;
<a name="l01999"></a>01999             } <span class="keywordflow">else</span> {
<a name="l02000"></a>02000                 <span class="keywordflow">if</span> (secsPerMinor &lt;= 24*3600*3) {
<a name="l02001"></a>02001                     myRealScale =  KDGanttView::Day;
<a name="l02002"></a>02002                     myRealMinorScaleCount = (int)  secsPerMinor/(3600*24);
<a name="l02003"></a>02003                 } <span class="keywordflow">else</span> {
<a name="l02004"></a>02004                     <span class="keywordflow">if</span> (secsPerMinor &lt;= 24*3600*14) {
<a name="l02005"></a>02005                         myRealScale =  KDGanttView::Week;
<a name="l02006"></a>02006                         myRealMinorScaleCount =  (int) secsPerMinor/(3600*24*7);
<a name="l02007"></a>02007                     } <span class="keywordflow">else</span> {
<a name="l02008"></a>02008                         myRealScale =  KDGanttView::Month;
<a name="l02009"></a>02009                         myRealMinorScaleCount =  (int) secsPerMinor/(3600*24*30);
<a name="l02010"></a>02010 
<a name="l02011"></a>02011                     }
<a name="l02012"></a>02012                 }
<a name="l02013"></a>02013             }
<a name="l02014"></a>02014         }
<a name="l02015"></a>02015         <span class="keywordflow">if</span>(myRealMinorScaleCount == 0)
<a name="l02016"></a>02016             myRealMinorScaleCount = 1;
<a name="l02017"></a>02017         myRealMajorScaleCount = 1;
<a name="l02018"></a>02018     }
<a name="l02019"></a>02019     <span class="keywordflow">else</span> {
<a name="l02020"></a>02020         <span class="comment">//qDebug("Fixed scale ");</span>
<a name="l02021"></a>02021         myRealScale = myScale;
<a name="l02022"></a>02022         <span class="keywordflow">if</span> (myRealScale &gt; myMaxScale)
<a name="l02023"></a>02023             myRealScale = myMaxScale;
<a name="l02024"></a>02024         <span class="keywordflow">if</span> (myRealScale &lt; myMinScale)
<a name="l02025"></a>02025             myRealScale = myMinScale;
<a name="l02026"></a>02026         myRealMinorScaleCount = (int) ( ((<span class="keywordtype">double</span>)myMinorScaleCount) /myZoomFactor );
<a name="l02027"></a>02027         <span class="keywordtype">double</span> tempZoom = myZoomFactor;
<a name="l02028"></a>02028         myRealMajorScaleCount =  myMajorScaleCount;
<a name="l02029"></a>02029         <span class="keywordflow">while</span> (myRealMinorScaleCount == 0) {
<a name="l02030"></a>02030             <span class="keywordflow">if</span> (myRealScale  == myMinScale) {
<a name="l02031"></a>02031                 myRealMinorScaleCount = 1;
<a name="l02032"></a>02032                 <span class="keywordflow">break</span>;
<a name="l02033"></a>02033             }
<a name="l02034"></a>02034             <span class="keywordflow">switch</span> (myRealScale)
<a name="l02035"></a>02035                 {
<a name="l02036"></a>02036                 <span class="keywordflow">case</span> KDGanttView::Minute:
<a name="l02037"></a>02037                     myRealMinorScaleCount = 1;
<a name="l02038"></a>02038                     <span class="keywordflow">return</span>;
<a name="l02039"></a>02039                     <span class="keywordflow">break</span>;
<a name="l02040"></a>02040                 <span class="keywordflow">case</span> KDGanttView::Hour:
<a name="l02041"></a>02041                     myRealScale = KDGanttView::Minute;
<a name="l02042"></a>02042                     tempZoom = tempZoom/60;
<a name="l02043"></a>02043                     <span class="keywordflow">break</span>;
<a name="l02044"></a>02044                 <span class="keywordflow">case</span> KDGanttView::Day:
<a name="l02045"></a>02045                     myRealScale = KDGanttView::Hour;
<a name="l02046"></a>02046                     tempZoom = tempZoom/24;
<a name="l02047"></a>02047                     <span class="keywordflow">break</span>;
<a name="l02048"></a>02048                 <span class="keywordflow">case</span> KDGanttView::Week:
<a name="l02049"></a>02049                     myRealScale = KDGanttView::Day;
<a name="l02050"></a>02050                     tempZoom = tempZoom/7;
<a name="l02051"></a>02051                     <span class="keywordflow">break</span>;
<a name="l02052"></a>02052                 <span class="keywordflow">case</span> KDGanttView::Month:
<a name="l02053"></a>02053                     myRealScale =  KDGanttView::Week ;
<a name="l02054"></a>02054                     tempZoom = tempZoom*7/30;
<a name="l02055"></a>02055                     <span class="keywordflow">break</span>;
<a name="l02056"></a>02056                 <span class="keywordflow">case</span> KDGanttView::Auto:
<a name="l02057"></a>02057                     <span class="keywordflow">break</span>;
<a name="l02058"></a>02058                 }
<a name="l02059"></a>02059             myRealMinorScaleCount =  (int) ( myMinorScaleCount /tempZoom );
<a name="l02060"></a>02060         }
<a name="l02061"></a>02061     }
<a name="l02062"></a>02062 }
<a name="l02063"></a>02063 
<a name="l02064"></a>02064 
<a name="l02065"></a>02065 <span class="keywordtype">void</span> KDTimeHeaderWidget::computeTicks(<span class="keywordtype">bool</span> doNotComputeRealScale)
<a name="l02066"></a>02066 {
<a name="l02067"></a>02067     <span class="keywordflow">if</span> (flagDoNotRecomputeAfterChange) <span class="keywordflow">return</span>;
<a name="l02068"></a>02068     <span class="keywordtype">bool</span> block = myGanttView-&gt;myTimeTable-&gt;blockUpdating();
<a name="l02069"></a>02069     myGanttView-&gt;myTimeTable-&gt;setBlockUpdating( <span class="keyword">true</span> );
<a name="l02070"></a>02070     <span class="comment">//qDebug("computeticks ");</span>
<a name="l02071"></a>02071     majorTicks.clear();
<a name="l02072"></a>02072     minorText.clear();
<a name="l02073"></a>02073     majorText.clear();
<a name="l02074"></a>02074     <span class="keywordflow">if</span> ( !doNotComputeRealScale )
<a name="l02075"></a>02075         saveCenterDateTime();
<a name="l02076"></a>02076     <span class="keywordflow">if</span> (!doNotComputeRealScale)
<a name="l02077"></a>02077         computeRealScale(myHorizonStart);
<a name="l02078"></a>02078     myRealStart = getEvenTimeDate(myHorizonStart ,myRealScale);
<a name="l02079"></a>02079     <span class="keywordflow">if</span> (!doNotComputeRealScale)
<a name="l02080"></a>02080         computeRealScale(myRealStart);
<a name="l02081"></a>02081     <span class="keywordtype">int</span> tempMinorScaleCount = myRealMinorScaleCount,
<a name="l02082"></a>02082         tempMajorScaleCount = myRealMajorScaleCount;
<a name="l02083"></a>02083     <span class="keywordtype">int</span> minorItems,minorPerMajor = 1;
<a name="l02084"></a>02084     minorItems = (int)  (secsFromTo( myRealStart, myHorizonEnd)/60.0);
<a name="l02085"></a>02085     <span class="comment">//qDebug("tempMinorScaleCount %d ", tempMinorScaleCount);</span>
<a name="l02086"></a>02086     QPainter p(<span class="keyword">this</span>);
<a name="l02087"></a>02087     <span class="keywordtype">int</span> Width, Height;
<a name="l02088"></a>02088     QString testTextMinor,testTextMajor, tempStr;
<a name="l02089"></a>02089     QRect itemRectMinor, itemRectMajor;
<a name="l02090"></a>02090     QDate tempDate = myRealStart.date();
<a name="l02091"></a>02091     myRealEnd = myRealStart;
<a name="l02092"></a>02092     <span class="comment">// preparing the testtext for the differennt scales</span>
<a name="l02093"></a>02093     <span class="keywordflow">switch</span> (myRealScale)
<a name="l02094"></a>02094         {
<a name="l02095"></a>02095             <span class="comment">// the x in testTextMajor is added to reserve a little bit more space</span>
<a name="l02096"></a>02096         <span class="keywordflow">case</span> KDGanttView::Minute:
<a name="l02097"></a>02097             testTextMinor = <span class="stringliteral">"60"</span>;
<a name="l02098"></a>02098             <span class="keywordflow">if</span> (myHourFormat == KDGanttView::Hour_12)
<a name="l02099"></a>02099                 testTextMajor = <span class="stringliteral">"Mon Aug 30, 12 AMx"</span>;
<a name="l02100"></a>02100             <span class="keywordflow">else</span>
<a name="l02101"></a>02101                 testTextMajor = <span class="stringliteral">"Mon Aug 30, 24:00x"</span>;
<a name="l02102"></a>02102             minorPerMajor = 6000;
<a name="l02103"></a>02103             <span class="keywordflow">break</span>;
<a name="l02104"></a>02104         <span class="keywordflow">case</span> KDGanttView::Hour:
<a name="l02105"></a>02105             minorItems = minorItems/60;
<a name="l02106"></a>02106             <span class="keywordflow">if</span> (myHourFormat == KDGanttView::Hour_24)
<a name="l02107"></a>02107                 testTextMinor = <span class="stringliteral">"24x"</span>;
<a name="l02108"></a>02108             <span class="keywordflow">else</span>
<a name="l02109"></a>02109                 testTextMinor = <span class="stringliteral">"12 AM"</span>;
<a name="l02110"></a>02110             testTextMajor = <span class="stringliteral">"Mon Aug 30, x"</span>;
<a name="l02111"></a>02111             <span class="keywordflow">if</span> ( yearFormat() != KDGanttView::NoDate )
<a name="l02112"></a>02112                 testTextMajor += getYear(QDate::currentDate());
<a name="l02113"></a>02113             minorPerMajor = 2400;
<a name="l02114"></a>02114             <span class="keywordflow">break</span>;
<a name="l02115"></a>02115         <span class="keywordflow">case</span> KDGanttView::Day:
<a name="l02116"></a>02116             minorItems = minorItems/(60*24);
<a name="l02117"></a>02117             testTextMinor = <span class="stringliteral">"88"</span>;
<a name="l02118"></a>02118             testTextMajor = <span class="stringliteral">"Aug 30, x"</span>+getYear(QDate::currentDate());
<a name="l02119"></a>02119             minorPerMajor = 700;
<a name="l02120"></a>02120             <span class="keywordflow">break</span>;
<a name="l02121"></a>02121         <span class="keywordflow">case</span> KDGanttView::Week:
<a name="l02122"></a>02122             minorItems = minorItems/(60*24*7);
<a name="l02123"></a>02123             testTextMinor = <span class="stringliteral">"88"</span>;
<a name="l02124"></a>02124             testTextMajor = <span class="stringliteral">"Aug x"</span>+getYear(QDate::currentDate());
<a name="l02125"></a>02125             minorPerMajor = 435; <span class="comment">// 435 = 365days/12months/7days * 100</span>
<a name="l02126"></a>02126             <span class="keywordflow">break</span>;
<a name="l02127"></a>02127         <span class="keywordflow">case</span> KDGanttView::Month:
<a name="l02128"></a>02128             minorItems = (minorItems*12)/(60*24*365);
<a name="l02129"></a>02129             testTextMinor = <span class="stringliteral">"M"</span>;
<a name="l02130"></a>02130             testTextMajor = <span class="stringliteral">"x"</span>+getYear(QDate::currentDate());
<a name="l02131"></a>02131             minorPerMajor = 1200;
<a name="l02132"></a>02132             <span class="keywordflow">break</span>;
<a name="l02133"></a>02133         <span class="keywordflow">case</span> KDGanttView::Auto:
<a name="l02134"></a>02134             qDebug(<span class="stringliteral">"KDGanttView::Internal Error in KDTimeHeaderWidget::computeTicks() "</span>);
<a name="l02135"></a>02135             qDebug(<span class="stringliteral">"             RealScale == Auto : This may not be! "</span>);
<a name="l02136"></a>02136             <span class="keywordflow">break</span>;
<a name="l02137"></a>02137         }
<a name="l02138"></a>02138     itemRectMinor = p.boundingRect ( 10, 10, 2, 2, Qt::AlignLeft,testTextMinor);
<a name="l02139"></a>02139     itemRectMajor = p.boundingRect ( 10, 10, 2, 2, Qt::AlignLeft,testTextMajor);
<a name="l02140"></a>02140     p.end();
<a name="l02141"></a>02141     <span class="comment">//qDebug("     tempMinorScaleCount %d ", tempMinorScaleCount);</span>
<a name="l02142"></a>02142     Height = itemRectMinor.height()+itemRectMajor.height()+11;
<a name="l02143"></a>02143     Width = (itemRectMinor.width()+5);
<a name="l02144"></a>02144     <span class="keywordflow">if</span> (Width &lt; minimumColumnWidth()) Width = minimumColumnWidth();
<a name="l02145"></a>02145     <span class="comment">// if the desired width is greater than the maximum width of this widget</span>
<a name="l02146"></a>02146     <span class="comment">// increase the minorscalecount</span>
<a name="l02147"></a>02147     <span class="keywordtype">int</span> maxWid = myGanttView-&gt;myCanvasView-&gt;viewport()-&gt;width();
<a name="l02148"></a>02148     <span class="keywordflow">if</span> (!flagZoomToFit)
<a name="l02149"></a>02149         maxWid = maximumWidth();
<a name="l02150"></a>02150     <span class="keywordflow">while</span>((minorItems/tempMinorScaleCount+1)*Width &gt; maxWid)
<a name="l02151"></a>02151         ++tempMinorScaleCount;
<a name="l02152"></a>02152     <span class="comment">//qDebug("             tempMinorScaleCount %d ", tempMinorScaleCount);</span>
<a name="l02153"></a>02153     mySizeHint = (minorItems/tempMinorScaleCount+1)*Width;
<a name="l02154"></a>02154     <span class="keywordflow">switch</span> (myRealScale)
<a name="l02155"></a>02155         {
<a name="l02156"></a>02156         <span class="keywordflow">case</span> KDGanttView::Minute:
<a name="l02157"></a>02157             <span class="keywordflow">if</span> (tempMinorScaleCount &lt; 60)
<a name="l02158"></a>02158                 <span class="keywordflow">while</span> (60%tempMinorScaleCount &gt; 0 &amp;&amp; 60%tempMinorScaleCount &lt; 60)
<a name="l02159"></a>02159                     ++tempMinorScaleCount;
<a name="l02160"></a>02160             <span class="keywordflow">if</span> (tempMinorScaleCount &gt;= 60) {
<a name="l02161"></a>02161                 myRealScale = KDGanttView::Hour;
<a name="l02162"></a>02162                 myRealMinorScaleCount = tempMinorScaleCount/ 60;
<a name="l02163"></a>02163                 <span class="comment">// myRealMinorScaleCount = 1;</span>
<a name="l02164"></a>02164                 myRealMajorScaleCount = 1;
<a name="l02165"></a>02165                 qDebug(<span class="stringliteral">"KDGantt::Overzoom:Rescaling from Minute to Hour"</span>);
<a name="l02166"></a>02166                 myGanttView-&gt;myTimeTable-&gt;setBlockUpdating( block );
<a name="l02167"></a>02167                 emit myGanttView-&gt;rescaling( KDGanttView::Hour );
<a name="l02168"></a>02168                 computeTicks(<span class="keyword">true</span>);
<a name="l02169"></a>02169                 <span class="keywordflow">return</span>;
<a name="l02170"></a>02170             }
<a name="l02171"></a>02171             <span class="keywordflow">break</span>;
<a name="l02172"></a>02172         <span class="keywordflow">case</span> KDGanttView::Hour:
<a name="l02173"></a>02173             <span class="keywordflow">while</span> (24%tempMinorScaleCount &gt; 0 &amp;&amp; 24%tempMinorScaleCount &lt; 24)
<a name="l02174"></a>02174                 ++tempMinorScaleCount;
<a name="l02175"></a>02175             <span class="keywordflow">if</span> (tempMinorScaleCount &gt;= 24) {
<a name="l02176"></a>02176                 myRealScale = KDGanttView::Day;
<a name="l02177"></a>02177                 myRealMinorScaleCount = tempMinorScaleCount/ 24;
<a name="l02178"></a>02178                 <span class="comment">//myRealMinorScaleCount = 1;</span>
<a name="l02179"></a>02179                 myRealMajorScaleCount = 1;
<a name="l02180"></a>02180                 qDebug(<span class="stringliteral">"KDGantt::Overzoom:Rescaling from Hour to Day"</span>);
<a name="l02181"></a>02181                 myGanttView-&gt;myTimeTable-&gt;setBlockUpdating( block );
<a name="l02182"></a>02182                 emit myGanttView-&gt;rescaling( KDGanttView::Day );
<a name="l02183"></a>02183                 computeTicks(<span class="keyword">true</span>);
<a name="l02184"></a>02184                 <span class="keywordflow">return</span>;
<a name="l02185"></a>02185             }
<a name="l02186"></a>02186             <span class="keywordflow">break</span>;
<a name="l02187"></a>02187         <span class="keywordflow">default</span>:
<a name="l02188"></a>02188             <span class="keywordflow">break</span>;
<a name="l02189"></a>02189         }
<a name="l02190"></a>02190     <span class="comment">//flagZoomToFit = false;</span>
<a name="l02191"></a>02191     <span class="keywordflow">while</span>((minorItems/tempMinorScaleCount+1)*Width &lt; myMinimumWidth ) {
<a name="l02192"></a>02192         ++minorItems;
<a name="l02193"></a>02193     }
<a name="l02194"></a>02194     minorItems = (minorItems/tempMinorScaleCount)+1;
<a name="l02195"></a>02195     <span class="comment">// if not enough space for the text of the major scale, increase majorscalecount</span>
<a name="l02196"></a>02196     minorPerMajor = (minorPerMajor*tempMajorScaleCount)/tempMinorScaleCount;
<a name="l02197"></a>02197     <span class="comment">// checking, if enough space for majorscale</span>
<a name="l02198"></a>02198     <span class="comment">// if not, increasing MajorScaleCount</span>
<a name="l02199"></a>02199 
<a name="l02200"></a>02200     <span class="keywordflow">while</span> ((minorPerMajor*Width)/100 &lt; itemRectMajor.width()) {
<a name="l02201"></a>02201         minorPerMajor = minorPerMajor/tempMajorScaleCount;
<a name="l02202"></a>02202         ++tempMajorScaleCount;
<a name="l02203"></a>02203         minorPerMajor = minorPerMajor*tempMajorScaleCount;
<a name="l02204"></a>02204 
<a name="l02205"></a>02205     }
<a name="l02206"></a>02206     <span class="comment">// now we have the fixed  width of the minorscale computed</span>
<a name="l02207"></a>02207     myGridMinorWidth = Width;
<a name="l02208"></a>02208     <span class="comment">// the width of this widget is the gridwidth * the amount of items</span>
<a name="l02209"></a>02209     Width *= minorItems;
<a name="l02210"></a>02210     <span class="comment">// if size changed, reset geometry</span>
<a name="l02211"></a>02211     <span class="keywordflow">if</span> (width() != Width   || height() != Height  )
<a name="l02212"></a>02212         {
<a name="l02213"></a>02213             resize( Width, Height );
<a name="l02214"></a>02214             emit  sizeChanged( Width );
<a name="l02215"></a>02215         }
<a name="l02216"></a>02216     myMajorGridHeight = itemRectMajor.height()+5;
<a name="l02217"></a>02217     QTime tempTime = myRealStart.time();
<a name="l02218"></a>02218     QDateTime tempDateTime;
<a name="l02219"></a>02219     <span class="keywordtype">int</span> i;
<a name="l02220"></a>02220     <span class="keyword">const</span> KCalendarSystem * calendar = KGlobal::locale()-&gt;calendar();
<a name="l02221"></a>02221     <span class="keywordflow">switch</span> (myRealScale)
<a name="l02222"></a>02222         {
<a name="l02223"></a>02223         <span class="keywordflow">case</span> KDGanttView::Minute:
<a name="l02224"></a>02224             myRealEnd = myRealEnd.addSecs((minorItems)*tempMinorScaleCount*60);
<a name="l02225"></a>02225             <span class="keywordflow">for</span> ( i = 0; i &lt; minorItems;++i) {
<a name="l02226"></a>02226                 tempStr.setNum(tempTime.minute());
<a name="l02227"></a>02227                 minorText.append(tempStr);
<a name="l02228"></a>02228                 tempTime = tempTime.addSecs(60*tempMinorScaleCount);
<a name="l02229"></a>02229             }
<a name="l02230"></a>02230             tempDateTime = myRealStart;
<a name="l02231"></a>02231             <span class="keywordflow">while</span> (tempDateTime.time().minute() != 0)
<a name="l02232"></a>02232                 tempDateTime = tempDateTime.addSecs(60);
<a name="l02233"></a>02233             <span class="keywordflow">while</span> (tempDateTime &lt; myRealEnd) {
<a name="l02234"></a>02234                 majorTicks.append( getCoordX(tempDateTime));
<a name="l02235"></a>02235                 tempStr.setNum(tempDateTime.date().day());
<a name="l02236"></a>02236                 <span class="keywordflow">if</span> ( yearFormat() == KDGanttView::NoDate ) {
<a name="l02237"></a>02237                     tempStr = calendar-&gt;weekDayName( tempDateTime.date() )+<span class="stringliteral">", "</span>
<a name="l02238"></a>02238                         +getHour(tempDateTime.time());
<a name="l02239"></a>02239                 } <span class="keywordflow">else</span> {
<a name="l02240"></a>02240                     tempStr = calendar-&gt;weekDayName( tempDateTime.date(), true )+<span class="stringliteral">" "</span>+
<a name="l02241"></a>02241                         calendar-&gt;monthName( tempDateTime.date().month(), tempDateTime.date().year(), <span class="keyword">true</span>)+ <span class="stringliteral">" "</span>+
<a name="l02242"></a>02242                         tempStr+<span class="stringliteral">", "</span>+getHour(tempDateTime.time());
<a name="l02243"></a>02243                 }
<a name="l02244"></a>02244 
<a name="l02245"></a>02245                 majorText.append(tempStr);
<a name="l02246"></a>02246                 tempDateTime = tempDateTime.addSecs(3600*tempMajorScaleCount);
<a name="l02247"></a>02247             }
<a name="l02248"></a>02248             majorTicks.append( getCoordX(tempDateTime));
<a name="l02249"></a>02249             <span class="keywordflow">break</span>;
<a name="l02250"></a>02250 
<a name="l02251"></a>02251         <span class="keywordflow">case</span> KDGanttView::Hour:
<a name="l02252"></a>02252             myRealEnd = myRealEnd.addSecs(minorItems*tempMinorScaleCount*60*60);
<a name="l02253"></a>02253 
<a name="l02254"></a>02254             <span class="keywordflow">for</span> ( i = 0; i &lt; minorItems;++i) {
<a name="l02255"></a>02255                 tempStr = getHour(tempTime);
<a name="l02256"></a>02256                 minorText.append(tempStr);
<a name="l02257"></a>02257                 tempTime = tempTime.addSecs(3600*tempMinorScaleCount);
<a name="l02258"></a>02258             }
<a name="l02259"></a>02259             tempDateTime = myRealStart;
<a name="l02260"></a>02260             <span class="keywordflow">while</span> (tempDateTime.time().hour() != 0)
<a name="l02261"></a>02261                 tempDateTime = tempDateTime.addSecs(3600);
<a name="l02262"></a>02262             <span class="keywordflow">while</span> (tempDateTime &lt; myRealEnd) {
<a name="l02263"></a>02263                 majorTicks.append( getCoordX(tempDateTime));
<a name="l02264"></a>02264                 tempStr.setNum(tempDateTime.date().day());
<a name="l02265"></a>02265                 <span class="keywordflow">if</span> ( yearFormat() == KDGanttView::NoDate ) {
<a name="l02266"></a>02266                     tempStr = calendar-&gt;weekDayName( tempDateTime.date() );
<a name="l02267"></a>02267                 } <span class="keywordflow">else</span> {
<a name="l02268"></a>02268                     tempStr = calendar-&gt;weekDayName( tempDateTime.date(), true )+<span class="stringliteral">" "</span>+
<a name="l02269"></a>02269                         calendar-&gt;monthName( tempDateTime.date().month(), tempDateTime.date().year(), <span class="keyword">true</span>)+ <span class="stringliteral">" "</span>+
<a name="l02270"></a>02270                         tempStr+<span class="stringliteral">", "</span>+getYear(tempDateTime.date());
<a name="l02271"></a>02271                 }
<a name="l02272"></a>02272                 majorText.append(tempStr);
<a name="l02273"></a>02273                 tempDateTime = tempDateTime.addDays(tempMajorScaleCount);
<a name="l02274"></a>02274             }
<a name="l02275"></a>02275             majorTicks.append( getCoordX(tempDateTime));
<a name="l02276"></a>02276             <span class="keywordflow">break</span>;
<a name="l02277"></a>02277         <span class="keywordflow">case</span> KDGanttView::Day:
<a name="l02278"></a>02278             myRealEnd = myRealEnd.addDays(minorItems*tempMinorScaleCount);
<a name="l02279"></a>02279             <span class="keywordflow">for</span> ( i = 0; i &lt; minorItems;++i) {
<a name="l02280"></a>02280                 <span class="keywordflow">if</span> (tempMinorScaleCount == 1)
<a name="l02281"></a>02281                     minorText.append((calendar-&gt;weekDayName(tempDate, <span class="keyword">true</span>)).left(1)); <span class="comment">//TODO: BIDI</span>
<a name="l02282"></a>02282                 <span class="keywordflow">else</span>
<a name="l02283"></a>02283                     minorText.append(QString::number(tempDate.day()));
<a name="l02284"></a>02284                 tempDate = tempDate.addDays(tempMinorScaleCount);
<a name="l02285"></a>02285             }
<a name="l02286"></a>02286             tempDate = myRealStart.date();
<a name="l02287"></a>02287             <span class="keywordflow">while</span> (tempDate.dayOfWeek() != KGlobal::locale()-&gt;weekStartDay())
<a name="l02288"></a>02288                 tempDate = tempDate.addDays(1);
<a name="l02289"></a>02289             <span class="keywordflow">while</span> (tempDate &lt; myRealEnd.date()) {
<a name="l02290"></a>02290                 majorTicks.append( getCoordX(tempDate));
<a name="l02291"></a>02291                 tempStr.setNum(tempDate.day());
<a name="l02292"></a>02292                 tempStr = calendar-&gt;monthName(tempDate.month(), tempDate.year(), <span class="keyword">true</span>)+ <span class="stringliteral">" "</span>+
<a name="l02293"></a>02293                     tempStr+<span class="stringliteral">", "</span>+getYear(tempDate);
<a name="l02294"></a>02294                 majorText.append(tempStr);
<a name="l02295"></a>02295                 tempDate = tempDate.addDays(7*tempMajorScaleCount);
<a name="l02296"></a>02296             }
<a name="l02297"></a>02297             majorTicks.append( getCoordX(tempDate));
<a name="l02298"></a>02298             <span class="keywordflow">break</span>;
<a name="l02299"></a>02299         <span class="keywordflow">case</span> KDGanttView::Week:
<a name="l02300"></a>02300             myRealEnd = myRealEnd.addDays(minorItems*tempMinorScaleCount*7);
<a name="l02301"></a>02301             <span class="keywordflow">for</span> ( i = 0; i &lt; minorItems;++i) {
<a name="l02302"></a>02302                 tempStr.setNum(tempDate.day());
<a name="l02303"></a>02303                 minorText.append(tempStr);
<a name="l02304"></a>02304                 tempDate = tempDate.addDays(7*tempMinorScaleCount);
<a name="l02305"></a>02305             }
<a name="l02306"></a>02306             tempDate = myRealStart.date();
<a name="l02307"></a>02307             <span class="keywordflow">while</span> (tempDate.day() != KGlobal::locale()-&gt;weekStartDay())
<a name="l02308"></a>02308                 tempDate = tempDate.addDays(1);
<a name="l02309"></a>02309             <span class="keywordflow">while</span> (tempDate &lt; myRealEnd.date()) {
<a name="l02310"></a>02310                 majorTicks.append( getCoordX(tempDate));
<a name="l02311"></a>02311                 tempStr = calendar-&gt;monthName(tempDate.month(), tempDate.year(), <span class="keyword">true</span>)+ <span class="stringliteral">" "</span>+getYear(tempDate);
<a name="l02312"></a>02312                 majorText.append(tempStr);
<a name="l02313"></a>02313                 tempDate = tempDate.addMonths(tempMajorScaleCount);
<a name="l02314"></a>02314             }
<a name="l02315"></a>02315             majorTicks.append( getCoordX(tempDate));
<a name="l02316"></a>02316             <span class="keywordflow">break</span>;
<a name="l02317"></a>02317         <span class="keywordflow">case</span> KDGanttView::Month:
<a name="l02318"></a>02318             myRealEnd = myRealEnd.addMonths(minorItems*tempMinorScaleCount);
<a name="l02319"></a>02319             <span class="keywordflow">for</span> ( i = 0; i &lt; minorItems;++i) {
<a name="l02320"></a>02320                 minorText.append((calendar-&gt;monthName(tempDate.month(), tempDate.year(), <span class="keyword">true</span>)).left(1)); <span class="comment">//TODO: BIDI</span>
<a name="l02321"></a>02321                 tempDate = tempDate.addMonths(tempMinorScaleCount);
<a name="l02322"></a>02322             }
<a name="l02323"></a>02323             tempDate = myRealStart.date();
<a name="l02324"></a>02324             <span class="keywordflow">while</span> (tempDate.month() != 1)
<a name="l02325"></a>02325                 tempDate = tempDate.addMonths(1);
<a name="l02326"></a>02326             <span class="keywordflow">while</span> (tempDate &lt; myRealEnd.date()) {
<a name="l02327"></a>02327                 majorTicks.append( getCoordX(tempDate));
<a name="l02328"></a>02328                 tempStr = getYear(tempDate);
<a name="l02329"></a>02329                 majorText.append(tempStr);
<a name="l02330"></a>02330                 tempDate = tempDate.addYears(tempMajorScaleCount);
<a name="l02331"></a>02331             }
<a name="l02332"></a>02332             majorTicks.append( getCoordX(tempDate));
<a name="l02333"></a>02333             <span class="keywordflow">break</span>;
<a name="l02334"></a>02334         <span class="keywordflow">case</span> KDGanttView::Auto:
<a name="l02335"></a>02335             <span class="keywordflow">break</span>;
<a name="l02336"></a>02336         }
<a name="l02337"></a>02337 
<a name="l02338"></a>02338     <span class="keywordflow">if</span> (flagDoNotRepaintAfterChange) {
<a name="l02339"></a>02339         myGanttView-&gt;myTimeTable-&gt;setBlockUpdating( block );
<a name="l02340"></a>02340         <span class="keywordflow">return</span>;
<a name="l02341"></a>02341     }
<a name="l02342"></a>02342     <span class="comment">//qDebug("KDTimeHeaderWidget width %d, viewport width %d  ",width (), myGanttView-&gt;myCanvasView-&gt;viewport()-&gt;width());</span>
<a name="l02343"></a>02343     myGanttView-&gt;myTimeTable-&gt;setBlockUpdating( block );
<a name="l02344"></a>02344     updateTimeTable();
<a name="l02345"></a>02345     centerDateTime(myCenterDateTime);
<a name="l02346"></a>02346     repaint();
<a name="l02347"></a>02347 }
<a name="l02348"></a>02348 
<a name="l02349"></a>02349 
<a name="l02350"></a>02350 <span class="keywordtype">void</span> KDTimeHeaderWidget::saveCenterDateTime()
<a name="l02351"></a>02351 {
<a name="l02352"></a>02352     <span class="keywordtype">double</span> wid = width();
<a name="l02353"></a>02353     <span class="keywordtype">double</span> allsecs = secsFromTo( myRealStart, myRealEnd );
<a name="l02354"></a>02354     <span class="keywordtype">double</span> center = myGanttView-&gt;myCanvasView-&gt;viewport()-&gt;width();
<a name="l02355"></a>02355     center = center / 2;
<a name="l02356"></a>02356     center = center + myGanttView-&gt;myCanvasView-&gt;contentsX();
<a name="l02357"></a>02357     <span class="keywordtype">double</span> secs = (allsecs*center)/wid;
<a name="l02358"></a>02358     <span class="keywordtype">double</span> days = secs/86400.0;
<a name="l02359"></a>02359     secs = secs - ( (int) days *86400.0 );
<a name="l02360"></a>02360     myCenterDateTime =  (myRealStart.addDays ( (<span class="keywordtype">int</span>) days )).addSecs( (<span class="keywordtype">int</span>) secs);
<a name="l02361"></a>02361 }
<a name="l02362"></a>02362 
<a name="l02363"></a>02363 
<a name="l02364"></a>02364 <span class="keywordtype">void</span> KDTimeHeaderWidget::centerDateTime( <span class="keyword">const</span> QDateTime&amp; center )
<a name="l02365"></a>02365 {
<a name="l02366"></a>02366      moveTimeLineTo(getCoordX( center )-(myGanttView-&gt;myCanvasView-&gt;viewport()-&gt;width() /2));
<a name="l02367"></a>02367     <span class="comment">//  qDebug("centerDateTime %s %d %d", center.toString().latin1(),getCoordX( center ),(myGanttView-&gt;myCanvasView-&gt;viewport()-&gt;width() /2) );</span>
<a name="l02368"></a>02368 
<a name="l02369"></a>02369 }
<a name="l02370"></a>02370 
<a name="l02371"></a>02371 
<a name="l02372"></a>02372 <span class="keywordtype">void</span> KDTimeHeaderWidget::paintEvent(QPaintEvent *p)
<a name="l02373"></a>02373 {
<a name="l02374"></a>02374     repaintMe(p-&gt;rect().x(),p-&gt;rect().width());
<a name="l02375"></a>02375 }
<a name="l02376"></a>02376 
<a name="l02377"></a>02377 
<a name="l02378"></a>02378 <span class="keywordtype">int</span> KDTimeHeaderWidget::getCoordX(QDate date)
<a name="l02379"></a>02379 {
<a name="l02380"></a>02380     <span class="keywordtype">int</span> wid = width();
<a name="l02381"></a>02381     <span class="keywordtype">int</span> daysAll = myRealStart.daysTo(myRealEnd);
<a name="l02382"></a>02382     <span class="keywordflow">if</span> (daysAll == 0) <span class="keywordflow">return</span> 0;
<a name="l02383"></a>02383     <span class="keywordtype">int</span> days = myRealStart.daysTo(QDateTime(date));
<a name="l02384"></a>02384     <span class="keywordflow">return</span> (wid *days) /daysAll;
<a name="l02385"></a>02385 }
<a name="l02386"></a>02386 
<a name="l02387"></a>02387 
<a name="l02388"></a>02388 <span class="keywordtype">int</span> KDTimeHeaderWidget::getCoordX(QDateTime datetime)
<a name="l02389"></a>02389 {
<a name="l02390"></a>02390     <span class="keywordtype">double</span> wid = width();
<a name="l02391"></a>02391     <span class="keywordtype">double</span> secsAll = secsFromTo( myRealStart, myRealEnd );
<a name="l02392"></a>02392     <span class="keywordflow">if</span> (secsAll == 0.0) <span class="keywordflow">return</span> 0;
<a name="l02393"></a>02393     <span class="keywordtype">double</span> secs = secsFromTo( myRealStart, datetime);
<a name="l02394"></a>02394     <span class="keywordflow">return</span> ((<span class="keywordtype">int</span>)((wid *(secs /secsAll))+0.5));
<a name="l02395"></a>02395 }
<a name="l02396"></a>02396 
<a name="l02397"></a>02397 
<a name="l02398"></a>02398 QString KDTimeHeaderWidget::getYear(QDate date)
<a name="l02399"></a>02399 {
<a name="l02400"></a>02400     QString ret;
<a name="l02401"></a>02401     ret.setNum(date.year());
<a name="l02402"></a>02402     <span class="keywordflow">switch</span> (yearFormat()) {
<a name="l02403"></a>02403     <span class="keywordflow">case</span> KDGanttView::FourDigit:
<a name="l02404"></a>02404         <span class="comment">// nothing to do</span>
<a name="l02405"></a>02405         <span class="keywordflow">break</span>;
<a name="l02406"></a>02406     <span class="keywordflow">case</span> KDGanttView::TwoDigit:
<a name="l02407"></a>02407         ret = ret.right(2);
<a name="l02408"></a>02408         <span class="keywordflow">break</span>;
<a name="l02409"></a>02409     <span class="keywordflow">case</span> KDGanttView::TwoDigitApostrophe:
<a name="l02410"></a>02410         ret = <span class="stringliteral">"'"</span>+ret.right(2);
<a name="l02411"></a>02411         <span class="keywordflow">break</span>;
<a name="l02412"></a>02412     <span class="keywordflow">case</span> KDGanttView::NoDate:
<a name="l02413"></a>02413         <span class="comment">// nothing to do</span>
<a name="l02414"></a>02414         <span class="keywordflow">break</span>;
<a name="l02415"></a>02415     }
<a name="l02416"></a>02416     <span class="keywordflow">return</span> ret;
<a name="l02417"></a>02417 }
<a name="l02418"></a>02418 
<a name="l02419"></a>02419 
<a name="l02420"></a>02420 QString KDTimeHeaderWidget::getHour(QTime time)
<a name="l02421"></a>02421 {
<a name="l02422"></a>02422     QString ret;
<a name="l02423"></a>02423     <span class="keywordtype">int</span> hour = time.hour();
<a name="l02424"></a>02424     <span class="keywordflow">if</span> (myHourFormat == KDGanttView::Hour_12) {
<a name="l02425"></a>02425         <span class="keywordflow">if</span> (hour &gt;= 12) {
<a name="l02426"></a>02426             <span class="keywordflow">if</span> (hour &gt; 12) hour -=12;
<a name="l02427"></a>02427             ret.setNum(hour);
<a name="l02428"></a>02428             ret = ret +<span class="stringliteral">" PM"</span>;
<a name="l02429"></a>02429         } <span class="keywordflow">else</span> {
<a name="l02430"></a>02430             <span class="keywordflow">if</span> (hour == 0) hour = 12;
<a name="l02431"></a>02431             ret.setNum(hour);
<a name="l02432"></a>02432             ret = ret +<span class="stringliteral">" AM"</span>;
<a name="l02433"></a>02433         }
<a name="l02434"></a>02434     } <span class="keywordflow">else</span> {
<a name="l02435"></a>02435         <span class="keywordflow">if</span> (myHourFormat == KDGanttView::Hour_24)
<a name="l02436"></a>02436             ret.setNum(hour);
<a name="l02437"></a>02437         <span class="keywordflow">else</span> {
<a name="l02438"></a>02438             ret.setNum(hour);
<a name="l02439"></a>02439             ret += <span class="stringliteral">":00"</span>;
<a name="l02440"></a>02440         }
<a name="l02441"></a>02441     }
<a name="l02442"></a>02442     <span class="keywordflow">return</span> ret;
<a name="l02443"></a>02443 }
<a name="l02444"></a>02444 
<a name="l02445"></a>02445 
<a name="l02446"></a>02446 <span class="keywordtype">void</span> KDTimeHeaderWidget::mousePressEvent ( QMouseEvent * e )
<a name="l02447"></a>02447 {
<a name="l02448"></a>02448     mouseDown = <span class="keyword">false</span>;
<a name="l02449"></a>02449     <span class="keywordflow">switch</span> ( e-&gt;button() ) {
<a name="l02450"></a>02450     <span class="keywordflow">case</span> LeftButton:
<a name="l02451"></a>02451         mouseDown = <span class="keyword">true</span>;
<a name="l02452"></a>02452         beginMouseDown = e-&gt;pos().x();
<a name="l02453"></a>02453         endMouseDown = e-&gt;pos().x();
<a name="l02454"></a>02454         <span class="keywordflow">break</span>;
<a name="l02455"></a>02455     <span class="keywordflow">case</span> RightButton:
<a name="l02456"></a>02456         <span class="keywordflow">if</span> (flagShowPopupMenu)
<a name="l02457"></a>02457             myPopupMenu-&gt;popup(e-&gt;globalPos());
<a name="l02458"></a>02458         <span class="keywordflow">break</span>;
<a name="l02459"></a>02459     <span class="keywordflow">case</span> MidButton:
<a name="l02460"></a>02460         <span class="keywordflow">break</span>;
<a name="l02461"></a>02461     <span class="keywordflow">default</span>:
<a name="l02462"></a>02462         <span class="keywordflow">break</span>;
<a name="l02463"></a>02463     }
<a name="l02464"></a>02464 
<a name="l02465"></a>02465 }
<a name="l02466"></a>02466 
<a name="l02467"></a>02467 
<a name="l02468"></a>02468 <span class="keywordtype">void</span> KDTimeHeaderWidget::mouseReleaseEvent ( QMouseEvent *  )
<a name="l02469"></a>02469 {
<a name="l02470"></a>02470     <span class="keywordflow">if</span> ( mouseDown ) {
<a name="l02471"></a>02471         mouseDown = <span class="keyword">false</span>;
<a name="l02472"></a>02472         <span class="comment">// zoom to selection getDateTimeForIndex(</span>
<a name="l02473"></a>02473         <span class="keywordtype">int</span> start, end;
<a name="l02474"></a>02474         <span class="keywordflow">if</span> ( beginMouseDown &lt; endMouseDown ) {
<a name="l02475"></a>02475             start = beginMouseDown;
<a name="l02476"></a>02476             end = endMouseDown;
<a name="l02477"></a>02477         } <span class="keywordflow">else</span> {
<a name="l02478"></a>02478             start = endMouseDown;
<a name="l02479"></a>02479             end = beginMouseDown;
<a name="l02480"></a>02480         }
<a name="l02481"></a>02481         <span class="keywordflow">if</span> (start &lt; 0 )
<a name="l02482"></a>02482             start = 0;
<a name="l02483"></a>02483         <span class="keywordflow">if</span> ( end &gt; width() )
<a name="l02484"></a>02484             end = width();
<a name="l02485"></a>02485         <span class="comment">//qDebug("start %s ",getDateTimeForIndex(start).toString().latin1() );</span>
<a name="l02486"></a>02486         <span class="comment">//qDebug("end %s ",getDateTimeForIndex(end).toString().latin1() );</span>
<a name="l02487"></a>02487         emit myGanttView-&gt;timeIntervalSelected( getDateTimeForIndex(start),getDateTimeForIndex(end) );
<a name="l02488"></a>02488         emit myGanttView-&gt;timeIntervallSelected( getDateTimeForIndex(start),getDateTimeForIndex(end) );
<a name="l02489"></a>02489         <span class="comment">//zoomToSelection( getDateTimeForIndex(start),getDateTimeForIndex(end) );</span>
<a name="l02490"></a>02490     }
<a name="l02491"></a>02491     mouseDown = <span class="keyword">false</span>;
<a name="l02492"></a>02492     repaint();
<a name="l02493"></a>02493 }
<a name="l02494"></a>02494 
<a name="l02495"></a>02495 
<a name="l02496"></a>02496 <span class="keywordtype">void</span> KDTimeHeaderWidget::mouseDoubleClickEvent ( QMouseEvent *  )
<a name="l02497"></a>02497 {
<a name="l02498"></a>02498 
<a name="l02499"></a>02499 }
<a name="l02500"></a>02500 
<a name="l02501"></a>02501 
<a name="l02502"></a>02502 <span class="keywordtype">void</span> KDTimeHeaderWidget::mouseMoveEvent ( QMouseEvent * e )
<a name="l02503"></a>02503 {
<a name="l02504"></a>02504     <span class="keywordflow">if</span> ( mouseDown ) {
<a name="l02505"></a>02505         <span class="keywordflow">if</span> ( e-&gt;pos().y() &lt; -height() || e-&gt;pos().y() &gt; 2* height() ) {
<a name="l02506"></a>02506             mouseDown = <span class="keyword">false</span>;
<a name="l02507"></a>02507             repaint();
<a name="l02508"></a>02508             <span class="keywordflow">return</span>;
<a name="l02509"></a>02509         }
<a name="l02510"></a>02510         endMouseDown = e-&gt;pos().x();
<a name="l02511"></a>02511         <span class="comment">//repaint;</span>
<a name="l02512"></a>02512         <span class="keywordtype">int</span> val = -1;
<a name="l02513"></a>02513         <span class="keywordflow">if</span> (endMouseDown &lt;  -x() ) {
<a name="l02514"></a>02514             val = myGanttView-&gt;myCanvasView-&gt;horizontalScrollBar()-&gt;value() -
<a name="l02515"></a>02515                 myGanttView-&gt;myCanvasView-&gt;horizontalScrollBar()-&gt;lineStep();
<a name="l02516"></a>02516             <span class="keywordflow">if</span> ( val &lt; 0 ) {
<a name="l02517"></a>02517                 val = 0;
<a name="l02518"></a>02518             }
<a name="l02519"></a>02519         }
<a name="l02520"></a>02520         <span class="keywordflow">if</span> (endMouseDown &gt;  -x() +parentWidget()-&gt;width() ) {
<a name="l02521"></a>02521             val = myGanttView-&gt;myCanvasView-&gt;horizontalScrollBar()-&gt;value() +
<a name="l02522"></a>02522                 myGanttView-&gt;myCanvasView-&gt;horizontalScrollBar()-&gt;lineStep();
<a name="l02523"></a>02523 
<a name="l02524"></a>02524         }
<a name="l02525"></a>02525         repaintMe(-x(),parentWidget()-&gt;width());
<a name="l02526"></a>02526         <span class="keywordflow">if</span> ( val &gt; -1 ) {
<a name="l02527"></a>02527             <span class="keywordflow">if</span> ( val &gt; myGanttView-&gt;myCanvasView-&gt;horizontalScrollBar()-&gt;maxValue() ) {
<a name="l02528"></a>02528                 val = myGanttView-&gt;myCanvasView-&gt;horizontalScrollBar()-&gt;maxValue();
<a name="l02529"></a>02529             }
<a name="l02530"></a>02530             myGanttView-&gt;myCanvasView-&gt;horizontalScrollBar()-&gt;setValue( val );
<a name="l02531"></a>02531         }
<a name="l02532"></a>02532         <span class="comment">//qDebug("mousemove %d %d %d %d",endMouseDown, -x(),parentWidget()-&gt;width() , e-&gt;pos().y());</span>
<a name="l02533"></a>02533     }
<a name="l02534"></a>02534 }
<a name="l02535"></a>02535 
<a name="l02536"></a>02536 
<a name="l02537"></a>02537 <span class="comment">/* ***************************************************************</span>
<a name="l02538"></a>02538 <span class="comment">   KDLegendWidget:: KDLegendWidget</span>
<a name="l02539"></a>02539 <span class="comment">   ***************************************************************** */</span>
<a name="l02540"></a>02540 KDLegendWidget:: KDLegendWidget( QWidget* parent,
<a name="l02541"></a>02541                                  <a class="code" href="classKDGanttMinimizeSplitter.html" title="The KDGanttMinimizeSplitter class implements a splitter widget with minimize buttons...">KDGanttMinimizeSplitter</a>* legendParent ) :
<a name="l02542"></a>02542     <a class="code" href="classKDGanttSemiSizingControl.html">KDGanttSemiSizingControl</a> ( <a class="code" href="classKDGanttSemiSizingControl.html">KDGanttSemiSizingControl</a>::Before, Vertical,
<a name="l02543"></a>02543                                parent)
<a name="l02544"></a>02544 {
<a name="l02545"></a>02545     myLegendParent = legendParent;
<a name="l02546"></a>02546     dock = 0;
<a name="l02547"></a>02547     scroll = <span class="keyword">new</span> QScrollView( legendParent );
<a name="l02548"></a>02548     setMaximizedWidget( scroll );
<a name="l02549"></a>02549 
<a name="l02550"></a>02550     setMinimizedWidget( myLabel = <span class="keyword">new</span> QLabel( i18n( <span class="stringliteral">" Legend is hidden"</span> ), <span class="keyword">this</span>) );
<a name="l02551"></a>02551     setGeometry( 0, 0, 50, 50 );
<a name="l02552"></a>02552     myLegend = 0;
<a name="l02553"></a>02553     clearLegend();
<a name="l02554"></a>02554     showMe ( <span class="keyword">false</span> );
<a name="l02555"></a>02555 }
<a name="l02556"></a>02556 <span class="keywordtype">void</span> KDLegendWidget::setAsDockwindow( <span class="keywordtype">bool</span> dockwin )
<a name="l02557"></a>02557 {
<a name="l02558"></a>02558     <span class="keywordflow">if</span> ( (dock == 0 &amp;&amp; !dockwin) || ( dock &amp;&amp; dockwin  ) )
<a name="l02559"></a>02559         <span class="keywordflow">return</span>;
<a name="l02560"></a>02560     <span class="keywordflow">if</span> ( dockwin )
<a name="l02561"></a>02561         {
<a name="l02562"></a>02562             setMaximizedWidget( 0 );
<a name="l02563"></a>02563             showMe ( <span class="keyword">false</span> );
<a name="l02564"></a>02564             <span class="keywordflow">if</span> ( dock ) <span class="keyword">delete</span> dock;
<a name="l02565"></a>02565             dock = <span class="keyword">new</span> QDockWindow(QDockWindow:: OutsideDock,0 );
<a name="l02566"></a>02566             dock-&gt;resize( 200, 100 );
<a name="l02567"></a>02567             dock-&gt;setHorizontallyStretchable( <span class="keyword">true</span> );
<a name="l02568"></a>02568             dock-&gt;setVerticallyStretchable( <span class="keyword">true</span> );
<a name="l02569"></a>02569             dock-&gt;setCaption(i18n(<span class="stringliteral">"Legend: "</span>) );
<a name="l02570"></a>02570             dock-&gt;setResizeEnabled (<span class="keyword">true</span> );
<a name="l02571"></a>02571             <span class="keyword">delete</span> myLegend;
<a name="l02572"></a>02572             myLegend = 0;
<a name="l02573"></a>02573             <span class="keyword">delete</span> scroll;
<a name="l02574"></a>02574             scroll = <span class="keyword">new</span> QScrollView( dock );
<a name="l02575"></a>02575             clearLegend();
<a name="l02576"></a>02576             dock-&gt;setWidget(scroll);
<a name="l02577"></a>02577             setMaximizedWidget( dock );
<a name="l02578"></a>02578             showMe ( <span class="keyword">false</span> );
<a name="l02579"></a>02579 
<a name="l02580"></a>02580         } <span class="keywordflow">else</span> {
<a name="l02581"></a>02581             setMaximizedWidget( 0 );
<a name="l02582"></a>02582             showMe ( <span class="keyword">false</span> );
<a name="l02583"></a>02583             <span class="keyword">delete</span> myLegend;
<a name="l02584"></a>02584             myLegend = 0;
<a name="l02585"></a>02585             <span class="keyword">delete</span> scroll;
<a name="l02586"></a>02586             <span class="keyword">delete</span> dock;
<a name="l02587"></a>02587             dock = 0;
<a name="l02588"></a>02588             scroll = <span class="keyword">new</span> QScrollView( myLegendParent );
<a name="l02589"></a>02589             clearLegend();
<a name="l02590"></a>02590             setMaximizedWidget( scroll );
<a name="l02591"></a>02591             showMe ( <span class="keyword">false</span> );
<a name="l02592"></a>02592         }
<a name="l02593"></a>02593 
<a name="l02594"></a>02594 }
<a name="l02595"></a>02595 
<a name="l02596"></a>02596 
<a name="l02597"></a>02597 <span class="keywordtype">bool</span> KDLegendWidget::asDockwindow( )
<a name="l02598"></a>02598 {
<a name="l02599"></a>02599     <span class="keywordflow">if</span> ( dock )
<a name="l02600"></a>02600         <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l02601"></a>02601     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l02602"></a>02602 }
<a name="l02603"></a>02603 
<a name="l02604"></a>02604 
<a name="l02605"></a>02605 QDockWindow* KDLegendWidget::dockwindow( )
<a name="l02606"></a>02606 {
<a name="l02607"></a>02607     <span class="keywordflow">return</span> dock;
<a name="l02608"></a>02608 }
<a name="l02609"></a>02609 
<a name="l02610"></a>02610 
<a name="l02611"></a>02611 <span class="keywordtype">void</span> KDLegendWidget::setFont( QFont font)
<a name="l02612"></a>02612 {
<a name="l02613"></a>02613     myLegend-&gt;setFont( font);
<a name="l02614"></a>02614     myLabel-&gt;setFont( font);
<a name="l02615"></a>02615     QWidget::setFont( font );
<a name="l02616"></a>02616 }
<a name="l02617"></a>02617 
<a name="l02618"></a>02618 
<a name="l02619"></a>02619 <span class="keywordtype">void</span> KDLegendWidget::drawToPainter( QPainter *p )
<a name="l02620"></a>02620 {
<a name="l02621"></a>02621     p-&gt;drawPixmap( 0, 0, QPixmap::grabWidget( myLegend ) );
<a name="l02622"></a>02622 }
<a name="l02623"></a>02623 
<a name="l02624"></a>02624 
<a name="l02625"></a>02625 QSize KDLegendWidget::legendSize()
<a name="l02626"></a>02626 {
<a name="l02627"></a>02627     <span class="keywordflow">return</span> myLegend-&gt;size();
<a name="l02628"></a>02628 }
<a name="l02629"></a>02629 
<a name="l02630"></a>02630 
<a name="l02631"></a>02631 QSize KDLegendWidget::legendSizeHint()
<a name="l02632"></a>02632 {
<a name="l02633"></a>02633     QApplication::sendPostedEvents( 0, QEvent::LayoutHint );
<a name="l02634"></a>02634     <span class="keywordflow">return</span> QSize( myLegend-&gt;sizeHint().width(), myLegend-&gt;sizeHint().height()+scroll-&gt;horizontalScrollBar()-&gt;height());
<a name="l02635"></a>02635 }
<a name="l02636"></a>02636 
<a name="l02637"></a>02637 
<a name="l02638"></a>02638 <span class="keywordtype">void</span> KDLegendWidget::showMe ( <span class="keywordtype">bool</span> show )
<a name="l02639"></a>02639 {
<a name="l02640"></a>02640     minimize( !show );
<a name="l02641"></a>02641 }
<a name="l02642"></a>02642 
<a name="l02643"></a>02643 
<a name="l02644"></a>02644 <span class="keywordtype">void</span> KDLegendWidget::clearLegend ( )
<a name="l02645"></a>02645 {
<a name="l02646"></a>02646     <span class="keywordflow">if</span> ( myLegend ) <span class="keyword">delete</span> myLegend;
<a name="l02647"></a>02647     <span class="keywordflow">if</span> ( dock )
<a name="l02648"></a>02648         myLegend = <span class="keyword">new</span> QGroupBox( 1, Qt::Horizontal, scroll-&gt;viewport() );
<a name="l02649"></a>02649     <span class="keywordflow">else</span>
<a name="l02650"></a>02650         myLegend = <span class="keyword">new</span> QGroupBox( 1, Qt::Horizontal, i18n( <span class="stringliteral">"Legend"</span> ), scroll-&gt;viewport() );
<a name="l02651"></a>02651     myLegend-&gt;setBackgroundColor( Qt::white );
<a name="l02652"></a>02652     myLegend-&gt;setFont( font() );
<a name="l02653"></a>02653     scroll-&gt;addChild(  myLegend );
<a name="l02654"></a>02654     scroll-&gt;setResizePolicy( QScrollView::AutoOneFit );
<a name="l02655"></a>02655     myLegend-&gt;layout()-&gt;setMargin( 11 );
<a name="l02656"></a>02656     myLegend-&gt;setFrameStyle( QFrame::NoFrame );
<a name="l02657"></a>02657     <span class="keywordflow">if</span> ( dock )
<a name="l02658"></a>02658         scroll-&gt;setMaximumHeight( 32000 );
<a name="l02659"></a>02659     <span class="keywordflow">else</span>
<a name="l02660"></a>02660         scroll-&gt;setMaximumHeight( legendSizeHint().height() );
<a name="l02661"></a>02661 }
<a name="l02662"></a>02662 
<a name="l02663"></a>02663 
<a name="l02664"></a>02664 <span class="keywordtype">void</span> KDLegendWidget::addLegendItem( <a class="code" href="classKDGanttViewItem.html#d79f43afe02a42efa914015f65933189">KDGanttViewItem::Shape</a> shape, <span class="keyword">const</span> QColor&amp; shapeColor, <span class="keyword">const</span> QString&amp; text )
<a name="l02665"></a>02665 {
<a name="l02666"></a>02666     QLabel * temp;
<a name="l02667"></a>02667     QPixmap p = <a class="code" href="classKDGanttView.html#114626b4b1c140ef8b20df63489169e1">KDGanttView::getPixmap</a>( shape,  shapeColor, Qt::white, 10);
<a name="l02668"></a>02668     QWidget *w = <span class="keyword">new</span> QWidget( myLegend );
<a name="l02669"></a>02669     w-&gt;setBackgroundColor( Qt::white );
<a name="l02670"></a>02670     QHBoxLayout *lay = <span class="keyword">new</span> QHBoxLayout( w ,0, 6);
<a name="l02671"></a>02671     temp = <span class="keyword">new</span> QLabel ( w );
<a name="l02672"></a>02672     lay-&gt;addWidget( temp, 0, Qt:: AlignRight);
<a name="l02673"></a>02673     temp-&gt;setPixmap(p);
<a name="l02674"></a>02674     temp = <span class="keyword">new</span> QLabel ( text, w );
<a name="l02675"></a>02675     temp-&gt;setBackgroundColor( Qt::white );
<a name="l02676"></a>02676     lay-&gt;addWidget( temp, 0, Qt:: AlignLeft);
<a name="l02677"></a>02677     lay-&gt;addStretch();
<a name="l02678"></a>02678     <span class="keywordflow">if</span> ( dock )
<a name="l02679"></a>02679         scroll-&gt;setMaximumHeight( 32000 );
<a name="l02680"></a>02680     <span class="keywordflow">else</span>
<a name="l02681"></a>02681         scroll-&gt;setMaximumHeight( legendSizeHint().height() );
<a name="l02682"></a>02682 }
<a name="l02683"></a>02683 
<a name="l02684"></a>02684 
<a name="l02685"></a>02685 <span class="keywordtype">bool</span> KDLegendWidget::isShown ( )
<a name="l02686"></a>02686 {
<a name="l02687"></a>02687     <span class="keywordflow">return</span> !isMinimized();
<a name="l02688"></a>02688 }
<a name="l02689"></a>02689 
<a name="l02690"></a>02690 
<a name="l02691"></a>02691 KDListView::KDListView(QWidget* parent, <a class="code" href="classKDGanttView.html">KDGanttView</a>* gantView):QListView (parent)
<a name="l02692"></a>02692 {
<a name="l02693"></a>02693     myGanttView = gantView;
<a name="l02694"></a>02694     setAcceptDrops(<span class="keyword">true</span>);
<a name="l02695"></a>02695     <span class="keyword">new</span> KDListViewWhatsThis(viewport(),<span class="keyword">this</span>);
<a name="l02696"></a>02696     setRootIsDecorated( <span class="keyword">true</span> );
<a name="l02697"></a>02697     setAllColumnsShowFocus( <span class="keyword">true</span> );
<a name="l02698"></a>02698     addColumn( i18n( <span class="stringliteral">"Task Name"</span> ) );
<a name="l02699"></a>02699     setSorting( -1 );
<a name="l02700"></a>02700     <span class="comment">//setVScrollBarMode (QScrollView::AlwaysOn );</span>
<a name="l02701"></a>02701     setHScrollBarMode (QScrollView::AlwaysOn );
<a name="l02702"></a>02702     setDefaultRenameAction(QListView::Accept);
<a name="l02703"></a>02703     setColumnWidthMode ( 0,Maximum  );
<a name="l02704"></a>02704     _calendarMode = <span class="keyword">false</span>;
<a name="l02705"></a>02705     <span class="comment">// QObject::connect(this, SIGNAL (  pressed ( QListViewItem * )) , this, SLOT( dragItem( QListViewItem *))) ;</span>
<a name="l02706"></a>02706 }
<a name="l02707"></a>02707 
<a name="l02708"></a>02708 
<a name="l02709"></a>02709 <span class="keywordtype">void</span>  KDListView::dragItem( QListViewItem *  )
<a name="l02710"></a>02710 {
<a name="l02711"></a>02711     <span class="comment">// qDebug("drag ");</span>
<a name="l02712"></a>02712     <span class="comment">// startDrag();</span>
<a name="l02713"></a>02713 }
<a name="l02714"></a>02714 QString KDListView::getWhatsThisText(QPoint p)
<a name="l02715"></a>02715 {
<a name="l02716"></a>02716     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* item = ( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* ) itemAt( p );
<a name="l02717"></a>02717     <span class="keywordflow">if</span> ( item )
<a name="l02718"></a>02718         <span class="keywordflow">return</span> item-&gt;<a class="code" href="classKDGanttViewItem.html#c0340440db6cc99a502f20a70100b388">whatsThisText</a>();
<a name="l02719"></a>02719     <span class="keywordflow">return</span> i18n( <span class="stringliteral">"No item Found"</span> );
<a name="l02720"></a>02720 }
<a name="l02721"></a>02721 
<a name="l02722"></a>02722 <span class="keywordtype">void</span>  KDListView::setCalendarMode( <span class="keywordtype">bool</span> mode )
<a name="l02723"></a>02723 {
<a name="l02724"></a>02724     _calendarMode = mode;
<a name="l02725"></a>02725     <span class="comment">// setRootIsDecorated ( ! mode );</span>
<a name="l02726"></a>02726 }
<a name="l02727"></a>02727 
<a name="l02728"></a>02728 <span class="keywordtype">void</span>  KDListView::setOpen(QListViewItem * item, <span class="keywordtype">bool</span> open )
<a name="l02729"></a>02729 {
<a name="l02730"></a>02730     <span class="keywordflow">if</span> (! _calendarMode || ! open ) {
<a name="l02731"></a>02731         (( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*)item)-&gt;setCallListViewOnSetOpen( <span class="keyword">false</span> );
<a name="l02732"></a>02732         QListView::setOpen ( item, open );
<a name="l02733"></a>02733         (( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*)item)-&gt;setCallListViewOnSetOpen( <span class="keyword">true</span> );
<a name="l02734"></a>02734         <span class="keywordflow">return</span>;
<a name="l02735"></a>02735     }
<a name="l02736"></a>02736     <span class="comment">// we are in calendarmode</span>
<a name="l02737"></a>02737     <span class="comment">// in calendarmode only items can be opened which have subitems which have subitems</span>
<a name="l02738"></a>02738 
<a name="l02739"></a>02739     QListViewItem* temp;
<a name="l02740"></a>02740     temp = item-&gt;firstChild();
<a name="l02741"></a>02741     <span class="keywordtype">bool</span> openItem = <span class="keyword">false</span>;
<a name="l02742"></a>02742     <span class="keywordflow">while</span> (temp) {
<a name="l02743"></a>02743         <span class="keywordflow">if</span> ( (( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*)temp)-&gt;displaySubitemsAsGroup() ) {
<a name="l02744"></a>02744             temp-&gt;setVisible( <span class="keyword">true</span> );
<a name="l02745"></a>02745             openItem = <span class="keyword">true</span>;
<a name="l02746"></a>02746         }
<a name="l02747"></a>02747         <span class="keywordflow">else</span> {
<a name="l02748"></a>02748             temp-&gt;setVisible( <span class="keyword">false</span> );
<a name="l02749"></a>02749             <span class="comment">//qDebug(" temp-&gt;setVisible( false );");</span>
<a name="l02750"></a>02750         }
<a name="l02751"></a>02751         temp = temp-&gt;<a class="code" href="classKDGanttViewItem.html#95fcce35f0113bdf7afe2aceb821dbe3">nextSibling</a>();
<a name="l02752"></a>02752     }
<a name="l02753"></a>02753     <span class="keywordflow">if</span> ( openItem ) {
<a name="l02754"></a>02754         (( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*)item)-&gt;<a class="code" href="classKDGanttViewItem.html#eda9a8b7e8b0dcf12e11da7376e05d0a">setCallListViewOnSetOpen</a>( <span class="keyword">false</span> );
<a name="l02755"></a>02755         QListView::setOpen ( item, open );
<a name="l02756"></a>02756         (( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*)item)-&gt;setCallListViewOnSetOpen( <span class="keyword">true</span> );
<a name="l02757"></a>02757     }
<a name="l02758"></a>02758 }
<a name="l02759"></a>02759 
<a name="l02760"></a>02760 
<a name="l02761"></a>02761 <span class="keywordtype">void</span>  KDListView::contentsMouseDoubleClickEvent ( QMouseEvent * e )
<a name="l02762"></a>02762 {
<a name="l02763"></a>02763     QListView::contentsMouseDoubleClickEvent ( e );
<a name="l02764"></a>02764     <span class="comment">//if ( ! _calendarMode )</span>
<a name="l02765"></a>02765     <span class="comment">// QListView::contentsMouseDoubleClickEvent ( e );</span>
<a name="l02766"></a>02766     <span class="comment">// else</span>
<a name="l02767"></a>02767     {
<a name="l02768"></a>02768 
<a name="l02769"></a>02769         emit myGanttView-&gt;lvItemDoubleClicked ( (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*) itemAt(e-&gt;pos() ) );
<a name="l02770"></a>02770         emit myGanttView-&gt;itemDoubleClicked ( (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*) itemAt(e-&gt;pos() ) );
<a name="l02771"></a>02771     }
<a name="l02772"></a>02772 
<a name="l02773"></a>02773 }
<a name="l02774"></a>02774 
<a name="l02775"></a>02775 
<a name="l02776"></a>02776 <span class="keywordtype">void</span>  KDListView::drawToPainter ( QPainter * p, <span class="keywordtype">bool</span> drawHeader )
<a name="l02777"></a>02777 {
<a name="l02778"></a>02778     <span class="comment">// Draw list</span>
<a name="l02779"></a>02779     drawAllContents ( p, 0, 0, contentsWidth(), contentsHeight() );
<a name="l02780"></a>02780     <span class="keywordflow">if</span> (!drawHeader) {
<a name="l02781"></a>02781         <span class="keywordflow">return</span>;
<a name="l02782"></a>02782     }
<a name="l02783"></a>02783     <span class="comment">// Draw headers</span>
<a name="l02784"></a>02784     QPen pen = QPen(Qt::lightGray, 1);
<a name="l02785"></a>02785     p-&gt;save();
<a name="l02786"></a>02786     QHeader *h = header();
<a name="l02787"></a>02787     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> s = 0; s &lt; h-&gt;count(); ++s) {
<a name="l02788"></a>02788         QRect r = h-&gt;sectionRect(s);
<a name="l02789"></a>02789         <span class="keywordflow">if</span> (s==0) {
<a name="l02790"></a>02790             p-&gt;translate(0, -r.height());
<a name="l02791"></a>02791         }
<a name="l02792"></a>02792         <span class="comment">//kdDebug()&lt;&lt;s&lt;&lt;": "&lt;&lt;h-&gt;label(s)&lt;&lt;" "&lt;&lt;r&lt;&lt;endl;</span>
<a name="l02793"></a>02793         p-&gt;drawText(r.x()+2, r.y(), r.width()-2, r.height(), columnAlignment(s)|Qt::AlignVCenter, h-&gt;label(s), -1);
<a name="l02794"></a>02794         p-&gt;save();
<a name="l02795"></a>02795         p-&gt;setPen(pen);
<a name="l02796"></a>02796         p-&gt;drawRect(r.x(), r.y()+1, r.width(), r.height()-2);
<a name="l02797"></a>02797         p-&gt;restore();
<a name="l02798"></a>02798 
<a name="l02799"></a>02799     }
<a name="l02800"></a>02800     p-&gt;restore();
<a name="l02801"></a>02801 }
<a name="l02802"></a>02802 
<a name="l02803"></a>02803 <span class="keywordtype">int</span> KDListView::buildDrawables(QPtrList&lt;KDListView::DrawableItem&gt; &amp;lst, <span class="keywordtype">int</span> level, <span class="keywordtype">int</span> ypos, QListViewItem *item, <span class="keywordtype">int</span> ymin, <span class="keywordtype">int</span> ymax)<span class="keyword"> const </span>{
<a name="l02804"></a>02804     <span class="keywordtype">int</span> y = ypos;
<a name="l02805"></a>02805     <span class="keywordtype">int</span> ih = item-&gt;height();
<a name="l02806"></a>02806     <span class="keywordflow">if</span> (y &lt; ymin &amp;&amp; y+ih &gt; ymin) {
<a name="l02807"></a>02807         y = ymin; <span class="comment">// include partial item at top</span>
<a name="l02808"></a>02808     }
<a name="l02809"></a>02809     <span class="keywordflow">if</span> (y &gt;= ymin &amp;&amp; y &lt; ymax) { <span class="comment">// include partial item at bottom</span>
<a name="l02810"></a>02810         KDListView::DrawableItem *dr = <span class="keyword">new</span> KDListView::DrawableItem(level, y, item);
<a name="l02811"></a>02811         lst.append(dr);
<a name="l02812"></a>02812         <span class="comment">//kdDebug()&lt;&lt;k_funcinfo&lt;&lt;level&lt;&lt;", "&lt;&lt;y&lt;&lt;" : "&lt;&lt;item-&gt;text(0)&lt;&lt;endl;</span>
<a name="l02813"></a>02813     }
<a name="l02814"></a>02814     y += ih;
<a name="l02815"></a>02815     <span class="keywordflow">if</span> (item-&gt;isOpen()) {
<a name="l02816"></a>02816         QListViewItem *child = item-&gt;firstChild();
<a name="l02817"></a>02817         <span class="keywordflow">for</span> (; child; child = child-&gt;nextSibling()) {
<a name="l02818"></a>02818             y = buildDrawables(lst, level+1, y, child, ymin, ymax);
<a name="l02819"></a>02819         }
<a name="l02820"></a>02820     }
<a name="l02821"></a>02821     <span class="keywordflow">return</span> y;
<a name="l02822"></a>02822 }
<a name="l02823"></a>02823 <span class="comment">// This is a copy of QListView::drawContentsOffset(), with a few changes</span>
<a name="l02824"></a>02824 <span class="comment">// because drawContentsOffset() only draws *visible* items,</span>
<a name="l02825"></a>02825 <span class="comment">// we want to draw *all* items.</span>
<a name="l02826"></a>02826 <span class="comment">// FIXME: Haven't got paintBraches() to work, atm live without it.</span>
<a name="l02827"></a>02827 <span class="keywordtype">void</span> KDListView::drawAllContents(QPainter * p, <span class="keywordtype">int</span> cx, <span class="keywordtype">int</span> cy, <span class="keywordtype">int</span> cw, <span class="keywordtype">int</span> ch) {
<a name="l02828"></a>02828     <span class="keywordflow">if</span> ( columns() == 0 ) {
<a name="l02829"></a>02829         paintEmptyArea( p, QRect( cx, cy, cw, ch ) );
<a name="l02830"></a>02830         <span class="keywordflow">return</span>;
<a name="l02831"></a>02831     }
<a name="l02832"></a>02832     <span class="comment">//kdDebug()&lt;&lt;k_funcinfo&lt;&lt;QRect(cx, cy, cw, ch)&lt;&lt;endl;</span>
<a name="l02833"></a>02833     QPtrList&lt;KDListView::DrawableItem&gt; drawables;
<a name="l02834"></a>02834     drawables.setAutoDelete(<span class="keyword">true</span>);
<a name="l02835"></a>02835     QListViewItem *child = firstChild();
<a name="l02836"></a>02836     <span class="keywordtype">int</span> level = 0;
<a name="l02837"></a>02837     <span class="keywordtype">int</span> ypos = 0;
<a name="l02838"></a>02838     <span class="keywordflow">for</span> (; child; child = child-&gt;nextSibling()) {
<a name="l02839"></a>02839         ypos = buildDrawables(drawables, level, ypos, child, cy, cy+ch);
<a name="l02840"></a>02840     }
<a name="l02841"></a>02841 
<a name="l02842"></a>02842     p-&gt;setFont( font() );
<a name="l02843"></a>02843 
<a name="l02844"></a>02844     QPtrListIterator&lt;KDListView::DrawableItem&gt; it(drawables);
<a name="l02845"></a>02845 
<a name="l02846"></a>02846     QRect r;
<a name="l02847"></a>02847     <span class="keywordtype">int</span> fx = -1, x, fc = 0, lc = 0;
<a name="l02848"></a>02848     <span class="keywordtype">int</span> tx = -1;
<a name="l02849"></a>02849     KDListView::DrawableItem * current;
<a name="l02850"></a>02850 
<a name="l02851"></a>02851     <span class="keywordflow">while</span> ( (current = it.current()) != 0 ) {
<a name="l02852"></a>02852         ++it;
<a name="l02853"></a>02853         <span class="keywordtype">int</span> ih = current-&gt;i-&gt;height();
<a name="l02854"></a>02854         <span class="keywordtype">int</span> ith = current-&gt;i-&gt;totalHeight();
<a name="l02855"></a>02855         <span class="keywordtype">int</span> c;
<a name="l02856"></a>02856         <span class="keywordtype">int</span> cs;
<a name="l02857"></a>02857 
<a name="l02858"></a>02858         <span class="comment">// need to paint current?</span>
<a name="l02859"></a>02859         <span class="keywordflow">if</span> ( ih &gt; 0 &amp;&amp; current-&gt;y &lt; cy+ch &amp;&amp; current-&gt;y+ih &gt; cy ) {
<a name="l02860"></a>02860             <span class="comment">//kdDebug()&lt;&lt;k_funcinfo&lt;&lt;"Paint: "&lt;&lt;current-&gt;i-&gt;text(0)&lt;&lt;" y="&lt;&lt;current-&gt;y&lt;&lt;endl;</span>
<a name="l02861"></a>02861             <span class="keywordflow">if</span> ( fx &lt; 0 ) {
<a name="l02862"></a>02862                 <span class="comment">// find first interesting column, once</span>
<a name="l02863"></a>02863                 x = 0;
<a name="l02864"></a>02864                 c = 0;
<a name="l02865"></a>02865                 cs = header()-&gt;cellSize( 0 );
<a name="l02866"></a>02866                 <span class="keywordflow">while</span> ( x + cs &lt;= cx &amp;&amp; c &lt; header()-&gt;count() ) {
<a name="l02867"></a>02867                     x += cs;
<a name="l02868"></a>02868                     c++;
<a name="l02869"></a>02869                     <span class="keywordflow">if</span> ( c &lt; header()-&gt;count() )
<a name="l02870"></a>02870                         cs = header()-&gt;cellSize( c );
<a name="l02871"></a>02871                 }
<a name="l02872"></a>02872                 fx = x;
<a name="l02873"></a>02873                 fc = c;
<a name="l02874"></a>02874                 <span class="keywordflow">while</span>( x &lt; cx + cw &amp;&amp; c &lt; header()-&gt;count() ) {
<a name="l02875"></a>02875                     x += cs;
<a name="l02876"></a>02876                     c++;
<a name="l02877"></a>02877                     <span class="keywordflow">if</span> ( c &lt; header()-&gt;count() )
<a name="l02878"></a>02878                         cs = header()-&gt;cellSize( c );
<a name="l02879"></a>02879                 }
<a name="l02880"></a>02880                 lc = c;
<a name="l02881"></a>02881             }
<a name="l02882"></a>02882 
<a name="l02883"></a>02883             x = fx;
<a name="l02884"></a>02884             c = fc;
<a name="l02885"></a>02885             <span class="comment">// draw to last interesting column</span>
<a name="l02886"></a>02886 
<a name="l02887"></a>02887             <span class="keyword">const</span> QColorGroup &amp;cg = ( palette().inactive() );
<a name="l02888"></a>02888 
<a name="l02889"></a>02889             <span class="keywordflow">while</span> ( c &lt; lc &amp;&amp; !drawables.isEmpty() ) {
<a name="l02890"></a>02890                 <span class="keywordtype">int</span> i = header()-&gt;mapToLogical( c );
<a name="l02891"></a>02891                 cs = header()-&gt;cellSize( c );
<a name="l02892"></a>02892                 r.setRect( x, current-&gt;y-cy, cs, ih );
<a name="l02893"></a>02893                 <span class="keywordflow">if</span> ( i == 0 )
<a name="l02894"></a>02894                     r.setLeft( r.left() + current-&gt;l * treeStepSize() );
<a name="l02895"></a>02895 
<a name="l02896"></a>02896                 p-&gt;save();
<a name="l02897"></a>02897                 <span class="comment">// No need to paint if the cell isn't technically visible</span>
<a name="l02898"></a>02898                 <span class="keywordflow">if</span> ( !( r.width() == 0 || r.height() == 0 ) ) {
<a name="l02899"></a>02899                     p-&gt;translate( r.left(), r.top() );
<a name="l02900"></a>02900                     <span class="keywordtype">int</span> ac = header()-&gt;mapToLogical( c );
<a name="l02901"></a>02901                     <span class="comment">// map to Left currently. This should change once we</span>
<a name="l02902"></a>02902                     <span class="comment">// can really reverse the listview.</span>
<a name="l02903"></a>02903                     <span class="keywordtype">int</span> align = columnAlignment( ac );
<a name="l02904"></a>02904                     <span class="keywordflow">if</span> ( align == AlignAuto ) align = AlignLeft;
<a name="l02905"></a>02905                     <span class="keywordtype">bool</span> sel = current-&gt;i-&gt;isSelected();
<a name="l02906"></a>02906                     <span class="keywordflow">if</span> (sel)
<a name="l02907"></a>02907                         current-&gt;i-&gt;setSelected(<span class="keyword">false</span>);
<a name="l02908"></a>02908                     current-&gt;i-&gt;paintCell( p, cg, ac, r.width(), align );
<a name="l02909"></a>02909                     <span class="keywordflow">if</span> (sel)
<a name="l02910"></a>02910                         current-&gt;i-&gt;setSelected(sel);
<a name="l02911"></a>02911                 }
<a name="l02912"></a>02912                 p-&gt;restore();
<a name="l02913"></a>02913                 x += cs;
<a name="l02914"></a>02914                 c++;
<a name="l02915"></a>02915             }
<a name="l02916"></a>02916 
<a name="l02917"></a>02917         }
<a name="l02918"></a>02918 
<a name="l02919"></a>02919         <span class="keyword">const</span> <span class="keywordtype">int</span> cell = header()-&gt;mapToActual( 0 );
<a name="l02920"></a>02920 
<a name="l02921"></a>02921         <span class="keywordflow">if</span> ( tx &lt; 0 )
<a name="l02922"></a>02922             tx = header()-&gt;cellPos( cell );
<a name="l02923"></a>02923 
<a name="l02924"></a>02924         <span class="comment">// do any children of current need to be painted?</span>
<a name="l02925"></a>02925 <span class="comment">/* FIXME: painting branches doesn't work for some reason...</span>
<a name="l02926"></a>02926 <span class="comment">        if ( ih != ith &amp;&amp;</span>
<a name="l02927"></a>02927 <span class="comment">            rootIsDecorated() &amp;&amp;</span>
<a name="l02928"></a>02928 <span class="comment">            current-&gt;y + ith &gt; cy &amp;&amp;</span>
<a name="l02929"></a>02929 <span class="comment">            current-&gt;y + ih &lt; cy + ch &amp;&amp;</span>
<a name="l02930"></a>02930 <span class="comment">            tx + current-&gt;l * treeStepSize() &lt; cx + cw &amp;&amp;</span>
<a name="l02931"></a>02931 <span class="comment">            tx + (current-&gt;l+1) * treeStepSize() &gt; cx ) {</span>
<a name="l02932"></a>02932 <span class="comment">            // compute the clip rectangle the safe way</span>
<a name="l02933"></a>02933 <span class="comment"></span>
<a name="l02934"></a>02934 <span class="comment">            int rtop = current-&gt;y + ih;</span>
<a name="l02935"></a>02935 <span class="comment">            int rbottom = current-&gt;y + ith;</span>
<a name="l02936"></a>02936 <span class="comment">            int rleft = tx + current-&gt;l*treeStepSize();</span>
<a name="l02937"></a>02937 <span class="comment">            int rright = rleft + treeStepSize();</span>
<a name="l02938"></a>02938 <span class="comment"></span>
<a name="l02939"></a>02939 <span class="comment">            int crtop = QMAX( rtop, cy );</span>
<a name="l02940"></a>02940 <span class="comment">            int crbottom = QMIN( rbottom, cy+ch );</span>
<a name="l02941"></a>02941 <span class="comment">            int crleft = QMAX( rleft, cx );</span>
<a name="l02942"></a>02942 <span class="comment">            int crright = QMIN( rright, cx+cw );</span>
<a name="l02943"></a>02943 <span class="comment"></span>
<a name="l02944"></a>02944 <span class="comment">            r.setRect( crleft, crtop,</span>
<a name="l02945"></a>02945 <span class="comment">                    crright-crleft, crbottom-crtop );</span>
<a name="l02946"></a>02946 <span class="comment"></span>
<a name="l02947"></a>02947 <span class="comment">            if ( r.isValid() ) {</span>
<a name="l02948"></a>02948 <span class="comment">                p-&gt;save();</span>
<a name="l02949"></a>02949 <span class="comment">                p-&gt;translate( rleft, crtop );</span>
<a name="l02950"></a>02950 <span class="comment">                //kdDebug()&lt;&lt;k_funcinfo&lt;&lt;"paintBranches: "&lt;&lt;current-&gt;i-&gt;text(0)&lt;&lt;endl;</span>
<a name="l02951"></a>02951 <span class="comment"></span>
<a name="l02952"></a>02952 <span class="comment">                current-&gt;i-&gt;paintBranches( p, colorGroup(), treeStepSize(),</span>
<a name="l02953"></a>02953 <span class="comment">                                        rtop - crtop, r.height() );</span>
<a name="l02954"></a>02954 <span class="comment">                p-&gt;restore();</span>
<a name="l02955"></a>02955 <span class="comment">            }</span>
<a name="l02956"></a>02956 <span class="comment">        }*/</span>
<a name="l02957"></a>02957     }
<a name="l02958"></a>02958 }
<a name="l02959"></a>02959 
<a name="l02960"></a>02960 <span class="keywordtype">void</span> KDListView::resizeEvent(QResizeEvent *)
<a name="l02961"></a>02961 {
<a name="l02962"></a>02962     triggerUpdate ();
<a name="l02963"></a>02963 }
<a name="l02964"></a>02964 <span class="keywordtype">void</span> KDListView::dragEnterEvent ( QDragEnterEvent * e)
<a name="l02965"></a>02965 {
<a name="l02966"></a>02966     <span class="keywordflow">if</span> ( !myGanttView-&gt;dropEnabled() ) {
<a name="l02967"></a>02967         e-&gt;accept( <span class="keyword">false</span> );
<a name="l02968"></a>02968         <span class="keywordflow">return</span>;
<a name="l02969"></a>02969     }
<a name="l02970"></a>02970     myGanttView-&gt;lvDragEnterEvent(e);
<a name="l02971"></a>02971     <span class="comment">//e-&gt;accept(KDGanttViewItemDrag::canDecode(e) );</span>
<a name="l02972"></a>02972 }
<a name="l02973"></a>02973 
<a name="l02974"></a>02974 <span class="keywordtype">void</span> KDListView::dragMoveEvent ( QDragMoveEvent * e)
<a name="l02975"></a>02975 {
<a name="l02976"></a>02976     <span class="keywordflow">if</span> ( !myGanttView-&gt;dropEnabled() ) {
<a name="l02977"></a>02977         e-&gt;accept( <span class="keyword">false</span> );
<a name="l02978"></a>02978         <span class="keywordflow">return</span>;
<a name="l02979"></a>02979     }
<a name="l02980"></a>02980     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* draggedItem = 0;
<a name="l02981"></a>02981     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* gItem = (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*)itemAt( e-&gt;pos()) ;
<a name="l02982"></a>02982     setCurrentItem( gItem );
<a name="l02983"></a>02983     <span class="keywordflow">if</span> (  e-&gt;source() == myGanttView )
<a name="l02984"></a>02984         draggedItem = myGanttView-&gt;myCanvasView-&gt;lastClickedItem;
<a name="l02985"></a>02985     <span class="comment">// execute user defined dragMoveEvent handling</span>
<a name="l02986"></a>02986     if (myGanttView-&gt;lvDragMoveEvent ( e , draggedItem, gItem ) )
<a name="l02987"></a>02987         <span class="keywordflow">return</span>;
<a name="l02988"></a>02988     <span class="keywordflow">if</span> ( !<a class="code" href="classKDGanttViewItemDrag.html#1f177e7e1bb9a3efa3ffaf4dd10507bf">KDGanttViewItemDrag::canDecode</a>(e) ) {
<a name="l02989"></a>02989         e-&gt;accept( <span class="keyword">false</span> );
<a name="l02990"></a>02990         <span class="keywordflow">return</span>;
<a name="l02991"></a>02991     }
<a name="l02992"></a>02992     <span class="keywordflow">if</span> ( e-&gt;source() == myGanttView &amp;&amp; gItem ){
<a name="l02993"></a>02993         <span class="comment">// internal drag - do not allow to drag the item to a subitem of itself</span>
<a name="l02994"></a>02994         <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* pItem = gItem-&gt;<a class="code" href="classKDGanttViewItem.html#7a9cdca4949bf6845bdb810f50fad15d">parent</a>();
<a name="l02995"></a>02995         <span class="keywordflow">while</span> ( pItem ) {
<a name="l02996"></a>02996             <span class="keywordflow">if</span> ( pItem == myGanttView-&gt;myCanvasView-&gt;lastClickedItem ) {
<a name="l02997"></a>02997                 e-&gt;accept( <span class="keyword">false</span> );
<a name="l02998"></a>02998                 <span class="keywordflow">return</span>;
<a name="l02999"></a>02999             }
<a name="l03000"></a>03000             pItem = pItem-&gt;<a class="code" href="classKDGanttViewItem.html#7a9cdca4949bf6845bdb810f50fad15d">parent</a>();
<a name="l03001"></a>03001         }
<a name="l03002"></a>03002         <span class="keywordflow">if</span> ( gItem == myGanttView-&gt;myCanvasView-&gt;lastClickedItem ) {
<a name="l03003"></a>03003             e-&gt;accept( <span class="keyword">false</span> );
<a name="l03004"></a>03004             <span class="keywordflow">return</span>;
<a name="l03005"></a>03005         }
<a name="l03006"></a>03006     }
<a name="l03007"></a>03007     e-&gt;accept( <span class="keyword">true</span> );
<a name="l03008"></a>03008 }
<a name="l03009"></a>03009 
<a name="l03010"></a>03010 <span class="keywordtype">void</span> KDListView::dragLeaveEvent ( QDragLeaveEvent * )
<a name="l03011"></a>03011 {
<a name="l03012"></a>03012     <span class="comment">//qDebug("contentsDragLeaveEvent ");</span>
<a name="l03013"></a>03013 }
<a name="l03014"></a>03014 <span class="keywordtype">void</span> KDListView::dropEvent ( QDropEvent *e )
<a name="l03015"></a>03015 {
<a name="l03016"></a>03016     <span class="keywordflow">if</span> ( !myGanttView-&gt;dropEnabled() ) {
<a name="l03017"></a>03017         e-&gt;accept( <span class="keyword">false</span> );
<a name="l03018"></a>03018         <span class="keywordflow">return</span>;
<a name="l03019"></a>03019     }
<a name="l03020"></a>03020     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* gItem = (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*)itemAt( e-&gt;pos()) ;
<a name="l03021"></a>03021     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* draggedItem = 0;
<a name="l03022"></a>03022     <span class="keywordflow">if</span> (  e-&gt;source() == myGanttView )
<a name="l03023"></a>03023         draggedItem = myGanttView-&gt;myCanvasView-&gt;lastClickedItem;
<a name="l03024"></a>03024     if (myGanttView-&gt;lvDropEvent ( e, draggedItem, gItem ))
<a name="l03025"></a>03025         <span class="keywordflow">return</span>;
<a name="l03026"></a>03026     QString string;
<a name="l03027"></a>03027     <a class="code" href="classKDGanttViewItemDrag.html#cdf26d19dbeb7ee275e95d54b7f3b3de">KDGanttViewItemDrag::decode</a>( e, <span class="keywordtype">string</span> );
<a name="l03028"></a>03028     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* newItem = 0;
<a name="l03029"></a>03029 
<a name="l03030"></a>03030     <span class="keywordflow">if</span> ( gItem == myGanttView-&gt;myCanvasView-&gt;lastClickedItem &amp;&amp; gItem != 0 ) {
<a name="l03031"></a>03031         qDebug(<span class="stringliteral">"KDGanttView::Possible bug in drag&amp;drop code "</span>);
<a name="l03032"></a>03032         <span class="keywordflow">return</span>;
<a name="l03033"></a>03033     }
<a name="l03034"></a>03034 
<a name="l03035"></a>03035     QDomDocument doc( <span class="stringliteral">"GanttView"</span> );
<a name="l03036"></a>03036     doc.setContent( <span class="keywordtype">string</span> );
<a name="l03037"></a>03037     QDomElement docRoot = doc.documentElement(); <span class="comment">// ChartParams element</span>
<a name="l03038"></a>03038     QDomNode node = docRoot.firstChild();
<a name="l03039"></a>03039     <span class="keywordtype">bool</span> enable = myGanttView-&gt;myTimeTable-&gt;blockUpdating( );
<a name="l03040"></a>03040     myGanttView-&gt;myTimeTable-&gt;setBlockUpdating( <span class="keyword">true</span> );
<a name="l03041"></a>03041     <span class="keywordflow">while</span>( !node.isNull() ) {
<a name="l03042"></a>03042         QDomElement element = node.toElement();
<a name="l03043"></a>03043         <span class="keywordflow">if</span>( !element.isNull() ) { <span class="comment">// was really an element</span>
<a name="l03044"></a>03044             QString tagName = element.tagName();
<a name="l03045"></a>03045             <span class="keywordflow">if</span>( tagName == <span class="stringliteral">"Items"</span> ) {
<a name="l03046"></a>03046                 QDomNode node = element.firstChild();
<a name="l03047"></a>03047                 <span class="keywordflow">while</span>( !node.isNull() ) {
<a name="l03048"></a>03048                     QDomElement element = node.toElement();
<a name="l03049"></a>03049                     <span class="keywordflow">if</span>( !element.isNull() ) { <span class="comment">// was really an element</span>
<a name="l03050"></a>03050                         QString tagName = element.tagName();
<a name="l03051"></a>03051                         <span class="keywordflow">if</span>( tagName == <span class="stringliteral">"Item"</span> ) {
<a name="l03052"></a>03052                             <span class="keywordflow">if</span> (  gItem )
<a name="l03053"></a>03053                                 newItem = <a class="code" href="classKDGanttViewItem.html#d562fd0deb6fcd43aba09e18b47d11c1">KDGanttViewItem::createFromDomElement</a>( gItem,
<a name="l03054"></a>03054                                                                                  element );
<a name="l03055"></a>03055                             <span class="keywordflow">else</span>
<a name="l03056"></a>03056                                 newItem = <a class="code" href="classKDGanttViewItem.html#d562fd0deb6fcd43aba09e18b47d11c1">KDGanttViewItem::createFromDomElement</a>( myGanttView,
<a name="l03057"></a>03057                                                                                  element );
<a name="l03058"></a>03058                         } <span class="keywordflow">else</span> {
<a name="l03059"></a>03059                             qDebug( <span class="stringliteral">"Unrecognized tag name: %s"</span>, tagName.latin1() );
<a name="l03060"></a>03060                             Q_ASSERT( <span class="keyword">false</span> );
<a name="l03061"></a>03061                         }
<a name="l03062"></a>03062                     }
<a name="l03063"></a>03063                     <span class="comment">//qDebug("next node1 ");</span>
<a name="l03064"></a>03064                     node = node.nextSibling();
<a name="l03065"></a>03065                 }
<a name="l03066"></a>03066             }
<a name="l03067"></a>03067         }
<a name="l03068"></a>03068         <span class="comment">//qDebug("next node2 ");</span>
<a name="l03069"></a>03069         node = node.nextSibling();
<a name="l03070"></a>03070     }
<a name="l03071"></a>03071     newItem-&gt;<a class="code" href="classKDGanttViewItem.html#a827e41eb40058abb0063c9c5195abb9">setDisplaySubitemsAsGroup</a>(myGanttView-&gt;displaySubitemsAsGroup());
<a name="l03072"></a>03072     newItem-&gt;<a class="code" href="classKDGanttViewItem.html#b2c5d5b50b7cf2e359ac060f790e39ce">resetSubitemVisibility</a>();
<a name="l03073"></a>03073     myGanttView-&gt;slot_lvDropped(e, draggedItem, gItem);
<a name="l03074"></a>03074     myGanttView-&gt;myTimeTable-&gt;setBlockUpdating( enable );
<a name="l03075"></a>03075     myGanttView-&gt;myTimeTable-&gt;updateMyContent();
<a name="l03076"></a>03076     <span class="keywordflow">return</span>;
<a name="l03077"></a>03077 }
<a name="l03078"></a>03078 
<a name="l03079"></a>03079 QDragObject * KDListView::dragObject ()
<a name="l03080"></a>03080 {
<a name="l03081"></a>03081     <span class="keywordflow">return</span> QListView::dragObject ();
<a name="l03082"></a>03082 }
<a name="l03083"></a>03083 
<a name="l03084"></a>03084 <span class="keywordtype">void</span> KDListView::startDrag ()
<a name="l03085"></a>03085 {
<a name="l03086"></a>03086     <span class="keywordflow">if</span> ( ! myGanttView-&gt;dragEnabled() )
<a name="l03087"></a>03087         <span class="keywordflow">return</span>;
<a name="l03088"></a>03088     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* cItem = (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*) currentItem ();
<a name="l03089"></a>03089     myGanttView-&gt;myCanvasView-&gt;lastClickedItem = cItem;
<a name="l03090"></a>03090     myGanttView-&gt;lvStartDrag (cItem);
<a name="l03091"></a>03091 }
<a name="l03092"></a>03092 
<a name="l03093"></a>03093 KDCanvasText::KDCanvasText( KDTimeTableWidget* canvas,
<a name="l03094"></a>03094                             <span class="keywordtype">void</span>* parentItem,
<a name="l03095"></a>03095                             <span class="keywordtype">int</span> type ) :
<a name="l03096"></a>03096     QCanvasText(canvas)
<a name="l03097"></a>03097 {
<a name="l03098"></a>03098     myParentType = type;
<a name="l03099"></a>03099     myParentItem = parentItem;
<a name="l03100"></a>03100 }
<a name="l03101"></a>03101 
<a name="l03102"></a>03102 
<a name="l03103"></a>03103 KDCanvasLine::KDCanvasLine( KDTimeTableWidget* canvas,
<a name="l03104"></a>03104                             <span class="keywordtype">void</span>* parentItem,
<a name="l03105"></a>03105                             <span class="keywordtype">int</span> type ) :
<a name="l03106"></a>03106     QCanvasLine(canvas)
<a name="l03107"></a>03107 {
<a name="l03108"></a>03108     myParentType = type;
<a name="l03109"></a>03109     myParentItem = parentItem;
<a name="l03110"></a>03110 }
<a name="l03111"></a>03111 
<a name="l03112"></a>03112 
<a name="l03113"></a>03113 KDCanvasPolygonItem::KDCanvasPolygonItem( KDTimeTableWidget* canvas,
<a name="l03114"></a>03114                                           <span class="keywordtype">void</span>* parentItem,
<a name="l03115"></a>03115                                           <span class="keywordtype">int</span> type ) :
<a name="l03116"></a>03116     QCanvasPolygonalItem( canvas )
<a name="l03117"></a>03117 {
<a name="l03118"></a>03118     myParentType = type;
<a name="l03119"></a>03119     myParentItem = parentItem;
<a name="l03120"></a>03120 }
<a name="l03121"></a>03121 
<a name="l03122"></a>03122 
<a name="l03123"></a>03123 KDCanvasPolygon::KDCanvasPolygon( KDTimeTableWidget* canvas,
<a name="l03124"></a>03124                                   <span class="keywordtype">void</span>* parentItem,
<a name="l03125"></a>03125                                   <span class="keywordtype">int</span> type ) :
<a name="l03126"></a>03126     QCanvasPolygon( canvas )
<a name="l03127"></a>03127 {
<a name="l03128"></a>03128     myParentType = type;
<a name="l03129"></a>03129     myParentItem = parentItem;
<a name="l03130"></a>03130 }
<a name="l03131"></a>03131 
<a name="l03132"></a>03132 
<a name="l03133"></a>03133 KDCanvasEllipse::KDCanvasEllipse( KDTimeTableWidget* canvas,
<a name="l03134"></a>03134                                   <span class="keywordtype">void</span>* parentItem,
<a name="l03135"></a>03135                                   <span class="keywordtype">int</span> type ) :
<a name="l03136"></a>03136     QCanvasEllipse( canvas )
<a name="l03137"></a>03137 {
<a name="l03138"></a>03138     myParentType = type;
<a name="l03139"></a>03139     myParentItem = parentItem;
<a name="l03140"></a>03140 }
<a name="l03141"></a>03141 
<a name="l03142"></a>03142 
<a name="l03143"></a>03143 KDCanvasRectangle::KDCanvasRectangle( KDTimeTableWidget* canvas,
<a name="l03144"></a>03144                                       <span class="keywordtype">void</span>* parentItem,
<a name="l03145"></a>03145                                       <span class="keywordtype">int</span> type ) :
<a name="l03146"></a>03146     QCanvasRectangle( canvas )
<a name="l03147"></a>03147 {
<a name="l03148"></a>03148     myParentType = type;
<a name="l03149"></a>03149     myParentItem = parentItem;
<a name="l03150"></a>03150 }
<a name="l03151"></a>03151 
<a name="l03152"></a>03152 
<a name="l03153"></a>03153 
<a name="l03154"></a>03154 
<a name="l03155"></a>03155 KDGanttCanvasView::KDGanttCanvasView( <a class="code" href="classKDGanttView.html">KDGanttView</a>* sender,QCanvas* canvas, QWidget* parent,  <span class="keyword">const</span>
<a name="l03156"></a>03156     <span class="keywordtype">char</span>* name ) : QCanvasView ( canvas, parent, name ),
<a name="l03157"></a>03157     movingGVItem( 0 ),
<a name="l03158"></a>03158     scrollBarTimer( 0, <span class="stringliteral">"scrollBarTimer"</span> )
<a name="l03159"></a>03159 {
<a name="l03160"></a>03160     setHScrollBarMode (QScrollView::AlwaysOn );
<a name="l03161"></a>03161     setVScrollBarMode( QScrollView::AlwaysOn );
<a name="l03162"></a>03162     myToolTip = <span class="keyword">new</span> KDCanvasToolTip(viewport(),<span class="keyword">this</span>);
<a name="l03163"></a>03163     mySignalSender =  sender;
<a name="l03164"></a>03164     currentItem = 0;
<a name="l03165"></a>03165     currentLink = 0;
<a name="l03166"></a>03166     cuttedItem = 0;
<a name="l03167"></a>03167     fromItem = 0;
<a name="l03168"></a>03168     fromArea = 0;
<a name="l03169"></a>03169     linkItemsEnabled = <span class="keyword">false</span>;
<a name="l03170"></a>03170     mouseDown = <span class="keyword">false</span>;
<a name="l03171"></a>03171     linkLine = <span class="keyword">new</span> QCanvasLine(canvas);
<a name="l03172"></a>03172     linkLine-&gt;hide();
<a name="l03173"></a>03173     linkLine-&gt;setZ(1000);
<a name="l03174"></a>03174     set_Mouse_Tracking(<span class="keyword">true</span>); <span class="comment">// mouse cursor changes over KDIntervalColorRectangle borders</span>
<a name="l03175"></a>03175     <span class="keyword">new</span> KDCanvasWhatsThis(viewport(),<span class="keyword">this</span>);
<a name="l03176"></a>03176     onItem = <span class="keyword">new</span> QPopupMenu( <span class="keyword">this</span> );
<a name="l03177"></a>03177     QPopupMenu * newMenu = <span class="keyword">new</span> QPopupMenu( <span class="keyword">this</span> );
<a name="l03178"></a>03178     QPopupMenu * onView = <span class="keyword">new</span> QPopupMenu( <span class="keyword">this</span> );
<a name="l03179"></a>03179     onView-&gt;insertItem( i18n( <span class="stringliteral">"Summary"</span> ), <span class="keyword">this</span>,
<a name="l03180"></a>03180                         SLOT ( newRootItem( <span class="keywordtype">int</span> ) ), 0, 0 );
<a name="l03181"></a>03181     onView-&gt;insertItem( i18n( <span class="stringliteral">"Event"</span> ), <span class="keyword">this</span>,
<a name="l03182"></a>03182                         SLOT ( newRootItem( <span class="keywordtype">int</span> ) ), 0, 1);
<a name="l03183"></a>03183     onView-&gt;insertItem( i18n( <span class="stringliteral">"Task"</span> ), <span class="keyword">this</span>,
<a name="l03184"></a>03184                         SLOT ( newRootItem( <span class="keywordtype">int</span> ) ), 0, 2 );
<a name="l03185"></a>03185 
<a name="l03186"></a>03186     onItem-&gt;insertItem( i18n( <span class="stringliteral">"New Root"</span> ), onView );
<a name="l03187"></a>03187     newMenu-&gt;insertItem( i18n( <span class="stringliteral">"Summary"</span> ),
<a name="l03188"></a>03188                          <span class="keyword">this</span>, SLOT ( newChildItem(  <span class="keywordtype">int</span>) ), 0, 0 );
<a name="l03189"></a>03189     newMenu-&gt;insertItem( i18n( <span class="stringliteral">"Event"</span> ),
<a name="l03190"></a>03190                          <span class="keyword">this</span>, SLOT ( newChildItem( <span class="keywordtype">int</span> ) ), 0, 1 );
<a name="l03191"></a>03191     newMenu-&gt;insertItem( i18n( <span class="stringliteral">"Task"</span> ),
<a name="l03192"></a>03192                          <span class="keyword">this</span>, SLOT ( newChildItem( <span class="keywordtype">int</span> ) ), 0, 2 );
<a name="l03193"></a>03193 
<a name="l03194"></a>03194     onItem-&gt;insertItem( i18n( <span class="stringliteral">"New Child"</span> ), newMenu );
<a name="l03195"></a>03195     QPopupMenu * afterMenu = <span class="keyword">new</span> QPopupMenu( <span class="keyword">this</span> );
<a name="l03196"></a>03196     afterMenu-&gt;insertItem( i18n( <span class="stringliteral">"Summary"</span> ),
<a name="l03197"></a>03197                            <span class="keyword">this</span>, SLOT ( newChildItem(  <span class="keywordtype">int</span>) ), 0, 0+4 );
<a name="l03198"></a>03198     afterMenu-&gt;insertItem( i18n( <span class="stringliteral">"Event"</span> ),
<a name="l03199"></a>03199                            <span class="keyword">this</span>, SLOT ( newChildItem( <span class="keywordtype">int</span> ) ), 0, 1+4 );
<a name="l03200"></a>03200     afterMenu-&gt;insertItem( i18n( <span class="stringliteral">"Task"</span> ),
<a name="l03201"></a>03201                            <span class="keyword">this</span>, SLOT ( newChildItem( <span class="keywordtype">int</span> ) ), 0, 2+4 );
<a name="l03202"></a>03202     onItem-&gt;insertItem( i18n( <span class="stringliteral">"New After"</span> ), afterMenu );
<a name="l03203"></a>03203     QPopupMenu *pasteMenu = <span class="keyword">new</span> QPopupMenu( <span class="keyword">this</span> );
<a name="l03204"></a>03204     pasteMenu-&gt;insertItem( i18n( <span class="stringliteral">"As Root"</span> ),
<a name="l03205"></a>03205                            <span class="keyword">this</span>, SLOT ( pasteItem( <span class="keywordtype">int</span> ) ), 0, 0 );
<a name="l03206"></a>03206     pasteMenu-&gt;insertItem( i18n( <span class="stringliteral">"As Child"</span> ),
<a name="l03207"></a>03207                            <span class="keyword">this</span>, SLOT ( pasteItem( <span class="keywordtype">int</span> ) ), 0, 1 );
<a name="l03208"></a>03208     pasteMenu-&gt;insertItem( i18n( <span class="stringliteral">"After"</span> ),
<a name="l03209"></a>03209                            <span class="keyword">this</span>, SLOT ( pasteItem( <span class="keywordtype">int</span> ) ), 0, 2 );
<a name="l03210"></a>03210     onItem-&gt;insertItem( i18n( <span class="stringliteral">"Paste"</span> ), pasteMenu, 3 );
<a name="l03211"></a>03211     onItem-&gt;insertItem( i18n( <span class="stringliteral">"Cut Item"</span> ), <span class="keyword">this</span>, SLOT ( cutItem() ) );
<a name="l03212"></a>03212     onItem-&gt;setItemEnabled( 3, <span class="keyword">false</span> );
<a name="l03213"></a>03213     myMyContentsHeight = 0;
<a name="l03214"></a>03214     _showItemAddPopupMenu = <span class="keyword">false</span>;
<a name="l03215"></a>03215 
<a name="l03216"></a>03216     QObject *scrollViewTimer = child( <span class="stringliteral">"scrollview scrollbar timer"</span>, <span class="stringliteral">"QTimer"</span>, <span class="keyword">false</span> );
<a name="l03217"></a>03217     Q_ASSERT( scrollViewTimer );
<a name="l03218"></a>03218     <span class="keywordflow">if</span> ( scrollViewTimer ) {
<a name="l03219"></a>03219         disconnect( scrollViewTimer, SIGNAL(timeout()), <span class="keyword">this</span>, SLOT(updateScrollBars() ) );
<a name="l03220"></a>03220     }
<a name="l03221"></a>03221     <span class="comment">// If they needed a scrollbar timer in scrollview...</span>
<a name="l03222"></a>03222     connect( &amp;scrollBarTimer, SIGNAL(timeout()), <span class="keyword">this</span>, SLOT(myUpdateScrollBars() ) );
<a name="l03223"></a>03223 
<a name="l03224"></a>03224     myScrollTimer = <span class="keyword">new</span> QTimer( <span class="keyword">this</span>, <span class="stringliteral">"myScrollTimer"</span> );
<a name="l03225"></a>03225     connect( myScrollTimer, SIGNAL( timeout() ), SLOT( slotScrollTimer() ) );
<a name="l03226"></a>03226     autoScrollEnabled = <span class="keyword">false</span>;
<a name="l03227"></a>03227 }
<a name="l03228"></a>03228 
<a name="l03229"></a>03229 
<a name="l03230"></a>03230 KDGanttCanvasView::~KDGanttCanvasView()
<a name="l03231"></a>03231 {
<a name="l03232"></a>03232     <span class="keyword">delete</span> myToolTip;
<a name="l03233"></a>03233 }
<a name="l03234"></a>03234 
<a name="l03235"></a>03235 
<a name="l03236"></a>03236 <span class="keywordtype">void</span> KDGanttCanvasView::setShowPopupMenu( <span class="keywordtype">bool</span> show )
<a name="l03237"></a>03237 {
<a name="l03238"></a>03238     _showItemAddPopupMenu = show;
<a name="l03239"></a>03239 }
<a name="l03240"></a>03240 <span class="keywordtype">bool</span> KDGanttCanvasView::showPopupMenu()
<a name="l03241"></a>03241 {
<a name="l03242"></a>03242     <span class="keywordflow">return</span> _showItemAddPopupMenu;
<a name="l03243"></a>03243 }
<a name="l03244"></a>03244 
<a name="l03245"></a>03245 
<a name="l03246"></a>03246 <span class="keywordtype">void</span> KDGanttCanvasView::moveMyContent( <span class="keywordtype">int</span>, <span class="keywordtype">int</span> y)
<a name="l03247"></a>03247 {
<a name="l03248"></a>03248     setContentsPos(contentsX(), y);
<a name="l03249"></a>03249 }
<a name="l03250"></a>03250 
<a name="l03251"></a>03251 <span class="keywordtype">void</span> KDGanttCanvasView::resizeEvent ( QResizeEvent * e )
<a name="l03252"></a>03252 {
<a name="l03253"></a>03253     <span class="keywordtype">int</span> ho = e-&gt;oldSize().height();
<a name="l03254"></a>03254     <span class="keywordtype">int</span> wo = e-&gt;oldSize().width();
<a name="l03255"></a>03255     <span class="keywordtype">int</span> hi = height();
<a name="l03256"></a>03256     <span class="keywordtype">int</span> wi = width();
<a name="l03257"></a>03257     <span class="comment">//QScrollView::blockSignals( true );</span>
<a name="l03258"></a>03258 
<a name="l03259"></a>03259     verticalScrollBar()-&gt;setUpdatesEnabled( <span class="keyword">false</span> );
<a name="l03260"></a>03260     QScrollView::resizeEvent ( e ) ;
<a name="l03261"></a>03261     <span class="keywordflow">if</span> ( ho != hi )
<a name="l03262"></a>03262         emit heightResized( viewport()-&gt;height());
<a name="l03263"></a>03263     <span class="keywordflow">if</span> ( wo != wi )
<a name="l03264"></a>03264         emit widthResized( viewport()-&gt;width() );
<a name="l03265"></a>03265     <span class="comment">//setMyContentsHeight( 0 ); // via timer</span>
<a name="l03266"></a>03266     <span class="comment">//QScrollView::blockSignals( false );</span>
<a name="l03267"></a>03267     scrollBarTimer.start(0, <span class="keyword">true</span>);
<a name="l03268"></a>03268 }
<a name="l03269"></a>03269 
<a name="l03270"></a>03270 <span class="keywordtype">void</span> KDGanttCanvasView::myUpdateScrollBars()
<a name="l03271"></a>03271 {
<a name="l03272"></a>03272     setMyContentsHeight( 0 );
<a name="l03273"></a>03273 }
<a name="l03274"></a>03274 <span class="keywordtype">void</span> KDGanttCanvasView::setMyContentsHeight( <span class="keywordtype">int</span> hei )
<a name="l03275"></a>03275 {
<a name="l03276"></a>03276     <span class="comment">//qDebug("setMyContentsHeight %d %d ", hei,  myMyContentsHeight);</span>
<a name="l03277"></a>03277     <span class="keywordflow">if</span> ( hei &gt; 0 )
<a name="l03278"></a>03278         myMyContentsHeight = hei;
<a name="l03279"></a>03279     verticalScrollBar()-&gt;setUpdatesEnabled( <span class="keyword">true</span> ); <span class="comment">// set false in resizeEvent()</span>
<a name="l03280"></a>03280     <span class="keywordflow">if</span> ( viewport()-&gt;height() &lt;= myMyContentsHeight )
<a name="l03281"></a>03281         verticalScrollBar()-&gt;setRange( 0, myMyContentsHeight- viewport()-&gt;height()+1);
<a name="l03282"></a>03282     <span class="keywordflow">else</span>
<a name="l03283"></a>03283         verticalScrollBar()-&gt;setRange( 0,0 );
<a name="l03284"></a>03284     <span class="comment">// testing for unmatching ScrollBar values of timeheader and timetable</span>
<a name="l03285"></a>03285     <span class="comment">// may happen after external resizing</span>
<a name="l03286"></a>03286     <span class="keywordflow">if</span> ( horizontalScrollBar()-&gt;value() != mySignalSender-&gt;myTimeHeaderScroll-&gt;horizontalScrollBar()-&gt;value() ) {
<a name="l03287"></a>03287         <span class="comment">// I am the Boss!</span>
<a name="l03288"></a>03288         mySignalSender-&gt;myTimeHeaderScroll-&gt;horizontalScrollBar()-&gt;setValue(horizontalScrollBar()-&gt;value()  );
<a name="l03289"></a>03289 
<a name="l03290"></a>03290     }
<a name="l03291"></a>03291 
<a name="l03292"></a>03292 }
<a name="l03293"></a>03293 
<a name="l03294"></a>03294 <span class="comment">// Call after *internal* resizing (like addTickRight())</span>
<a name="l03295"></a>03295 <span class="comment">// Then the new scrollbar maxValue is in myTimeHeader.</span>
<a name="l03296"></a>03296 <span class="keywordtype">void</span> KDGanttCanvasView::updateHorScrollBar() {
<a name="l03297"></a>03297     <span class="comment">//qDebug("horizontalScrollBar max=%d, myTimeHeaderScroll=%d", horizontalScrollBar()-&gt;maxValue(), mySignalSender-&gt;myTimeHeaderScroll-&gt;horizontalScrollBar()-&gt;value());</span>
<a name="l03298"></a>03298 
<a name="l03299"></a>03299     horizontalScrollBar()-&gt;setRange(mySignalSender-&gt;myTimeHeaderScroll-&gt;horizontalScrollBar()-&gt;minValue(), mySignalSender-&gt;myTimeHeaderScroll-&gt;horizontalScrollBar()-&gt;maxValue());
<a name="l03300"></a>03300 
<a name="l03301"></a>03301 }
<a name="l03302"></a>03302 
<a name="l03303"></a>03303 <span class="keywordtype">void</span>  KDGanttCanvasView::cutItem( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* item )
<a name="l03304"></a>03304 {
<a name="l03305"></a>03305     lastClickedItem = item;
<a name="l03306"></a>03306     cutItem();
<a name="l03307"></a>03307 }
<a name="l03308"></a>03308 <span class="keywordtype">void</span>  KDGanttCanvasView::insertItemAsRoot( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* item )
<a name="l03309"></a>03309 {
<a name="l03310"></a>03310     mySignalSender-&gt;myListView-&gt;insertItem( item  );
<a name="l03311"></a>03311     <span class="keywordflow">if</span> ( item == cuttedItem )
<a name="l03312"></a>03312         cuttedItem = 0;
<a name="l03313"></a>03313 }
<a name="l03314"></a>03314 <span class="keywordtype">void</span>  KDGanttCanvasView::insertItemAsChild( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* parent, <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* item )
<a name="l03315"></a>03315 {
<a name="l03316"></a>03316     parent-&gt;insertItem( cuttedItem );
<a name="l03317"></a>03317     <span class="keywordflow">if</span> ( item == cuttedItem )
<a name="l03318"></a>03318         cuttedItem = 0;
<a name="l03319"></a>03319 }
<a name="l03320"></a>03320 <span class="keywordtype">void</span>  KDGanttCanvasView::insertItemAfter( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* parent , <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* item )
<a name="l03321"></a>03321 {
<a name="l03322"></a>03322     <span class="keywordflow">if</span> ( parent-&gt;<a class="code" href="classKDGanttViewItem.html#7a9cdca4949bf6845bdb810f50fad15d">parent</a>() ) {
<a name="l03323"></a>03323         parent-&gt;<a class="code" href="classKDGanttViewItem.html#7a9cdca4949bf6845bdb810f50fad15d">parent</a>()-&gt;insertItem( item );
<a name="l03324"></a>03324     }
<a name="l03325"></a>03325     <span class="keywordflow">else</span>
<a name="l03326"></a>03326         mySignalSender-&gt;myListView-&gt;insertItem( item );
<a name="l03327"></a>03327     item-&gt;moveItem( parent );
<a name="l03328"></a>03328     <span class="keywordflow">if</span> ( item == cuttedItem )
<a name="l03329"></a>03329         cuttedItem = 0;
<a name="l03330"></a>03330 }
<a name="l03331"></a>03331 
<a name="l03332"></a>03332 <span class="keywordtype">void</span>  KDGanttCanvasView::cutItem()
<a name="l03333"></a>03333 {
<a name="l03334"></a>03334     lastClickedItem-&gt;<a class="code" href="classKDGanttViewItem.html#424b15c277548f29b48b2bf578d53692">hideSubtree</a>();
<a name="l03335"></a>03335     <span class="comment">//qDebug("last clicked %d parent %d ", lastClickedItem  , lastClickedItem-&gt;parent());</span>
<a name="l03336"></a>03336     <span class="keywordflow">if</span> ( lastClickedItem-&gt;parent() )
<a name="l03337"></a>03337         lastClickedItem-&gt;parent()-&gt;takeItem(lastClickedItem);
<a name="l03338"></a>03338     <span class="keywordflow">else</span>
<a name="l03339"></a>03339         mySignalSender-&gt;myListView-&gt;takeItem( lastClickedItem );
<a name="l03340"></a>03340     mySignalSender-&gt;myTimeTable-&gt;updateMyContent();
<a name="l03341"></a>03341     <span class="keywordflow">if</span> ( cuttedItem )
<a name="l03342"></a>03342         <span class="keyword">delete</span> cuttedItem;
<a name="l03343"></a>03343     cuttedItem = lastClickedItem;
<a name="l03344"></a>03344     onItem-&gt;setItemEnabled( 3, <span class="keyword">true</span> );
<a name="l03345"></a>03345 
<a name="l03346"></a>03346 }
<a name="l03347"></a>03347 <span class="comment">// called from the destructor in KDGanttViewItem or KDGanttView</span>
<a name="l03348"></a>03348 
<a name="l03349"></a>03349 <span class="keywordtype">void</span>  KDGanttCanvasView::resetCutPaste( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* item )
<a name="l03350"></a>03350 {
<a name="l03351"></a>03351     <span class="keywordflow">if</span> ( item == 0 &amp;&amp; cuttedItem ) {
<a name="l03352"></a>03352         <span class="keyword">delete</span> cuttedItem;
<a name="l03353"></a>03353         cuttedItem = 0;
<a name="l03354"></a>03354     }
<a name="l03355"></a>03355     <span class="keywordflow">if</span> (item == cuttedItem) {
<a name="l03356"></a>03356         onItem-&gt;setItemEnabled( 3, <span class="keyword">false</span> );
<a name="l03357"></a>03357         cuttedItem = 0;
<a name="l03358"></a>03358     }
<a name="l03359"></a>03359 }
<a name="l03360"></a>03360 
<a name="l03361"></a>03361 <span class="keywordtype">void</span>  KDGanttCanvasView::pasteItem( <span class="keywordtype">int</span> type )
<a name="l03362"></a>03362 {
<a name="l03363"></a>03363     <span class="keywordflow">if</span> ( !cuttedItem )
<a name="l03364"></a>03364         <span class="keywordflow">return</span>;
<a name="l03365"></a>03365     <span class="keywordflow">switch</span>( type ) {
<a name="l03366"></a>03366     <span class="keywordflow">case</span> 0:<span class="comment">//root</span>
<a name="l03367"></a>03367         mySignalSender-&gt;myListView-&gt;insertItem( cuttedItem );
<a name="l03368"></a>03368         <span class="keywordflow">break</span>;
<a name="l03369"></a>03369     <span class="keywordflow">case</span> 1:<span class="comment">//child</span>
<a name="l03370"></a>03370         lastClickedItem-&gt;insertItem( cuttedItem );
<a name="l03371"></a>03371         <span class="keywordflow">break</span>;
<a name="l03372"></a>03372     <span class="keywordflow">case</span> 2:<span class="comment">//after</span>
<a name="l03373"></a>03373         <span class="keywordflow">if</span> ( lastClickedItem-&gt;parent() ) {
<a name="l03374"></a>03374             lastClickedItem-&gt;parent()-&gt;insertItem( cuttedItem );
<a name="l03375"></a>03375         }
<a name="l03376"></a>03376         <span class="keywordflow">else</span>
<a name="l03377"></a>03377             mySignalSender-&gt;myListView-&gt;insertItem( cuttedItem );
<a name="l03378"></a>03378         cuttedItem-&gt;moveItem( lastClickedItem );
<a name="l03379"></a>03379         <span class="keywordflow">break</span>;
<a name="l03380"></a>03380     <span class="keywordflow">default</span>:
<a name="l03381"></a>03381         ;
<a name="l03382"></a>03382     }
<a name="l03383"></a>03383     cuttedItem = 0;
<a name="l03384"></a>03384     onItem-&gt;setItemEnabled( 3, <span class="keyword">false</span> );
<a name="l03385"></a>03385     mySignalSender-&gt;myTimeTable-&gt;updateMyContent();
<a name="l03386"></a>03386 }
<a name="l03387"></a>03387 <span class="keywordtype">void</span>  KDGanttCanvasView::newRootItem(<span class="keywordtype">int</span> type)
<a name="l03388"></a>03388 {
<a name="l03389"></a>03389     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* temp = 0;
<a name="l03390"></a>03390     <span class="keywordflow">switch</span>( type ) {
<a name="l03391"></a>03391     <span class="keywordflow">case</span> 1:
<a name="l03392"></a>03392         temp = <span class="keyword">new</span> <a class="code" href="classKDGanttViewEventItem.html">KDGanttViewEventItem</a>( mySignalSender, i18n( <span class="stringliteral">"New Event"</span> ) );
<a name="l03393"></a>03393         <span class="keywordflow">break</span>;
<a name="l03394"></a>03394     <span class="keywordflow">case</span> 0:
<a name="l03395"></a>03395         temp = <span class="keyword">new</span> <a class="code" href="classKDGanttViewSummaryItem.html">KDGanttViewSummaryItem</a>( mySignalSender, i18n( <span class="stringliteral">"New Summary"</span> ) );
<a name="l03396"></a>03396         <span class="keywordflow">break</span>;
<a name="l03397"></a>03397     <span class="keywordflow">case</span> 2:
<a name="l03398"></a>03398         temp = <span class="keyword">new</span> <a class="code" href="classKDGanttViewTaskItem.html">KDGanttViewTaskItem</a>( mySignalSender, i18n( <span class="stringliteral">"New Task"</span> ) );
<a name="l03399"></a>03399         <span class="keywordflow">break</span>;
<a name="l03400"></a>03400     <span class="keywordflow">default</span>:
<a name="l03401"></a>03401         ;
<a name="l03402"></a>03402     }
<a name="l03403"></a>03403     <span class="keywordflow">if</span> ( temp )
<a name="l03404"></a>03404         mySignalSender-&gt;editItem( temp );
<a name="l03405"></a>03405 }
<a name="l03406"></a>03406 
<a name="l03407"></a>03407 <span class="keywordtype">void</span>  KDGanttCanvasView::newChildItem( <span class="keywordtype">int</span> type )
<a name="l03408"></a>03408 {
<a name="l03409"></a>03409     <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* temp = 0;
<a name="l03410"></a>03410     <span class="keywordflow">switch</span>( type ) {
<a name="l03411"></a>03411     <span class="keywordflow">case</span> 1:
<a name="l03412"></a>03412         temp = <span class="keyword">new</span> <a class="code" href="classKDGanttViewEventItem.html">KDGanttViewEventItem</a>( lastClickedItem, i18n( <span class="stringliteral">"New Event"</span> ) );
<a name="l03413"></a>03413         <span class="keywordflow">break</span>;
<a name="l03414"></a>03414     <span class="keywordflow">case</span> 0:
<a name="l03415"></a>03415         temp = <span class="keyword">new</span> <a class="code" href="classKDGanttViewSummaryItem.html">KDGanttViewSummaryItem</a>( lastClickedItem, i18n( <span class="stringliteral">"New Summary"</span> ) );
<a name="l03416"></a>03416         <span class="keywordflow">break</span>;
<a name="l03417"></a>03417     <span class="keywordflow">case</span> 2:
<a name="l03418"></a>03418         temp = <span class="keyword">new</span> <a class="code" href="classKDGanttViewTaskItem.html">KDGanttViewTaskItem</a>( lastClickedItem, i18n( <span class="stringliteral">"New Task"</span> ) );
<a name="l03419"></a>03419         <span class="keywordflow">break</span>;
<a name="l03420"></a>03420     <span class="keywordflow">case</span> 5:
<a name="l03421"></a>03421         <span class="keywordflow">if</span> ( lastClickedItem-&gt;parent() )
<a name="l03422"></a>03422             temp = <span class="keyword">new</span> <a class="code" href="classKDGanttViewEventItem.html">KDGanttViewEventItem</a>( lastClickedItem-&gt;parent(), lastClickedItem, i18n( <span class="stringliteral">"New Event"</span> ) );
<a name="l03423"></a>03423         <span class="keywordflow">else</span>
<a name="l03424"></a>03424             temp = <span class="keyword">new</span> <a class="code" href="classKDGanttViewEventItem.html">KDGanttViewEventItem</a>( mySignalSender, lastClickedItem, i18n( <span class="stringliteral">"New Event"</span> ) );
<a name="l03425"></a>03425         <span class="keywordflow">break</span>;
<a name="l03426"></a>03426     <span class="keywordflow">case</span> 4:
<a name="l03427"></a>03427         <span class="keywordflow">if</span> ( lastClickedItem-&gt;parent() )
<a name="l03428"></a>03428             temp = <span class="keyword">new</span> <a class="code" href="classKDGanttViewSummaryItem.html">KDGanttViewSummaryItem</a>( lastClickedItem-&gt;parent(), lastClickedItem, i18n( <span class="stringliteral">"New Summary"</span> ) );
<a name="l03429"></a>03429         <span class="keywordflow">else</span>
<a name="l03430"></a>03430             temp = <span class="keyword">new</span> <a class="code" href="classKDGanttViewSummaryItem.html">KDGanttViewSummaryItem</a>( mySignalSender, lastClickedItem, i18n( <span class="stringliteral">"New Summary"</span> ) );
<a name="l03431"></a>03431         <span class="keywordflow">break</span>;
<a name="l03432"></a>03432     <span class="keywordflow">case</span> 6:
<a name="l03433"></a>03433         <span class="keywordflow">if</span> ( lastClickedItem-&gt;parent() )
<a name="l03434"></a>03434             temp = <span class="keyword">new</span> <a class="code" href="classKDGanttViewTaskItem.html">KDGanttViewTaskItem</a>( lastClickedItem-&gt;parent(), lastClickedItem, i18n( <span class="stringliteral">"New Task"</span> ) );
<a name="l03435"></a>03435         <span class="keywordflow">else</span>
<a name="l03436"></a>03436             temp = <span class="keyword">new</span> <a class="code" href="classKDGanttViewTaskItem.html">KDGanttViewTaskItem</a>( mySignalSender, lastClickedItem, i18n( <span class="stringliteral">"New Task"</span> ) );
<a name="l03437"></a>03437         <span class="keywordflow">break</span>;
<a name="l03438"></a>03438 
<a name="l03439"></a>03439 
<a name="l03440"></a>03440     <span class="keywordflow">default</span>:
<a name="l03441"></a>03441         ;
<a name="l03442"></a>03442     }
<a name="l03443"></a>03443     <span class="keywordflow">if</span> ( temp )
<a name="l03444"></a>03444         mySignalSender-&gt;editItem( temp );
<a name="l03445"></a>03445 }
<a name="l03446"></a>03446 
<a name="l03447"></a>03447 <span class="keywordtype">void</span>  KDGanttCanvasView::drawToPainter ( QPainter * p )
<a name="l03448"></a>03448 {
<a name="l03449"></a>03449     drawContents ( p, 0, 0, canvas()-&gt;width(), canvas()-&gt;height() );
<a name="l03450"></a>03450 }
<a name="l03451"></a>03451 QString  KDGanttCanvasView::getToolTipText(QPoint p)
<a name="l03452"></a>03452 {
<a name="l03453"></a>03453     QCanvasItemList il = canvas()-&gt;collisions ( viewportToContents( p ));
<a name="l03454"></a>03454     QCanvasItemList::Iterator it;
<a name="l03455"></a>03455     <span class="keywordflow">for</span> ( it = il.begin(); it != il.end(); ++it ) {
<a name="l03456"></a>03456         <span class="keywordflow">switch</span> (getType(*it)) {
<a name="l03457"></a>03457         <span class="keywordflow">case</span> Type_is_KDGanttViewItem:
<a name="l03458"></a>03458             <span class="keywordflow">return</span> (<a class="code" href="classKDGanttViewItemDrag.html#2e40162971c445fd39f07e186192ac93">getItem</a>(*it))-&gt;tooltipText();
<a name="l03459"></a>03459             <span class="keywordflow">break</span>;
<a name="l03460"></a>03460         <span class="keywordflow">case</span> Type_is_KDGanttTaskLink:
<a name="l03461"></a>03461             <span class="keywordflow">return</span> (getLink(*it))-&gt;tooltipText();
<a name="l03462"></a>03462             <span class="keywordflow">break</span>;
<a name="l03463"></a>03463         <span class="keywordflow">default</span>:
<a name="l03464"></a>03464             <span class="keywordflow">break</span>;
<a name="l03465"></a>03465         }
<a name="l03466"></a>03466     }
<a name="l03467"></a>03467     <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
<a name="l03468"></a>03468 }
<a name="l03469"></a>03469 
<a name="l03470"></a>03470 QString  KDGanttCanvasView::getWhatsThisText(QPoint p)
<a name="l03471"></a>03471 {
<a name="l03472"></a>03472     QCanvasItemList il = canvas() -&gt;collisions (viewportToContents( p ));
<a name="l03473"></a>03473     QCanvasItemList::Iterator it;
<a name="l03474"></a>03474     <span class="keywordflow">for</span> ( it = il.begin(); it != il.end(); ++it ) {
<a name="l03475"></a>03475         <span class="keywordflow">switch</span> (getType(*it)) {
<a name="l03476"></a>03476         <span class="keywordflow">case</span> Type_is_KDGanttViewItem:
<a name="l03477"></a>03477             <span class="keywordflow">return</span> (<a class="code" href="classKDGanttViewItemDrag.html#2e40162971c445fd39f07e186192ac93">getItem</a>(*it))-&gt;whatsThisText();
<a name="l03478"></a>03478             <span class="keywordflow">break</span>;
<a name="l03479"></a>03479         <span class="keywordflow">case</span> Type_is_KDGanttTaskLink:
<a name="l03480"></a>03480             <span class="keywordflow">return</span> (getLink(*it))-&gt;whatsThisText();
<a name="l03481"></a>03481             <span class="keywordflow">break</span>;
<a name="l03482"></a>03482         <span class="keywordflow">default</span>:
<a name="l03483"></a>03483             <span class="keywordflow">break</span>;
<a name="l03484"></a>03484         }
<a name="l03485"></a>03485     }
<a name="l03486"></a>03486     <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
<a name="l03487"></a>03487 }
<a name="l03488"></a>03488 
<a name="l03489"></a>03489 
<a name="l03490"></a>03490 KDGanttCanvasView::MovingOperation KDGanttCanvasView::gvItemHitTest( <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a> *item, KDTimeHeaderWidget* timeHeader, <span class="keyword">const</span> QPoint &amp;pos )
<a name="l03491"></a>03491 {
<a name="l03492"></a>03492   <span class="keyword">const</span> <span class="keywordtype">int</span> left = timeHeader-&gt;getCoordX( item-&gt;<a class="code" href="classKDGanttViewItem.html#4c9a5cddca28053bbef9ade165ecda21">startTime</a>() );
<a name="l03493"></a>03493   <span class="keyword">const</span> <span class="keywordtype">int</span> right = timeHeader-&gt;getCoordX( item-&gt;<a class="code" href="classKDGanttViewItem.html#e4e511a8aaa5a145d52725aa6c34cdef">endTime</a>() );
<a name="l03494"></a>03494   <span class="keyword">const</span> <span class="keywordtype">int</span> width = right - left + 1;
<a name="l03495"></a>03495   <span class="keyword">const</span> <span class="keywordtype">int</span> x = pos.x();
<a name="l03496"></a>03496   <span class="keywordflow">if</span> ( x &lt; left + width / 10 )
<a name="l03497"></a>03497     <span class="keywordflow">return</span> KDGanttCanvasView::ResizingLeft;
<a name="l03498"></a>03498   <span class="keywordflow">if</span> ( x &gt; right - width / 10 )
<a name="l03499"></a>03499     <span class="keywordflow">return</span> KDGanttCanvasView::ResizingRight;
<a name="l03500"></a>03500   <span class="keywordflow">return</span> KDGanttCanvasView::Moving;
<a name="l03501"></a>03501 }
<a name="l03502"></a>03502 
<a name="l03510"></a>03510 <span class="keywordtype">void</span> KDGanttCanvasView::contentsMousePressEvent ( QMouseEvent * e )
<a name="l03511"></a>03511 {
<a name="l03512"></a>03512     <span class="comment">//qDebug("mousepress! %d ", this);</span>
<a name="l03513"></a>03513     <span class="comment">//qDebug("focus %d ",qApp-&gt;focusWidget());</span>
<a name="l03514"></a>03514     setFocus();
<a name="l03515"></a>03515     currentLink = 0;
<a name="l03516"></a>03516     currentItem = 0;
<a name="l03517"></a>03517     movingItem = 0;
<a name="l03518"></a>03518     mouseDown = <span class="keyword">true</span>;
<a name="l03519"></a>03519     <span class="keywordflow">if</span> (e-&gt;button() == RightButton &amp;&amp; mySignalSender-&gt;editable()) {
<a name="l03520"></a>03520         lastClickedItem = (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*) mySignalSender-&gt;myListView-&gt;itemAt( QPoint(2,e-&gt;pos().y()));
<a name="l03521"></a>03521         <span class="keywordflow">if</span> ( lastClickedItem ) {
<a name="l03522"></a>03522             <span class="keywordflow">if</span> ( lastClickedItem-&gt;displaySubitemsAsGroup() &amp;&amp; ! lastClickedItem-&gt;isOpen() ) {
<a name="l03523"></a>03523                 <span class="comment">// findSub subitem</span>
<a name="l03524"></a>03524                 QCanvasItemList il = canvas() -&gt;collisions ( e-&gt;pos() );
<a name="l03525"></a>03525                 QCanvasItemList::Iterator it;
<a name="l03526"></a>03526                 <span class="keywordflow">for</span> ( it = il.begin(); it != il.end(); ++it ) {
<a name="l03527"></a>03527                     <span class="keywordflow">if</span> ( getType(*it) == Type_is_KDGanttViewItem ) {
<a name="l03528"></a>03528                         lastClickedItem = <a class="code" href="classKDGanttViewItemDrag.html#2e40162971c445fd39f07e186192ac93">getItem</a>(*it);
<a name="l03529"></a>03529                     }
<a name="l03530"></a>03530                 }
<a name="l03531"></a>03531             }
<a name="l03532"></a>03532             <span class="keywordflow">if</span> ( _showItemAddPopupMenu  )
<a name="l03533"></a>03533                 onItem-&gt;popup(e-&gt;globalPos());
<a name="l03534"></a>03534         }
<a name="l03535"></a>03535     }
<a name="l03536"></a>03536     QCanvasItemList il = canvas() -&gt;collisions ( e-&gt;pos() );
<a name="l03537"></a>03537     QCanvasItemList::Iterator it;
<a name="l03538"></a>03538     <span class="keywordflow">for</span> ( it = il.begin(); it != il.end(); ++it ) {
<a name="l03539"></a>03539         <span class="keywordflow">switch</span> ( e-&gt;button() ) {
<a name="l03540"></a>03540         <span class="keywordflow">case</span> LeftButton:
<a name="l03541"></a>03541             <span class="keywordflow">switch</span> (getType(*it)) {
<a name="l03542"></a>03542             <span class="keywordflow">case</span> Type_is_KDGanttViewItem:
<a name="l03543"></a>03543                 currentItem = <a class="code" href="classKDGanttViewItemDrag.html#2e40162971c445fd39f07e186192ac93">getItem</a>(*it);
<a name="l03544"></a>03544                 <span class="keywordflow">if</span> (! currentItem-&gt;enabled() ) {
<a name="l03545"></a>03545                     currentItem = 0;
<a name="l03546"></a>03546                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (linkItemsEnabled &amp;&amp;
<a name="l03547"></a>03547                            !currentItem-&gt;isMyTextCanvas(*it)) {
<a name="l03548"></a>03548                     fromArea = getItemArea(currentItem, e-&gt;pos().x());
<a name="l03549"></a>03549                     <span class="keywordflow">if</span> (fromArea &gt; 0) {
<a name="l03550"></a>03550                         fromItem = currentItem;
<a name="l03551"></a>03551                         linkLine-&gt;setPoints(e-&gt;pos().x(), e-&gt;pos().y(), e-&gt;pos().x(), e-&gt;pos().y());
<a name="l03552"></a>03552                         linkLine-&gt;show();
<a name="l03553"></a>03553                     }
<a name="l03554"></a>03554                 }
<a name="l03555"></a>03555                 {
<a name="l03556"></a>03556                   KDCanvasRectangle *rect = <span class="keyword">dynamic_cast&lt;</span>KDCanvasRectangle*<span class="keyword">&gt;</span>( *it );
<a name="l03557"></a>03557                   <span class="keywordflow">if</span> ( rect ) {
<a name="l03558"></a>03558                     movingGVItem = <span class="keyword">dynamic_cast&lt;</span><a class="code" href="classKDGanttViewTaskItem.html">KDGanttViewTaskItem</a>*<span class="keyword">&gt;</span>( <a class="code" href="classKDGanttViewItemDrag.html#2e40162971c445fd39f07e186192ac93">getItem</a>( rect ) );
<a name="l03559"></a>03559                     <span class="keywordflow">if</span> ( movingGVItem ) {
<a name="l03560"></a>03560                       movingStart = e-&gt;pos();
<a name="l03561"></a>03561                       movingStartDate = movingGVItem-&gt;startTime();
<a name="l03562"></a>03562                       movingOperation = gvItemHitTest( movingGVItem, mySignalSender-&gt;myTimeHeader, e-&gt;pos() );
<a name="l03563"></a>03563                       <span class="keywordflow">if</span> ( movingOperation == Moving &amp;&amp; !movingGVItem-&gt;isMoveable() )
<a name="l03564"></a>03564                         movingGVItem = 0;
<a name="l03565"></a>03565                       <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( movingOperation != Moving &amp;&amp; !movingGVItem-&gt;isResizeable() )
<a name="l03566"></a>03566                         movingOperation = Moving;
<a name="l03567"></a>03567                     } <span class="keywordflow">else</span> {
<a name="l03568"></a>03568                       movingGVItem = 0;
<a name="l03569"></a>03569                     }
<a name="l03570"></a>03570                   }
<a name="l03571"></a>03571                 }
<a name="l03572"></a>03572                 <span class="keywordflow">break</span>;
<a name="l03573"></a>03573             <span class="keywordflow">case</span> Type_is_KDGanttTaskLink:
<a name="l03574"></a>03574                 currentLink = getLink(*it);
<a name="l03575"></a>03575                 <span class="keywordflow">break</span>;
<a name="l03576"></a>03576             <span class="keywordflow">case</span> Type_is_KDGanttGridItem:
<a name="l03577"></a>03577               <span class="keywordflow">if</span> ( (*it)-&gt;rtti() == KDIntervalColorRectangle::RTTI ) {
<a name="l03578"></a>03578                 <span class="comment">// Cleaner would be isMovable()/isResizeable() in an interface</span>
<a name="l03579"></a>03579                 <span class="comment">// implemented by all movable objects...</span>
<a name="l03580"></a>03580                 movingItem = <span class="keyword">static_cast&lt;</span>QCanvasRectangle *<span class="keyword">&gt;</span>(*it);
<a name="l03581"></a>03581                 movingStart = e-&gt;pos();
<a name="l03582"></a>03582                 KDIntervalColorRectangle* icr = <span class="keyword">static_cast&lt;</span>KDIntervalColorRectangle *<span class="keyword">&gt;</span>( movingItem );
<a name="l03583"></a>03583                 KDIntervalColorRectangle::HitTest hitTest = icr-&gt;hitTest( mySignalSender-&gt;myTimeHeader, movingStart );
<a name="l03584"></a>03584                 movingOperation = hitTest == KDIntervalColorRectangle::Start ? ResizingLeft :
<a name="l03585"></a>03585                                   hitTest == KDIntervalColorRectangle::End ? ResizingRight :
<a name="l03586"></a>03586                                   Moving;
<a name="l03587"></a>03587               }
<a name="l03588"></a>03588               <span class="keywordflow">break</span>;
<a name="l03589"></a>03589             <span class="keywordflow">default</span>:
<a name="l03590"></a>03590                 <span class="keywordflow">break</span>;
<a name="l03591"></a>03591             }
<a name="l03592"></a>03592             <span class="keywordflow">break</span>;
<a name="l03593"></a>03593         <span class="keywordflow">case</span> RightButton:
<a name="l03594"></a>03594             <span class="keywordflow">switch</span> (getType(*it)) {
<a name="l03595"></a>03595             <span class="keywordflow">case</span> Type_is_KDGanttViewItem:
<a name="l03596"></a>03596                 currentItem = <a class="code" href="classKDGanttViewItemDrag.html#2e40162971c445fd39f07e186192ac93">getItem</a>(*it);
<a name="l03597"></a>03597                 <span class="keywordflow">if</span> (! currentItem-&gt;enabled() )
<a name="l03598"></a>03598                     currentItem = 0;
<a name="l03599"></a>03599                 <span class="keywordflow">break</span>;
<a name="l03600"></a>03600             <span class="keywordflow">case</span> Type_is_KDGanttTaskLink:
<a name="l03601"></a>03601                 currentLink = getLink(*it);
<a name="l03602"></a>03602                 <span class="keywordflow">break</span>;
<a name="l03603"></a>03603             }
<a name="l03604"></a>03604             <span class="keywordflow">break</span>;
<a name="l03605"></a>03605         <span class="keywordflow">case</span> MidButton:
<a name="l03606"></a>03606             <span class="keywordflow">switch</span> (getType(*it)) {
<a name="l03607"></a>03607             <span class="keywordflow">case</span> Type_is_KDGanttViewItem:
<a name="l03608"></a>03608                 currentItem = <a class="code" href="classKDGanttViewItemDrag.html#2e40162971c445fd39f07e186192ac93">getItem</a>(*it);
<a name="l03609"></a>03609                 <span class="keywordflow">if</span> (! currentItem-&gt;enabled() )
<a name="l03610"></a>03610                     currentItem = 0;
<a name="l03611"></a>03611                 <span class="keywordflow">break</span>;
<a name="l03612"></a>03612             <span class="keywordflow">case</span> Type_is_KDGanttTaskLink:
<a name="l03613"></a>03613                 currentLink = getLink(*it);
<a name="l03614"></a>03614                 <span class="keywordflow">break</span>;
<a name="l03615"></a>03615             }
<a name="l03616"></a>03616             <span class="keywordflow">break</span>;
<a name="l03617"></a>03617         <span class="keywordflow">default</span>:
<a name="l03618"></a>03618             <span class="keywordflow">break</span>;
<a name="l03619"></a>03619         }
<a name="l03620"></a>03620     }
<a name="l03621"></a>03621     <span class="keywordflow">if</span> (e-&gt;button() == RightButton ) {
<a name="l03622"></a>03622         mySignalSender-&gt;gvContextMenuRequested( currentItem, e-&gt;globalPos() );
<a name="l03623"></a>03623     }
<a name="l03624"></a>03624     <span class="keywordflow">if</span> (autoScrollEnabled &amp;&amp; e-&gt;button() == LeftButton) {
<a name="l03625"></a>03625         myScrollTimer-&gt;start(50);
<a name="l03626"></a>03626     }
<a name="l03627"></a>03627 }
<a name="l03635"></a>03635 <span class="keywordtype">void</span> KDGanttCanvasView::contentsMouseReleaseEvent ( QMouseEvent * e )
<a name="l03636"></a>03636 {
<a name="l03637"></a>03637     mouseDown = <span class="keyword">false</span>;
<a name="l03638"></a>03638     <span class="keyword">static</span> <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>* lastClicked = 0;
<a name="l03639"></a>03639     mySignalSender-&gt;gvMouseButtonClicked( e-&gt;button(), currentItem ,  e-&gt;globalPos() );
<a name="l03640"></a>03640     <span class="comment">//qDebug("datetime %s ",mySignalSender-&gt;getDateTimeForCoordX(e-&gt;globalPos().x(), true ).toString().latin1() );</span>
<a name="l03641"></a>03641     <span class="comment">//qDebug("mousepos %d %d ",e-&gt;pos().x(),e-&gt;pos().y() );</span>
<a name="l03642"></a>03642     <span class="comment">//qDebug("mouseup ");</span>
<a name="l03643"></a>03643     <span class="comment">// if ( currentLink || currentItem )</span>
<a name="l03644"></a>03644     {
<a name="l03645"></a>03645         <span class="keywordflow">switch</span> ( e-&gt;button() ) {
<a name="l03646"></a>03646         <span class="keywordflow">case</span> LeftButton:
<a name="l03647"></a>03647             myScrollTimer-&gt;stop();
<a name="l03648"></a>03648             {
<a name="l03649"></a>03649                 mySignalSender-&gt;itemLeftClicked( currentItem );
<a name="l03650"></a>03650                 mySignalSender-&gt;gvItemLeftClicked( currentItem );
<a name="l03651"></a>03651             }
<a name="l03652"></a>03652             <span class="keywordflow">if</span> ( currentLink )
<a name="l03653"></a>03653                 mySignalSender-&gt;taskLinkLeftClicked( currentLink );
<a name="l03654"></a>03654             <span class="keywordflow">if</span> (linkItemsEnabled &amp;&amp; fromItem) {
<a name="l03655"></a>03655                 linkLine-&gt;hide();
<a name="l03656"></a>03656                 canvas()-&gt;update();
<a name="l03657"></a>03657                 QCanvasItemList il = canvas() -&gt;collisions ( e-&gt;pos() );
<a name="l03658"></a>03658                 QCanvasItemList::Iterator it;
<a name="l03659"></a>03659                 <span class="keywordflow">for</span> ( it = il.begin(); it != il.end(); ++it ) {
<a name="l03660"></a>03660                     <span class="keywordflow">if</span> (getType(*it) == Type_is_KDGanttViewItem) {
<a name="l03661"></a>03661                         <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a> *toItem = <a class="code" href="classKDGanttViewItemDrag.html#2e40162971c445fd39f07e186192ac93">getItem</a>(*it);
<a name="l03662"></a>03662                         <span class="keywordflow">if</span> (!toItem-&gt;<a class="code" href="classKDGanttViewItem.html#69393bf4852689c153e5b3cbd60bdf29">isMyTextCanvas</a>(*it)) {
<a name="l03663"></a>03663                             <span class="keywordtype">int</span> toArea = getItemArea(toItem, e-&gt;pos().x());
<a name="l03664"></a>03664                             <span class="keywordflow">if</span> (toArea &gt; 0 &amp;&amp; toItem &amp;&amp; fromItem != toItem) {
<a name="l03665"></a>03665                                 mySignalSender-&gt;linkItems(fromItem, toItem, getLinkType(fromArea, toArea));
<a name="l03666"></a>03666                             }
<a name="l03667"></a>03667                         }
<a name="l03668"></a>03668                         <span class="keywordflow">break</span>;
<a name="l03669"></a>03669                     }
<a name="l03670"></a>03670                 }
<a name="l03671"></a>03671             }
<a name="l03672"></a>03672             fromItem = 0;
<a name="l03673"></a>03673             <span class="keywordflow">if</span> ( movingGVItem ) {
<a name="l03674"></a>03674               mySignalSender-&gt;gvItemMoved( movingGVItem );
<a name="l03675"></a>03675               movingGVItem = 0;
<a name="l03676"></a>03676             }
<a name="l03677"></a>03677             <span class="keywordflow">break</span>;
<a name="l03678"></a>03678         <span class="keywordflow">case</span> RightButton:
<a name="l03679"></a>03679             {
<a name="l03680"></a>03680                 mySignalSender-&gt;itemRightClicked( currentItem );
<a name="l03681"></a>03681                 mySignalSender-&gt;gvItemRightClicked( currentItem );
<a name="l03682"></a>03682 
<a name="l03683"></a>03683             }
<a name="l03684"></a>03684             <span class="keywordflow">if</span> ( currentLink )
<a name="l03685"></a>03685                 mySignalSender-&gt;taskLinkRightClicked( currentLink );
<a name="l03686"></a>03686             <span class="keywordflow">break</span>;
<a name="l03687"></a>03687         <span class="keywordflow">case</span> MidButton:
<a name="l03688"></a>03688             {
<a name="l03689"></a>03689                 mySignalSender-&gt;itemMidClicked( currentItem );
<a name="l03690"></a>03690                 mySignalSender-&gt;gvItemMidClicked( currentItem );
<a name="l03691"></a>03691             }
<a name="l03692"></a>03692             <span class="keywordflow">if</span> ( currentLink )
<a name="l03693"></a>03693                 mySignalSender-&gt;taskLinkRightClicked( currentLink );
<a name="l03694"></a>03694             <span class="keywordflow">break</span>;
<a name="l03695"></a>03695         <span class="keywordflow">default</span>:
<a name="l03696"></a>03696             <span class="keywordflow">break</span>;
<a name="l03697"></a>03697         }
<a name="l03698"></a>03698     }
<a name="l03699"></a>03699     <span class="keywordflow">if</span> ( lastClicked != currentItem )
<a name="l03700"></a>03700         mySignalSender-&gt;gvCurrentChanged( currentItem );
<a name="l03701"></a>03701     lastClicked = currentItem;
<a name="l03702"></a>03702     currentLink = 0;
<a name="l03703"></a>03703     currentItem = 0;
<a name="l03704"></a>03704 }
<a name="l03712"></a>03712 <span class="keywordtype">void</span> KDGanttCanvasView::contentsMouseDoubleClickEvent ( QMouseEvent * e )
<a name="l03713"></a>03713 {
<a name="l03714"></a>03714     QCanvasItemList il = canvas() -&gt;collisions ( e-&gt;pos() );
<a name="l03715"></a>03715 
<a name="l03716"></a>03716     <span class="keywordflow">if</span> ( il.isEmpty() &amp;&amp; e-&gt;button() == LeftButton ) {
<a name="l03717"></a>03717         <span class="comment">//not directly sending a signal here (encapsulation and whatnot)</span>
<a name="l03718"></a>03718         mySignalSender-&gt;emptySpaceDoubleClicked(e);
<a name="l03719"></a>03719         <span class="keywordflow">return</span>;
<a name="l03720"></a>03720     }
<a name="l03721"></a>03721 
<a name="l03722"></a>03722     QCanvasItemList::Iterator it;
<a name="l03723"></a>03723     <span class="keywordflow">for</span> ( it = il.begin(); it != il.end(); ++it ) {
<a name="l03724"></a>03724         <span class="keywordflow">switch</span> ( e-&gt;button() ) {
<a name="l03725"></a>03725         <span class="keywordflow">case</span> LeftButton:
<a name="l03726"></a>03726             <span class="keywordflow">switch</span> (getType(*it)) {
<a name="l03727"></a>03727             <span class="keywordflow">case</span> Type_is_KDGanttViewItem:
<a name="l03728"></a>03728                 <span class="keywordflow">if</span> ( <a class="code" href="classKDGanttViewItemDrag.html#2e40162971c445fd39f07e186192ac93">getItem</a>(*it)-&gt;<a class="code" href="classKDGanttViewItem.html#2cd6dedd3b5651424999b45e4eeda0f7">enabled</a>() )
<a name="l03729"></a>03729                     mySignalSender-&gt;itemDoubleClicked(<a class="code" href="classKDGanttViewItemDrag.html#2e40162971c445fd39f07e186192ac93">getItem</a>(*it));
<a name="l03730"></a>03730                 mySignalSender-&gt;gvItemDoubleClicked(<a class="code" href="classKDGanttViewItemDrag.html#2e40162971c445fd39f07e186192ac93">getItem</a>(*it));
<a name="l03731"></a>03731                 <span class="keywordflow">return</span>;
<a name="l03732"></a>03732                 <span class="keywordflow">break</span>;
<a name="l03733"></a>03733             <span class="keywordflow">case</span> Type_is_KDGanttTaskLink:
<a name="l03734"></a>03734                 mySignalSender-&gt;taskLinkDoubleClicked(getLink(*it));
<a name="l03735"></a>03735                 <span class="keywordflow">return</span>;
<a name="l03736"></a>03736                 <span class="keywordflow">break</span>;
<a name="l03737"></a>03737             <span class="keywordflow">default</span>:
<a name="l03738"></a>03738                 <span class="keywordflow">break</span>;
<a name="l03739"></a>03739             }
<a name="l03740"></a>03740             <span class="keywordflow">break</span>;
<a name="l03741"></a>03741             <span class="comment">/*</span>
<a name="l03742"></a>03742 <span class="comment">              case RightButton:</span>
<a name="l03743"></a>03743 <span class="comment">              switch (getType(*it)) {</span>
<a name="l03744"></a>03744 <span class="comment">              case Type_is_KDGanttViewItem:</span>
<a name="l03745"></a>03745 <span class="comment">              mySignalSender-&gt;itemRightClicked(getItem(*it));</span>
<a name="l03746"></a>03746 <span class="comment">              return;</span>
<a name="l03747"></a>03747 <span class="comment">              break;</span>
<a name="l03748"></a>03748 <span class="comment">              case Type_is_KDGanttTaskLink:</span>
<a name="l03749"></a>03749 <span class="comment">              mySignalSender-&gt;taskLinkRightClicked(getLink(*it));</span>
<a name="l03750"></a>03750 <span class="comment">              return;</span>
<a name="l03751"></a>03751 <span class="comment">              break;</span>
<a name="l03752"></a>03752 <span class="comment">              }</span>
<a name="l03753"></a>03753 <span class="comment">              break;</span>
<a name="l03754"></a>03754 <span class="comment">              case MidButton:</span>
<a name="l03755"></a>03755 <span class="comment">              switch (getType(*it)) {</span>
<a name="l03756"></a>03756 <span class="comment">              case Type_is_KDGanttViewItem:</span>
<a name="l03757"></a>03757 <span class="comment">              mySignalSender-&gt;itemMidClicked(getItem(*it));</span>
<a name="l03758"></a>03758 <span class="comment">              return;</span>
<a name="l03759"></a>03759 <span class="comment">              break;</span>
<a name="l03760"></a>03760 <span class="comment">              case Type_is_KDGanttTaskLink:</span>
<a name="l03761"></a>03761 <span class="comment">              mySignalSender-&gt;taskLinkMidClicked(getLink(*it));</span>
<a name="l03762"></a>03762 <span class="comment">              return;</span>
<a name="l03763"></a>03763 <span class="comment">              break;</span>
<a name="l03764"></a>03764 <span class="comment">              }</span>
<a name="l03765"></a>03765 <span class="comment">              break;</span>
<a name="l03766"></a>03766 <span class="comment">            */</span>
<a name="l03767"></a>03767         <span class="keywordflow">default</span>:
<a name="l03768"></a>03768             <span class="keywordflow">break</span>;
<a name="l03769"></a>03769         }
<a name="l03770"></a>03770     }
<a name="l03771"></a>03771 }
<a name="l03779"></a>03779 <span class="keywordtype">void</span> KDGanttCanvasView::contentsMouseMoveEvent ( QMouseEvent *e )
<a name="l03780"></a>03780 {
<a name="l03781"></a>03781     <span class="keywordflow">if</span> ( !mouseDown ) {
<a name="l03782"></a>03782       <span class="comment">// Update cursor</span>
<a name="l03783"></a>03783       <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;
<a name="l03784"></a>03784       QCanvasItemList il = canvas() -&gt;collisions ( e-&gt;pos() );
<a name="l03785"></a>03785       QCanvasItemList::Iterator it;
<a name="l03786"></a>03786       <span class="keywordflow">for</span> ( it = il.begin(); it != il.end(); ++it ) {
<a name="l03787"></a>03787         <span class="keywordflow">if</span> ( (*it)-&gt;rtti() == KDIntervalColorRectangle::RTTI ) {
<a name="l03788"></a>03788           found = <span class="keyword">true</span>;
<a name="l03789"></a>03789           KDIntervalColorRectangle* icr = <span class="keyword">static_cast&lt;</span>KDIntervalColorRectangle *<span class="keyword">&gt;</span>( *it );
<a name="l03790"></a>03790           KDIntervalColorRectangle::HitTest hitTest = icr-&gt;hitTest( mySignalSender-&gt;myTimeHeader, e-&gt;pos() );
<a name="l03791"></a>03791           <span class="keywordflow">switch</span> ( hitTest ) {
<a name="l03792"></a>03792           <span class="keywordflow">case</span> KDIntervalColorRectangle::Start:
<a name="l03793"></a>03793           <span class="keywordflow">case</span> KDIntervalColorRectangle::End:
<a name="l03794"></a>03794             setCursor( splitHCursor );
<a name="l03795"></a>03795             <span class="keywordflow">break</span>;
<a name="l03796"></a>03796           <span class="keywordflow">default</span>:
<a name="l03797"></a>03797             unsetCursor();
<a name="l03798"></a>03798           }
<a name="l03799"></a>03799         }
<a name="l03800"></a>03800         <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a> *gvItem = <a class="code" href="classKDGanttViewItemDrag.html#2e40162971c445fd39f07e186192ac93">getItem</a>( *it );
<a name="l03801"></a>03801         <span class="keywordflow">if</span> ( dynamic_cast&lt;KDGanttViewTaskItem*&gt;( gvItem ) ) {
<a name="l03802"></a>03802           found = <span class="keyword">true</span>;
<a name="l03803"></a>03803           MovingOperation op = gvItemHitTest( gvItem, mySignalSender-&gt;myTimeHeader, e-&gt;pos() );
<a name="l03804"></a>03804           <span class="keywordflow">switch</span> ( op ) {
<a name="l03805"></a>03805             <span class="keywordflow">case</span> ResizingLeft:
<a name="l03806"></a>03806             <span class="keywordflow">case</span> ResizingRight:
<a name="l03807"></a>03807               <span class="keywordflow">if</span> ( gvItem-&gt;<a class="code" href="classKDGanttViewItem.html#ddae26469ddd46e99d40e84290b4e784">isResizeable</a>() )
<a name="l03808"></a>03808                 setCursor( splitHCursor );
<a name="l03809"></a>03809               <span class="keywordflow">break</span>;
<a name="l03810"></a>03810             <span class="keywordflow">default</span>:
<a name="l03811"></a>03811               unsetCursor();
<a name="l03812"></a>03812           }
<a name="l03813"></a>03813         }
<a name="l03814"></a>03814       }
<a name="l03815"></a>03815       <span class="keywordflow">if</span> ( !found )
<a name="l03816"></a>03816         unsetCursor();
<a name="l03817"></a>03817       <span class="keywordflow">return</span>;
<a name="l03818"></a>03818     }
<a name="l03819"></a>03819 
<a name="l03820"></a>03820     <span class="keyword">const</span> QPoint p = e-&gt;pos();
<a name="l03821"></a>03821     <span class="keywordflow">if</span> ( movingItem ) {
<a name="l03822"></a>03822       <span class="keywordtype">int</span> x = qRound( movingItem-&gt;x() );
<a name="l03823"></a>03823       <span class="keywordtype">int</span> width = movingItem-&gt;width();
<a name="l03824"></a>03824       <span class="keywordflow">switch</span>( movingOperation ) {
<a name="l03825"></a>03825       <span class="keywordflow">case</span> Moving:
<a name="l03826"></a>03826         x += p.x() - movingStart.x();
<a name="l03827"></a>03827         <span class="keywordflow">break</span>;
<a name="l03828"></a>03828       <span class="keywordflow">case</span> ResizingLeft: {
<a name="l03829"></a>03829         width = qRound( movingItem-&gt;x() + movingItem-&gt;width() - p.x() );
<a name="l03830"></a>03830         x = p.x();
<a name="l03831"></a>03831         <span class="keywordflow">break</span>;
<a name="l03832"></a>03832       }
<a name="l03833"></a>03833       <span class="keywordflow">case</span> ResizingRight:
<a name="l03834"></a>03834         width = p.x() - x;
<a name="l03835"></a>03835         <span class="keywordflow">break</span>;
<a name="l03836"></a>03836       }
<a name="l03837"></a>03837       movingStart = p;
<a name="l03838"></a>03838       <span class="keywordflow">if</span> ( movingItem-&gt;rtti() == KDIntervalColorRectangle::RTTI ) {
<a name="l03839"></a>03839         KDIntervalColorRectangle* icr = <span class="keyword">static_cast&lt;</span>KDIntervalColorRectangle *<span class="keyword">&gt;</span>(movingItem);
<a name="l03840"></a>03840         <span class="keyword">const</span> QDateTime newStart = mySignalSender-&gt;myTimeHeader-&gt;getDateTimeForIndex(x);
<a name="l03841"></a>03841         <span class="keyword">const</span> QDateTime newEnd = mySignalSender-&gt;myTimeHeader-&gt;getDateTimeForIndex(x + width);
<a name="l03842"></a>03842         icr-&gt;setDateTimes( newStart, newEnd );
<a name="l03843"></a>03843         emit mySignalSender-&gt;intervalColorRectangleMoved( newStart, newEnd );
<a name="l03844"></a>03844         mySignalSender-&gt;myTimeHeader-&gt;computeIntervals( movingItem-&gt;height() );
<a name="l03845"></a>03845       }
<a name="l03846"></a>03846       canvas()-&gt;update();
<a name="l03847"></a>03847     }
<a name="l03848"></a>03848 
<a name="l03849"></a>03849     <span class="keywordflow">if</span> ( movingGVItem ) {
<a name="l03850"></a>03850       <span class="keywordtype">int</span> dx = movingStart.x() - e-&gt;pos().x();
<a name="l03851"></a>03851       <span class="keywordtype">int</span> x = movingGVItem-&gt;middleLeft().x() - dx;
<a name="l03852"></a>03852       QDateTime dt = mySignalSender-&gt;getDateTimeForCoordX( x, <span class="keyword">false</span> );
<a name="l03853"></a>03853       <span class="keywordtype">int</span> duration = movingGVItem-&gt;startTime().secsTo( movingGVItem-&gt;endTime() );
<a name="l03854"></a>03854       <span class="keywordflow">if</span> ( movingOperation == Moving ) {
<a name="l03855"></a>03855         movingGVItem-&gt;setStartTime( dt );
<a name="l03856"></a>03856         movingGVItem-&gt;setEndTime( dt.addSecs( duration ) );
<a name="l03857"></a>03857       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( movingOperation == ResizingLeft ) {
<a name="l03858"></a>03858         movingGVItem-&gt;setStartTime( dt );
<a name="l03859"></a>03859       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( movingOperation == ResizingRight ) {
<a name="l03860"></a>03860         movingGVItem-&gt;setEndTime( dt.addSecs( duration ) );
<a name="l03861"></a>03861       }
<a name="l03862"></a>03862       movingStart = e-&gt;pos();
<a name="l03863"></a>03863     }
<a name="l03864"></a>03864 
<a name="l03865"></a>03865     <span class="keyword">static</span> <span class="keywordtype">int</span> moves = 0;
<a name="l03866"></a>03866     <span class="keywordflow">if</span> ( (currentLink || currentItem) &amp;&amp; (moves &lt; 3) ) {
<a name="l03867"></a>03867         ++moves;
<a name="l03868"></a>03868     } <span class="keywordflow">else</span> {
<a name="l03869"></a>03869         moves = 0;
<a name="l03870"></a>03870         currentLink = 0;
<a name="l03871"></a>03871         currentItem = 0;
<a name="l03872"></a>03872     }
<a name="l03873"></a>03873     <span class="keywordflow">if</span> (autoScrollEnabled)
<a name="l03874"></a>03874         mousePos = e-&gt;pos()- QPoint(contentsX(),contentsY()); <span class="comment">// make mousePos relative 0</span>
<a name="l03875"></a>03875     <span class="keywordflow">if</span> (fromItem) {
<a name="l03876"></a>03876         <span class="comment">//qDebug("mousemove: linking %s: %d,%d ",fromItem-&gt;listViewText().latin1(), e-&gt;pos().x(), e-&gt;pos().y());</span>
<a name="l03877"></a>03877         linkLine-&gt;setPoints(linkLine-&gt;startPoint().x(), linkLine-&gt;startPoint().y(), e-&gt;pos().x(), e-&gt;pos().y());
<a name="l03878"></a>03878         canvas()-&gt;update();
<a name="l03879"></a>03879     }
<a name="l03880"></a>03880     <span class="comment">// no action implemented</span>
<a name="l03881"></a>03881 }
<a name="l03882"></a>03882 <span class="keywordtype">void</span> KDGanttCanvasView::viewportPaintEvent ( QPaintEvent * pe )
<a name="l03883"></a>03883 {
<a name="l03884"></a>03884     QCanvasView::viewportPaintEvent ( pe );
<a name="l03885"></a>03885 }
<a name="l03886"></a>03886 <span class="keywordtype">void</span> KDGanttCanvasView::set_Mouse_Tracking(<span class="keywordtype">bool</span> on)
<a name="l03887"></a>03887 {
<a name="l03888"></a>03888     viewport()-&gt;setMouseTracking(on);
<a name="l03889"></a>03889 }
<a name="l03890"></a>03890 <span class="keywordtype">int</span>  KDGanttCanvasView::getType(QCanvasItem* it)
<a name="l03891"></a>03891 {
<a name="l03892"></a>03892     <span class="keywordflow">switch</span> (it-&gt;rtti()) {
<a name="l03893"></a>03893     <span class="keywordflow">case</span> QCanvasItem::Rtti_Line: <span class="keywordflow">return</span> ((KDCanvasLine*)it)-&gt;myParentType;
<a name="l03894"></a>03894     <span class="keywordflow">case</span> QCanvasItem::Rtti_Ellipse: <span class="keywordflow">return</span> ((KDCanvasEllipse *)it)-&gt;myParentType;
<a name="l03895"></a>03895     <span class="keywordflow">case</span> QCanvasItem::Rtti_Text: <span class="keywordflow">return</span> ((KDCanvasText *)it)-&gt;myParentType;
<a name="l03896"></a>03896     <span class="keywordflow">case</span> QCanvasItem::Rtti_Polygon: <span class="keywordflow">return</span> ((KDCanvasPolygon *)it)-&gt;myParentType;
<a name="l03897"></a>03897     <span class="keywordflow">case</span> QCanvasItem::Rtti_Rectangle:
<a name="l03898"></a>03898     <span class="keywordflow">case</span> KDIntervalColorRectangle::RTTI:
<a name="l03899"></a>03899       <span class="keywordflow">return</span> ((KDCanvasRectangle *)it)-&gt;myParentType;
<a name="l03900"></a>03900     }
<a name="l03901"></a>03901     <span class="keywordflow">return</span> -1;
<a name="l03902"></a>03902 }
<a name="l03903"></a>03903 <a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*  KDGanttCanvasView::getItem(QCanvasItem* it)
<a name="l03904"></a>03904 {
<a name="l03905"></a>03905     <span class="keywordflow">switch</span> (it-&gt;rtti()) {
<a name="l03906"></a>03906     <span class="keywordflow">case</span> QCanvasItem::Rtti_Line: <span class="keywordflow">return</span> (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*)  ((KDCanvasLine*)it)-&gt;myParentItem;
<a name="l03907"></a>03907     <span class="keywordflow">case</span> QCanvasItem::Rtti_Ellipse: <span class="keywordflow">return</span> (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*)  ((KDCanvasEllipse *)it)-&gt;myParentItem;
<a name="l03908"></a>03908     <span class="keywordflow">case</span> QCanvasItem::Rtti_Text: <span class="keywordflow">return</span> (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*) ((KDCanvasText *)it)-&gt;myParentItem;
<a name="l03909"></a>03909     <span class="keywordflow">case</span> QCanvasItem::Rtti_Polygon: <span class="keywordflow">return</span> (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*) ((KDCanvasPolygon *)it)-&gt;myParentItem;
<a name="l03910"></a>03910     <span class="keywordflow">case</span> QCanvasItem::Rtti_Rectangle: <span class="keywordflow">return</span> (<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a>*) ((KDCanvasRectangle *)it)-&gt;myParentItem;
<a name="l03911"></a>03911 
<a name="l03912"></a>03912     }
<a name="l03913"></a>03913     <span class="keywordflow">return</span> 0;
<a name="l03914"></a>03914 }
<a name="l03915"></a>03915 <a class="code" href="classKDGanttViewTaskLink.html">KDGanttViewTaskLink</a>*  KDGanttCanvasView::getLink(QCanvasItem* it)
<a name="l03916"></a>03916 {
<a name="l03917"></a>03917     <span class="keywordflow">switch</span> (it-&gt;rtti()) {
<a name="l03918"></a>03918     <span class="keywordflow">case</span> QCanvasItem::Rtti_Line: <span class="keywordflow">return</span> (<a class="code" href="classKDGanttViewTaskLink.html">KDGanttViewTaskLink</a>*)  ((KDCanvasLine*)it)-&gt;myParentItem;
<a name="l03919"></a>03919     <span class="keywordflow">case</span> QCanvasItem::Rtti_Ellipse: <span class="keywordflow">return</span> (<a class="code" href="classKDGanttViewTaskLink.html">KDGanttViewTaskLink</a>*)  ((KDCanvasEllipse *)it)-&gt;myParentItem;
<a name="l03920"></a>03920     <span class="keywordflow">case</span> QCanvasItem::Rtti_Text: <span class="keywordflow">return</span> (<a class="code" href="classKDGanttViewTaskLink.html">KDGanttViewTaskLink</a>*) ((KDCanvasText *)it)-&gt;myParentItem;
<a name="l03921"></a>03921     <span class="keywordflow">case</span> QCanvasItem::Rtti_Polygon: <span class="keywordflow">return</span> (<a class="code" href="classKDGanttViewTaskLink.html">KDGanttViewTaskLink</a>*) ((KDCanvasPolygon *)it)-&gt;myParentItem;
<a name="l03922"></a>03922     }
<a name="l03923"></a>03923     <span class="keywordflow">return</span> 0;
<a name="l03924"></a>03924 }
<a name="l03925"></a>03925 
<a name="l03926"></a>03926 <span class="keywordtype">void</span> KDGanttCanvasView::slotScrollTimer() {
<a name="l03927"></a>03927     <span class="keywordtype">int</span> mx = mousePos.x();
<a name="l03928"></a>03928     <span class="keywordtype">int</span> my = mousePos.y();
<a name="l03929"></a>03929     <span class="keywordtype">int</span> dx = 0;
<a name="l03930"></a>03930     <span class="keywordtype">int</span> dy = 0;
<a name="l03931"></a>03931     <span class="keywordflow">if</span> (mx &lt; 0)
<a name="l03932"></a>03932         dx = -5;
<a name="l03933"></a>03933     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mx &gt; visibleWidth())
<a name="l03934"></a>03934         dx = 5;
<a name="l03935"></a>03935     <span class="keywordflow">if</span> (my &lt; 0)
<a name="l03936"></a>03936         dy = -5;
<a name="l03937"></a>03937     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (my &gt; visibleHeight())
<a name="l03938"></a>03938         dy = QMIN(5, verticalScrollBar()-&gt;maxValue()-verticalScrollBar()-&gt;value());
<a name="l03939"></a>03939 
<a name="l03940"></a>03940     <span class="keywordflow">if</span> (dx != 0 || dy != 0)
<a name="l03941"></a>03941         scrollBy(dx, dy);
<a name="l03942"></a>03942 }
<a name="l03943"></a>03943 
<a name="l03944"></a>03944 <span class="keywordtype">int</span> KDGanttCanvasView::getItemArea(<a class="code" href="classKDGanttViewItem.html">KDGanttViewItem</a> *item, <span class="keywordtype">int</span> x) {
<a name="l03945"></a>03945     <span class="comment">// area can be: no area = 0, Start = 1, Finish = 2</span>
<a name="l03946"></a>03946     <span class="comment">// TODO: middle (move, dnd), front, back (resize)</span>
<a name="l03947"></a>03947     KDTimeTableWidget *tt = <span class="keyword">dynamic_cast&lt;</span>KDTimeTableWidget *<span class="keyword">&gt;</span>(canvas());
<a name="l03948"></a>03948     <span class="keywordflow">if</span> (!tt) {
<a name="l03949"></a>03949         qWarning(<span class="stringliteral">"Cannot cast canvas to KDTimeTableWidget"</span>);
<a name="l03950"></a>03950         <span class="keywordflow">return</span> 0;
<a name="l03951"></a>03951     }
<a name="l03952"></a>03952     <span class="keywordtype">int</span> area = 0;
<a name="l03953"></a>03953     <span class="keywordtype">int</span> start = tt-&gt;getCoordX(item-&gt;<a class="code" href="classKDGanttViewItem.html#4c9a5cddca28053bbef9ade165ecda21">startTime</a>());
<a name="l03954"></a>03954     <span class="keywordtype">int</span> end = start;
<a name="l03955"></a>03955     <span class="keywordflow">if</span> (item-&gt;<a class="code" href="classKDGanttViewItem.html#2231811406d35ff1731bbdbb9b57454a">type</a>() == KDGanttViewItem::Event) {
<a name="l03956"></a>03956         x &gt; start ? area = 2 : area = 1;
<a name="l03957"></a>03957     } <span class="keywordflow">else</span> {
<a name="l03958"></a>03958         end = tt-&gt;getCoordX(item-&gt;<a class="code" href="classKDGanttViewItem.html#e4e511a8aaa5a145d52725aa6c34cdef">endTime</a>());
<a name="l03959"></a>03959         <span class="keywordflow">if</span> ((end - start)/2 &gt; (x - start))
<a name="l03960"></a>03960             area = 1;
<a name="l03961"></a>03961         <span class="keywordflow">else</span>
<a name="l03962"></a>03962             area = 2;
<a name="l03963"></a>03963     }
<a name="l03964"></a>03964     <span class="keywordflow">return</span> area;
<a name="l03965"></a>03965 }
<a name="l03966"></a>03966 
<a name="l03967"></a>03967 <span class="keywordtype">int</span> KDGanttCanvasView::getLinkType(<span class="keywordtype">int</span> from, <span class="keywordtype">int</span> to) {
<a name="l03968"></a>03968     <span class="comment">// from, to should be Start = 1 or Finish = 2</span>
<a name="l03969"></a>03969     <span class="keywordflow">if</span> ((from == 1) &amp;&amp; (to == 1)) {
<a name="l03970"></a>03970         <span class="keywordflow">return</span> KDGanttViewTaskLink::StartStart;
<a name="l03971"></a>03971     }
<a name="l03972"></a>03972     <span class="keywordflow">if</span> ((from == 1) &amp;&amp; (to == 2)) {
<a name="l03973"></a>03973         <span class="keywordflow">return</span> KDGanttViewTaskLink::StartFinish;
<a name="l03974"></a>03974     }
<a name="l03975"></a>03975     <span class="keywordflow">if</span> ((from == 2) &amp;&amp; (to == 1)) {
<a name="l03976"></a>03976         <span class="keywordflow">return</span> KDGanttViewTaskLink::FinishStart;
<a name="l03977"></a>03977     }
<a name="l03978"></a>03978     <span class="keywordflow">if</span> ((from == 2) &amp;&amp; (to == 2)) {
<a name="l03979"></a>03979         <span class="keywordflow">return</span> KDGanttViewTaskLink::FinishFinish;
<a name="l03980"></a>03980     }
<a name="l03981"></a>03981     <span class="keywordflow">return</span> KDGanttViewTaskLink::None;
<a name="l03982"></a>03982 }
<a name="l03983"></a>03983 
<a name="l03989"></a>03989 KDIntervalColorRectangle::KDIntervalColorRectangle( <a class="code" href="classKDGanttView.html">KDGanttView</a>* view )
<a name="l03990"></a>03990   : KDCanvasRectangle( view-&gt;timeTableWidget(), 0, Type_is_KDGanttGridItem ),
<a name="l03991"></a>03991   mStart(), mEnd()
<a name="l03992"></a>03992 {
<a name="l03993"></a>03993   setZ( -19 );
<a name="l03994"></a>03994 }
<a name="l03995"></a>03995 
<a name="l04000"></a>04000 <span class="keywordtype">void</span> KDIntervalColorRectangle::setDateTimes( <span class="keyword">const</span> QDateTime&amp; start,
<a name="l04001"></a>04001                                              <span class="keyword">const</span> QDateTime&amp; end )
<a name="l04002"></a>04002 {
<a name="l04003"></a>04003   mStart = start;
<a name="l04004"></a>04004   mEnd = end;
<a name="l04005"></a>04005   <span class="keywordflow">if</span> ( mEnd &lt; mStart )
<a name="l04006"></a>04006     qSwap( mStart, mEnd );
<a name="l04007"></a>04007 }
<a name="l04008"></a>04008 
<a name="l04013"></a>04013 <span class="keywordtype">void</span> KDIntervalColorRectangle::setColor( <span class="keyword">const</span> QColor&amp; color )
<a name="l04014"></a>04014 {
<a name="l04015"></a>04015   mColor = color;
<a name="l04016"></a>04016 }
<a name="l04017"></a>04017 
<a name="l04021"></a>04021 <span class="keywordtype">void</span> KDIntervalColorRectangle::layout( KDTimeHeaderWidget* timeHeader, <span class="keywordtype">int</span> height )
<a name="l04022"></a>04022 {
<a name="l04023"></a>04023   <span class="keywordtype">int</span> left = timeHeader-&gt;getCoordX(mStart);
<a name="l04024"></a>04024   <span class="keywordtype">int</span> right = timeHeader-&gt;getCoordX(mEnd);
<a name="l04025"></a>04025   <span class="keywordflow">if</span> ( right == left )
<a name="l04026"></a>04026     ++right;
<a name="l04027"></a>04027   setPen( QPen::NoPen );
<a name="l04028"></a>04028   setBrush( QBrush(mColor, SolidPattern) );
<a name="l04029"></a>04029   setSize( right - left, height );
<a name="l04030"></a>04030   move( left, 0 );
<a name="l04031"></a>04031   show();
<a name="l04032"></a>04032 }
<a name="l04033"></a>04033 
<a name="l04037"></a>04037 KDIntervalColorRectangle::HitTest KDIntervalColorRectangle::hitTest( KDTimeHeaderWidget* timeHeader, <span class="keyword">const</span> QPoint&amp; pos )<span class="keyword"> const</span>
<a name="l04038"></a>04038 <span class="keyword"></span>{
<a name="l04039"></a>04039   <span class="keyword">const</span> <span class="keywordtype">int</span> left = timeHeader-&gt;getCoordX(mStart);
<a name="l04040"></a>04040   <span class="keyword">const</span> <span class="keywordtype">int</span> right = timeHeader-&gt;getCoordX(mEnd);
<a name="l04041"></a>04041   <span class="keyword">const</span> <span class="keywordtype">int</span> width = right - left + 1;
<a name="l04042"></a>04042   <span class="keyword">const</span> <span class="keywordtype">int</span> x = pos.x();
<a name="l04043"></a>04043   <span class="keywordflow">if</span> ( x &lt; left + width / 10 )
<a name="l04044"></a>04044     <span class="keywordflow">return</span> Start;
<a name="l04045"></a>04045   <span class="keywordflow">if</span> ( x &gt; right - width / 10 )
<a name="l04046"></a>04046     <span class="keywordflow">return</span> End;
<a name="l04047"></a>04047   <span class="keywordflow">return</span> Middle;
<a name="l04048"></a>04048 }
</pre></div></div>
    </div></div>


      </td>
  </tr>
  <tr>
    <td valign="top" id="leftmenu" width="25%">
      <a name="navigation"></a>
      <div class="menu_box"><h2>kdgantt</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><li><a href="pages.html">Related Pages</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="classKDGanttMinimizeSplitter.html">kdganttminimizesplitter</option>,  <option value="classKDGanttSemiSizingControl.html">kdganttsemisizingcontrol</option>,  <option value="classKDGanttSizingControl.html">kdganttsizingcontrol</option>,  <option value="classKDGanttView.html">kdganttview</option>,  <option value="classKDGanttViewEventItem.html">kdganttvieweventitem</option>,  <option value="classKDGanttViewItem.html">kdganttviewitem</option>,  <option value="classKDGanttViewItemDrag.html">kdganttviewitemdrag</option>,  <option value="classKDGanttViewSummaryItem.html">kdganttviewsummaryitem</option>,  <option value="classKDGanttViewTaskItem.html">kdganttviewtaskitem</option>,  <option value="classKDGanttViewTaskLink.html">kdganttviewtasklink</option>,  <option value="classKDGanttViewTaskLinkGroup.html">kdganttviewtasklinkgroup</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>