Sophie

Sophie

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

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


<!-- Generated by Doxygen 1.5.5 -->
<h1>calprintpluginbase.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment">    This file is part of KOrganizer.</span>
<a name="l00003"></a>00003 <span class="comment"></span>
<a name="l00004"></a>00004 <span class="comment">    Copyright (c) 1998 Preston Brown &lt;pbrown@kde.org&gt;</span>
<a name="l00005"></a>00005 <span class="comment">    Copyright (c) 2003 Reinhold Kainhofer &lt;reinhold@kainhofer.com&gt;</span>
<a name="l00006"></a>00006 <span class="comment"></span>
<a name="l00007"></a>00007 <span class="comment">    This program is free software; you can redistribute it and/or modify</span>
<a name="l00008"></a>00008 <span class="comment">    it under the terms of the GNU General Public License as published by</span>
<a name="l00009"></a>00009 <span class="comment">    the Free Software Foundation; either version 2 of the License, or</span>
<a name="l00010"></a>00010 <span class="comment">    (at your option) any later version.</span>
<a name="l00011"></a>00011 <span class="comment"></span>
<a name="l00012"></a>00012 <span class="comment">    This program is distributed in the hope that it will be useful,</span>
<a name="l00013"></a>00013 <span class="comment">    but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00014"></a>00014 <span class="comment">    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="l00015"></a>00015 <span class="comment">    GNU General Public License for more details.</span>
<a name="l00016"></a>00016 <span class="comment"></span>
<a name="l00017"></a>00017 <span class="comment">    You should have received a copy of the GNU General Public License</span>
<a name="l00018"></a>00018 <span class="comment">    along with this program; if not, write to the Free Software</span>
<a name="l00019"></a>00019 <span class="comment">    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</span>
<a name="l00020"></a>00020 <span class="comment"></span>
<a name="l00021"></a>00021 <span class="comment">    As a special exception, permission is given to link this program</span>
<a name="l00022"></a>00022 <span class="comment">    with any edition of Qt, and distribute the resulting executable,</span>
<a name="l00023"></a>00023 <span class="comment">    without including the source code for Qt in the source distribution.</span>
<a name="l00024"></a>00024 <span class="comment">*/</span>
<a name="l00025"></a>00025 
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;qpainter.h&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;qlayout.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;qframe.h&gt;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;qlabel.h&gt;</span>
<a name="l00030"></a>00030 
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;kdebug.h&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;kconfig.h&gt;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;kcalendarsystem.h&gt;</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;kwordwrap.h&gt;</span>
<a name="l00035"></a>00035 
<a name="l00036"></a>00036 <span class="preprocessor">#include "calprintpluginbase.h"</span>
<a name="l00037"></a>00037 <span class="preprocessor">#include "cellitem.h"</span>
<a name="l00038"></a>00038 
<a name="l00039"></a>00039 <span class="preprocessor">#ifndef KORG_NOPRINTER</span>
<a name="l00040"></a>00040 <span class="preprocessor"></span>
<a name="l00041"></a>00041 <span class="keyword">inline</span> <span class="keywordtype">int</span> round(<span class="keyword">const</span> <span class="keywordtype">double</span> x)
<a name="l00042"></a>00042  {
<a name="l00043"></a>00043  <span class="keywordflow">return</span> int(x &gt; 0.0 ? x + 0.5 : x - 0.5);
<a name="l00044"></a>00044  }
<a name="l00045"></a>00045 <span class="comment">/******************************************************************</span>
<a name="l00046"></a>00046 <span class="comment"> **              The Todo positioning structure                  **</span>
<a name="l00047"></a>00047 <span class="comment"> ******************************************************************/</span>
<a name="l00048"></a>00048 <span class="keyword">class </span>CalPrintPluginBase::TodoParentStart
<a name="l00049"></a>00049 {
<a name="l00050"></a>00050   <span class="keyword">public</span>:
<a name="l00051"></a>00051     TodoParentStart( QRect pt = QRect(), <span class="keywordtype">bool</span> page = <span class="keyword">true</span> )
<a name="l00052"></a>00052       : mRect( pt ), mSamePage( page ) {}
<a name="l00053"></a>00053 
<a name="l00054"></a>00054     QRect mRect;
<a name="l00055"></a>00055     <span class="keywordtype">bool</span> mSamePage;
<a name="l00056"></a>00056 };
<a name="l00057"></a>00057 
<a name="l00058"></a>00058 
<a name="l00059"></a>00059 <span class="comment">/******************************************************************</span>
<a name="l00060"></a>00060 <span class="comment"> **                     The Print item                           **</span>
<a name="l00061"></a>00061 <span class="comment"> ******************************************************************/</span>
<a name="l00062"></a>00062 
<a name="l00063"></a>00063 
<a name="l00064"></a>00064 <span class="keyword">class </span>PrintCellItem : <span class="keyword">public</span> KOrg::CellItem
<a name="l00065"></a>00065 {
<a name="l00066"></a>00066   <span class="keyword">public</span>:
<a name="l00067"></a>00067     PrintCellItem( <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a> *event, <span class="keyword">const</span> QDateTime &amp;start, <span class="keyword">const</span> QDateTime &amp;end )
<a name="l00068"></a>00068       : mEvent( event ), mStart( start), mEnd( end )
<a name="l00069"></a>00069     {
<a name="l00070"></a>00070     }
<a name="l00071"></a>00071 
<a name="l00072"></a>00072     <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a> *event()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mEvent; }
<a name="l00073"></a>00073 
<a name="l00074"></a>00074     QString label()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mEvent-&gt;summary(); }
<a name="l00075"></a>00075 
<a name="l00076"></a>00076     QDateTime start()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mStart; }
<a name="l00077"></a>00077     QDateTime end()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mEnd; }
<a name="l00078"></a>00078 
<a name="l00081"></a>00081     <span class="keywordtype">bool</span> overlaps( KOrg::CellItem *o )<span class="keyword"> const</span>
<a name="l00082"></a>00082 <span class="keyword">    </span>{
<a name="l00083"></a>00083       PrintCellItem *other = <span class="keyword">static_cast&lt;</span>PrintCellItem *<span class="keyword">&gt;</span>( o );
<a name="l00084"></a>00084 
<a name="l00085"></a>00085 <span class="preprocessor">#if 0</span>
<a name="l00086"></a>00086 <span class="preprocessor"></span>      kdDebug(5850) &lt;&lt; <span class="stringliteral">"PrintCellItem::overlaps() "</span> &lt;&lt; event()-&gt;summary()
<a name="l00087"></a>00087                     &lt;&lt; <span class="stringliteral">" &lt;-&gt; "</span> &lt;&lt; other-&gt;event()-&gt;summary() &lt;&lt; endl;
<a name="l00088"></a>00088       kdDebug(5850) &lt;&lt; <span class="stringliteral">"  start     : "</span> &lt;&lt; start.toString() &lt;&lt; endl;
<a name="l00089"></a>00089       kdDebug(5850) &lt;&lt; <span class="stringliteral">"  end       : "</span> &lt;&lt; end.toString() &lt;&lt; endl;
<a name="l00090"></a>00090       kdDebug(5850) &lt;&lt; <span class="stringliteral">"  otherStart: "</span> &lt;&lt; otherStart.toString() &lt;&lt; endl;
<a name="l00091"></a>00091       kdDebug(5850) &lt;&lt; <span class="stringliteral">"  otherEnd  : "</span> &lt;&lt; otherEnd.toString() &lt;&lt; endl;
<a name="l00092"></a>00092 <span class="preprocessor">#endif</span>
<a name="l00093"></a>00093 <span class="preprocessor"></span>
<a name="l00094"></a>00094       <span class="keywordflow">return</span> !( other-&gt;start() &gt;= end() || other-&gt;end() &lt;= start() );
<a name="l00095"></a>00095     }
<a name="l00096"></a>00096 
<a name="l00097"></a>00097   <span class="keyword">private</span>:
<a name="l00098"></a>00098     <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a> *mEvent;
<a name="l00099"></a>00099     QDateTime mStart, mEnd;
<a name="l00100"></a>00100 };
<a name="l00101"></a>00101 
<a name="l00102"></a>00102 
<a name="l00103"></a>00103 
<a name="l00104"></a>00104 
<a name="l00105"></a>00105 <span class="comment">/******************************************************************</span>
<a name="l00106"></a>00106 <span class="comment"> **                    The Print plugin                          **</span>
<a name="l00107"></a>00107 <span class="comment"> ******************************************************************/</span>
<a name="l00108"></a>00108 
<a name="l00109"></a>00109 
<a name="l00110"></a><a class="code" href="classCalPrintPluginBase.html#4799bc036868a261e10de797e9942c56">00110</a> <a class="code" href="classCalPrintPluginBase.html#4799bc036868a261e10de797e9942c56" title="Constructor.">CalPrintPluginBase::CalPrintPluginBase</a>() : PrintPlugin(), mUseColors( true ),
<a name="l00111"></a>00111      mHeaderHeight(-1), mSubHeaderHeight( SUBHEADER_HEIGHT ),
<a name="l00112"></a>00112      mMargin( MARGIN_SIZE ), mPadding( PADDING_SIZE), mCalSys( 0 )
<a name="l00113"></a>00113 {
<a name="l00114"></a>00114 }
<a name="l00115"></a>00115 CalPrintPluginBase::~CalPrintPluginBase()
<a name="l00116"></a>00116 {
<a name="l00117"></a>00117 }
<a name="l00118"></a>00118 
<a name="l00119"></a>00119 
<a name="l00120"></a>00120 
<a name="l00121"></a><a class="code" href="classCalPrintPluginBase.html#9fbb3f300c26eb790d29d052e9f5d603">00121</a> QWidget *<a class="code" href="classCalPrintPluginBase.html#9fbb3f300c26eb790d29d052e9f5d603" title="Returns widget for configuring the print format.">CalPrintPluginBase::createConfigWidget</a>( QWidget *w )
<a name="l00122"></a>00122 {
<a name="l00123"></a>00123   QFrame *wdg = <span class="keyword">new</span> QFrame( w );
<a name="l00124"></a>00124   QVBoxLayout *layout = <span class="keyword">new</span> QVBoxLayout( wdg );
<a name="l00125"></a>00125 
<a name="l00126"></a>00126   QLabel *title = <span class="keyword">new</span> QLabel( <a class="code" href="classKOrg_1_1PrintPlugin.html#d03ab45623ee44aa8f2c012305c9173f" title="Returns short description of print format.">description</a>(), wdg );
<a name="l00127"></a>00127   QFont titleFont( title-&gt;font() );
<a name="l00128"></a>00128   titleFont.setPointSize( 20 );
<a name="l00129"></a>00129   titleFont.setBold( <span class="keyword">true</span> );
<a name="l00130"></a>00130   title-&gt;setFont( titleFont );
<a name="l00131"></a>00131 
<a name="l00132"></a>00132   layout-&gt;addWidget( title );
<a name="l00133"></a>00133   layout-&gt;addWidget( <span class="keyword">new</span> QLabel( <a class="code" href="classKOrg_1_1PrintPlugin.html#6173484fd4ffdff475d06eb0473c1675" title="Returns long description of print format.">info</a>(), wdg ) );
<a name="l00134"></a>00134   layout-&gt;addSpacing( 20 );
<a name="l00135"></a>00135   layout-&gt;addWidget( <span class="keyword">new</span> QLabel( i18n(<span class="stringliteral">"This printing style does not "</span>
<a name="l00136"></a>00136                                       <span class="stringliteral">"have any configuration options."</span>),
<a name="l00137"></a>00137                                  wdg ) );
<a name="l00138"></a>00138   layout-&gt;addStretch();
<a name="l00139"></a>00139   <span class="keywordflow">return</span> wdg;
<a name="l00140"></a>00140 }
<a name="l00141"></a>00141 
<a name="l00142"></a><a class="code" href="classCalPrintPluginBase.html#66b008e6c17fe4f994c89dc1642f13ea">00142</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#66b008e6c17fe4f994c89dc1642f13ea" title="Start printing.">CalPrintPluginBase::doPrint</a>( KPrinter *printer )
<a name="l00143"></a>00143 {
<a name="l00144"></a>00144   <span class="keywordflow">if</span> ( !printer ) <span class="keywordflow">return</span>;
<a name="l00145"></a>00145   <a class="code" href="classKOrg_1_1PrintPlugin.html#f2d9d6cb1f868742027da1c4bbbdc1a1" title="The printer object.">mPrinter</a> = printer;
<a name="l00146"></a>00146   QPainter p;
<a name="l00147"></a>00147 
<a name="l00148"></a>00148   <a class="code" href="classKOrg_1_1PrintPlugin.html#f2d9d6cb1f868742027da1c4bbbdc1a1" title="The printer object.">mPrinter</a>-&gt;setColorMode( mUseColors?(KPrinter::Color):(KPrinter::GrayScale) );
<a name="l00149"></a>00149 
<a name="l00150"></a>00150   p.begin( <a class="code" href="classKOrg_1_1PrintPlugin.html#f2d9d6cb1f868742027da1c4bbbdc1a1" title="The printer object.">mPrinter</a> );
<a name="l00151"></a>00151   <span class="comment">// TODO: Fix the margins!!!</span>
<a name="l00152"></a>00152   <span class="comment">// the painter initially begins at 72 dpi per the Qt docs.</span>
<a name="l00153"></a>00153   <span class="comment">// we want half-inch margins.</span>
<a name="l00154"></a>00154   <span class="keywordtype">int</span> margins = margin();
<a name="l00155"></a>00155   p.setViewport( margins, margins,
<a name="l00156"></a>00156                  p.viewport().width() - 2*margins,
<a name="l00157"></a>00157                  p.viewport().height() - 2*margins );
<a name="l00158"></a>00158 <span class="comment">//   QRect vp( p.viewport() );</span>
<a name="l00159"></a>00159 <span class="comment">// vp.setRight( vp.right()*2 );</span>
<a name="l00160"></a>00160 <span class="comment">// vp.setBottom( vp.bottom()*2 );</span>
<a name="l00161"></a>00161 <span class="comment">//   p.setWindow( vp );</span>
<a name="l00162"></a>00162   <span class="keywordtype">int</span> pageWidth = p.window().width();
<a name="l00163"></a>00163   <span class="keywordtype">int</span> pageHeight = p.window().height();
<a name="l00164"></a>00164 <span class="comment">//   int pageWidth = p.viewport().width();</span>
<a name="l00165"></a>00165 <span class="comment">//   int pageHeight = p.viewport().height();</span>
<a name="l00166"></a>00166 
<a name="l00167"></a>00167   <a class="code" href="classCalPrintPluginBase.html#9c53465e9cd907475f8e8bf2d032d63c" title="Actually do the printing.">print</a>( p, pageWidth, pageHeight );
<a name="l00168"></a>00168 
<a name="l00169"></a>00169   p.end();
<a name="l00170"></a>00170   <a class="code" href="classKOrg_1_1PrintPlugin.html#f2d9d6cb1f868742027da1c4bbbdc1a1" title="The printer object.">mPrinter</a> = 0;
<a name="l00171"></a>00171 }
<a name="l00172"></a>00172 
<a name="l00173"></a><a class="code" href="classCalPrintPluginBase.html#f284a5468f4dc25715547a19383f6f3c">00173</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#f284a5468f4dc25715547a19383f6f3c" title="Load complete config.">CalPrintPluginBase::doLoadConfig</a>()
<a name="l00174"></a>00174 {
<a name="l00175"></a>00175   <span class="keywordflow">if</span> ( mConfig ) {
<a name="l00176"></a>00176     KConfigGroupSaver saver( mConfig, <a class="code" href="classKOrg_1_1PrintPlugin.html#d03ab45623ee44aa8f2c012305c9173f" title="Returns short description of print format.">description</a>() );
<a name="l00177"></a>00177     mConfig-&gt;sync();
<a name="l00178"></a>00178     QDateTime currDate( QDate::currentDate() );
<a name="l00179"></a>00179     mFromDate = mConfig-&gt;readDateTimeEntry( <span class="stringliteral">"FromDate"</span>, &amp;currDate ).date();
<a name="l00180"></a>00180     mToDate = mConfig-&gt;readDateTimeEntry( <span class="stringliteral">"ToDate"</span> ).date();
<a name="l00181"></a>00181     mUseColors = mConfig-&gt;readBoolEntry( <span class="stringliteral">"UseColors"</span>, <span class="keyword">true</span> );
<a name="l00182"></a>00182     setUseColors( mUseColors );
<a name="l00183"></a>00183     <a class="code" href="classCalPrintPluginBase.html#0a250d60336645b574f4feb93906c60b" title="Load print format configuration from config file.">loadConfig</a>();
<a name="l00184"></a>00184   } <span class="keywordflow">else</span> {
<a name="l00185"></a>00185     kdDebug(5850) &lt;&lt; <span class="stringliteral">"No config available in loadConfig!!!!"</span> &lt;&lt; endl;
<a name="l00186"></a>00186   }
<a name="l00187"></a>00187 }
<a name="l00188"></a>00188 
<a name="l00189"></a><a class="code" href="classCalPrintPluginBase.html#0cf9a47ee76674bbb75fa9440da08cdc">00189</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#0cf9a47ee76674bbb75fa9440da08cdc" title="Save complete config.">CalPrintPluginBase::doSaveConfig</a>()
<a name="l00190"></a>00190 {
<a name="l00191"></a>00191   <span class="keywordflow">if</span> ( mConfig ) {
<a name="l00192"></a>00192     KConfigGroupSaver saver( mConfig, <a class="code" href="classKOrg_1_1PrintPlugin.html#d03ab45623ee44aa8f2c012305c9173f" title="Returns short description of print format.">description</a>() );
<a name="l00193"></a>00193     <a class="code" href="classCalPrintPluginBase.html#def247ccef7ea033202d4e685349712d" title="Write print format configuration to config file.">saveConfig</a>();
<a name="l00194"></a>00194     mConfig-&gt;writeEntry( <span class="stringliteral">"FromDate"</span>, QDateTime( mFromDate ) );
<a name="l00195"></a>00195     mConfig-&gt;writeEntry( <span class="stringliteral">"ToDate"</span>, QDateTime( mToDate ) );
<a name="l00196"></a>00196     mConfig-&gt;writeEntry( <span class="stringliteral">"UseColors"</span>, mUseColors );
<a name="l00197"></a>00197     mConfig-&gt;sync();
<a name="l00198"></a>00198   } <span class="keywordflow">else</span> {
<a name="l00199"></a>00199     kdDebug(5850) &lt;&lt; <span class="stringliteral">"No config available in saveConfig!!!!"</span> &lt;&lt; endl;
<a name="l00200"></a>00200   }
<a name="l00201"></a>00201 }
<a name="l00202"></a>00202 
<a name="l00203"></a>00203 
<a name="l00204"></a>00204 
<a name="l00205"></a>00205 
<a name="l00206"></a><a class="code" href="classCalPrintPluginBase.html#cba15a0c6d4f0222ea7430a57db28229">00206</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#cba15a0c6d4f0222ea7430a57db28229" title="HELPER FUNCTIONS.">CalPrintPluginBase::setKOrgCoreHelper</a>( KOrg::CoreHelper*helper )
<a name="l00207"></a>00207 {
<a name="l00208"></a>00208   PrintPlugin::setKOrgCoreHelper( helper );
<a name="l00209"></a>00209   <span class="keywordflow">if</span> ( helper )
<a name="l00210"></a>00210     setCalendarSystem( helper-&gt;calendarSystem() );
<a name="l00211"></a>00211 }
<a name="l00212"></a>00212 
<a name="l00213"></a>00213 <span class="keywordtype">bool</span> CalPrintPluginBase::useColors()<span class="keyword"> const</span>
<a name="l00214"></a>00214 <span class="keyword"></span>{
<a name="l00215"></a>00215   <span class="keywordflow">return</span> mUseColors;
<a name="l00216"></a>00216 }
<a name="l00217"></a>00217 <span class="keywordtype">void</span> CalPrintPluginBase::setUseColors( <span class="keywordtype">bool</span> useColors )
<a name="l00218"></a>00218 {
<a name="l00219"></a>00219   mUseColors = useColors;
<a name="l00220"></a>00220 }
<a name="l00221"></a>00221 
<a name="l00222"></a>00222 KPrinter::Orientation CalPrintPluginBase::orientation()<span class="keyword"> const</span>
<a name="l00223"></a>00223 <span class="keyword"></span>{
<a name="l00224"></a>00224   <span class="keywordflow">return</span> (<a class="code" href="classKOrg_1_1PrintPlugin.html#f2d9d6cb1f868742027da1c4bbbdc1a1" title="The printer object.">mPrinter</a>)?(<a class="code" href="classKOrg_1_1PrintPlugin.html#f2d9d6cb1f868742027da1c4bbbdc1a1" title="The printer object.">mPrinter</a>-&gt;orientation()):(KPrinter::Portrait);
<a name="l00225"></a>00225 }
<a name="l00226"></a>00226 
<a name="l00227"></a>00227 
<a name="l00228"></a>00228 
<a name="l00229"></a>00229 QTime CalPrintPluginBase::dayStart()
<a name="l00230"></a>00230 {
<a name="l00231"></a>00231   QTime start( 8,0,0 );
<a name="l00232"></a>00232   <span class="keywordflow">if</span> ( mCoreHelper ) start = mCoreHelper-&gt;dayStart();
<a name="l00233"></a>00233   <span class="keywordflow">return</span> start;
<a name="l00234"></a>00234 }
<a name="l00235"></a>00235 
<a name="l00236"></a>00236 <span class="keywordtype">void</span> CalPrintPluginBase::setCategoryColors( QPainter &amp;p, <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html">Incidence</a> *incidence )
<a name="l00237"></a>00237 {
<a name="l00238"></a>00238   QColor bgColor = <a class="code" href="classCalPrintPluginBase.html#00672996dadb4017b165fa76b42d01f4" title="Helper functions to hide the KOrg::CoreHelper.">categoryBgColor</a>( incidence );
<a name="l00239"></a>00239   <span class="keywordflow">if</span> ( bgColor.isValid() )
<a name="l00240"></a>00240     p.setBrush( bgColor );
<a name="l00241"></a>00241   QColor tColor( textColor( bgColor ) );
<a name="l00242"></a>00242   <span class="keywordflow">if</span> ( tColor.isValid() )
<a name="l00243"></a>00243     p.setPen( tColor );
<a name="l00244"></a>00244 }
<a name="l00245"></a>00245 
<a name="l00246"></a><a class="code" href="classCalPrintPluginBase.html#00672996dadb4017b165fa76b42d01f4">00246</a> QColor <a class="code" href="classCalPrintPluginBase.html#00672996dadb4017b165fa76b42d01f4" title="Helper functions to hide the KOrg::CoreHelper.">CalPrintPluginBase::categoryBgColor</a>( <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html">Incidence</a> *incidence )
<a name="l00247"></a>00247 {
<a name="l00248"></a>00248   <span class="keywordflow">if</span> (mCoreHelper &amp;&amp; incidence) 
<a name="l00249"></a>00249     <span class="keywordflow">return</span> mCoreHelper-&gt;categoryColor( incidence-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#4eae9f79708ab85745dc6fdea51afb76">categories</a>() );
<a name="l00250"></a>00250   <span class="keywordflow">else</span> 
<a name="l00251"></a>00251     <span class="keywordflow">return</span> QColor();
<a name="l00252"></a>00252 }
<a name="l00253"></a>00253 
<a name="l00254"></a>00254 QColor CalPrintPluginBase::textColor( <span class="keyword">const</span> QColor &amp;color )
<a name="l00255"></a>00255 {
<a name="l00256"></a>00256   <span class="keywordflow">return</span> (mCoreHelper)?(mCoreHelper-&gt;textColor( color )):QColor();
<a name="l00257"></a>00257 }
<a name="l00258"></a>00258 
<a name="l00259"></a>00259 <span class="keywordtype">bool</span> CalPrintPluginBase::isWorkingDay( <span class="keyword">const</span> QDate &amp;dt )
<a name="l00260"></a>00260 {
<a name="l00261"></a>00261   <span class="keywordflow">return</span> (mCoreHelper)?( mCoreHelper-&gt;isWorkingDay( dt ) ):<span class="keyword">true</span>;
<a name="l00262"></a>00262 }
<a name="l00263"></a>00263 
<a name="l00264"></a>00264 QString CalPrintPluginBase::holidayString( <span class="keyword">const</span> QDate &amp;dt )
<a name="l00265"></a>00265 {
<a name="l00266"></a>00266   <span class="keywordflow">return</span> (mCoreHelper)?(mCoreHelper-&gt;holidayString(dt)):(QString::null);
<a name="l00267"></a>00267 }
<a name="l00268"></a>00268 
<a name="l00269"></a>00269 
<a name="l00270"></a>00270 <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a> *CalPrintPluginBase::holiday( <span class="keyword">const</span> QDate &amp;dt )
<a name="l00271"></a>00271 {
<a name="l00272"></a>00272   QString hstring( holidayString( dt ) );
<a name="l00273"></a>00273   <span class="keywordflow">if</span> ( !hstring.isEmpty() ) {
<a name="l00274"></a>00274     <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a>*holiday=<span class="keyword">new</span> <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a>();
<a name="l00275"></a>00275     holiday-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#fc2fecb0924ad84c61b9210d5cc5cc9f">setSummary</a>( hstring );
<a name="l00276"></a>00276     holiday-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#e3042339856d8295139b32fc40064876">setDtStart</a>( dt );
<a name="l00277"></a>00277     holiday-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html#0d6840be8adf1a8fd37617ecf3da535b">setDtEnd</a>( dt );
<a name="l00278"></a>00278     holiday-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#8a9b61c884ea9450c9ebea186e73ecc6">setFloats</a>( <span class="keyword">true</span> );
<a name="l00279"></a>00279     holiday-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#e1c00b65d6803d1140ce5e79c5935ab6">setCategories</a>( i18n(<span class="stringliteral">"Holiday"</span>) );
<a name="l00280"></a>00280     <span class="keywordflow">return</span> holiday;
<a name="l00281"></a>00281   }
<a name="l00282"></a>00282   <span class="keywordflow">return</span> 0;
<a name="l00283"></a>00283 }
<a name="l00284"></a>00284 
<a name="l00285"></a>00285 <span class="keyword">const</span> KCalendarSystem *CalPrintPluginBase::calendarSystem()<span class="keyword"> const</span>
<a name="l00286"></a>00286 <span class="keyword"></span>{
<a name="l00287"></a>00287   <span class="keywordflow">return</span> mCalSys;
<a name="l00288"></a>00288 }
<a name="l00289"></a>00289 <span class="keywordtype">void</span> CalPrintPluginBase::setCalendarSystem( <span class="keyword">const</span> KCalendarSystem *calsys )
<a name="l00290"></a>00290 {
<a name="l00291"></a>00291   mCalSys = calsys;
<a name="l00292"></a>00292 }
<a name="l00293"></a>00293 
<a name="l00294"></a><a class="code" href="classCalPrintPluginBase.html#5f3bf3d94fedf4b34878a97fadb5aac7">00294</a> <span class="keywordtype">int</span> <a class="code" href="classCalPrintPluginBase.html#5f3bf3d94fedf4b34878a97fadb5aac7" title="Returns the height of the page header.">CalPrintPluginBase::headerHeight</a>()<span class="keyword"> const</span>
<a name="l00295"></a>00295 <span class="keyword"></span>{
<a name="l00296"></a>00296   <span class="keywordflow">if</span> ( mHeaderHeight &gt;= 0 )
<a name="l00297"></a>00297     <span class="keywordflow">return</span> mHeaderHeight;
<a name="l00298"></a>00298   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( orientation() == KPrinter::Portrait )
<a name="l00299"></a>00299     <span class="keywordflow">return</span> PORTRAIT_HEADER_HEIGHT;
<a name="l00300"></a>00300   <span class="keywordflow">else</span>
<a name="l00301"></a>00301     <span class="keywordflow">return</span> LANDSCAPE_HEADER_HEIGHT;
<a name="l00302"></a>00302 }
<a name="l00303"></a>00303 <span class="keywordtype">void</span> CalPrintPluginBase::setHeaderHeight( <span class="keyword">const</span> <span class="keywordtype">int</span> height )
<a name="l00304"></a>00304 {
<a name="l00305"></a>00305   mHeaderHeight = height;
<a name="l00306"></a>00306 }
<a name="l00307"></a>00307 
<a name="l00308"></a>00308 <span class="keywordtype">int</span> CalPrintPluginBase::subHeaderHeight()<span class="keyword"> const</span>
<a name="l00309"></a>00309 <span class="keyword"></span>{
<a name="l00310"></a>00310   <span class="keywordflow">return</span> mSubHeaderHeight;
<a name="l00311"></a>00311 }
<a name="l00312"></a>00312 <span class="keywordtype">void</span> CalPrintPluginBase::setSubHeaderHeight( <span class="keyword">const</span> <span class="keywordtype">int</span> height )
<a name="l00313"></a>00313 {
<a name="l00314"></a>00314   mSubHeaderHeight = height;
<a name="l00315"></a>00315 }
<a name="l00316"></a>00316 
<a name="l00317"></a>00317 <span class="keywordtype">int</span> CalPrintPluginBase::margin()<span class="keyword"> const</span>
<a name="l00318"></a>00318 <span class="keyword"></span>{
<a name="l00319"></a>00319   <span class="keywordflow">return</span> mMargin;
<a name="l00320"></a>00320 }
<a name="l00321"></a>00321 <span class="keywordtype">void</span> CalPrintPluginBase::setMargin( <span class="keyword">const</span> <span class="keywordtype">int</span> margin )
<a name="l00322"></a>00322 {
<a name="l00323"></a>00323   mMargin = margin;
<a name="l00324"></a>00324 }
<a name="l00325"></a>00325 
<a name="l00326"></a>00326 <span class="keywordtype">int</span> CalPrintPluginBase::padding()<span class="keyword"> const</span>
<a name="l00327"></a>00327 <span class="keyword"></span>{
<a name="l00328"></a>00328   <span class="keywordflow">return</span> mPadding;
<a name="l00329"></a>00329 }
<a name="l00330"></a>00330 <span class="keywordtype">void</span> CalPrintPluginBase::setPadding( <span class="keyword">const</span> <span class="keywordtype">int</span> padding )
<a name="l00331"></a>00331 {
<a name="l00332"></a>00332   mPadding = padding;
<a name="l00333"></a>00333 }
<a name="l00334"></a>00334 
<a name="l00335"></a>00335 <span class="keywordtype">int</span> CalPrintPluginBase::borderWidth()<span class="keyword"> const</span>
<a name="l00336"></a>00336 <span class="keyword"></span>{
<a name="l00337"></a>00337   <span class="keywordflow">return</span> mBorder;
<a name="l00338"></a>00338 }
<a name="l00339"></a>00339 <span class="keywordtype">void</span> CalPrintPluginBase::setBorderWidth( <span class="keyword">const</span> <span class="keywordtype">int</span> borderwidth )
<a name="l00340"></a>00340 {
<a name="l00341"></a>00341   mBorder = borderwidth;
<a name="l00342"></a>00342 }
<a name="l00343"></a>00343 
<a name="l00344"></a>00344 
<a name="l00345"></a>00345 
<a name="l00346"></a>00346 
<a name="l00347"></a><a class="code" href="classCalPrintPluginBase.html#bbe07855a40097aca4706f2498f879be">00347</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#bbe07855a40097aca4706f2498f879be" title="Draw a box with given width at the given coordinates.">CalPrintPluginBase::drawBox</a>( QPainter &amp;p, <span class="keywordtype">int</span> linewidth, <span class="keyword">const</span> QRect &amp;rect )
<a name="l00348"></a>00348 {
<a name="l00349"></a>00349   QPen pen( p.pen() );
<a name="l00350"></a>00350   QPen oldpen( pen );
<a name="l00351"></a>00351   pen.setWidth( linewidth );
<a name="l00352"></a>00352   p.setPen( pen );
<a name="l00353"></a>00353   p.drawRect( rect );
<a name="l00354"></a>00354   p.setPen( oldpen );
<a name="l00355"></a>00355 }
<a name="l00356"></a>00356 
<a name="l00357"></a><a class="code" href="classCalPrintPluginBase.html#619168a1dfa69059568dedaac2559056">00357</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#619168a1dfa69059568dedaac2559056" title="Draw a shaded box with given width at the given coordinates.">CalPrintPluginBase::drawShadedBox</a>( QPainter &amp;p, <span class="keywordtype">int</span> linewidth, <span class="keyword">const</span> QBrush &amp;brush, <span class="keyword">const</span> QRect &amp;rect )
<a name="l00358"></a>00358 {
<a name="l00359"></a>00359   QBrush oldbrush( p.brush() );
<a name="l00360"></a>00360   p.setBrush( brush );
<a name="l00361"></a>00361   <a class="code" href="classCalPrintPluginBase.html#bbe07855a40097aca4706f2498f879be" title="Draw a box with given width at the given coordinates.">drawBox</a>( p, linewidth, rect );
<a name="l00362"></a>00362   p.setBrush( oldbrush );
<a name="l00363"></a>00363 }
<a name="l00364"></a>00364 
<a name="l00365"></a><a class="code" href="classCalPrintPluginBase.html#6011cc2444a1e06966a0928e0b8b8ebd">00365</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#6011cc2444a1e06966a0928e0b8b8ebd" title="Print the given string (event summary) in the given rectangle.">CalPrintPluginBase::printEventString</a>( QPainter &amp;p, <span class="keyword">const</span> QRect &amp;box, <span class="keyword">const</span> QString &amp;str, <span class="keywordtype">int</span> flags )
<a name="l00366"></a>00366 {
<a name="l00367"></a>00367   QRect newbox( box );
<a name="l00368"></a>00368   newbox.addCoords( 3, 1, -1, -1 );
<a name="l00369"></a>00369   p.drawText( newbox, (flags==-1)?(Qt::AlignTop | Qt::AlignJustify | Qt::BreakAnywhere):flags, str );
<a name="l00370"></a>00370 }
<a name="l00371"></a>00371 
<a name="l00372"></a>00372 
<a name="l00373"></a><a class="code" href="classCalPrintPluginBase.html#35be14f3ed5f5d84d62d9033b60d5cad">00373</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#35be14f3ed5f5d84d62d9033b60d5cad" title="Print the box for the given event with the given string.">CalPrintPluginBase::showEventBox</a>( QPainter &amp;p, <span class="keyword">const</span> QRect &amp;box, <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html">Incidence</a> *incidence, <span class="keyword">const</span> QString &amp;str, <span class="keywordtype">int</span> flags )
<a name="l00374"></a>00374 {
<a name="l00375"></a>00375   QPen oldpen( p.pen() );
<a name="l00376"></a>00376   QBrush oldbrush( p.brush() );
<a name="l00377"></a>00377   QColor bgColor( <a class="code" href="classCalPrintPluginBase.html#00672996dadb4017b165fa76b42d01f4" title="Helper functions to hide the KOrg::CoreHelper.">categoryBgColor</a>( incidence ) );
<a name="l00378"></a>00378   <span class="keywordflow">if</span> ( mUseColors &amp; bgColor.isValid() ) {
<a name="l00379"></a>00379     p.setBrush( bgColor );
<a name="l00380"></a>00380   } <span class="keywordflow">else</span> {
<a name="l00381"></a>00381     p.setBrush( QColor( 232, 232, 232 ) );
<a name="l00382"></a>00382   }
<a name="l00383"></a>00383   <a class="code" href="classCalPrintPluginBase.html#bbe07855a40097aca4706f2498f879be" title="Draw a box with given width at the given coordinates.">drawBox</a>( p, EVENT_BORDER_WIDTH, box );
<a name="l00384"></a>00384 
<a name="l00385"></a>00385   <span class="keywordflow">if</span> ( mUseColors &amp;&amp; bgColor.isValid() ) {
<a name="l00386"></a>00386     p.setPen( textColor( bgColor ) );
<a name="l00387"></a>00387   }
<a name="l00388"></a>00388   <a class="code" href="classCalPrintPluginBase.html#6011cc2444a1e06966a0928e0b8b8ebd" title="Print the given string (event summary) in the given rectangle.">printEventString</a>( p, box, str, flags );
<a name="l00389"></a>00389   p.setPen( oldpen );
<a name="l00390"></a>00390   p.setBrush( oldbrush );
<a name="l00391"></a>00391 }
<a name="l00392"></a>00392 
<a name="l00393"></a>00393 
<a name="l00394"></a><a class="code" href="classCalPrintPluginBase.html#79806358f99eba12252ecd612d1fb548">00394</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#79806358f99eba12252ecd612d1fb548" title="Draw a subheader box with a shaded background and the given string.">CalPrintPluginBase::drawSubHeaderBox</a>(QPainter &amp;p, <span class="keyword">const</span> QString &amp;str,
<a name="l00395"></a>00395     <span class="keyword">const</span> QRect &amp;box )
<a name="l00396"></a>00396 {
<a name="l00397"></a>00397   <a class="code" href="classCalPrintPluginBase.html#619168a1dfa69059568dedaac2559056" title="Draw a shaded box with given width at the given coordinates.">drawShadedBox</a>( p, BOX_BORDER_WIDTH, QColor( 232, 232, 232 ), box );
<a name="l00398"></a>00398   QFont oldfont( p.font() );
<a name="l00399"></a>00399   p.setFont( QFont( <span class="stringliteral">"sans-serif"</span>, 10, QFont::Bold ) );
<a name="l00400"></a>00400   p.drawText( box, Qt::AlignCenter | Qt::AlignVCenter, str );
<a name="l00401"></a>00401   p.setFont( oldfont );
<a name="l00402"></a>00402 }
<a name="l00403"></a>00403 
<a name="l00404"></a><a class="code" href="classCalPrintPluginBase.html#ee2b9ea421ec9d6e59b89b2a818d147f">00404</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#ee2b9ea421ec9d6e59b89b2a818d147f" title="Draw an event box with vertical text.">CalPrintPluginBase::drawVerticalBox</a>( QPainter &amp;p, <span class="keyword">const</span> QRect &amp;box, <span class="keyword">const</span> QString &amp;str )
<a name="l00405"></a>00405 {
<a name="l00406"></a>00406   p.save();
<a name="l00407"></a>00407   p.rotate( -90 );
<a name="l00408"></a>00408   QRect rotatedBox( -box.top()-box.height(), box.left(), box.height(), box.width() );
<a name="l00409"></a>00409   <a class="code" href="classCalPrintPluginBase.html#35be14f3ed5f5d84d62d9033b60d5cad" title="Print the box for the given event with the given string.">showEventBox</a>( p, rotatedBox, 0, str, Qt::AlignLeft | Qt::AlignVCenter | Qt::SingleLine );
<a name="l00410"></a>00410 
<a name="l00411"></a>00411   p.restore();
<a name="l00412"></a>00412 }
<a name="l00413"></a>00413 
<a name="l00414"></a>00414 
<a name="l00415"></a>00415 
<a name="l00417"></a>00417 <span class="comment">// Return value: If expand, bottom of the printed box, otherwise vertical end </span>
<a name="l00418"></a>00418 <span class="comment">// of the printed contents inside the box.</span>
<a name="l00419"></a>00419 
<a name="l00420"></a><a class="code" href="classCalPrintPluginBase.html#e2c8a56c082c7c207ea4bd19fade53f9">00420</a> <span class="keywordtype">int</span> <a class="code" href="classCalPrintPluginBase.html#e2c8a56c082c7c207ea4bd19fade53f9" title="Draw a component box with a heading (printed in bold).">CalPrintPluginBase::drawBoxWithCaption</a>( QPainter &amp;p, <span class="keyword">const</span> QRect &amp;allbox, 
<a name="l00421"></a>00421         <span class="keyword">const</span> QString &amp;caption, <span class="keyword">const</span> QString &amp;contents, <span class="keywordtype">bool</span> sameLine, <span class="keywordtype">bool</span> expand, <span class="keyword">const</span> QFont &amp;captionFont, <span class="keyword">const</span> QFont &amp;textFont )
<a name="l00422"></a>00422 {
<a name="l00423"></a>00423   QFont oldFont( p.font() );
<a name="l00424"></a>00424 <span class="comment">//   QFont captionFont( "sans-serif", 11, QFont::Bold );</span>
<a name="l00425"></a>00425 <span class="comment">//   QFont textFont( "sans-serif", 11, QFont::Normal );</span>
<a name="l00426"></a>00426 <span class="comment">//   QFont captionFont( "Tahoma", 11, QFont::Bold );</span>
<a name="l00427"></a>00427 <span class="comment">//   QFont textFont( "Tahoma", 11, QFont::Normal );</span>
<a name="l00428"></a>00428 
<a name="l00429"></a>00429 
<a name="l00430"></a>00430   QRect box( allbox );
<a name="l00431"></a>00431   
<a name="l00432"></a>00432   <span class="comment">// Bounding rectangle for caption, single-line, clip on the right</span>
<a name="l00433"></a>00433   QRect captionBox( box.left() + padding(), box.top() + padding(), 0, 0 );
<a name="l00434"></a>00434   p.setFont( captionFont );
<a name="l00435"></a>00435   captionBox = p.boundingRect( captionBox, Qt::AlignLeft | Qt::AlignTop | Qt::SingleLine, caption );
<a name="l00436"></a>00436   p.setFont( oldFont );
<a name="l00437"></a>00437   <span class="keywordflow">if</span> ( captionBox.right() &gt; box.right() ) 
<a name="l00438"></a>00438     captionBox.setRight( box.right() );
<a name="l00439"></a>00439   <span class="keywordflow">if</span> ( expand &amp;&amp; captionBox.bottom() + padding() &gt; box.bottom() ) 
<a name="l00440"></a>00440     box.setBottom( captionBox.bottom() + padding() );
<a name="l00441"></a>00441   
<a name="l00442"></a>00442   <span class="comment">// Bounding rectangle for the contents (if any), word break, clip on the bottom</span>
<a name="l00443"></a>00443   QRect textBox( captionBox );
<a name="l00444"></a>00444   <span class="keywordflow">if</span> ( !contents.isEmpty() ) {
<a name="l00445"></a>00445     <span class="keywordflow">if</span> ( sameLine ) {
<a name="l00446"></a>00446       textBox.setLeft( captionBox.right() + padding() );
<a name="l00447"></a>00447     } <span class="keywordflow">else</span> {
<a name="l00448"></a>00448       textBox.setTop( captionBox.bottom() + padding() );
<a name="l00449"></a>00449     }
<a name="l00450"></a>00450     textBox.setRight( box.right() );
<a name="l00451"></a>00451     textBox.setHeight( 0 );
<a name="l00452"></a>00452     p.setFont( textFont );
<a name="l00453"></a>00453     textBox = p.boundingRect( textBox, Qt::WordBreak | Qt::AlignTop | Qt::AlignLeft, contents );
<a name="l00454"></a>00454     p.setFont( oldFont );
<a name="l00455"></a>00455     <span class="keywordflow">if</span> ( textBox.bottom() + padding() &gt; box.bottom() ) {
<a name="l00456"></a>00456       <span class="keywordflow">if</span> ( expand ) {
<a name="l00457"></a>00457         box.setBottom( textBox.bottom() + padding() );
<a name="l00458"></a>00458       } <span class="keywordflow">else</span> {
<a name="l00459"></a>00459         textBox.setBottom( box.bottom() );
<a name="l00460"></a>00460       }
<a name="l00461"></a>00461     }
<a name="l00462"></a>00462   }
<a name="l00463"></a>00463   
<a name="l00464"></a>00464   <a class="code" href="classCalPrintPluginBase.html#bbe07855a40097aca4706f2498f879be" title="Draw a box with given width at the given coordinates.">drawBox</a>( p, BOX_BORDER_WIDTH, box );
<a name="l00465"></a>00465   p.setFont( captionFont );
<a name="l00466"></a>00466   p.drawText( captionBox, Qt::AlignLeft | Qt::AlignTop | Qt::SingleLine, caption );
<a name="l00467"></a>00467   <span class="keywordflow">if</span> ( !contents.isEmpty() ) {
<a name="l00468"></a>00468     p.setFont( textFont );
<a name="l00469"></a>00469     p.drawText( textBox, Qt::WordBreak | Qt::AlignTop | Qt::AlignLeft, contents );
<a name="l00470"></a>00470   }
<a name="l00471"></a>00471   p.setFont( oldFont );
<a name="l00472"></a>00472   
<a name="l00473"></a>00473   <span class="keywordflow">if</span> ( expand ) {
<a name="l00474"></a>00474     <span class="keywordflow">return</span> box.bottom();
<a name="l00475"></a>00475   } <span class="keywordflow">else</span> {
<a name="l00476"></a>00476     <span class="keywordflow">return</span> textBox.bottom();
<a name="l00477"></a>00477   }
<a name="l00478"></a>00478 }
<a name="l00479"></a>00479 
<a name="l00480"></a>00480 
<a name="l00482"></a>00482 
<a name="l00483"></a><a class="code" href="classCalPrintPluginBase.html#4f3ff2a6d65929062fd556cef653c0a8">00483</a> <span class="keywordtype">int</span> <a class="code" href="classCalPrintPluginBase.html#4f3ff2a6d65929062fd556cef653c0a8" title="Draw the gray header bar of the printout to the QPainter.">CalPrintPluginBase::drawHeader</a>( QPainter &amp;p, QString title,
<a name="l00484"></a>00484     <span class="keyword">const</span> QDate &amp;month1, <span class="keyword">const</span> QDate &amp;month2, <span class="keyword">const</span> QRect &amp;allbox, <span class="keywordtype">bool</span> expand )
<a name="l00485"></a>00485 {
<a name="l00486"></a>00486   <span class="comment">// print previous month for month view, print current for to-do, day and week</span>
<a name="l00487"></a>00487   <span class="keywordtype">int</span> smallMonthWidth = (allbox.width()/4) - 10;
<a name="l00488"></a>00488   <span class="keywordflow">if</span> (smallMonthWidth&gt;100) smallMonthWidth=100;
<a name="l00489"></a>00489 
<a name="l00490"></a>00490   <span class="keywordtype">int</span> right = allbox.right();
<a name="l00491"></a>00491   <span class="keywordflow">if</span> ( month1.isValid() ) right -= (20+smallMonthWidth);
<a name="l00492"></a>00492   <span class="keywordflow">if</span> ( month2.isValid() ) right -= (20+smallMonthWidth);
<a name="l00493"></a>00493   QRect box( allbox );
<a name="l00494"></a>00494   QRect textRect( allbox );
<a name="l00495"></a>00495   textRect.addCoords( 5, 0, 0, 0 );
<a name="l00496"></a>00496   textRect.setRight( right );
<a name="l00497"></a>00497   
<a name="l00498"></a>00498   
<a name="l00499"></a>00499   QFont oldFont( p.font() );
<a name="l00500"></a>00500   QFont newFont(<span class="stringliteral">"sans-serif"</span>, (textRect.height()&lt;60)?16:18, QFont::Bold);
<a name="l00501"></a>00501   <span class="keywordflow">if</span> ( expand ) {
<a name="l00502"></a>00502     p.setFont( newFont );
<a name="l00503"></a>00503     QRect boundingR = p.boundingRect( textRect, Qt::AlignLeft | Qt::AlignVCenter | Qt::WordBreak, title );
<a name="l00504"></a>00504     p.setFont( oldFont );
<a name="l00505"></a>00505     <span class="keywordtype">int</span> h = boundingR.height();
<a name="l00506"></a>00506     <span class="keywordflow">if</span> ( h &gt; allbox.height() ) {
<a name="l00507"></a>00507       box.setHeight( h );
<a name="l00508"></a>00508       textRect.setHeight( h );
<a name="l00509"></a>00509     }
<a name="l00510"></a>00510   }
<a name="l00511"></a>00511 
<a name="l00512"></a>00512   <a class="code" href="classCalPrintPluginBase.html#619168a1dfa69059568dedaac2559056" title="Draw a shaded box with given width at the given coordinates.">drawShadedBox</a>( p, BOX_BORDER_WIDTH, QColor( 232, 232, 232 ), box );
<a name="l00513"></a>00513 
<a name="l00514"></a>00514   QRect monthbox( box.right()-10-smallMonthWidth, box.top(), smallMonthWidth, box.height() );
<a name="l00515"></a>00515   <span class="keywordflow">if</span> (month2.isValid()) {
<a name="l00516"></a>00516     <a class="code" href="classCalPrintPluginBase.html#47fd5b1c102fd591a88c723e93c1a6a0" title="Draw a small calendar with the days of a month into the given area.">drawSmallMonth</a>( p, QDate(month2.year(), month2.month(), 1), monthbox );
<a name="l00517"></a>00517     monthbox.moveBy( -20 - smallMonthWidth, 0 );
<a name="l00518"></a>00518   }
<a name="l00519"></a>00519   <span class="keywordflow">if</span> (month1.isValid()) {
<a name="l00520"></a>00520     <a class="code" href="classCalPrintPluginBase.html#47fd5b1c102fd591a88c723e93c1a6a0" title="Draw a small calendar with the days of a month into the given area.">drawSmallMonth</a>( p, QDate(month1.year(), month1.month(), 1), monthbox );
<a name="l00521"></a>00521     monthbox.moveBy( -20 - smallMonthWidth, 0 );
<a name="l00522"></a>00522   }
<a name="l00523"></a>00523 
<a name="l00524"></a>00524   <span class="comment">// Set the margins</span>
<a name="l00525"></a>00525   p.setFont( newFont );
<a name="l00526"></a>00526   p.drawText( textRect, Qt::AlignLeft | Qt::AlignVCenter | Qt::WordBreak, title );
<a name="l00527"></a>00527   p.setFont( oldFont );
<a name="l00528"></a>00528   
<a name="l00529"></a>00529   <span class="keywordflow">return</span> textRect.bottom();
<a name="l00530"></a>00530 }
<a name="l00531"></a>00531 
<a name="l00532"></a>00532 
<a name="l00533"></a><a class="code" href="classCalPrintPluginBase.html#47fd5b1c102fd591a88c723e93c1a6a0">00533</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#47fd5b1c102fd591a88c723e93c1a6a0" title="Draw a small calendar with the days of a month into the given area.">CalPrintPluginBase::drawSmallMonth</a>(QPainter &amp;p, <span class="keyword">const</span> QDate &amp;qd,
<a name="l00534"></a>00534     <span class="keyword">const</span> QRect &amp;box )
<a name="l00535"></a>00535 {
<a name="l00536"></a>00536 
<a name="l00537"></a>00537   <span class="keywordtype">int</span> weekdayCol = <a class="code" href="classCalPrintPluginBase.html#8f72b52330caa8dc9afbe1d97bcf98b8" title="Determines the column of the given weekday ( 1=Monday, 7=Sunday ), taking the start...">weekdayColumn</a>( qd.dayOfWeek() );
<a name="l00538"></a>00538   <span class="keywordtype">int</span> month = qd.month();
<a name="l00539"></a>00539   QDate monthDate(QDate(qd.year(), qd.month(), 1));
<a name="l00540"></a>00540   <span class="comment">// correct begin of week</span>
<a name="l00541"></a>00541   QDate monthDate2( monthDate.addDays( -weekdayCol ) );
<a name="l00542"></a>00542 
<a name="l00543"></a>00543   <span class="keywordtype">double</span> cellWidth = double(box.width())/<span class="keywordtype">double</span>(7);
<a name="l00544"></a>00544   <span class="keywordtype">int</span> rownr = 3 + ( qd.daysInMonth() + weekdayCol - 1 ) / 7;
<a name="l00545"></a>00545   <span class="comment">// 3 Pixel after month name, 2 after day names, 1 after the calendar</span>
<a name="l00546"></a>00546   <span class="keywordtype">double</span> cellHeight = (box.height() - 5) / rownr;
<a name="l00547"></a>00547   QFont oldFont( p.font() );
<a name="l00548"></a>00548   p.setFont(QFont(<span class="stringliteral">"sans-serif"</span>, <span class="keywordtype">int</span>(cellHeight-1), QFont::Normal));
<a name="l00549"></a>00549 
<a name="l00550"></a>00550   <span class="comment">// draw the title</span>
<a name="l00551"></a>00551   <span class="keywordflow">if</span> ( mCalSys ) {
<a name="l00552"></a>00552     QRect titleBox( box );
<a name="l00553"></a>00553     titleBox.setHeight( <span class="keywordtype">int</span>(cellHeight+1) );
<a name="l00554"></a>00554     p.drawText( titleBox, Qt::AlignTop | Qt::AlignHCenter, mCalSys-&gt;monthName( qd ) );
<a name="l00555"></a>00555   }
<a name="l00556"></a>00556 
<a name="l00557"></a>00557   <span class="comment">// draw days of week</span>
<a name="l00558"></a>00558   QRect wdayBox( box );
<a name="l00559"></a>00559   wdayBox.setTop( <span class="keywordtype">int</span>( box.top() + 3 + cellHeight ) );
<a name="l00560"></a>00560   wdayBox.setHeight( <span class="keywordtype">int</span>(2*cellHeight)-<span class="keywordtype">int</span>(cellHeight) );
<a name="l00561"></a>00561 
<a name="l00562"></a>00562   <span class="keywordflow">if</span> ( mCalSys ) {
<a name="l00563"></a>00563     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> col = 0; col &lt; 7; ++col) {
<a name="l00564"></a>00564       QString tmpStr = mCalSys-&gt;weekDayName( monthDate2 )[0].upper();
<a name="l00565"></a>00565       wdayBox.setLeft( <span class="keywordtype">int</span>(box.left() + col*cellWidth) );
<a name="l00566"></a>00566       wdayBox.setRight( <span class="keywordtype">int</span>(box.left() + (col+1)*cellWidth) );
<a name="l00567"></a>00567       p.drawText( wdayBox, Qt::AlignCenter, tmpStr );
<a name="l00568"></a>00568       monthDate2 = monthDate2.addDays( 1 );
<a name="l00569"></a>00569     }
<a name="l00570"></a>00570   }
<a name="l00571"></a>00571 
<a name="l00572"></a>00572   <span class="comment">// draw separator line</span>
<a name="l00573"></a>00573   <span class="keywordtype">int</span> calStartY = wdayBox.bottom() + 2;
<a name="l00574"></a>00574   p.drawLine( box.left(), calStartY, box.right(), calStartY );
<a name="l00575"></a>00575   monthDate = monthDate.addDays( -weekdayCol );
<a name="l00576"></a>00576 
<a name="l00577"></a>00577   <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> row = 0; row &lt; (rownr-2); row++ ) {
<a name="l00578"></a>00578     <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> col = 0; col &lt; 7; col++ ) {
<a name="l00579"></a>00579       <span class="keywordflow">if</span> ( monthDate.month() == month ) {
<a name="l00580"></a>00580         QRect dayRect( <span class="keywordtype">int</span>( box.left() + col*cellWidth ), <span class="keywordtype">int</span>( calStartY + row*cellHeight ), 0, 0 );
<a name="l00581"></a>00581         dayRect.setRight( <span class="keywordtype">int</span>( box.left() + (col+1)*cellWidth ) );
<a name="l00582"></a>00582         dayRect.setBottom( <span class="keywordtype">int</span>( calStartY + (row+1)*cellHeight ) );
<a name="l00583"></a>00583         p.drawText( dayRect, Qt::AlignCenter, QString::number( monthDate.day() ) );
<a name="l00584"></a>00584       }
<a name="l00585"></a>00585       monthDate = monthDate.addDays(1);
<a name="l00586"></a>00586     }
<a name="l00587"></a>00587   }
<a name="l00588"></a>00588   p.setFont( oldFont );
<a name="l00589"></a>00589 }
<a name="l00590"></a>00590 
<a name="l00591"></a>00591 
<a name="l00592"></a>00592 
<a name="l00593"></a>00593 
<a name="l00594"></a>00594 
<a name="l00596"></a>00596 
<a name="l00597"></a>00597 <span class="comment">/*</span>
<a name="l00598"></a>00598 <span class="comment"> * This routine draws a header box over the main part of the calendar</span>
<a name="l00599"></a>00599 <span class="comment"> * containing the days of the week.</span>
<a name="l00600"></a>00600 <span class="comment"> */</span>
<a name="l00601"></a><a class="code" href="classCalPrintPluginBase.html#954d7b274b3d45bca9104ea716cc8360">00601</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#954d7b274b3d45bca9104ea716cc8360" title="Draw a horizontal bar with the weekday names of the given date range in the given...">CalPrintPluginBase::drawDaysOfWeek</a>(QPainter &amp;p,
<a name="l00602"></a>00602     <span class="keyword">const</span> QDate &amp;fromDate, <span class="keyword">const</span> QDate &amp;toDate, <span class="keyword">const</span> QRect &amp;box )
<a name="l00603"></a>00603 {
<a name="l00604"></a>00604   <span class="keywordtype">double</span> cellWidth = double(box.width()) / <span class="keywordtype">double</span>(fromDate.daysTo( toDate )+1);
<a name="l00605"></a>00605   QDate cellDate( fromDate );
<a name="l00606"></a>00606   QRect dateBox( box );
<a name="l00607"></a>00607   <span class="keywordtype">int</span> i = 0;
<a name="l00608"></a>00608 
<a name="l00609"></a>00609   <span class="keywordflow">while</span> ( cellDate &lt;= toDate ) {
<a name="l00610"></a>00610     dateBox.setLeft( box.left() + int(i*cellWidth) );
<a name="l00611"></a>00611     dateBox.setRight( box.left() + int((i+1)*cellWidth) );
<a name="l00612"></a>00612     <a class="code" href="classCalPrintPluginBase.html#64bfbfcb367400d045e86a9438db9840" title="Draw a single weekday name in a box inside the given area of the painter.">drawDaysOfWeekBox</a>(p, cellDate, dateBox );
<a name="l00613"></a>00613     cellDate = cellDate.addDays(1);
<a name="l00614"></a>00614     i++;
<a name="l00615"></a>00615   }
<a name="l00616"></a>00616 }
<a name="l00617"></a>00617 
<a name="l00618"></a>00618 
<a name="l00619"></a><a class="code" href="classCalPrintPluginBase.html#64bfbfcb367400d045e86a9438db9840">00619</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#64bfbfcb367400d045e86a9438db9840" title="Draw a single weekday name in a box inside the given area of the painter.">CalPrintPluginBase::drawDaysOfWeekBox</a>(QPainter &amp;p, <span class="keyword">const</span> QDate &amp;qd,
<a name="l00620"></a>00620     <span class="keyword">const</span> QRect &amp;box )
<a name="l00621"></a>00621 {
<a name="l00622"></a>00622   <a class="code" href="classCalPrintPluginBase.html#79806358f99eba12252ecd612d1fb548" title="Draw a subheader box with a shaded background and the given string.">drawSubHeaderBox</a>( p, (mCalSys)?(mCalSys-&gt;weekDayName( qd )):(QString::null), box );
<a name="l00623"></a>00623 }
<a name="l00624"></a>00624 
<a name="l00625"></a>00625 
<a name="l00626"></a><a class="code" href="classCalPrintPluginBase.html#b334ee08dbc37d94c6536c1c2d7a3fe1">00626</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#b334ee08dbc37d94c6536c1c2d7a3fe1" title="Draw a (vertical) time scale from time fromTime to toTime inside the given area of...">CalPrintPluginBase::drawTimeLine</a>(QPainter &amp;p,
<a name="l00627"></a>00627     <span class="keyword">const</span> QTime &amp;fromTime, <span class="keyword">const</span> QTime &amp;toTime,
<a name="l00628"></a>00628     <span class="keyword">const</span> QRect &amp;box)
<a name="l00629"></a>00629 {
<a name="l00630"></a>00630   <a class="code" href="classCalPrintPluginBase.html#bbe07855a40097aca4706f2498f879be" title="Draw a box with given width at the given coordinates.">drawBox</a>( p, BOX_BORDER_WIDTH, box );
<a name="l00631"></a>00631 
<a name="l00632"></a>00632   <span class="keywordtype">int</span> totalsecs=fromTime.secsTo(toTime);
<a name="l00633"></a>00633   <span class="keywordtype">float</span> minlen=(float)box.height()*60./(float)totalsecs;
<a name="l00634"></a>00634   <span class="keywordtype">float</span> cellHeight=(60.*(float)minlen);
<a name="l00635"></a>00635   <span class="keywordtype">float</span> currY=box.top();
<a name="l00636"></a>00636   <span class="comment">// TODO: Don't use half of the width, but less, for the minutes!</span>
<a name="l00637"></a>00637   <span class="keywordtype">int</span> xcenter = box.left()+box.width()/2;
<a name="l00638"></a>00638 
<a name="l00639"></a>00639   QTime curTime( fromTime );
<a name="l00640"></a>00640   QTime endTime( toTime );
<a name="l00641"></a>00641   <span class="keywordflow">if</span> ( fromTime.minute() &gt; 30 )
<a name="l00642"></a>00642     curTime = QTime( fromTime.hour()+1, 0, 0 );
<a name="l00643"></a>00643   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( fromTime.minute() &gt; 0 ) {
<a name="l00644"></a>00644     curTime = QTime( fromTime.hour(), 30, 0 );
<a name="l00645"></a>00645     <span class="keywordtype">float</span> yy = currY + minlen*(float)fromTime.secsTo( curTime )/60.;
<a name="l00646"></a>00646     p.drawLine( xcenter, (<span class="keywordtype">int</span>)yy, box.right(), (int)yy );
<a name="l00647"></a>00647     curTime = QTime( fromTime.hour()+1, 0, 0 );
<a name="l00648"></a>00648   }
<a name="l00649"></a>00649   currY += ( float( fromTime.secsTo(curTime)*minlen ) / 60. );
<a name="l00650"></a>00650 
<a name="l00651"></a>00651   <span class="keywordflow">while</span> ( curTime &lt; endTime ) {
<a name="l00652"></a>00652     p.drawLine( box.left(), (int)currY, box.right(), (int)currY );
<a name="l00653"></a>00653     <span class="keywordtype">int</span> newY=(int)(currY+cellHeight/2.);
<a name="l00654"></a>00654     QString numStr;
<a name="l00655"></a>00655     <span class="keywordflow">if</span> ( newY &lt; box.bottom() ) {
<a name="l00656"></a>00656       QFont oldFont( p.font() );
<a name="l00657"></a>00657       <span class="comment">// draw the time:</span>
<a name="l00658"></a>00658       <span class="keywordflow">if</span> ( !KGlobal::locale()-&gt;use12Clock() ) {
<a name="l00659"></a>00659         p.drawLine( xcenter, (<span class="keywordtype">int</span>)newY, box.right(), (int)newY);
<a name="l00660"></a>00660         numStr.setNum(curTime.hour());
<a name="l00661"></a>00661         <span class="keywordflow">if</span> (cellHeight &gt; 30) {
<a name="l00662"></a>00662           p.setFont(QFont(<span class="stringliteral">"sans-serif"</span>, 16, QFont::Bold));
<a name="l00663"></a>00663         } <span class="keywordflow">else</span> {
<a name="l00664"></a>00664           p.setFont(QFont(<span class="stringliteral">"sans-serif"</span>, 12, QFont::Bold));
<a name="l00665"></a>00665         }
<a name="l00666"></a>00666         p.drawText( box.left()+2, (int)currY+2, box.width()/2-2, (int)cellHeight,
<a name="l00667"></a>00667                   Qt::AlignTop | Qt::AlignRight, numStr);
<a name="l00668"></a>00668         p.setFont(QFont(<span class="stringliteral">"sans-serif"</span>, 10, QFont::Normal));
<a name="l00669"></a>00669         p.drawText( xcenter, (<span class="keywordtype">int</span>)currY+2, box.width()/2+2, (int)(cellHeight/2)-3,
<a name="l00670"></a>00670                   Qt::AlignTop | Qt::AlignLeft, <span class="stringliteral">"00"</span>);
<a name="l00671"></a>00671       } <span class="keywordflow">else</span> {
<a name="l00672"></a>00672         p.drawLine( box.left(), (int)newY, box.right(), (int)newY);
<a name="l00673"></a>00673         QTime time( curTime.hour(), 0 );
<a name="l00674"></a>00674         numStr = KGlobal::locale()-&gt;formatTime( time );
<a name="l00675"></a>00675         <span class="keywordflow">if</span> ( box.width() &lt; 60 ) {
<a name="l00676"></a>00676           p.setFont(QFont(<span class="stringliteral">"sans-serif"</span>, 8, QFont::Bold)); <span class="comment">// for weekprint</span>
<a name="l00677"></a>00677         } <span class="keywordflow">else</span> {
<a name="l00678"></a>00678           p.setFont(QFont(<span class="stringliteral">"sans-serif"</span>, 12, QFont::Bold)); <span class="comment">// for dayprint</span>
<a name="l00679"></a>00679         }
<a name="l00680"></a>00680         p.drawText(box.left()+2, (int)currY+2, box.width()-4, (int)cellHeight/2-3,
<a name="l00681"></a>00681                   Qt::AlignTop|Qt::AlignLeft, numStr);
<a name="l00682"></a>00682       }
<a name="l00683"></a>00683       currY+=cellHeight;
<a name="l00684"></a>00684       p.setFont( oldFont );
<a name="l00685"></a>00685     } <span class="comment">// enough space for half-hour line and time</span>
<a name="l00686"></a>00686     <span class="keywordflow">if</span> (curTime.secsTo(endTime)&gt;3600)
<a name="l00687"></a>00687       curTime=curTime.addSecs(3600);
<a name="l00688"></a>00688     <span class="keywordflow">else</span> curTime=endTime;
<a name="l00689"></a>00689   } <span class="comment">// currTime&lt;endTime</span>
<a name="l00690"></a>00690 }
<a name="l00691"></a>00691 
<a name="l00692"></a>00692 
<a name="l00694"></a>00694 
<a name="l00700"></a><a class="code" href="classCalPrintPluginBase.html#d1a405409d493b157449d75fbe346813">00700</a> <span class="keywordtype">int</span> <a class="code" href="classCalPrintPluginBase.html#d1a405409d493b157449d75fbe346813" title="Draw the all-day box for the agenda print view (the box on top which doesn&amp;#39;t...">CalPrintPluginBase::drawAllDayBox</a>(QPainter &amp;p, <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1ListBase.html">Event::List</a> &amp;eventList,
<a name="l00701"></a>00701     <span class="keyword">const</span> QDate &amp;qd, <span class="keywordtype">bool</span> expandable, <span class="keyword">const</span> QRect &amp;box )
<a name="l00702"></a>00702 {
<a name="l00703"></a>00703   Event::List::Iterator it, itold;
<a name="l00704"></a>00704 
<a name="l00705"></a>00705   <span class="keywordtype">int</span> offset=box.top();
<a name="l00706"></a>00706 
<a name="l00707"></a>00707   QString multiDayStr;
<a name="l00708"></a>00708 
<a name="l00709"></a>00709   <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a>*hd = holiday( qd );
<a name="l00710"></a>00710   <span class="keywordflow">if</span> ( hd ) eventList.prepend( hd );
<a name="l00711"></a>00711 
<a name="l00712"></a>00712   it = eventList.begin();
<a name="l00713"></a>00713   <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a> *currEvent = 0;
<a name="l00714"></a>00714   <span class="comment">// First, print all floating events</span>
<a name="l00715"></a>00715   <span class="keywordflow">while</span>( it!=eventList.end() ) {
<a name="l00716"></a>00716     currEvent=*it;
<a name="l00717"></a>00717     itold=it;
<a name="l00718"></a>00718     ++it;
<a name="l00719"></a>00719     <span class="keywordflow">if</span> ( currEvent &amp;&amp; currEvent-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1IncidenceBase.html#edfe188f8024f1ec9e25972ddd332724">doesFloat</a>() ) {
<a name="l00720"></a>00720       <span class="comment">// set the colors according to the categories</span>
<a name="l00721"></a>00721       <span class="keywordflow">if</span> ( expandable ) {
<a name="l00722"></a>00722         QRect eventBox( box );
<a name="l00723"></a>00723         eventBox.setTop( offset );
<a name="l00724"></a>00724         <a class="code" href="classCalPrintPluginBase.html#35be14f3ed5f5d84d62d9033b60d5cad" title="Print the box for the given event with the given string.">showEventBox</a>( p, eventBox, currEvent, currEvent-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5f6e41afa4e1b167c4b49e603506b34c">summary</a>() );
<a name="l00725"></a>00725         offset += box.height();
<a name="l00726"></a>00726       } <span class="keywordflow">else</span> {
<a name="l00727"></a>00727         <span class="keywordflow">if</span> ( !multiDayStr.isEmpty() ) multiDayStr += <span class="stringliteral">", "</span>;
<a name="l00728"></a>00728         multiDayStr += currEvent-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5f6e41afa4e1b167c4b49e603506b34c">summary</a>();
<a name="l00729"></a>00729       }
<a name="l00730"></a>00730       eventList.remove( itold );
<a name="l00731"></a>00731     }
<a name="l00732"></a>00732   }
<a name="l00733"></a>00733   <span class="keywordflow">if</span> ( hd ) <span class="keyword">delete</span> hd;
<a name="l00734"></a>00734 
<a name="l00735"></a>00735   <span class="keywordtype">int</span> ret = box.height();
<a name="l00736"></a>00736   QRect eventBox( box );
<a name="l00737"></a>00737   <span class="keywordflow">if</span> (!expandable) {
<a name="l00738"></a>00738     <span class="keywordflow">if</span> (!multiDayStr.isEmpty()) {
<a name="l00739"></a>00739       <a class="code" href="classCalPrintPluginBase.html#619168a1dfa69059568dedaac2559056" title="Draw a shaded box with given width at the given coordinates.">drawShadedBox</a>( p, BOX_BORDER_WIDTH, QColor( 128, 128, 128 ), eventBox );
<a name="l00740"></a>00740       <a class="code" href="classCalPrintPluginBase.html#6011cc2444a1e06966a0928e0b8b8ebd" title="Print the given string (event summary) in the given rectangle.">printEventString</a>( p, eventBox, multiDayStr );
<a name="l00741"></a>00741     } <span class="keywordflow">else</span> {
<a name="l00742"></a>00742       <a class="code" href="classCalPrintPluginBase.html#bbe07855a40097aca4706f2498f879be" title="Draw a box with given width at the given coordinates.">drawBox</a>( p, BOX_BORDER_WIDTH, eventBox );
<a name="l00743"></a>00743     }
<a name="l00744"></a>00744   } <span class="keywordflow">else</span> {
<a name="l00745"></a>00745     ret = offset - box.top();
<a name="l00746"></a>00746     eventBox.setBottom( ret );
<a name="l00747"></a>00747     <a class="code" href="classCalPrintPluginBase.html#bbe07855a40097aca4706f2498f879be" title="Draw a box with given width at the given coordinates.">drawBox</a>( p, BOX_BORDER_WIDTH, eventBox );
<a name="l00748"></a>00748   }
<a name="l00749"></a>00749   <span class="keywordflow">return</span> ret;
<a name="l00750"></a>00750 }
<a name="l00751"></a>00751 
<a name="l00752"></a>00752 
<a name="l00753"></a><a class="code" href="classCalPrintPluginBase.html#91afccefa90ad72a682808b805045495">00753</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#91afccefa90ad72a682808b805045495" title="Draw the agenda box for the day print style (the box showing all events of that day)...">CalPrintPluginBase::drawAgendaDayBox</a>( QPainter &amp;p, <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1ListBase.html">Event::List</a> &amp;events,
<a name="l00754"></a>00754                                      <span class="keyword">const</span> QDate &amp;qd, <span class="keywordtype">bool</span> expandable,
<a name="l00755"></a>00755                                      QTime &amp;fromTime, QTime &amp;toTime,
<a name="l00756"></a>00756                                      <span class="keyword">const</span> QRect &amp;oldbox )
<a name="l00757"></a>00757 {
<a name="l00758"></a>00758   <span class="keywordflow">if</span> ( !isWorkingDay( qd ) ) {
<a name="l00759"></a>00759     <a class="code" href="classCalPrintPluginBase.html#619168a1dfa69059568dedaac2559056" title="Draw a shaded box with given width at the given coordinates.">drawShadedBox</a>( p, BOX_BORDER_WIDTH, QColor( 232, 232, 232 ), oldbox );
<a name="l00760"></a>00760   } <span class="keywordflow">else</span> {
<a name="l00761"></a>00761     <a class="code" href="classCalPrintPluginBase.html#bbe07855a40097aca4706f2498f879be" title="Draw a box with given width at the given coordinates.">drawBox</a>( p, BOX_BORDER_WIDTH, oldbox );
<a name="l00762"></a>00762   }
<a name="l00763"></a>00763   QRect box( oldbox );
<a name="l00764"></a>00764   <span class="comment">// Account for the border with and cut away that margin from the interior</span>
<a name="l00765"></a>00765 <span class="comment">//   box.setRight( box.right()-BOX_BORDER_WIDTH );</span>
<a name="l00766"></a>00766 
<a name="l00767"></a>00767   <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a> *event;
<a name="l00768"></a>00768 
<a name="l00769"></a>00769   <span class="keywordflow">if</span> ( expandable ) {
<a name="l00770"></a>00770     <span class="comment">// Adapt start/end times to include complete events</span>
<a name="l00771"></a>00771     Event::List::ConstIterator it;
<a name="l00772"></a>00772     <span class="keywordflow">for</span> ( it = events.begin(); it != events.end(); ++it ) {
<a name="l00773"></a>00773       <span class="keyword">event</span> = *it;
<a name="l00774"></a>00774       <span class="keywordflow">if</span> ( event-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1IncidenceBase.html#5419a946a4e5715a0c34ec2c7e04cd9b">dtStart</a>().time() &lt; fromTime )
<a name="l00775"></a>00775         fromTime = event-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1IncidenceBase.html#5419a946a4e5715a0c34ec2c7e04cd9b">dtStart</a>().time();
<a name="l00776"></a>00776       <span class="keywordflow">if</span> ( event-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html#0bc3052d40d160c7d58a5483dfcff693">dtEnd</a>().time() &gt; toTime )
<a name="l00777"></a>00777         toTime = event-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html#0bc3052d40d160c7d58a5483dfcff693">dtEnd</a>().time();
<a name="l00778"></a>00778     }
<a name="l00779"></a>00779   }
<a name="l00780"></a>00780 
<a name="l00781"></a>00781   <span class="comment">// Show at least one hour</span>
<a name="l00782"></a>00782 <span class="comment">//   if ( fromTime.secsTo( toTime ) &lt; 3600 ) {</span>
<a name="l00783"></a>00783 <span class="comment">//     fromTime = QTime( fromTime.hour(), 0, 0 );</span>
<a name="l00784"></a>00784 <span class="comment">//     toTime = fromTime.addSecs( 3600 );</span>
<a name="l00785"></a>00785 <span class="comment">//   }</span>
<a name="l00786"></a>00786 
<a name="l00787"></a>00787   <span class="comment">// calculate the height of a cell and of a minute</span>
<a name="l00788"></a>00788   <span class="keywordtype">int</span> totalsecs = fromTime.secsTo( toTime );
<a name="l00789"></a>00789   <span class="keywordtype">float</span> minlen = box.height() * 60. / totalsecs;
<a name="l00790"></a>00790   <span class="keywordtype">float</span> cellHeight = 60. * minlen;
<a name="l00791"></a>00791   <span class="keywordtype">float</span> currY = box.top();
<a name="l00792"></a>00792 
<a name="l00793"></a>00793   <span class="comment">// print grid:</span>
<a name="l00794"></a>00794   QTime curTime( QTime( fromTime.hour(), 0, 0 ) );
<a name="l00795"></a>00795   currY += fromTime.secsTo( curTime ) * minlen / 60;
<a name="l00796"></a>00796 
<a name="l00797"></a>00797   <span class="keywordflow">while</span> ( curTime &lt; toTime &amp;&amp; curTime.isValid() ) {
<a name="l00798"></a>00798     <span class="keywordflow">if</span> ( currY &gt; box.top() )
<a name="l00799"></a>00799       p.drawLine( box.left(), int( currY ), box.right(), int( currY ) );
<a name="l00800"></a>00800     currY += cellHeight / 2;
<a name="l00801"></a>00801     <span class="keywordflow">if</span> ( ( currY &gt; box.top() ) &amp;&amp; ( currY &lt; box.bottom() ) ) {
<a name="l00802"></a>00802       <span class="comment">// enough space for half-hour line</span>
<a name="l00803"></a>00803       QPen oldPen( p.pen() );
<a name="l00804"></a>00804       p.setPen( QColor( 192, 192, 192 ) );
<a name="l00805"></a>00805       p.drawLine( box.left(), int( currY ), box.right(), int( currY ) );
<a name="l00806"></a>00806       p.setPen( oldPen );
<a name="l00807"></a>00807     }
<a name="l00808"></a>00808     <span class="keywordflow">if</span> ( curTime.secsTo( toTime ) &gt; 3600 )
<a name="l00809"></a>00809       curTime = curTime.addSecs( 3600 );
<a name="l00810"></a>00810     <span class="keywordflow">else</span> curTime = toTime;
<a name="l00811"></a>00811     currY += cellHeight / 2;
<a name="l00812"></a>00812   }
<a name="l00813"></a>00813 
<a name="l00814"></a>00814   QDateTime startPrintDate = QDateTime( qd, fromTime );
<a name="l00815"></a>00815   QDateTime endPrintDate = QDateTime( qd, toTime );
<a name="l00816"></a>00816 
<a name="l00817"></a>00817   <span class="comment">// Calculate horizontal positions and widths of events taking into account</span>
<a name="l00818"></a>00818   <span class="comment">// overlapping events</span>
<a name="l00819"></a>00819 
<a name="l00820"></a>00820   QPtrList&lt;KOrg::CellItem&gt; cells;
<a name="l00821"></a>00821   cells.setAutoDelete( <span class="keyword">true</span> );
<a name="l00822"></a>00822 
<a name="l00823"></a>00823   Event::List::ConstIterator itEvents;
<a name="l00824"></a>00824   <span class="keywordflow">for</span>( itEvents = events.begin(); itEvents != events.end(); ++itEvents ) {
<a name="l00825"></a>00825     QValueList&lt;QDateTime&gt; times = (*itEvents)-&gt;startDateTimesForDate( qd );
<a name="l00826"></a>00826     <span class="keywordflow">for</span> ( QValueList&lt;QDateTime&gt;::ConstIterator it = times.begin();
<a name="l00827"></a>00827           it != times.end(); ++it ) {
<a name="l00828"></a>00828       cells.append( <span class="keyword">new</span> PrintCellItem( *itEvents, (*it), (*itEvents)-&gt;endDateForStart( *it ) ) );
<a name="l00829"></a>00829     }
<a name="l00830"></a>00830   }
<a name="l00831"></a>00831 
<a name="l00832"></a>00832   QPtrListIterator&lt;KOrg::CellItem&gt; it1( cells );
<a name="l00833"></a>00833   <span class="keywordflow">for</span>( it1.toFirst(); it1.current(); ++it1 ) {
<a name="l00834"></a>00834     KOrg::CellItem *placeItem = it1.current();
<a name="l00835"></a>00835     KOrg::CellItem::placeItem( cells, placeItem );
<a name="l00836"></a>00836   }
<a name="l00837"></a>00837 
<a name="l00838"></a>00838 <span class="comment">//   p.setFont( QFont( "sans-serif", 10 ) );</span>
<a name="l00839"></a>00839 
<a name="l00840"></a>00840   <span class="keywordflow">for</span>( it1.toFirst(); it1.current(); ++it1 ) {
<a name="l00841"></a>00841     PrintCellItem *placeItem = <span class="keyword">static_cast&lt;</span>PrintCellItem *<span class="keyword">&gt;</span>( it1.current() );
<a name="l00842"></a>00842     drawAgendaItem( placeItem, p, startPrintDate, endPrintDate, minlen, box );
<a name="l00843"></a>00843   }
<a name="l00844"></a>00844 <span class="comment">//   p.setFont( oldFont );</span>
<a name="l00845"></a>00845 }
<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> CalPrintPluginBase::drawAgendaItem( PrintCellItem *item, QPainter &amp;p,
<a name="l00850"></a>00850                                    <span class="keyword">const</span> QDateTime &amp;startPrintDate,
<a name="l00851"></a>00851                                    <span class="keyword">const</span> QDateTime &amp;endPrintDate,
<a name="l00852"></a>00852                                    <span class="keywordtype">float</span> minlen, <span class="keyword">const</span> QRect &amp;box )
<a name="l00853"></a>00853 {
<a name="l00854"></a>00854   <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a> *<span class="keyword">event</span> = item-&gt;event();
<a name="l00855"></a>00855 
<a name="l00856"></a>00856   <span class="comment">// start/end of print area for event</span>
<a name="l00857"></a>00857   QDateTime startTime = item-&gt;start();
<a name="l00858"></a>00858   QDateTime endTime = item-&gt;end();
<a name="l00859"></a>00859   <span class="keywordflow">if</span> ( ( startTime &lt; endPrintDate &amp;&amp; endTime &gt; startPrintDate ) ||
<a name="l00860"></a>00860        ( endTime &gt; startPrintDate &amp;&amp; startTime &lt; endPrintDate ) ) {
<a name="l00861"></a>00861     <span class="keywordflow">if</span> ( startTime &lt; startPrintDate ) startTime = startPrintDate;
<a name="l00862"></a>00862     <span class="keywordflow">if</span> ( endTime &gt; endPrintDate ) endTime = endPrintDate;
<a name="l00863"></a>00863     <span class="keywordtype">int</span> currentWidth = box.width() / item-&gt;subCells();
<a name="l00864"></a>00864     <span class="keywordtype">int</span> currentX = box.left() + item-&gt;subCell() * currentWidth;
<a name="l00865"></a>00865     <span class="keywordtype">int</span> currentYPos = int( box.top() + startPrintDate.secsTo( startTime ) *
<a name="l00866"></a>00866                            minlen / 60. );
<a name="l00867"></a>00867     <span class="keywordtype">int</span> currentHeight = int( box.top() + startPrintDate.secsTo( endTime ) * minlen / 60. ) - currentYPos;
<a name="l00868"></a>00868 
<a name="l00869"></a>00869     QRect eventBox( currentX, currentYPos, currentWidth, currentHeight );
<a name="l00870"></a>00870     <a class="code" href="classCalPrintPluginBase.html#35be14f3ed5f5d84d62d9033b60d5cad" title="Print the box for the given event with the given string.">showEventBox</a>( p, eventBox, event, event-&gt;summary() );
<a name="l00871"></a>00871   }
<a name="l00872"></a>00872 }
<a name="l00873"></a>00873 
<a name="l00874"></a>00874 <span class="comment">//TODO TODO TODO</span>
<a name="l00875"></a><a class="code" href="classCalPrintPluginBase.html#99c475090521c5cf7cfaca187d746383">00875</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#99c475090521c5cf7cfaca187d746383" title="Draw the box containing a list of all events of the given day (with their times,...">CalPrintPluginBase::drawDayBox</a>( QPainter &amp;p, <span class="keyword">const</span> QDate &amp;qd,
<a name="l00876"></a>00876     <span class="keyword">const</span> QRect &amp;box,
<a name="l00877"></a>00877     <span class="keywordtype">bool</span> fullDate, <span class="keywordtype">bool</span> printRecurDaily, <span class="keywordtype">bool</span> printRecurWeekly )
<a name="l00878"></a>00878 {
<a name="l00879"></a>00879   QString dayNumStr;
<a name="l00880"></a>00880   QString ampm;
<a name="l00881"></a>00881   <span class="keyword">const</span> KLocale*local = KGlobal::locale();
<a name="l00882"></a>00882 
<a name="l00883"></a>00883 
<a name="l00884"></a>00884   <span class="comment">// This has to be localized</span>
<a name="l00885"></a>00885   <span class="keywordflow">if</span> ( fullDate &amp;&amp; mCalSys ) {
<a name="l00886"></a>00886 
<a name="l00887"></a>00887     dayNumStr = i18n(<span class="stringliteral">"weekday month date"</span>, <span class="stringliteral">"%1 %2 %3"</span>)
<a name="l00888"></a>00888         .arg( mCalSys-&gt;weekDayName( qd ) )
<a name="l00889"></a>00889         .arg( mCalSys-&gt;monthName( qd ) )
<a name="l00890"></a>00890         .arg( qd.day() );
<a name="l00891"></a>00891 <span class="comment">//    dayNumStr = local-&gt;formatDate(qd);</span>
<a name="l00892"></a>00892   } <span class="keywordflow">else</span> {
<a name="l00893"></a>00893     dayNumStr = QString::number( qd.day() );
<a name="l00894"></a>00894   }
<a name="l00895"></a>00895 
<a name="l00896"></a>00896   QRect subHeaderBox( box );
<a name="l00897"></a>00897   subHeaderBox.setHeight( mSubHeaderHeight );
<a name="l00898"></a>00898   <a class="code" href="classCalPrintPluginBase.html#619168a1dfa69059568dedaac2559056" title="Draw a shaded box with given width at the given coordinates.">drawShadedBox</a>( p, BOX_BORDER_WIDTH, p.backgroundColor(), box );
<a name="l00899"></a>00899   <a class="code" href="classCalPrintPluginBase.html#619168a1dfa69059568dedaac2559056" title="Draw a shaded box with given width at the given coordinates.">drawShadedBox</a>( p, 0, QColor( 232, 232, 232 ), subHeaderBox );
<a name="l00900"></a>00900   <a class="code" href="classCalPrintPluginBase.html#bbe07855a40097aca4706f2498f879be" title="Draw a box with given width at the given coordinates.">drawBox</a>( p, BOX_BORDER_WIDTH, box );
<a name="l00901"></a>00901   QString hstring( holidayString( qd ) );
<a name="l00902"></a>00902   QFont oldFont( p.font() );
<a name="l00903"></a>00903 
<a name="l00904"></a>00904   QRect headerTextBox( subHeaderBox );
<a name="l00905"></a>00905   headerTextBox.setLeft( subHeaderBox.left()+5 );
<a name="l00906"></a>00906   headerTextBox.setRight( subHeaderBox.right()-5 );
<a name="l00907"></a>00907   <span class="keywordflow">if</span> (!hstring.isEmpty()) {
<a name="l00908"></a>00908     p.setFont( QFont( <span class="stringliteral">"sans-serif"</span>, 8, QFont::Bold, <span class="keyword">true</span> ) );
<a name="l00909"></a>00909 
<a name="l00910"></a>00910     p.drawText( headerTextBox, Qt::AlignLeft | Qt::AlignVCenter, hstring );
<a name="l00911"></a>00911   }
<a name="l00912"></a>00912   p.setFont(QFont(<span class="stringliteral">"sans-serif"</span>, 10, QFont::Bold));
<a name="l00913"></a>00913   p.drawText( headerTextBox, Qt::AlignRight | Qt::AlignVCenter, dayNumStr);
<a name="l00914"></a>00914 
<a name="l00915"></a>00915   <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1ListBase.html">Event::List</a> eventList = mCalendar-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Calendar.html#a910b4a8419fcc311e1ca96e588f5147">events</a>( qd,
<a name="l00916"></a>00916                                              <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/namespaceKCal.html#4adb61b1b3687a67349254a53c7a2f21a5bf5e1beb9afa58353a1ac2cc14d252">EventSortStartDate</a>,
<a name="l00917"></a>00917                                              <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/namespaceKCal.html#b79dc8179fdc021ae82c321b08fb676513f25b5ee7c6f59ab9bb9188f937a0b4">SortDirectionAscending</a> );
<a name="l00918"></a>00918   QString text;
<a name="l00919"></a>00919   p.setFont( QFont( <span class="stringliteral">"sans-serif"</span>, 8 ) );
<a name="l00920"></a>00920 
<a name="l00921"></a>00921   <span class="keywordtype">int</span> textY=mSubHeaderHeight+3; <span class="comment">// gives the relative y-coord of the next printed entry</span>
<a name="l00922"></a>00922   Event::List::ConstIterator it;
<a name="l00923"></a>00923 
<a name="l00924"></a>00924   <span class="keywordflow">for</span>( it = eventList.begin(); it != eventList.end() &amp;&amp; textY&lt;box.height(); ++it ) {
<a name="l00925"></a>00925     <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a> *currEvent = *it;
<a name="l00926"></a>00926     <span class="keywordflow">if</span> ( ( !printRecurDaily  &amp;&amp; currEvent-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#edfbd256a762138a0b7232c077cf613f">recurrenceType</a>() == Recurrence::rDaily  ) ||
<a name="l00927"></a>00927          ( !printRecurWeekly &amp;&amp; currEvent-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#edfbd256a762138a0b7232c077cf613f">recurrenceType</a>() == Recurrence::rWeekly ) ) {
<a name="l00928"></a>00928       <span class="keywordflow">continue</span>; }
<a name="l00929"></a>00929     <span class="keywordflow">if</span> ( currEvent-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1IncidenceBase.html#edfe188f8024f1ec9e25972ddd332724">doesFloat</a>() || currEvent-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html#579d969ee1963d287f5662554a5aaa4b">isMultiDay</a>() )
<a name="l00930"></a>00930       text = <span class="stringliteral">""</span>;
<a name="l00931"></a>00931     <span class="keywordflow">else</span>
<a name="l00932"></a>00932       text = local-&gt;formatTime( currEvent-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1IncidenceBase.html#5419a946a4e5715a0c34ec2c7e04cd9b">dtStart</a>().time() );
<a name="l00933"></a>00933 
<a name="l00934"></a>00934     drawIncidence( p, box, text, currEvent-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5f6e41afa4e1b167c4b49e603506b34c">summary</a>(), textY );
<a name="l00935"></a>00935   }
<a name="l00936"></a>00936 
<a name="l00937"></a>00937   <span class="keywordflow">if</span> ( textY&lt;box.height() ) {
<a name="l00938"></a>00938     <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1ListBase.html">Todo::List</a> todos = mCalendar-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Calendar.html#ed7c816d2cede2558b5624e8a34ee745">todos</a>( qd );
<a name="l00939"></a>00939     Todo::List::ConstIterator it2;
<a name="l00940"></a>00940     <span class="keywordflow">for</span>( it2 = todos.begin(); it2 != todos.end() &amp;&amp; textY&lt;box.height(); ++it2 ) {
<a name="l00941"></a>00941       <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html">Todo</a> *todo = *it2;
<a name="l00942"></a>00942       <span class="keywordflow">if</span> ( ( !printRecurDaily  &amp;&amp; todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#edfbd256a762138a0b7232c077cf613f">recurrenceType</a>() == Recurrence::rDaily  ) ||
<a name="l00943"></a>00943            ( !printRecurWeekly &amp;&amp; todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#edfbd256a762138a0b7232c077cf613f">recurrenceType</a>() == Recurrence::rWeekly ) )
<a name="l00944"></a>00944         <span class="keywordflow">continue</span>;
<a name="l00945"></a>00945       <span class="keywordflow">if</span> ( todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html#a40c65f6e9024015f7546e8749436b12">hasDueDate</a>() &amp;&amp; !todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1IncidenceBase.html#edfe188f8024f1ec9e25972ddd332724">doesFloat</a>() )
<a name="l00946"></a>00946         text += KGlobal::locale()-&gt;formatTime(todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html#09d6933ae42390339b27053faee3afec">dtDue</a>().time()) + <span class="stringliteral">" "</span>;
<a name="l00947"></a>00947       <span class="keywordflow">else</span>
<a name="l00948"></a>00948         text = <span class="stringliteral">""</span>;
<a name="l00949"></a>00949       drawIncidence( p, box, text, i18n(<span class="stringliteral">"To-do: %1"</span>).arg(todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5f6e41afa4e1b167c4b49e603506b34c">summary</a>()), textY );
<a name="l00950"></a>00950     }
<a name="l00951"></a>00951   }
<a name="l00952"></a>00952 
<a name="l00953"></a>00953   p.setFont( oldFont );
<a name="l00954"></a>00954 }
<a name="l00955"></a>00955 
<a name="l00956"></a>00956 <span class="comment">// TODO TODO TODO</span>
<a name="l00957"></a>00957 <span class="keywordtype">void</span> CalPrintPluginBase::drawIncidence( QPainter &amp;p, <span class="keyword">const</span> QRect &amp;dayBox, <span class="keyword">const</span> QString &amp;time, <span class="keyword">const</span> QString &amp;summary, <span class="keywordtype">int</span> &amp;textY )
<a name="l00958"></a>00958 {
<a name="l00959"></a>00959   kdDebug(5850) &lt;&lt; <span class="stringliteral">"summary = "</span> &lt;&lt; summary &lt;&lt; endl;
<a name="l00960"></a>00960 
<a name="l00961"></a>00961   <span class="keywordtype">int</span> flags = Qt::AlignLeft;
<a name="l00962"></a>00962   QFontMetrics fm = p.fontMetrics();
<a name="l00963"></a>00963   QRect timeBound = p.boundingRect( dayBox.x() + 5, dayBox.y() + textY,
<a name="l00964"></a>00964                                     dayBox.width() - 10, fm.lineSpacing(),
<a name="l00965"></a>00965                                     flags, time );
<a name="l00966"></a>00966   p.drawText( timeBound, flags, time );
<a name="l00967"></a>00967 
<a name="l00968"></a>00968   <span class="keywordtype">int</span> summaryWidth = time.isEmpty() ? 0 : timeBound.width() + 4;
<a name="l00969"></a>00969   QRect summaryBound = QRect( dayBox.x() + 5 + summaryWidth, dayBox.y() + textY,
<a name="l00970"></a>00970                               dayBox.width() - summaryWidth -5, dayBox.height() );
<a name="l00971"></a>00971 
<a name="l00972"></a>00972   KWordWrap *ww = KWordWrap::formatText( fm, summaryBound, flags, summary );
<a name="l00973"></a>00973   ww-&gt;drawText( &amp;p, dayBox.x() + 5 + summaryWidth, dayBox.y() + textY, flags );
<a name="l00974"></a>00974 
<a name="l00975"></a>00975   textY += ww-&gt;boundingRect().height();
<a name="l00976"></a>00976 
<a name="l00977"></a>00977   <span class="keyword">delete</span> ww;
<a name="l00978"></a>00978 }
<a name="l00979"></a>00979 
<a name="l00980"></a>00980 
<a name="l00982"></a>00982 
<a name="l00983"></a><a class="code" href="classCalPrintPluginBase.html#35537ab6dafe4b93a211a44ec4d79163">00983</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#35537ab6dafe4b93a211a44ec4d79163" title="Draw the week (filofax) table of the week containing the date qd.">CalPrintPluginBase::drawWeek</a>(QPainter &amp;p, <span class="keyword">const</span> QDate &amp;qd, <span class="keyword">const</span> QRect &amp;box )
<a name="l00984"></a>00984 {
<a name="l00985"></a>00985   QDate weekDate = qd;
<a name="l00986"></a>00986   <span class="keywordtype">bool</span> portrait = ( box.height() &gt; box.width() );
<a name="l00987"></a>00987   <span class="keywordtype">int</span> cellWidth, cellHeight;
<a name="l00988"></a>00988   <span class="keywordtype">int</span> vcells;
<a name="l00989"></a>00989   <span class="keywordflow">if</span> (portrait) {
<a name="l00990"></a>00990     cellWidth = box.width()/2;
<a name="l00991"></a>00991     vcells=3;
<a name="l00992"></a>00992   } <span class="keywordflow">else</span> {
<a name="l00993"></a>00993     cellWidth = box.width()/6;
<a name="l00994"></a>00994     vcells=1;
<a name="l00995"></a>00995   }
<a name="l00996"></a>00996   cellHeight = box.height()/vcells;
<a name="l00997"></a>00997 
<a name="l00998"></a>00998   <span class="comment">// correct begin of week</span>
<a name="l00999"></a>00999   <span class="keywordtype">int</span> weekdayCol = <a class="code" href="classCalPrintPluginBase.html#8f72b52330caa8dc9afbe1d97bcf98b8" title="Determines the column of the given weekday ( 1=Monday, 7=Sunday ), taking the start...">weekdayColumn</a>( qd.dayOfWeek() );
<a name="l01000"></a>01000   weekDate = qd.addDays( -weekdayCol );
<a name="l01001"></a>01001 
<a name="l01002"></a>01002   <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 7; i++, weekDate = weekDate.addDays(1)) {
<a name="l01003"></a>01003     <span class="comment">// Saturday and sunday share a cell, so we have to special-case sunday</span>
<a name="l01004"></a>01004     <span class="keywordtype">int</span> hpos = ((i&lt;6)?i:(i-1)) / vcells;
<a name="l01005"></a>01005     <span class="keywordtype">int</span> vpos = ((i&lt;6)?i:(i-1)) % vcells;
<a name="l01006"></a>01006     QRect dayBox( box.left()+cellWidth*hpos, box.top()+cellHeight*vpos + ((i==6)?(cellHeight/2):0),
<a name="l01007"></a>01007         cellWidth, (i&lt;5)?(cellHeight):(cellHeight/2) );
<a name="l01008"></a>01008     <a class="code" href="classCalPrintPluginBase.html#99c475090521c5cf7cfaca187d746383" title="Draw the box containing a list of all events of the given day (with their times,...">drawDayBox</a>(p, weekDate, dayBox, <span class="keyword">true</span>);
<a name="l01009"></a>01009   } <span class="comment">// for i through all weekdays</span>
<a name="l01010"></a>01010 }
<a name="l01011"></a>01011 
<a name="l01012"></a>01012 
<a name="l01013"></a><a class="code" href="classCalPrintPluginBase.html#d54bf2d3280a1de1cba7ca5ceade5500">01013</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#d54bf2d3280a1de1cba7ca5ceade5500" title="Draw the timetable view of the given time range from fromDate to toDate.">CalPrintPluginBase::drawTimeTable</a>(QPainter &amp;p,
<a name="l01014"></a>01014     <span class="keyword">const</span> QDate &amp;fromDate, <span class="keyword">const</span> QDate &amp;toDate,
<a name="l01015"></a>01015     QTime &amp;fromTime, QTime &amp;toTime,
<a name="l01016"></a>01016     <span class="keyword">const</span> QRect &amp;box)
<a name="l01017"></a>01017 {
<a name="l01018"></a>01018   <span class="comment">// timeline is 1 hour:</span>
<a name="l01019"></a>01019   <span class="keywordtype">int</span> alldayHeight = (int)( 3600.*box.height()/(fromTime.secsTo(toTime)+3600.) );
<a name="l01020"></a>01020   <span class="keywordtype">int</span> timelineWidth = TIMELINE_WIDTH;
<a name="l01021"></a>01021 
<a name="l01022"></a>01022   QRect dowBox( box );
<a name="l01023"></a>01023   dowBox.setLeft( box.left() + timelineWidth );
<a name="l01024"></a>01024   dowBox.setHeight( mSubHeaderHeight );
<a name="l01025"></a>01025   <a class="code" href="classCalPrintPluginBase.html#954d7b274b3d45bca9104ea716cc8360" title="Draw a horizontal bar with the weekday names of the given date range in the given...">drawDaysOfWeek</a>( p, fromDate, toDate, dowBox );
<a name="l01026"></a>01026 
<a name="l01027"></a>01027   QRect tlBox( box );
<a name="l01028"></a>01028   tlBox.setWidth( timelineWidth );
<a name="l01029"></a>01029   tlBox.setTop( dowBox.bottom() + BOX_BORDER_WIDTH + alldayHeight );
<a name="l01030"></a>01030   <a class="code" href="classCalPrintPluginBase.html#b334ee08dbc37d94c6536c1c2d7a3fe1" title="Draw a (vertical) time scale from time fromTime to toTime inside the given area of...">drawTimeLine</a>( p, fromTime, toTime, tlBox );
<a name="l01031"></a>01031 
<a name="l01032"></a>01032   <span class="comment">// draw each day</span>
<a name="l01033"></a>01033   QDate curDate(fromDate);
<a name="l01034"></a>01034   <span class="keywordtype">int</span> i=0;
<a name="l01035"></a>01035   <span class="keywordtype">double</span> cellWidth = double(dowBox.width()) / <span class="keywordtype">double</span>(fromDate.daysTo(toDate)+1);
<a name="l01036"></a>01036   <span class="keywordflow">while</span> (curDate&lt;=toDate) {
<a name="l01037"></a>01037     QRect allDayBox( dowBox.left()+int(i*cellWidth), dowBox.bottom() + BOX_BORDER_WIDTH,
<a name="l01038"></a>01038                      int((i+1)*cellWidth)-int(i*cellWidth), alldayHeight );
<a name="l01039"></a>01039     QRect dayBox( allDayBox );
<a name="l01040"></a>01040     dayBox.setTop( tlBox.top() );
<a name="l01041"></a>01041     dayBox.setBottom( box.bottom() );
<a name="l01042"></a>01042     <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1ListBase.html">Event::List</a> eventList = mCalendar-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Calendar.html#a910b4a8419fcc311e1ca96e588f5147">events</a>(curDate,
<a name="l01043"></a>01043                                               <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/namespaceKCal.html#4adb61b1b3687a67349254a53c7a2f21a5bf5e1beb9afa58353a1ac2cc14d252">EventSortStartDate</a>,
<a name="l01044"></a>01044                                               <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/namespaceKCal.html#b79dc8179fdc021ae82c321b08fb676513f25b5ee7c6f59ab9bb9188f937a0b4">SortDirectionAscending</a>);
<a name="l01045"></a>01045     alldayHeight = <a class="code" href="classCalPrintPluginBase.html#d1a405409d493b157449d75fbe346813" title="Draw the all-day box for the agenda print view (the box on top which doesn&amp;#39;t...">drawAllDayBox</a>( p, eventList, curDate, <span class="keyword">false</span>, allDayBox );
<a name="l01046"></a>01046     <a class="code" href="classCalPrintPluginBase.html#91afccefa90ad72a682808b805045495" title="Draw the agenda box for the day print style (the box showing all events of that day)...">drawAgendaDayBox</a>( p, eventList, curDate, <span class="keyword">false</span>, fromTime, toTime, dayBox );
<a name="l01047"></a>01047     i++;
<a name="l01048"></a>01048     curDate=curDate.addDays(1);
<a name="l01049"></a>01049   }
<a name="l01050"></a>01050 
<a name="l01051"></a>01051 }
<a name="l01052"></a>01052 
<a name="l01053"></a>01053 
<a name="l01055"></a>01055 
<a name="l01056"></a>01056 <span class="keyword">class </span>MonthEventStruct
<a name="l01057"></a>01057 {
<a name="l01058"></a>01058   <span class="keyword">public</span>:
<a name="l01059"></a>01059     MonthEventStruct() : event(0) {}
<a name="l01060"></a>01060     MonthEventStruct( <span class="keyword">const</span> QDateTime &amp;s, <span class="keyword">const</span> QDateTime &amp;e, <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a> *ev)
<a name="l01061"></a>01061     {
<a name="l01062"></a>01062       <span class="keyword">event</span> = ev;
<a name="l01063"></a>01063       start = s;
<a name="l01064"></a>01064       end = e;
<a name="l01065"></a>01065       <span class="keywordflow">if</span> ( event-&gt;doesFloat() ) {
<a name="l01066"></a>01066         start = QDateTime( start.date(), QTime(0,0,0) );
<a name="l01067"></a>01067         end = QDateTime( end.date().addDays(1), QTime(0,0,0) ).addSecs(-1);
<a name="l01068"></a>01068       }
<a name="l01069"></a>01069     }
<a name="l01070"></a>01070     <span class="keywordtype">bool</span> operator&lt;(<span class="keyword">const</span> MonthEventStruct &amp;mes) { <span class="keywordflow">return</span> start &lt; mes.start; }
<a name="l01071"></a>01071     QDateTime start;
<a name="l01072"></a>01072     QDateTime end;
<a name="l01073"></a>01073     <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a> *event;
<a name="l01074"></a>01074 };
<a name="l01075"></a>01075 
<a name="l01076"></a><a class="code" href="classCalPrintPluginBase.html#977baa2d73417dce32e1f27d3e7ef482">01076</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#977baa2d73417dce32e1f27d3e7ef482" title="Draw a vertical representation of the month containing the date dt.">CalPrintPluginBase::drawMonth</a>( QPainter &amp;p, <span class="keyword">const</span> QDate &amp;dt, <span class="keyword">const</span> QRect &amp;box, <span class="keywordtype">int</span> maxdays, <span class="keywordtype">int</span> subDailyFlags, <span class="keywordtype">int</span> holidaysFlags )
<a name="l01077"></a>01077 {
<a name="l01078"></a>01078   <span class="keyword">const</span> KCalendarSystem *calsys = calendarSystem();
<a name="l01079"></a>01079   QRect subheaderBox( box );
<a name="l01080"></a>01080   subheaderBox.setHeight( subHeaderHeight() );
<a name="l01081"></a>01081   QRect borderBox( box );
<a name="l01082"></a>01082   borderBox.setTop( subheaderBox.bottom()+1 );
<a name="l01083"></a>01083   <a class="code" href="classCalPrintPluginBase.html#79806358f99eba12252ecd612d1fb548" title="Draw a subheader box with a shaded background and the given string.">drawSubHeaderBox</a>( p, calsys-&gt;monthName(dt), subheaderBox );
<a name="l01084"></a>01084   <span class="comment">// correct for half the border width</span>
<a name="l01085"></a>01085   <span class="keywordtype">int</span> correction = (BOX_BORDER_WIDTH<span class="comment">/*-1*/</span>)/2;
<a name="l01086"></a>01086   QRect daysBox( borderBox );
<a name="l01087"></a>01087   daysBox.addCoords( correction, correction, -correction, -correction );
<a name="l01088"></a>01088 
<a name="l01089"></a>01089   <span class="keywordtype">int</span> daysinmonth = calsys-&gt;daysInMonth( dt );
<a name="l01090"></a>01090   <span class="keywordflow">if</span> ( maxdays &lt;= 0 ) maxdays = daysinmonth;
<a name="l01091"></a>01091   
<a name="l01092"></a>01092   <span class="keywordtype">int</span> d;
<a name="l01093"></a>01093   <span class="keywordtype">float</span> dayheight = float(daysBox.height()) / <span class="keywordtype">float</span>( maxdays );
<a name="l01094"></a>01094   
<a name="l01095"></a>01095   QColor holidayColor( 240, 240, 240 );
<a name="l01096"></a>01096   QColor workdayColor( 255, 255, 255 );
<a name="l01097"></a>01097   <span class="keywordtype">int</span> dayNrWidth = p.fontMetrics().width( <span class="stringliteral">"99"</span> );
<a name="l01098"></a>01098   
<a name="l01099"></a>01099   <span class="comment">// Fill the remaining space (if a month has less days than others) with a crossed-out pattern</span>
<a name="l01100"></a>01100   <span class="keywordflow">if</span> ( daysinmonth&lt;maxdays ) {
<a name="l01101"></a>01101     QRect dayBox( box.left(), daysBox.top() + round(dayheight*daysinmonth), box.width(), 0 );
<a name="l01102"></a>01102     dayBox.setBottom( daysBox.bottom() );
<a name="l01103"></a>01103     p.fillRect( dayBox, Qt::DiagCrossPattern );
<a name="l01104"></a>01104   }
<a name="l01105"></a>01105   <span class="comment">// Backgrounded boxes for each day, plus day numbers</span>
<a name="l01106"></a>01106   QBrush oldbrush( p.brush() );
<a name="l01107"></a>01107   <span class="keywordflow">for</span> ( d = 0; d &lt; daysinmonth; ++d ) {
<a name="l01108"></a>01108     QDate day;
<a name="l01109"></a>01109     calsys-&gt;setYMD( day, dt.year(), dt.month(), d+1 );
<a name="l01110"></a>01110     QRect dayBox( daysBox.left()<span class="comment">/*+rand()%50*/</span>, daysBox.top() + round(dayheight*d), daysBox.width()<span class="comment">/*-rand()%50*/</span>, 0 );
<a name="l01111"></a>01111     <span class="comment">// FIXME: When using a border width of 0 for event boxes, don't let the rectangles overlap, i.e. subtract 1 from the top or bottom!</span>
<a name="l01112"></a>01112     dayBox.setBottom( daysBox.top()+round(dayheight*(d+1)) - 1 );
<a name="l01113"></a>01113     
<a name="l01114"></a>01114     p.setBrush( isWorkingDay( day )?workdayColor:holidayColor );
<a name="l01115"></a>01115     p.drawRect( dayBox );
<a name="l01116"></a>01116     QRect dateBox( dayBox );
<a name="l01117"></a>01117     dateBox.setWidth( dayNrWidth+3 );
<a name="l01118"></a>01118     p.drawText( dateBox, Qt::AlignRight | Qt::AlignVCenter | Qt::SingleLine, 
<a name="l01119"></a>01119                 QString::number(d+1) );
<a name="l01120"></a>01120   }
<a name="l01121"></a>01121   p.setBrush( oldbrush );
<a name="l01122"></a>01122   <span class="keywordtype">int</span> xstartcont = box.left() + dayNrWidth + 5;
<a name="l01123"></a>01123 
<a name="l01124"></a>01124   QDate start, end;
<a name="l01125"></a>01125   calsys-&gt;setYMD( start, dt.year(), dt.month(), 1 );
<a name="l01126"></a>01126   end = calsys-&gt;addMonths( start, 1 );
<a name="l01127"></a>01127   end = calsys-&gt;addDays( end, -1 );
<a name="l01128"></a>01128 
<a name="l01129"></a>01129   <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1ListBase.html">Event::List</a> events = mCalendar-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Calendar.html#a910b4a8419fcc311e1ca96e588f5147">events</a>( start, end );
<a name="l01130"></a>01130   QMap&lt;int, QStringList&gt; textEvents;
<a name="l01131"></a>01131   QPtrList&lt;KOrg::CellItem&gt; timeboxItems;
<a name="l01132"></a>01132   timeboxItems.<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1ListBase.html#8a4cf8941bfd7583d0efb81d71d8b9a1">setAutoDelete</a>( <span class="keyword">true</span> );
<a name="l01133"></a>01133 
<a name="l01134"></a>01134 
<a name="l01135"></a>01135   <span class="comment">// 1) For multi-day events, show boxes spanning several cells, use CellItem</span>
<a name="l01136"></a>01136   <span class="comment">//    print the summary vertically</span>
<a name="l01137"></a>01137   <span class="comment">// 2) For sub-day events, print the concated summaries into the remaining</span>
<a name="l01138"></a>01138   <span class="comment">//    space of the box (optional, depending on the given flags)</span>
<a name="l01139"></a>01139   <span class="comment">// 3) Draw some kind of timeline showing free and busy times</span>
<a name="l01140"></a>01140 
<a name="l01141"></a>01141   <span class="comment">// Holidays</span>
<a name="l01142"></a>01142   <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1ListBase.html">Event::List</a> holidays;
<a name="l01143"></a>01143   holidays.<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1ListBase.html#8a4cf8941bfd7583d0efb81d71d8b9a1">setAutoDelete</a>( <span class="keyword">true</span> );
<a name="l01144"></a>01144   <span class="keywordflow">for</span> ( QDate d(start); d &lt;= end; d = d.addDays(1) ) {
<a name="l01145"></a>01145     <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a> *e = holiday( d );
<a name="l01146"></a>01146     <span class="keywordflow">if</span> ( e ) {
<a name="l01147"></a>01147       holidays.append( e );
<a name="l01148"></a>01148       <span class="keywordflow">if</span> ( holidaysFlags &amp; TimeBoxes ) {
<a name="l01149"></a>01149         timeboxItems.append( <span class="keyword">new</span> PrintCellItem( e, QDateTime(d, QTime(0,0,0) ),
<a name="l01150"></a>01150             QDateTime( d.addDays(1), QTime(0,0,0) ) ) );
<a name="l01151"></a>01151       }
<a name="l01152"></a>01152       <span class="keywordflow">if</span> ( holidaysFlags &amp; Text ) {
<a name="l01153"></a>01153         textEvents[ d.day() ] &lt;&lt; e-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5f6e41afa4e1b167c4b49e603506b34c">summary</a>();
<a name="l01154"></a>01154       }
<a name="l01155"></a>01155     }
<a name="l01156"></a>01156   }
<a name="l01157"></a>01157   
<a name="l01158"></a>01158   QValueList&lt;MonthEventStruct&gt; monthentries;
<a name="l01159"></a>01159 
<a name="l01160"></a>01160   <span class="keywordflow">for</span> ( Event::List::ConstIterator evit = events.begin(); 
<a name="l01161"></a>01161         evit != events.end(); ++evit ) {
<a name="l01162"></a>01162     <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html">Event</a> *e = (*evit);
<a name="l01163"></a>01163     <span class="keywordflow">if</span> (!e) <span class="keywordflow">continue</span>;
<a name="l01164"></a>01164     <span class="keywordflow">if</span> ( e-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#81ad15662138be07f0d55be6b075b043">doesRecur</a>() ) {
<a name="l01165"></a>01165       <span class="keywordflow">if</span> ( e-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#105f15b8e9d48e2778cce396511e7a68">recursOn</a>( start ) ) {
<a name="l01166"></a>01166         <span class="comment">// This occurrence has possibly started before the beginning of the </span>
<a name="l01167"></a>01167         <span class="comment">// month, so obtain the start date before the beginning of the month</span>
<a name="l01168"></a>01168         QValueList&lt;QDateTime&gt; starttimes = e-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#63231357fd756f611ce821d91665979e">startDateTimesForDate</a>( start );
<a name="l01169"></a>01169         QValueList&lt;QDateTime&gt;::ConstIterator it = starttimes.begin();
<a name="l01170"></a>01170         <span class="keywordflow">for</span> ( ; it != starttimes.end(); ++it ) {
<a name="l01171"></a>01171           monthentries.append( MonthEventStruct( *it, e-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#079d5e64fc5b8467fc2e428cd3f72d42">endDateForStart</a>( *it ), e ) );
<a name="l01172"></a>01172         }
<a name="l01173"></a>01173       }
<a name="l01174"></a>01174       <span class="comment">// Loop through all remaining days of the month and check if the event </span>
<a name="l01175"></a>01175       <span class="comment">// begins on that day (don't use Event::recursOn, as that will </span>
<a name="l01176"></a>01176       <span class="comment">// also return events that have started earlier. These start dates</span>
<a name="l01177"></a>01177       <span class="comment">// however, have already been treated!</span>
<a name="l01178"></a>01178       <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Recurrence.html">Recurrence</a> *recur = e-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#d06004593e064a37d08c96f9ae16735e">recurrence</a>();
<a name="l01179"></a>01179       QDate d1( start.addDays(1) );
<a name="l01180"></a>01180       <span class="keywordflow">while</span> ( d1 &lt;= end ) {
<a name="l01181"></a>01181         <span class="keywordflow">if</span> ( recur-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Recurrence.html#4653a98135ae357a4bb5cc4128a4797f">recursOn</a>(d1) ) {
<a name="l01182"></a>01182           <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/namespaceKCal.html#2300bdcee64dca32447edbaa15d36c26">TimeList</a> times( recur-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Recurrence.html#2d353deaaf52cdeeee16bb239e732820">recurTimesOn</a>( d1 ) );
<a name="l01183"></a>01183           <span class="keywordflow">for</span> ( TimeList::ConstIterator it = times.begin();
<a name="l01184"></a>01184                 it != times.end(); ++it ) {
<a name="l01185"></a>01185             QDateTime d1start( d1, *it );
<a name="l01186"></a>01186             monthentries.append( MonthEventStruct( d1start, e-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#079d5e64fc5b8467fc2e428cd3f72d42">endDateForStart</a>( d1start ), e ) );
<a name="l01187"></a>01187           }
<a name="l01188"></a>01188         }
<a name="l01189"></a>01189         d1 = d1.addDays(1);
<a name="l01190"></a>01190       }
<a name="l01191"></a>01191     } <span class="keywordflow">else</span> {
<a name="l01192"></a>01192       monthentries.append( MonthEventStruct( e-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1IncidenceBase.html#5419a946a4e5715a0c34ec2c7e04cd9b">dtStart</a>(), e-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Event.html#0bc3052d40d160c7d58a5483dfcff693">dtEnd</a>(), e ) );
<a name="l01193"></a>01193     }
<a name="l01194"></a>01194   }
<a name="l01195"></a>01195   qHeapSort( monthentries );
<a name="l01196"></a>01196 
<a name="l01197"></a>01197   QValueList&lt;MonthEventStruct&gt;::ConstIterator mit = monthentries.begin();
<a name="l01198"></a>01198   QDateTime endofmonth( end, QTime(0,0,0) );
<a name="l01199"></a>01199   endofmonth = endofmonth.addDays(1);
<a name="l01200"></a>01200   <span class="keywordflow">for</span> ( ; mit != monthentries.end(); ++mit ) {
<a name="l01201"></a>01201     <span class="keywordflow">if</span> ( (*mit).start.date() == (*mit).end.date() ) {
<a name="l01202"></a>01202       <span class="comment">// Show also single-day events as time line boxes</span>
<a name="l01203"></a>01203       <span class="keywordflow">if</span> ( subDailyFlags &amp; TimeBoxes ) {
<a name="l01204"></a>01204         timeboxItems.append( <span class="keyword">new</span> PrintCellItem( (*mit).event, (*mit).start, (*mit).end ) );
<a name="l01205"></a>01205       }
<a name="l01206"></a>01206       <span class="comment">// Show as text in the box</span>
<a name="l01207"></a>01207       <span class="keywordflow">if</span> ( subDailyFlags &amp; Text ) {
<a name="l01208"></a>01208         textEvents[ (*mit).start.date().day() ] &lt;&lt; (*mit).event-&gt;summary();
<a name="l01209"></a>01209       }
<a name="l01210"></a>01210     } <span class="keywordflow">else</span> {
<a name="l01211"></a>01211       <span class="comment">// Multi-day events are always shown as time line boxes</span>
<a name="l01212"></a>01212       QDateTime thisstart( (*mit).start );
<a name="l01213"></a>01213       QDateTime thisend( (*mit).end );
<a name="l01214"></a>01214       <span class="keywordflow">if</span> ( thisstart.date()&lt;start ) thisstart = start;
<a name="l01215"></a>01215       <span class="keywordflow">if</span> ( thisend&gt;endofmonth ) thisend = endofmonth;
<a name="l01216"></a>01216       timeboxItems.append( <span class="keyword">new</span> PrintCellItem( (*mit).event, thisstart, thisend ) );
<a name="l01217"></a>01217     }
<a name="l01218"></a>01218   }
<a name="l01219"></a>01219   
<a name="l01220"></a>01220   <span class="comment">// For Multi-day events, line them up nicely so that the boxes don't overlap</span>
<a name="l01221"></a>01221   QPtrListIterator&lt;KOrg::CellItem&gt; it1( timeboxItems );
<a name="l01222"></a>01222   <span class="keywordflow">for</span>( it1.toFirst(); it1.current(); ++it1 ) {
<a name="l01223"></a>01223     KOrg::CellItem *placeItem = it1.current();
<a name="l01224"></a>01224     KOrg::CellItem::placeItem( timeboxItems, placeItem );
<a name="l01225"></a>01225   }
<a name="l01226"></a>01226   QDateTime starttime( start, QTime( 0, 0, 0 ) );
<a name="l01227"></a>01227   <span class="keywordtype">int</span> newxstartcont = xstartcont;
<a name="l01228"></a>01228   
<a name="l01229"></a>01229   QFont oldfont( p.font() );
<a name="l01230"></a>01230   p.setFont( QFont( <span class="stringliteral">"sans-serif"</span>, 7 ) );
<a name="l01231"></a>01231   <span class="keywordflow">for</span>( it1.toFirst(); it1.current(); ++it1 ) {
<a name="l01232"></a>01232     PrintCellItem *placeItem = <span class="keyword">static_cast&lt;</span>PrintCellItem *<span class="keyword">&gt;</span>( it1.current() );
<a name="l01233"></a>01233     <span class="keywordtype">int</span> minsToStart = starttime.secsTo( placeItem-&gt;start() )/60;
<a name="l01234"></a>01234     <span class="keywordtype">int</span> minsToEnd = starttime.secsTo( placeItem-&gt;end() )/60;
<a name="l01235"></a>01235 
<a name="l01236"></a>01236     QRect eventBox( xstartcont + placeItem-&gt;subCell()*17, 
<a name="l01237"></a>01237            daysBox.top() + round( <span class="keywordtype">double</span>( minsToStart*daysBox.height()) / <span class="keywordtype">double</span>(maxdays*24*60) ), 
<a name="l01238"></a>01238            14, 0 );
<a name="l01239"></a>01239     eventBox.setBottom( daysBox.top() + round( <span class="keywordtype">double</span>( minsToEnd*daysBox.height()) / <span class="keywordtype">double</span>(maxdays*24*60) ) );
<a name="l01240"></a>01240     <a class="code" href="classCalPrintPluginBase.html#ee2b9ea421ec9d6e59b89b2a818d147f" title="Draw an event box with vertical text.">drawVerticalBox</a>( p, eventBox, placeItem-&gt;event()-&gt;summary() );
<a name="l01241"></a>01241     newxstartcont = QMAX( newxstartcont, eventBox.right() );
<a name="l01242"></a>01242   }
<a name="l01243"></a>01243   xstartcont = newxstartcont;
<a name="l01244"></a>01244 
<a name="l01245"></a>01245   <span class="comment">// For Single-day events, simply print their summaries into the remaining</span>
<a name="l01246"></a>01246   <span class="comment">// space of the day's cell</span>
<a name="l01247"></a>01247   <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> d=0; d&lt;daysinmonth; ++d ) {
<a name="l01248"></a>01248     QStringList dayEvents( textEvents[d+1] );
<a name="l01249"></a>01249     QString txt = dayEvents.join(<span class="stringliteral">", "</span>);
<a name="l01250"></a>01250     QRect dayBox( xstartcont, daysBox.top()+round(dayheight*d), 0, 0 );
<a name="l01251"></a>01251     dayBox.setRight( box.right() );
<a name="l01252"></a>01252     dayBox.setBottom( daysBox.top()+round(dayheight*(d+1)) );
<a name="l01253"></a>01253     <a class="code" href="classCalPrintPluginBase.html#6011cc2444a1e06966a0928e0b8b8ebd" title="Print the given string (event summary) in the given rectangle.">printEventString</a>(p, dayBox, txt, Qt::AlignTop | Qt::AlignLeft | Qt::BreakAnywhere );
<a name="l01254"></a>01254   }
<a name="l01255"></a>01255   p.setFont( oldfont );
<a name="l01256"></a>01256 <span class="comment">//   p.setBrush( Qt::NoBrush );</span>
<a name="l01257"></a>01257   <a class="code" href="classCalPrintPluginBase.html#bbe07855a40097aca4706f2498f879be" title="Draw a box with given width at the given coordinates.">drawBox</a>( p, BOX_BORDER_WIDTH, borderBox );
<a name="l01258"></a>01258   p.restore();
<a name="l01259"></a>01259 }
<a name="l01260"></a>01260 
<a name="l01262"></a>01262 
<a name="l01263"></a><a class="code" href="classCalPrintPluginBase.html#8c3a430b0014f04bbbbae9edeb13cc21">01263</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#8c3a430b0014f04bbbbae9edeb13cc21" title="Draw the month table of the month containing the date qd.">CalPrintPluginBase::drawMonthTable</a>(QPainter &amp;p, <span class="keyword">const</span> QDate &amp;qd, <span class="keywordtype">bool</span> weeknumbers,
<a name="l01264"></a>01264                                <span class="keywordtype">bool</span> recurDaily, <span class="keywordtype">bool</span> recurWeekly,
<a name="l01265"></a>01265                                <span class="keyword">const</span> QRect &amp;box)
<a name="l01266"></a>01266 {
<a name="l01267"></a>01267   <span class="keywordtype">int</span> yoffset = mSubHeaderHeight;
<a name="l01268"></a>01268   <span class="keywordtype">int</span> xoffset = 0;
<a name="l01269"></a>01269   QDate monthDate(QDate(qd.year(), qd.month(), 1));
<a name="l01270"></a>01270   QDate monthFirst(monthDate);
<a name="l01271"></a>01271   QDate monthLast(monthDate.addMonths(1).addDays(-1));
<a name="l01272"></a>01272 
<a name="l01273"></a>01273 
<a name="l01274"></a>01274   <span class="keywordtype">int</span> weekdayCol = <a class="code" href="classCalPrintPluginBase.html#8f72b52330caa8dc9afbe1d97bcf98b8" title="Determines the column of the given weekday ( 1=Monday, 7=Sunday ), taking the start...">weekdayColumn</a>( monthDate.dayOfWeek() );
<a name="l01275"></a>01275   monthDate = monthDate.addDays(-weekdayCol);
<a name="l01276"></a>01276 
<a name="l01277"></a>01277   <span class="keywordflow">if</span> (weeknumbers) {
<a name="l01278"></a>01278     xoffset += 14;
<a name="l01279"></a>01279   }
<a name="l01280"></a>01280 
<a name="l01281"></a>01281   <span class="keywordtype">int</span> rows=(weekdayCol + qd.daysInMonth() - 1)/7 +1;
<a name="l01282"></a>01282   <span class="keywordtype">double</span> cellHeight = ( box.height() - yoffset ) / (1.*rows);
<a name="l01283"></a>01283   <span class="keywordtype">double</span> cellWidth = ( box.width() - xoffset ) / 7.;
<a name="l01284"></a>01284 
<a name="l01285"></a>01285   <span class="comment">// Precalculate the grid...</span>
<a name="l01286"></a>01286   <span class="comment">// rows is at most 6, so using 8 entries in the array is fine, too!</span>
<a name="l01287"></a>01287   <span class="keywordtype">int</span> coledges[8], rowedges[8];
<a name="l01288"></a>01288   <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0; i &lt;= 7; i++ ) {
<a name="l01289"></a>01289     rowedges[i] = int( box.top() + yoffset + i*cellHeight );
<a name="l01290"></a>01290     coledges[i] = int( box.left() + xoffset + i*cellWidth );
<a name="l01291"></a>01291   }
<a name="l01292"></a>01292 
<a name="l01293"></a>01293   <span class="keywordflow">if</span> (weeknumbers) {
<a name="l01294"></a>01294     QFont oldFont(p.font());
<a name="l01295"></a>01295     QFont newFont(p.font());
<a name="l01296"></a>01296     newFont.setPointSize(6);
<a name="l01297"></a>01297     p.setFont(newFont);
<a name="l01298"></a>01298     QDate weekDate(monthDate);
<a name="l01299"></a>01299     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> row = 0; row&lt;rows; ++row ) {
<a name="l01300"></a>01300       <span class="keywordtype">int</span> calWeek = weekDate.weekNumber();
<a name="l01301"></a>01301       QRect rc( box.left(), rowedges[row], coledges[0] - 3 - box.left(), rowedges[row+1]-rowedges[row] );
<a name="l01302"></a>01302       p.drawText( rc, Qt::AlignRight | Qt::AlignVCenter, QString::number( calWeek ) );
<a name="l01303"></a>01303       weekDate = weekDate.addDays( 7 );
<a name="l01304"></a>01304     }
<a name="l01305"></a>01305     p.setFont( oldFont );
<a name="l01306"></a>01306   }
<a name="l01307"></a>01307 
<a name="l01308"></a>01308   QRect daysOfWeekBox( box );
<a name="l01309"></a>01309   daysOfWeekBox.setHeight( mSubHeaderHeight );
<a name="l01310"></a>01310   daysOfWeekBox.setLeft( box.left()+xoffset );
<a name="l01311"></a>01311   <a class="code" href="classCalPrintPluginBase.html#954d7b274b3d45bca9104ea716cc8360" title="Draw a horizontal bar with the weekday names of the given date range in the given...">drawDaysOfWeek</a>( p, monthDate, monthDate.addDays( 6 ), daysOfWeekBox );
<a name="l01312"></a>01312 
<a name="l01313"></a>01313   QColor back = p.backgroundColor();
<a name="l01314"></a>01314   <span class="keywordtype">bool</span> darkbg = <span class="keyword">false</span>;
<a name="l01315"></a>01315   <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> row = 0; row &lt; rows; ++row ) {
<a name="l01316"></a>01316     <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> col = 0; col &lt; 7; ++col ) {
<a name="l01317"></a>01317       <span class="comment">// show days from previous/next month with a grayed background</span>
<a name="l01318"></a>01318       <span class="keywordflow">if</span> ( (monthDate &lt; monthFirst) || (monthDate &gt; monthLast) ) {
<a name="l01319"></a>01319         p.setBackgroundColor( back.dark( 120 ) );
<a name="l01320"></a>01320         darkbg = <span class="keyword">true</span>;
<a name="l01321"></a>01321       }
<a name="l01322"></a>01322       QRect dayBox( coledges[col], rowedges[row], coledges[col+1]-coledges[col], rowedges[row+1]-rowedges[row] );
<a name="l01323"></a>01323       <a class="code" href="classCalPrintPluginBase.html#99c475090521c5cf7cfaca187d746383" title="Draw the box containing a list of all events of the given day (with their times,...">drawDayBox</a>(p, monthDate, dayBox, <span class="keyword">false</span>, recurDaily, recurWeekly );
<a name="l01324"></a>01324       <span class="keywordflow">if</span> ( darkbg ) {
<a name="l01325"></a>01325         p.setBackgroundColor( back );
<a name="l01326"></a>01326         darkbg = <span class="keyword">false</span>;
<a name="l01327"></a>01327       }
<a name="l01328"></a>01328       monthDate = monthDate.addDays(1);
<a name="l01329"></a>01329     }
<a name="l01330"></a>01330   }
<a name="l01331"></a>01331 }
<a name="l01332"></a>01332 
<a name="l01333"></a>01333 
<a name="l01335"></a>01335 
<a name="l01336"></a><a class="code" href="classCalPrintPluginBase.html#f80552a0e3daf988a32459564628a8ec">01336</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#f80552a0e3daf988a32459564628a8ec" title="Draws single to-do and its (intented) sub-to-dos, optionally connects them by a tree-like...">CalPrintPluginBase::drawTodo</a>( <span class="keywordtype">int</span> &amp;count, <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html">Todo</a> *todo, QPainter &amp;p,
<a name="l01337"></a>01337                                <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/namespaceKCal.html#055336d90bea8a2c86fde0d94a082162">TodoSortField</a> sortField, <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/namespaceKCal.html#b79dc8179fdc021ae82c321b08fb6765">SortDirection</a> sortDir,
<a name="l01338"></a>01338                                <span class="keywordtype">bool</span> connectSubTodos, <span class="keywordtype">bool</span> strikeoutCompleted,
<a name="l01339"></a>01339                                <span class="keywordtype">bool</span> desc, <span class="keywordtype">int</span> posPriority, <span class="keywordtype">int</span> posSummary,
<a name="l01340"></a>01340                                <span class="keywordtype">int</span> posDueDt, <span class="keywordtype">int</span> posPercentComplete,
<a name="l01341"></a>01341                                <span class="keywordtype">int</span> level, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> &amp;y, <span class="keywordtype">int</span> width,
<a name="l01342"></a>01342                                <span class="keywordtype">int</span> pageHeight, <span class="keyword">const</span> <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1ListBase.html">Todo::List</a> &amp;todoList,
<a name="l01343"></a>01343                                TodoParentStart *r )
<a name="l01344"></a>01344 {
<a name="l01345"></a>01345   QString outStr;
<a name="l01346"></a>01346   <span class="keyword">const</span> KLocale *local = KGlobal::locale();
<a name="l01347"></a>01347   QRect rect;
<a name="l01348"></a>01348   TodoParentStart startpt;
<a name="l01349"></a>01349 
<a name="l01350"></a>01350   <span class="comment">// This list keeps all starting points of the parent to-dos so the connection</span>
<a name="l01351"></a>01351   <span class="comment">// lines of the tree can easily be drawn (needed if a new page is started)</span>
<a name="l01352"></a>01352   <span class="keyword">static</span> QPtrList&lt;TodoParentStart&gt; startPoints;
<a name="l01353"></a>01353   <span class="keywordflow">if</span> ( level &lt; 1 ) {
<a name="l01354"></a>01354     startPoints.clear();
<a name="l01355"></a>01355   }
<a name="l01356"></a>01356 
<a name="l01357"></a>01357   <span class="comment">// Compute the right hand side of the to-do box</span>
<a name="l01358"></a>01358   <span class="keywordtype">int</span> rhs = posPercentComplete;
<a name="l01359"></a>01359   <span class="keywordflow">if</span> ( rhs &lt; 0 ) rhs = posDueDt; <span class="comment">//not printing percent completed</span>
<a name="l01360"></a>01360   <span class="keywordflow">if</span> ( rhs &lt; 0 ) rhs = x+width;  <span class="comment">//not printing due dates either</span>
<a name="l01361"></a>01361 
<a name="l01362"></a>01362   <span class="comment">// size of to-do</span>
<a name="l01363"></a>01363   outStr=todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5f6e41afa4e1b167c4b49e603506b34c">summary</a>();
<a name="l01364"></a>01364   <span class="keywordtype">int</span> left = posSummary + ( level*10 );
<a name="l01365"></a>01365   rect = p.boundingRect( left, y, ( rhs-left-5 ), -1, Qt::WordBreak, outStr );
<a name="l01366"></a>01366   <span class="keywordflow">if</span> ( !todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5614d24c09a8909b08c26c5e33918831">description</a>().isEmpty() &amp;&amp; desc ) {
<a name="l01367"></a>01367     outStr = todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5614d24c09a8909b08c26c5e33918831">description</a>();
<a name="l01368"></a>01368     rect = p.boundingRect( left+20, rect.bottom()+5, width-(left+10-x), -1,
<a name="l01369"></a>01369                            Qt::WordBreak, outStr );
<a name="l01370"></a>01370   }
<a name="l01371"></a>01371   <span class="comment">// if too big make new page</span>
<a name="l01372"></a>01372   <span class="keywordflow">if</span> ( rect.bottom() &gt; pageHeight ) {
<a name="l01373"></a>01373     <span class="comment">// first draw the connection lines from parent to-dos:</span>
<a name="l01374"></a>01374     <span class="keywordflow">if</span> ( level &gt; 0 &amp;&amp; connectSubTodos ) {
<a name="l01375"></a>01375       TodoParentStart *rct;
<a name="l01376"></a>01376       <span class="keywordflow">for</span> ( rct = startPoints.first(); rct; rct = startPoints.next() ) {
<a name="l01377"></a>01377         <span class="keywordtype">int</span> start;
<a name="l01378"></a>01378         <span class="keywordtype">int</span> center = rct-&gt;mRect.left() + (rct-&gt;mRect.width()/2);
<a name="l01379"></a>01379         <span class="keywordtype">int</span> to = p.viewport().bottom();
<a name="l01380"></a>01380 
<a name="l01381"></a>01381         <span class="comment">// draw either from start point of parent or from top of the page</span>
<a name="l01382"></a>01382         <span class="keywordflow">if</span> ( rct-&gt;mSamePage )
<a name="l01383"></a>01383           start = rct-&gt;mRect.bottom() + 1;
<a name="l01384"></a>01384         <span class="keywordflow">else</span>
<a name="l01385"></a>01385           start = p.viewport().top();
<a name="l01386"></a>01386         p.moveTo( center, start );
<a name="l01387"></a>01387         p.lineTo( center, to );
<a name="l01388"></a>01388         rct-&gt;mSamePage = <span class="keyword">false</span>;
<a name="l01389"></a>01389       }
<a name="l01390"></a>01390     }
<a name="l01391"></a>01391     y=0;
<a name="l01392"></a>01392     <a class="code" href="classKOrg_1_1PrintPlugin.html#f2d9d6cb1f868742027da1c4bbbdc1a1" title="The printer object.">mPrinter</a>-&gt;newPage();
<a name="l01393"></a>01393   }
<a name="l01394"></a>01394 
<a name="l01395"></a>01395   <span class="comment">// If this is a sub-to-do, r will not be 0, and we want the LH side</span>
<a name="l01396"></a>01396   <span class="comment">// of the priority line up to the RH side of the parent to-do's priority</span>
<a name="l01397"></a>01397   <span class="keywordtype">bool</span> showPriority = posPriority&gt;=0;
<a name="l01398"></a>01398   <span class="keywordtype">int</span> lhs = posPriority;
<a name="l01399"></a>01399   <span class="keywordflow">if</span> ( r ) {
<a name="l01400"></a>01400     lhs = r-&gt;mRect.right() + 1;
<a name="l01401"></a>01401   }
<a name="l01402"></a>01402 
<a name="l01403"></a>01403   outStr.setNum( todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#cbd216cda3ea9d86ee12252e98da6d0b">priority</a>() );
<a name="l01404"></a>01404   rect = p.boundingRect( lhs, y + 10, 5, -1, Qt::AlignCenter, outStr );
<a name="l01405"></a>01405   <span class="comment">// Make it a more reasonable size</span>
<a name="l01406"></a>01406   rect.setWidth(18);
<a name="l01407"></a>01407   rect.setHeight(18);
<a name="l01408"></a>01408 
<a name="l01409"></a>01409   <span class="comment">// Draw a checkbox</span>
<a name="l01410"></a>01410   p.setBrush( QBrush( Qt::NoBrush ) );
<a name="l01411"></a>01411   p.drawRect( rect );
<a name="l01412"></a>01412   <span class="keywordflow">if</span> ( todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html#c935ce3f04f7e9d828d3f954de585af6">isCompleted</a>() ) {
<a name="l01413"></a>01413     <span class="comment">// cross out the rectangle for completed to-dos</span>
<a name="l01414"></a>01414     p.drawLine( rect.topLeft(), rect.bottomRight() );
<a name="l01415"></a>01415     p.drawLine( rect.topRight(), rect.bottomLeft() );
<a name="l01416"></a>01416   }
<a name="l01417"></a>01417   lhs = rect.right() + 3;
<a name="l01418"></a>01418 
<a name="l01419"></a>01419   <span class="comment">// Priority</span>
<a name="l01420"></a>01420   <span class="keywordflow">if</span> ( todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#cbd216cda3ea9d86ee12252e98da6d0b">priority</a>() &gt; 0 &amp;&amp; showPriority ) {
<a name="l01421"></a>01421     p.drawText( rect, Qt::AlignCenter, outStr );
<a name="l01422"></a>01422   }
<a name="l01423"></a>01423   startpt.mRect = rect; <span class="comment">//save for later</span>
<a name="l01424"></a>01424 
<a name="l01425"></a>01425   <span class="comment">// Connect the dots</span>
<a name="l01426"></a>01426   <span class="keywordflow">if</span> ( level &gt; 0 &amp;&amp; connectSubTodos ) {
<a name="l01427"></a>01427     <span class="keywordtype">int</span> bottom;
<a name="l01428"></a>01428     <span class="keywordtype">int</span> center( r-&gt;mRect.left() + (r-&gt;mRect.width()/2) );
<a name="l01429"></a>01429     <span class="keywordflow">if</span> ( r-&gt;mSamePage )
<a name="l01430"></a>01430       bottom = r-&gt;mRect.bottom() + 1;
<a name="l01431"></a>01431     <span class="keywordflow">else</span>
<a name="l01432"></a>01432       bottom = 0;
<a name="l01433"></a>01433     <span class="keywordtype">int</span> to( rect.top() + (rect.height()/2) );
<a name="l01434"></a>01434     <span class="keywordtype">int</span> endx( rect.left() );
<a name="l01435"></a>01435     p.moveTo( center, bottom );
<a name="l01436"></a>01436     p.lineTo( center, to );
<a name="l01437"></a>01437     p.lineTo( endx, to );
<a name="l01438"></a>01438   }
<a name="l01439"></a>01439 
<a name="l01440"></a>01440   <span class="comment">// summary</span>
<a name="l01441"></a>01441   outStr=todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5f6e41afa4e1b167c4b49e603506b34c">summary</a>();
<a name="l01442"></a>01442   rect = p.boundingRect( lhs, rect.top(), (rhs-(left + rect.width() + 5)),
<a name="l01443"></a>01443                          -1, Qt::WordBreak, outStr );
<a name="l01444"></a>01444 
<a name="l01445"></a>01445   QRect newrect;
<a name="l01446"></a>01446   <span class="comment">//FIXME: the following code prints underline rather than strikeout text</span>
<a name="l01447"></a>01447 <span class="preprocessor">#if 0</span>
<a name="l01448"></a>01448 <span class="preprocessor"></span>  QFont f( p.font() );
<a name="l01449"></a>01449   <span class="keywordflow">if</span> ( todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html#c935ce3f04f7e9d828d3f954de585af6">isCompleted</a>() &amp;&amp; strikeoutCompleted ) {
<a name="l01450"></a>01450     f.setStrikeOut( <span class="keyword">true</span> );
<a name="l01451"></a>01451     p.setFont( f );
<a name="l01452"></a>01452   }
<a name="l01453"></a>01453   p.drawText( rect, Qt::WordBreak, outStr, -1, &amp;newrect );
<a name="l01454"></a>01454   f.setStrikeOut( <span class="keyword">false</span> );
<a name="l01455"></a>01455   p.setFont( f );
<a name="l01456"></a>01456 <span class="preprocessor">#endif</span>
<a name="l01457"></a>01457 <span class="preprocessor"></span>  <span class="comment">//TODO: Remove this section when the code above is fixed</span>
<a name="l01458"></a>01458   p.drawText( rect, Qt::WordBreak, outStr, -1, &amp;newrect );
<a name="l01459"></a>01459   <span class="keywordflow">if</span> ( todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html#c935ce3f04f7e9d828d3f954de585af6">isCompleted</a>() &amp;&amp; strikeoutCompleted ) {
<a name="l01460"></a>01460     <span class="comment">// strike out the summary text if to-do is complete</span>
<a name="l01461"></a>01461     <span class="comment">// Note: we tried to use a strike-out font and for unknown reasons the</span>
<a name="l01462"></a>01462     <span class="comment">// result was underline instead of strike-out, so draw the lines ourselves.</span>
<a name="l01463"></a>01463     <span class="keywordtype">int</span> delta = p.fontMetrics().lineSpacing();
<a name="l01464"></a>01464     <span class="keywordtype">int</span> lines = ( rect.height() / delta ) + 1;
<a name="l01465"></a>01465     <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i=0; i&lt;lines; i++ ) {
<a name="l01466"></a>01466       p.moveTo( rect.left(),  rect.top() + ( delta/2 ) + ( i*delta ) );
<a name="l01467"></a>01467       p.lineTo( rect.right(), rect.top() + ( delta/2 ) + ( i*delta ) );
<a name="l01468"></a>01468     }
<a name="l01469"></a>01469   }
<a name="l01470"></a>01470 
<a name="l01471"></a>01471   <span class="comment">// due date</span>
<a name="l01472"></a>01472   <span class="keywordflow">if</span> ( todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html#a40c65f6e9024015f7546e8749436b12">hasDueDate</a>() &amp;&amp; posDueDt&gt;=0 ) {
<a name="l01473"></a>01473     outStr = local-&gt;formatDate( todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html#09d6933ae42390339b27053faee3afec">dtDue</a>().date(), true );
<a name="l01474"></a>01474     rect = p.boundingRect( posDueDt, y, x + width, -1,
<a name="l01475"></a>01475                            Qt::AlignTop | Qt::AlignLeft, outStr );
<a name="l01476"></a>01476     p.drawText( rect, Qt::AlignTop | Qt::AlignLeft, outStr );
<a name="l01477"></a>01477   }
<a name="l01478"></a>01478 
<a name="l01479"></a>01479   <span class="comment">// percentage completed</span>
<a name="l01480"></a>01480   <span class="keywordtype">bool</span> showPercentComplete = posPercentComplete&gt;=0;
<a name="l01481"></a>01481   <span class="keywordflow">if</span> ( showPercentComplete ) {
<a name="l01482"></a>01482     <span class="keywordtype">int</span> lwidth = 24;
<a name="l01483"></a>01483     <span class="keywordtype">int</span> lheight = 12;
<a name="l01484"></a>01484     <span class="comment">//first, draw the progress bar</span>
<a name="l01485"></a>01485     <span class="keywordtype">int</span> progress = (int)(( lwidth*todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html#e269def11f2ac042c997b3d95f8521a1">percentComplete</a>())/100.0 + 0.5);
<a name="l01486"></a>01486 
<a name="l01487"></a>01487     p.setBrush( QBrush( Qt::NoBrush ) );
<a name="l01488"></a>01488     p.drawRect( posPercentComplete, y+3, lwidth, lheight );
<a name="l01489"></a>01489     <span class="keywordflow">if</span> ( progress &gt; 0 ) {
<a name="l01490"></a>01490       p.setBrush( QColor( 128, 128, 128 ) );
<a name="l01491"></a>01491       p.drawRect( posPercentComplete, y+3, progress, lheight );
<a name="l01492"></a>01492     }
<a name="l01493"></a>01493 
<a name="l01494"></a>01494     <span class="comment">//now, write the percentage</span>
<a name="l01495"></a>01495     outStr = i18n( <span class="stringliteral">"%1%"</span> ).arg( todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html#e269def11f2ac042c997b3d95f8521a1">percentComplete</a>() );
<a name="l01496"></a>01496     rect = p.boundingRect( posPercentComplete+lwidth+3, y, x + width, -1,
<a name="l01497"></a>01497                            Qt::AlignTop | Qt::AlignLeft, outStr );
<a name="l01498"></a>01498     p.drawText( rect, Qt::AlignTop | Qt::AlignLeft, outStr );
<a name="l01499"></a>01499   }
<a name="l01500"></a>01500 
<a name="l01501"></a>01501   <span class="comment">// description</span>
<a name="l01502"></a>01502   <span class="keywordflow">if</span> ( !todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5614d24c09a8909b08c26c5e33918831">description</a>().isEmpty() &amp;&amp; desc ) {
<a name="l01503"></a>01503     y = newrect.bottom() + 5;
<a name="l01504"></a>01504     outStr = todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5614d24c09a8909b08c26c5e33918831">description</a>();
<a name="l01505"></a>01505     rect = p.boundingRect( left+20, y, x+width-(left+10), -1,
<a name="l01506"></a>01506                            Qt::WordBreak, outStr );
<a name="l01507"></a>01507     p.drawText( rect, Qt::WordBreak, outStr, -1, &amp;newrect );
<a name="l01508"></a>01508   }
<a name="l01509"></a>01509 
<a name="l01510"></a>01510   <span class="comment">// Set the new line position</span>
<a name="l01511"></a>01511   y = newrect.bottom() + 10; <span class="comment">//set the line position</span>
<a name="l01512"></a>01512 
<a name="l01513"></a>01513   <span class="comment">// If the to-do has sub-to-dos, we need to call ourselves recursively</span>
<a name="l01514"></a>01514 <span class="preprocessor">#if 0</span>
<a name="l01515"></a>01515 <span class="preprocessor"></span>  <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#74056b273d15b567668640fc37169c6d">Incidence::List</a> l = todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#a4543a67ede7777dda57b127fa8fdf88">relations</a>();
<a name="l01516"></a>01516   Incidence::List::ConstIterator it;
<a name="l01517"></a>01517   startPoints.append( &amp;startpt );
<a name="l01518"></a>01518   <span class="keywordflow">for</span>( it = l.begin(); it != l.end(); ++it ) {
<a name="l01519"></a>01519     count++;
<a name="l01520"></a>01520     <span class="comment">// In the future, to-dos might also be related to events</span>
<a name="l01521"></a>01521     <span class="comment">// Manually check if the sub-to-do is in the list of to-dos to print</span>
<a name="l01522"></a>01522     <span class="comment">// The problem is that relations() does not apply filters, so</span>
<a name="l01523"></a>01523     <span class="comment">// we need to compare manually with the complete filtered list!</span>
<a name="l01524"></a>01524     <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html">Todo</a>* subtodo = <span class="keyword">dynamic_cast&lt;</span><a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html">Todo</a> *<span class="keyword">&gt;</span>( *it );
<a name="l01525"></a>01525     <span class="keywordflow">if</span> (subtodo &amp;&amp; todoList.contains( subtodo ) ) {
<a name="l01526"></a>01526       <a class="code" href="classCalPrintPluginBase.html#f80552a0e3daf988a32459564628a8ec" title="Draws single to-do and its (intented) sub-to-dos, optionally connects them by a tree-like...">drawTodo</a>( count, subtodo, p, connectSubTodos, strikeoutCompleted,
<a name="l01527"></a>01527                 desc, posPriority, posSummary, posDueDt, posPercentComplete,
<a name="l01528"></a>01528                 level+1, x, y, width, pageHeight, todoList, &amp;startpt );
<a name="l01529"></a>01529     }
<a name="l01530"></a>01530   }
<a name="l01531"></a>01531 <span class="preprocessor">#endif</span>
<a name="l01532"></a>01532 <span class="preprocessor"></span>  <span class="comment">// Make a list of all the sub-to-dos related to this to-do.</span>
<a name="l01533"></a>01533   <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1ListBase.html">Todo::List</a> t;
<a name="l01534"></a>01534   <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#74056b273d15b567668640fc37169c6d">Incidence::List</a> l = todo-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#a4543a67ede7777dda57b127fa8fdf88">relations</a>();
<a name="l01535"></a>01535   Incidence::List::ConstIterator it;
<a name="l01536"></a>01536   <span class="keywordflow">for</span>( it=l.begin(); it!=l.end(); ++it ) {
<a name="l01537"></a>01537     <span class="comment">// In the future, to-dos might also be related to events</span>
<a name="l01538"></a>01538     <span class="comment">// Manually check if the sub-to-do is in the list of to-dos to print</span>
<a name="l01539"></a>01539     <span class="comment">// The problem is that relations() does not apply filters, so</span>
<a name="l01540"></a>01540     <span class="comment">// we need to compare manually with the complete filtered list!</span>
<a name="l01541"></a>01541     <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html">Todo</a>* subtodo = <span class="keyword">dynamic_cast&lt;</span><a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Todo.html">Todo</a> *<span class="keyword">&gt;</span>( *it );
<a name="l01542"></a>01542     <span class="keywordflow">if</span> ( subtodo &amp;&amp; todoList.contains( subtodo ) ) {
<a name="l01543"></a>01543       t.append( subtodo );
<a name="l01544"></a>01544     }
<a name="l01545"></a>01545   }
<a name="l01546"></a>01546 
<a name="l01547"></a>01547   <span class="comment">// Sort the sub-to-dos and then print them</span>
<a name="l01548"></a>01548   <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1ListBase.html">Todo::List</a> sl = mCalendar-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Calendar.html#040242aba6a4b11c00d8a34fb8f7d8d2">sortTodos</a>( &amp;t, sortField, sortDir );
<a name="l01549"></a>01549   Todo::List::ConstIterator isl;
<a name="l01550"></a>01550   startPoints.append( &amp;startpt );
<a name="l01551"></a>01551   <span class="keywordflow">for</span>( isl = sl.begin(); isl != sl.end(); ++isl ) {
<a name="l01552"></a>01552     count++;
<a name="l01553"></a>01553     <a class="code" href="classCalPrintPluginBase.html#f80552a0e3daf988a32459564628a8ec" title="Draws single to-do and its (intented) sub-to-dos, optionally connects them by a tree-like...">drawTodo</a>( count, ( *isl ), p, sortField, sortDir,
<a name="l01554"></a>01554               connectSubTodos, strikeoutCompleted,
<a name="l01555"></a>01555               desc, posPriority, posSummary, posDueDt, posPercentComplete,
<a name="l01556"></a>01556               level+1, x, y, width, pageHeight, todoList, &amp;startpt );
<a name="l01557"></a>01557   }
<a name="l01558"></a>01558   startPoints.remove( &amp;startpt );
<a name="l01559"></a>01559 }
<a name="l01560"></a>01560 
<a name="l01561"></a><a class="code" href="classCalPrintPluginBase.html#8f72b52330caa8dc9afbe1d97bcf98b8">01561</a> <span class="keywordtype">int</span> <a class="code" href="classCalPrintPluginBase.html#8f72b52330caa8dc9afbe1d97bcf98b8" title="Determines the column of the given weekday ( 1=Monday, 7=Sunday ), taking the start...">CalPrintPluginBase::weekdayColumn</a>( <span class="keywordtype">int</span> weekday )
<a name="l01562"></a>01562 {
<a name="l01563"></a>01563   <span class="keywordflow">return</span> ( weekday + 7 - KGlobal::locale()-&gt;weekStartDay() ) % 7;
<a name="l01564"></a>01564 }
<a name="l01565"></a>01565 
<a name="l01566"></a>01566 <span class="keywordtype">void</span> CalPrintPluginBase::drawJournalField( QPainter &amp;p, QString field, QString text,
<a name="l01567"></a>01567                                        <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> &amp;y, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> pageHeight )
<a name="l01568"></a>01568 {
<a name="l01569"></a>01569   <span class="keywordflow">if</span> ( text.isEmpty() ) <span class="keywordflow">return</span>;
<a name="l01570"></a>01570 
<a name="l01571"></a>01571   QString entry( field.arg( text ) );
<a name="l01572"></a>01572 
<a name="l01573"></a>01573   QRect rect( p.boundingRect( x, y, width, -1, Qt::WordBreak, entry) );
<a name="l01574"></a>01574   <span class="keywordflow">if</span> ( rect.bottom() &gt; pageHeight) {
<a name="l01575"></a>01575     <span class="comment">// Start new page...</span>
<a name="l01576"></a>01576     <span class="comment">// FIXME: If it's a multi-line text, draw a few lines on this page, and the</span>
<a name="l01577"></a>01577     <span class="comment">// remaining lines on the next page.</span>
<a name="l01578"></a>01578     y=0;
<a name="l01579"></a>01579     <a class="code" href="classKOrg_1_1PrintPlugin.html#f2d9d6cb1f868742027da1c4bbbdc1a1" title="The printer object.">mPrinter</a>-&gt;newPage();
<a name="l01580"></a>01580     rect = p.boundingRect( x, y, width, -1, Qt::WordBreak, entry);
<a name="l01581"></a>01581   }
<a name="l01582"></a>01582   QRect newrect;
<a name="l01583"></a>01583   p.drawText( rect, Qt::WordBreak, entry, -1, &amp;newrect );
<a name="l01584"></a>01584   y = newrect.bottom() + 7;
<a name="l01585"></a>01585 }
<a name="l01586"></a>01586 
<a name="l01587"></a><a class="code" href="classCalPrintPluginBase.html#0ad3a02035bb81867fc4dca349f5b770">01587</a> <span class="keywordtype">void</span> <a class="code" href="classCalPrintPluginBase.html#0ad3a02035bb81867fc4dca349f5b770" title="Draws single journal item.">CalPrintPluginBase::drawJournal</a>( <a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Journal.html">Journal</a> * journal, QPainter &amp;p, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> &amp;y,
<a name="l01588"></a>01588                                   <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> pageHeight )
<a name="l01589"></a>01589 {
<a name="l01590"></a>01590   QFont oldFont( p.font() );
<a name="l01591"></a>01591   p.setFont( QFont( <span class="stringliteral">"sans-serif"</span>, 15 ) );
<a name="l01592"></a>01592   QString headerText;
<a name="l01593"></a>01593   QString dateText( KGlobal::locale()-&gt;
<a name="l01594"></a>01594         formatDate( journal-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1IncidenceBase.html#5419a946a4e5715a0c34ec2c7e04cd9b">dtStart</a>().date(), false ) );
<a name="l01595"></a>01595 
<a name="l01596"></a>01596   <span class="keywordflow">if</span> ( journal-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5f6e41afa4e1b167c4b49e603506b34c">summary</a>().isEmpty() ) {
<a name="l01597"></a>01597     headerText = dateText;
<a name="l01598"></a>01598   } <span class="keywordflow">else</span> {
<a name="l01599"></a>01599     headerText = i18n(<span class="stringliteral">"Description - date"</span>, <span class="stringliteral">"%1 - %2"</span>)
<a name="l01600"></a>01600                      .arg( journal-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5f6e41afa4e1b167c4b49e603506b34c">summary</a>() )
<a name="l01601"></a>01601                      .arg( dateText );
<a name="l01602"></a>01602   }
<a name="l01603"></a>01603 
<a name="l01604"></a>01604   QRect rect( p.boundingRect( x, y, width, -1, Qt::WordBreak, headerText) );
<a name="l01605"></a>01605   <span class="keywordflow">if</span> ( rect.bottom() &gt; pageHeight) {
<a name="l01606"></a>01606     <span class="comment">// Start new page...</span>
<a name="l01607"></a>01607     y=0;
<a name="l01608"></a>01608     <a class="code" href="classKOrg_1_1PrintPlugin.html#f2d9d6cb1f868742027da1c4bbbdc1a1" title="The printer object.">mPrinter</a>-&gt;newPage();
<a name="l01609"></a>01609     rect = p.boundingRect( x, y, width, -1, Qt::WordBreak, headerText );
<a name="l01610"></a>01610   }
<a name="l01611"></a>01611   QRect newrect;
<a name="l01612"></a>01612   p.drawText( rect, Qt::WordBreak, headerText, -1, &amp;newrect );
<a name="l01613"></a>01613   p.setFont( oldFont );
<a name="l01614"></a>01614 
<a name="l01615"></a>01615   y = newrect.bottom() + 4;
<a name="l01616"></a>01616 
<a name="l01617"></a>01617   p.drawLine( x + 3, y, x + width - 6, y );
<a name="l01618"></a>01618   y += 5;
<a name="l01619"></a>01619 
<a name="l01620"></a>01620   drawJournalField( p, i18n(<span class="stringliteral">"Person: %1"</span>), journal-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1IncidenceBase.html#eb4c2be5ce3f3961dc10204fbc5206a7">organizer</a>().<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Person.html#5928a154f4ff67ef7f67018dd0ec2fbf">fullName</a>(), x, y, width, pageHeight );
<a name="l01621"></a>01621   drawJournalField( p, i18n(<span class="stringliteral">"%1"</span>), journal-&gt;<a class="codeRef" doxygen="libkcal.tag:../../libkcal/html/" href="../../libkcal/html/classKCal_1_1Incidence.html#5614d24c09a8909b08c26c5e33918831">description</a>(), x, y, width, pageHeight );
<a name="l01622"></a>01622   y += 10;
<a name="l01623"></a>01623 }
<a name="l01624"></a>01624 
<a name="l01625"></a>01625 
<a name="l01626"></a>01626 <span class="keywordtype">void</span> CalPrintPluginBase::drawSplitHeaderRight( QPainter &amp;p, <span class="keyword">const</span> QDate &amp;fd,
<a name="l01627"></a>01627                                            <span class="keyword">const</span> QDate &amp;td,
<a name="l01628"></a>01628                                            <span class="keyword">const</span> QDate &amp;,
<a name="l01629"></a>01629                                            <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> )
<a name="l01630"></a>01630 {
<a name="l01631"></a>01631   QFont oldFont( p.font() );
<a name="l01632"></a>01632 
<a name="l01633"></a>01633   QPen oldPen( p.pen() );
<a name="l01634"></a>01634   QPen pen( Qt::black, 4 );
<a name="l01635"></a>01635 
<a name="l01636"></a>01636   QString title;
<a name="l01637"></a>01637   <span class="keywordflow">if</span> ( mCalSys ) {
<a name="l01638"></a>01638     <span class="keywordflow">if</span> ( fd.month() == td.month() ) {
<a name="l01639"></a>01639       title = i18n(<span class="stringliteral">"Date range: Month dayStart - dayEnd"</span>, <span class="stringliteral">"%1 %2 - %3"</span>)
<a name="l01640"></a>01640         .arg( mCalSys-&gt;monthName( fd.month(), false ) )
<a name="l01641"></a>01641         .arg( mCalSys-&gt;dayString( fd, <span class="keyword">false</span> ) )
<a name="l01642"></a>01642         .arg( mCalSys-&gt;dayString( td, <span class="keyword">false</span> ) );
<a name="l01643"></a>01643     } <span class="keywordflow">else</span> {
<a name="l01644"></a>01644       title = i18n(<span class="stringliteral">"Date range: monthStart dayStart - monthEnd dayEnd"</span>, <span class="stringliteral">"%1 %2 - %3 %4"</span>)
<a name="l01645"></a>01645         .arg( mCalSys-&gt;monthName( fd.month(), false ) )
<a name="l01646"></a>01646         .arg( mCalSys-&gt;dayString( fd, <span class="keyword">false</span> ) )
<a name="l01647"></a>01647         .arg( mCalSys-&gt;monthName( td.month(), false ) )
<a name="l01648"></a>01648         .arg( mCalSys-&gt;dayString( td, <span class="keyword">false</span> ) );
<a name="l01649"></a>01649     }
<a name="l01650"></a>01650   }
<a name="l01651"></a>01651 
<a name="l01652"></a>01652   QFont serifFont(<span class="stringliteral">"Times"</span>, 30);
<a name="l01653"></a>01653   p.setFont(serifFont);
<a name="l01654"></a>01654 
<a name="l01655"></a>01655   <span class="keywordtype">int</span> lineSpacing = p.fontMetrics().lineSpacing();
<a name="l01656"></a>01656   p.drawText( 0, lineSpacing * 0, width, lineSpacing,
<a name="l01657"></a>01657               Qt::AlignRight | Qt::AlignTop, title );
<a name="l01658"></a>01658 
<a name="l01659"></a>01659   title.truncate(0);
<a name="l01660"></a>01660 
<a name="l01661"></a>01661   p.setPen( pen );
<a name="l01662"></a>01662   p.drawLine(300, lineSpacing * 1, width, lineSpacing * 1);
<a name="l01663"></a>01663   p.setPen( oldPen );
<a name="l01664"></a>01664 
<a name="l01665"></a>01665   p.setFont(QFont(<span class="stringliteral">"Times"</span>, 20, QFont::Bold, TRUE));
<a name="l01666"></a>01666   <span class="keywordtype">int</span> newlineSpacing = p.fontMetrics().lineSpacing();
<a name="l01667"></a>01667   title += QString::number(fd.year());
<a name="l01668"></a>01668   p.drawText( 0, lineSpacing * 1 + 4, width, newlineSpacing,
<a name="l01669"></a>01669               Qt::AlignRight | Qt::AlignTop, title );
<a name="l01670"></a>01670 
<a name="l01671"></a>01671   p.setFont( oldFont );
<a name="l01672"></a>01672 }
<a name="l01673"></a>01673 
<a name="l01674"></a>01674 <span class="preprocessor">#endif</span>
</pre></div></div>
    </div></div>


      </td>
  </tr>
  <tr>
    <td valign="top" id="leftmenu" width="25%">
      <a name="navigation"></a>
      <div class="menu_box"><h2>korganizer</h2>
<div class="nav_list">
<ul><li><a href="index.html">Main Page</a></li><li><a href="hierarchy.html">Class Hierarchy</a></li><li><a href="classes.html">Alphabetical List</a></li><li><a href="annotated.html">Class List</a></li><li><a href="files.html">File List</a></li><li><a href="functions.html">Class Members</a></li></ul>
<!--
<h2>Class Picker</h2>
<div style="text-align: center;">
<form name="guideform">
<select name="guidelinks" style="width:100%;" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value">
<option value="annotated.html">-- Choose --</option>
  <option value="classActionManager.html">actionmanager</option>,  <option value="classCalendarView.html">calendarview</option>,  <option value="classCalPrinter.html">calprinter</option>,  <option value="classCalPrintPluginBase.html">calprintpluginbase</option>,  <option value="classConfigDialog.html">configdialog</option>,  <option value="classConverter.html">converter</option>,  <option value="classDateNavigator.html">datenavigator</option>,  <option value="classDynamicTip.html">dynamictip</option>,  <option value="classEventArchiver.html">eventarchiver</option>,  <option value="classExportWebDialog.html">exportwebdialog</option>,  <option value="classFilterEditDialog.html">filtereditdialog</option>,  <option value="classFreeBusyDownloadJob.html">freebusydownloadjob</option>,  <option value="classHoliday.html">holiday</option>,  <option value="classKCalendarIface.html">kcalendariface</option>,  <option value="classKOAgendaView.html">koagendaview</option>,  <option value="classKOAttendeeEditor.html">koattendeeeditor</option>,  <option value="classKOAttendeeListView.html">koattendeelistview</option>,  <option value="classKOCounterDialog.html">kocounterdialog</option>,  <option value="classKODayMatrix.html">kodaymatrix</option>,  <option value="classKODialogManager.html">kodialogmanager</option>,  <option value="classKOEventEditor.html">koeventeditor</option>,  <option value="classKOEventView.html">koeventview</option>,  <option value="classKOEventViewer.html">koeventviewer</option>,  <option value="classKOEventViewerDialog.html">koeventviewerdialog</option>,  <option value="classKOIncidenceEditor.html">koincidenceeditor</option>,  <option value="classKOIncidenceToolTip.html">koincidencetooltip</option>,  <option value="classKOJournalEditor.html">kojournaleditor</option>,  <option value="classKOJournalView.html">kojournalview</option>,  <option value="classKOListView.html">kolistview</option>,  <option value="classKOMonthView.html">komonthview</option>,  <option value="classKOProjectView.html">koprojectview</option>,  <option value="classKOProjectViewItem.html">koprojectviewitem</option>,  <option value="classKOrg_1_1AgendaView.html">korg::agendaview</option>,  <option value="classKOrg_1_1BaseView.html">korg::baseview</option>,  <option value="classKOrg_1_1CalendarDecoration.html">korg::calendardecoration</option>,  <option value="classKOrg_1_1CalendarViewBase.html">korg::calendarviewbase</option>,  <option value="classKOrg_1_1CalPrinterBase.html">korg::calprinterbase</option>,  <option value="classKOrg_1_1MainWindow.html">korg::mainwindow</option>,  <option value="classKOrg_1_1MultiAgendaView.html">korg::multiagendaview</option>,  <option value="classKOrg_1_1PrintPlugin.html">korg::printplugin</option>,  <option value="classKOrganizer.html">korganizer</option>,  <option value="classKOTimelineView.html">kotimelineview</option>,  <option value="classKOTodoEditor.html">kotodoeditor</option>,  <option value="classKOTodoView.html">kotodoview</option>,  <option value="classKOTodoViewItem.html">kotodoviewitem</option>,  <option value="classKOViewManager.html">koviewmanager</option>,  <option value="classKOWhatsNextView.html">kowhatsnextview</option>,  <option value="classKOWindowList.html">kowindowlist</option>,  <option value="classMonthViewCell.html">monthviewcell</option>,  <option value="classParsha.html">parsha</option>,  <option value="classResourceView.html">resourceview</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>