Sophie

Sophie

distrib > Mandriva > current > x86_64 > by-pkgid > 4272c97b1af3db3f39a3b697bcba7e48 > files > 1457

albumshaper-2.1-7mdv2010.1.x86_64.rpm

<!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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>AlbumShaper: presentationWidget.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.2 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
<h1>presentationWidget.cpp</h1><a href="presentationWidget_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//==============================================</span>
<a name="l00002"></a>00002 <span class="comment">//  copyright            : (C) 2003-2005 by Will Stokes</span>
<a name="l00003"></a>00003 <span class="comment">//==============================================</span>
<a name="l00004"></a>00004 <span class="comment">//  This program is free software; you can redistribute it</span>
<a name="l00005"></a>00005 <span class="comment">//  and/or modify it under the terms of the GNU General</span>
<a name="l00006"></a>00006 <span class="comment">//  Public License as published by the Free Software</span>
<a name="l00007"></a>00007 <span class="comment">//  Foundation; either version 2 of the License, or</span>
<a name="l00008"></a>00008 <span class="comment">//  (at your option) any later version.</span>
<a name="l00009"></a>00009 <span class="comment">//==============================================</span>
<a name="l00010"></a>00010 
<a name="l00011"></a>00011 <span class="comment">//Systemwide includes</span>
<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;qapplication.h&gt;</span>
<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;qpainter.h&gt;</span>
<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;qfont.h&gt;</span>
<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;qtimer.h&gt;</span>
<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;qcursor.h&gt;</span>
<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;qpopupmenu.h&gt;</span>
<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;qiconset.h&gt;</span>
<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;qdir.h&gt;</span>
<a name="l00020"></a>00020 
<a name="l00021"></a>00021 <span class="comment">//Projectwide includes</span>
<a name="l00022"></a>00022 <span class="preprocessor">#include &quot;<a class="code" href="presentationWidget_8h.html">presentationWidget.h</a>&quot;</span>
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;../../config.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &quot;../../backend/album.h&quot;</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include &quot;../../backend/subalbum.h&quot;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;../../backend/photo.h&quot;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &quot;../../backend/tools/imageTools.h&quot;</span>
<a name="l00028"></a>00028 
<a name="l00029"></a><a class="code" href="presentationWidget_8cpp.html#a1e29ec442a293f4d0c8df2865f72bc7f">00029</a> <span class="preprocessor">#define USE_ANIMATION true</span>
<a name="l00030"></a><a class="code" href="presentationWidget_8cpp.html#aa680fb3258e377b6f339d236c182bc29">00030</a> <span class="preprocessor"></span><span class="preprocessor">#define HIDE_MOUSE_DELAY 5000</span>
<a name="l00031"></a><a class="code" href="presentationWidget_8cpp.html#a5b2e04a7d65c6182ea7378b3647b3300">00031</a> <span class="preprocessor"></span><span class="preprocessor">#define TEXT_MARGIN 4</span>
<a name="l00032"></a>00032 <span class="preprocessor"></span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;iostream&gt;</span>
<a name="l00034"></a>00034 <span class="keyword">using namespace </span>std;
<a name="l00035"></a>00035 <span class="comment">//==============================================</span>
<a name="l00036"></a><a class="code" href="classSlideshowWidget.html#a0913dab0e8d7f8280f668a4b9663e8d9">00036</a> <a class="code" href="classSlideshowWidget.html#a0913dab0e8d7f8280f668a4b9663e8d9">SlideshowWidget::SlideshowWidget</a>( <a class="code" href="classQWidget.html">QWidget</a>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* name, WFlags f ) : <a class="code" href="classQWidget.html">QWidget</a>(parent,name,f)
<a name="l00037"></a>00037 {
<a name="l00038"></a>00038   <span class="comment">//to prevent flicker, never erase to a background color</span>
<a name="l00039"></a>00039   setBackgroundMode( Qt::NoBackground);
<a name="l00040"></a>00040   
<a name="l00041"></a>00041   <span class="comment">//set pointers to null</span>
<a name="l00042"></a>00042   <a class="code" href="classSlideshowWidget.html#af886ca37902cbfb253453b1ef55c02a5">curAlbum</a> = NULL;
<a name="l00043"></a>00043   <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a> = NULL;
<a name="l00044"></a>00044   <a class="code" href="classSlideshowWidget.html#a02915be5f404306f656978134a6ba62e">collectionNum</a> = -1;
<a name="l00045"></a>00045   <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> = NULL;
<a name="l00046"></a>00046   <a class="code" href="classSlideshowWidget.html#ae5a03dd8226ae19bc52f36e0fc30ea3a">photoNum</a> = -1;
<a name="l00047"></a>00047   
<a name="l00048"></a>00048   <span class="comment">//no photo loaded yet  </span>
<a name="l00049"></a>00049   <a class="code" href="classSlideshowWidget.html#a3f5f8ce055ff93c9f46b82bc824e7afc">photoLoaded</a> = <span class="keyword">false</span>;
<a name="l00050"></a>00050 
<a name="l00051"></a>00051   <span class="comment">//not animating by default</span>
<a name="l00052"></a>00052   <a class="code" href="classSlideshowWidget.html#aa1e72620fa9e34684c468796f8db7535">animating</a> = <span class="keyword">false</span>;
<a name="l00053"></a>00053   
<a name="l00054"></a>00054   <span class="comment">//default animation method is immediate</span>
<a name="l00055"></a>00055   <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a9b293fee8577ffd6e0e44036b9a47dea">IMMEDIATE</a>;
<a name="l00056"></a>00056   
<a name="l00057"></a>00057   <span class="comment">//set cur and prev pointers to the two scaled images. these</span>
<a name="l00058"></a>00058   <span class="comment">//pointers will be exchanged when loading new images</span>
<a name="l00059"></a>00059   <a class="code" href="classSlideshowWidget.html#ab3d4b489bad97babac212077a5062011">currImage</a> = &amp;<a class="code" href="classSlideshowWidget.html#adaea73fd796971ebe535568d262c09ce">scaledImage1</a>;
<a name="l00060"></a>00060   <a class="code" href="classSlideshowWidget.html#aa2a873f5dd06f75aac88914629c830d7">prevImage</a> = &amp;<a class="code" href="classSlideshowWidget.html#aff385a1e447e97076c5a323bcf569aa6">scaledImage2</a>;
<a name="l00061"></a>00061 
<a name="l00062"></a>00062   <span class="comment">//set delay defaults</span>
<a name="l00063"></a>00063   <a class="code" href="classSlideshowWidget.html#ad315c38970b5e1cedb11c6871fc63b44">initDelay</a> = 3; <span class="comment">//3</span>
<a name="l00064"></a>00064   <a class="code" href="classSlideshowWidget.html#abe39c93eb4311f3432b07230f92a6b71">accel</a> = 0.1; <span class="comment">// 0.7</span>
<a name="l00065"></a>00065   <a class="code" href="classSlideshowWidget.html#a61733b60d827fa8213148ca59a36af5b">minDelay</a> = 1; <span class="comment">//0.01</span>
<a name="l00066"></a>00066 
<a name="l00067"></a>00067   <span class="comment">//setup autoplay defaults, autoPlay should be set </span>
<a name="l00068"></a>00068   <span class="comment">//to true/false every time we begin a new slideshow</span>
<a name="l00069"></a>00069   <a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a> = 4;
<a name="l00070"></a>00070   <a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a> = <span class="keyword">true</span>;
<a name="l00071"></a>00071   <a class="code" href="classSlideshowWidget.html#a49d4c0224415d77cbf7ea769a68dc115">displayAutoPlayDelay</a> = <span class="keyword">false</span>;
<a name="l00072"></a>00072   
<a name="l00073"></a>00073   <a class="code" href="classSlideshowWidget.html#a0572976e05e0d5396127085e07f56bfb">displayDebugMessages</a> = <span class="keyword">false</span>;
<a name="l00074"></a>00074   <span class="comment">//---------------</span>
<a name="l00075"></a>00075   <span class="comment">//create timer objects and setup signals</span>
<a name="l00076"></a>00076   <a class="code" href="classSlideshowWidget.html#af5cc70ba61fca963996963c6159c65f6">animatingTimer</a> = <span class="keyword">new</span> QTimer();
<a name="l00077"></a>00077   connect(<a class="code" href="classSlideshowWidget.html#af5cc70ba61fca963996963c6159c65f6">animatingTimer</a>, SIGNAL(timeout()), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a46e5367994846564c3d58968f9ee23d6">animate</a>()) );
<a name="l00078"></a>00078 
<a name="l00079"></a>00079   <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a> = <span class="keyword">new</span> QTimer();
<a name="l00080"></a>00080   connect(<a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>, SIGNAL(timeout()), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a8faddc16f3b3096ee87a7fc2af40c5db">advancePhoto</a>()) );
<a name="l00081"></a>00081   
<a name="l00082"></a>00082   <a class="code" href="classSlideshowWidget.html#a9188b85695d5d6428e8afb623b2d351d">mouseCursorTimer</a> = <span class="keyword">new</span> QTimer();
<a name="l00083"></a>00083   connect(<a class="code" href="classSlideshowWidget.html#a9188b85695d5d6428e8afb623b2d351d">mouseCursorTimer</a>, SIGNAL(timeout()), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#abdc12e660f9df23d3c659f4162d768fc">hideMouse</a>()) );
<a name="l00084"></a>00084   <span class="comment">//---------------</span>
<a name="l00085"></a>00085   <span class="comment">//ensure pixmap are same size as screen</span>
<a name="l00086"></a>00086   QDesktopWidget *desktop = QApplication::desktop();
<a name="l00087"></a>00087   <a class="code" href="classSlideshowWidget.html#a31bd5823f873e774487736d8b2a047e7">screenWidth</a> = desktop-&gt;screenGeometry().width();
<a name="l00088"></a>00088   <a class="code" href="classSlideshowWidget.html#adf95b8dbb38136a93990de47cdf4dea9">screenHeight</a> = desktop-&gt;screenGeometry().height();
<a name="l00089"></a>00089   <a class="code" href="classSlideshowWidget.html#ae16e486f501564b5883d5a06c512a999">paintBuffer1</a>.resize( <a class="code" href="classSlideshowWidget.html#a31bd5823f873e774487736d8b2a047e7">screenWidth</a>, <a class="code" href="classSlideshowWidget.html#adf95b8dbb38136a93990de47cdf4dea9">screenHeight</a> );
<a name="l00090"></a>00090   <a class="code" href="classSlideshowWidget.html#ad9ca79f1548bb7308cd17d636cac1572">paintBuffer2</a>.resize( <a class="code" href="classSlideshowWidget.html#a31bd5823f873e774487736d8b2a047e7">screenWidth</a>, <a class="code" href="classSlideshowWidget.html#adf95b8dbb38136a93990de47cdf4dea9">screenHeight</a> );
<a name="l00091"></a>00091   <a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>.resize( <a class="code" href="classSlideshowWidget.html#a31bd5823f873e774487736d8b2a047e7">screenWidth</a>, <a class="code" href="classSlideshowWidget.html#adf95b8dbb38136a93990de47cdf4dea9">screenHeight</a> );
<a name="l00092"></a>00092   <a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>.fill( black );
<a name="l00093"></a>00093   
<a name="l00094"></a>00094   <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a> = &amp;<a class="code" href="classSlideshowWidget.html#ae16e486f501564b5883d5a06c512a999">paintBuffer1</a>;
<a name="l00095"></a>00095   <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a> = &amp;<a class="code" href="classSlideshowWidget.html#ad9ca79f1548bb7308cd17d636cac1572">paintBuffer2</a>;
<a name="l00096"></a>00096   
<a name="l00097"></a>00097   <span class="comment">//load speed icons</span>
<a name="l00098"></a>00098   <a class="code" href="classSlideshowWidget.html#af21988ce80ddffb2fa67d726a5210d5a">speed1</a>.load( QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;miscImages/cheetah.png&quot;</span> );
<a name="l00099"></a>00099   <a class="code" href="classSlideshowWidget.html#ab4caad8be1fdf1d058e73fa6071bbba0">speed2</a>.load( QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;miscImages/rabbit.png&quot;</span> );
<a name="l00100"></a>00100   <a class="code" href="classSlideshowWidget.html#a5a65b068e4e4815187a2d0116e395ede">speed4</a>.load( QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;miscImages/turtle.png&quot;</span> );
<a name="l00101"></a>00101   <a class="code" href="classSlideshowWidget.html#a3be5473055b6079cde6db82d91d15012">speed8</a>.load( QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;miscImages/snail.png&quot;</span> );
<a name="l00102"></a>00102   
<a name="l00103"></a>00103   <span class="comment">//load play and pause control interfaces</span>
<a name="l00104"></a>00104   <a class="code" href="classSlideshowWidget.html#a3f5a47e749b406a5db40b2703ba2c531">playInterface</a>.load( QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;buttonIcons/playPresentation.png&quot;</span> );
<a name="l00105"></a>00105   <a class="code" href="classSlideshowWidget.html#acdf1f11466838df262a5bd85fca74386">pauseInterface</a>.load( QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;buttonIcons/pausePresentation.png&quot;</span> );
<a name="l00106"></a>00106   <a class="code" href="classSlideshowWidget.html#a3ac05920964c35ba5bef67ec18989248">interfaceAlphaMask</a> = <a class="code" href="classSlideshowWidget.html#acdf1f11466838df262a5bd85fca74386">pauseInterface</a>.createAlphaMask();
<a name="l00107"></a>00107   
<a name="l00108"></a>00108   <span class="comment">//by default no context menu object exists</span>
<a name="l00109"></a>00109   <a class="code" href="classSlideshowWidget.html#aca5d981a675bacc58b8a21d7615c0ace">contextMenuShown</a> = <span class="keyword">false</span>;
<a name="l00110"></a>00110   <a class="code" href="classSlideshowWidget.html#ace72c2930bc43236f5e6051c27111188">contextMenuHidingBool</a> = <span class="keyword">false</span>;
<a name="l00111"></a>00111 
<a name="l00112"></a>00112   <span class="comment">//set widget to accept keyboard and mouse focus  </span>
<a name="l00113"></a>00113   setFocusPolicy(QWidget::StrongFocus);
<a name="l00114"></a>00114 }
<a name="l00115"></a>00115 <span class="comment">//==============================================</span>
<a name="l00116"></a><a class="code" href="classSlideshowWidget.html#a17ae244d385754e4a17f828c8f87074f">00116</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a17ae244d385754e4a17f828c8f87074f">SlideshowWidget::stop</a>()
<a name="l00117"></a>00117 {
<a name="l00118"></a>00118   <span class="comment">//stop auto-advance, animation, and hiding mouse cursor timers</span>
<a name="l00119"></a>00119   <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;stop();
<a name="l00120"></a>00120   <a class="code" href="classSlideshowWidget.html#af5cc70ba61fca963996963c6159c65f6">animatingTimer</a>-&gt;stop();
<a name="l00121"></a>00121   <a class="code" href="classSlideshowWidget.html#a9188b85695d5d6428e8afb623b2d351d">mouseCursorTimer</a>-&gt;stop();
<a name="l00122"></a>00122   
<a name="l00123"></a>00123   <span class="comment">//set the photo loaded bool to false to</span>
<a name="l00124"></a>00124   <span class="comment">//force loading the first photo the next time</span>
<a name="l00125"></a>00125   <span class="comment">//we start a presentation</span>
<a name="l00126"></a>00126   <a class="code" href="classSlideshowWidget.html#a3f5f8ce055ff93c9f46b82bc824e7afc">photoLoaded</a> = <span class="keyword">false</span>;
<a name="l00127"></a>00127   
<a name="l00128"></a>00128   <span class="comment">//restore the mouse cursor if it was hidden</span>
<a name="l00129"></a>00129   <span class="keywordflow">if</span>(!<a class="code" href="classSlideshowWidget.html#a809b706062b4aed4bd6ea45985c56f50">mouseShown</a>)
<a name="l00130"></a>00130   {
<a name="l00131"></a>00131     qApp-&gt;restoreOverrideCursor();
<a name="l00132"></a>00132     <a class="code" href="classSlideshowWidget.html#a809b706062b4aed4bd6ea45985c56f50">mouseShown</a> = <span class="keyword">true</span>;
<a name="l00133"></a>00133   }
<a name="l00134"></a>00134   
<a name="l00135"></a>00135   <span class="comment">//emit exiting signal indicating to hide </span>
<a name="l00136"></a>00136   <span class="comment">//this widget and show normal widgets again</span>
<a name="l00137"></a>00137   emit <a class="code" href="classSlideshowWidget.html#a1a9684341dcda351bf57216685eb6852">endSlideshow</a>();
<a name="l00138"></a>00138 }
<a name="l00139"></a>00139 <span class="comment">//==============================================</span>
<a name="l00140"></a><a class="code" href="classSlideshowWidget.html#a9aaed76ecee3d3506f673b6ddcf89560">00140</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a9aaed76ecee3d3506f673b6ddcf89560">SlideshowWidget::keyPressEvent</a>(QKeyEvent *e)
<a name="l00141"></a>00141 {
<a name="l00142"></a>00142   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#aca5d981a675bacc58b8a21d7615c0ace">contextMenuShown</a>)
<a name="l00143"></a>00143   {
<a name="l00144"></a>00144     e-&gt;ignore();
<a name="l00145"></a>00145     <span class="keywordflow">return</span>;
<a name="l00146"></a>00146   }
<a name="l00147"></a>00147   
<a name="l00148"></a>00148   <span class="keywordflow">switch</span>( e-&gt;key() )
<a name="l00149"></a>00149   {
<a name="l00150"></a>00150     <span class="keywordflow">case</span> Qt::Key_Escape:
<a name="l00151"></a>00151       <a class="code" href="classSlideshowWidget.html#a17ae244d385754e4a17f828c8f87074f">stop</a>();
<a name="l00152"></a>00152       <span class="keywordflow">break</span>;
<a name="l00153"></a>00153     <span class="keywordflow">case</span> Qt::Key_Return:
<a name="l00154"></a>00154       <a class="code" href="classSlideshowWidget.html#a2e0605ace7bf0d4cb9079bbb0e02cc5e">toggleAutoPlay</a>();
<a name="l00155"></a>00155       <span class="keywordflow">break</span>;
<a name="l00156"></a>00156     <span class="keywordflow">case</span> Qt::Key_Plus:
<a name="l00157"></a>00157     <span class="keywordflow">case</span> Qt::Key_Equal:
<a name="l00158"></a>00158       <span class="comment">//if control is pressed increase font size</span>
<a name="l00159"></a>00159       <span class="keywordflow">if</span>(e-&gt;state() &amp; Qt::ControlButton )
<a name="l00160"></a>00160         <a class="code" href="classSlideshowWidget.html#a66412652aa94f65830a53221f2269332">increaseTextSize</a>();
<a name="l00161"></a>00161       <span class="keywordflow">else</span>
<a name="l00162"></a>00162         <a class="code" href="classSlideshowWidget.html#acb577d6a08a5c85541909cc66f849fb8">speedUp</a>();
<a name="l00163"></a>00163       <span class="keywordflow">break</span>;
<a name="l00164"></a>00164     <span class="keywordflow">case</span> Qt::Key_Minus:
<a name="l00165"></a>00165     <span class="keywordflow">case</span> Qt::Key_Underscore:
<a name="l00166"></a>00166       <span class="comment">//if control is pressed decrease font size</span>
<a name="l00167"></a>00167       <span class="keywordflow">if</span>(e-&gt;state() &amp; Qt::ControlButton )
<a name="l00168"></a>00168         <a class="code" href="classSlideshowWidget.html#a2c9d32228f59a49b09c805aa0f8deb64">decreaseTextSize</a>();
<a name="l00169"></a>00169       <span class="keywordflow">else</span>
<a name="l00170"></a>00170         <a class="code" href="classSlideshowWidget.html#a474b073c0b8eb6964e83577c570d6976">slowDown</a>();
<a name="l00171"></a>00171       <span class="keywordflow">break</span>;
<a name="l00172"></a>00172     <span class="keywordflow">case</span> Qt::Key_Left:
<a name="l00173"></a>00173       <a class="code" href="classSlideshowWidget.html#a79801be2591555a2fb8541da08e0546e">backupPhoto</a>();
<a name="l00174"></a>00174       <span class="keywordflow">break</span>;
<a name="l00175"></a>00175     <span class="keywordflow">case</span> Qt::Key_Right:
<a name="l00176"></a>00176       <a class="code" href="classSlideshowWidget.html#a8faddc16f3b3096ee87a7fc2af40c5db">advancePhoto</a>();
<a name="l00177"></a>00177       <span class="keywordflow">break</span>;
<a name="l00178"></a>00178     <span class="keywordflow">case</span> Qt::Key_Up:
<a name="l00179"></a>00179       <a class="code" href="classSlideshowWidget.html#a19ac0e084c892fb6b8a2b35663581bdb">backupCollection</a>();
<a name="l00180"></a>00180       <span class="keywordflow">break</span>;
<a name="l00181"></a>00181     <span class="keywordflow">case</span> Qt::Key_Down:
<a name="l00182"></a>00182       <a class="code" href="classSlideshowWidget.html#a417843612405f76a093d25e850c76e57">advanceCollection</a>();
<a name="l00183"></a>00183       <span class="keywordflow">break</span>;
<a name="l00184"></a>00184     <span class="keywordflow">case</span> Qt::Key_Home:
<a name="l00185"></a>00185       <a class="code" href="classSlideshowWidget.html#a955b5b56d7c0b9a5d697e55f4af061af">skipToFirstPhoto</a>();
<a name="l00186"></a>00186       <span class="keywordflow">break</span>;
<a name="l00187"></a>00187     <span class="keywordflow">case</span> Qt::Key_End:
<a name="l00188"></a>00188       <a class="code" href="classSlideshowWidget.html#a6c5a7903320dd6c718d4487fc22b831d">skipToLastPhoto</a>();
<a name="l00189"></a>00189       <span class="keywordflow">break</span>;
<a name="l00190"></a>00190     <span class="keywordflow">case</span> Qt::Key_D:
<a name="l00191"></a>00191       <a class="code" href="classSlideshowWidget.html#a0572976e05e0d5396127085e07f56bfb">displayDebugMessages</a> = !<a class="code" href="classSlideshowWidget.html#a0572976e05e0d5396127085e07f56bfb">displayDebugMessages</a>;
<a name="l00192"></a>00192       <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">refreshScreen</a>();
<a name="l00193"></a>00193       <span class="keywordflow">break</span>;     
<a name="l00194"></a>00194     <span class="keywordflow">default</span>:
<a name="l00195"></a>00195       e-&gt;ignore(); 
<a name="l00196"></a>00196   }
<a name="l00197"></a>00197 }
<a name="l00198"></a>00198 <span class="comment">//==============================================</span>
<a name="l00199"></a><a class="code" href="classSlideshowWidget.html#a13929507b71379620a343526ecdea93e">00199</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a13929507b71379620a343526ecdea93e">SlideshowWidget::mousePressEvent</a>(QMouseEvent *e)
<a name="l00200"></a>00200 {
<a name="l00201"></a>00201   <span class="comment">//if not the left mouse button ignore</span>
<a name="l00202"></a>00202   <span class="keywordflow">if</span>(e-&gt;button() != Qt::LeftButton)
<a name="l00203"></a>00203     <span class="keywordflow">return</span>;
<a name="l00204"></a>00204   
<a name="l00205"></a>00205   <span class="comment">//if mouse is shown so is the control interface, check to see if</span>
<a name="l00206"></a>00206   <span class="comment">//user clicked one of the interface buttons, if not</span>
<a name="l00207"></a>00207   <span class="comment">//not advance to next photo as normal</span>
<a name="l00208"></a>00208   <span class="keywordflow">if</span>( <a class="code" href="classSlideshowWidget.html#a809b706062b4aed4bd6ea45985c56f50">mouseShown</a> )
<a name="l00209"></a>00209   {
<a name="l00210"></a>00210     <span class="keywordtype">bool</span> buttonClicked = <span class="keyword">false</span>;
<a name="l00211"></a>00211     <span class="keywordtype">int</span> x, y, w, h;
<a name="l00212"></a>00212     w = <a class="code" href="classSlideshowWidget.html#acdf1f11466838df262a5bd85fca74386">pauseInterface</a>.width();
<a name="l00213"></a>00213     h = <a class="code" href="classSlideshowWidget.html#acdf1f11466838df262a5bd85fca74386">pauseInterface</a>.height();
<a name="l00214"></a>00214     x = ( <a class="code" href="classSlideshowWidget.html#a31bd5823f873e774487736d8b2a047e7">screenWidth</a> - w ) / 2;
<a name="l00215"></a>00215     y = <a class="code" href="classSlideshowWidget.html#adf95b8dbb38136a93990de47cdf4dea9">screenHeight</a> - h - <a class="code" href="presentationWidget_8cpp.html#a5b2e04a7d65c6182ea7378b3647b3300">TEXT_MARGIN</a>;
<a name="l00216"></a>00216         
<a name="l00217"></a>00217     <span class="comment">//check if button pressed, must be within interface </span>
<a name="l00218"></a>00218     <span class="comment">//region and a non-transparent pixel</span>
<a name="l00219"></a>00219     <span class="keywordflow">if</span>(e-&gt;pos().x() &gt;= x &amp;&amp; e-&gt;pos().y() &gt;= y &amp;&amp;
<a name="l00220"></a>00220        e-&gt;pos().x() &lt;= x+w &amp;&amp; e-&gt;pos().y() &lt;= y+h &amp;&amp;
<a name="l00221"></a>00221        <a class="code" href="classSlideshowWidget.html#a3ac05920964c35ba5bef67ec18989248">interfaceAlphaMask</a>.pixel(e-&gt;pos().x() - x, e-&gt;pos().y() - y) != 0)
<a name="l00222"></a>00222     {        
<a name="l00223"></a>00223       buttonClicked = <span class="keyword">true</span>;
<a name="l00224"></a>00224       
<a name="l00225"></a>00225       <span class="comment">//restart the countdown for hiding the mouse and interface</span>
<a name="l00226"></a>00226       <a class="code" href="classSlideshowWidget.html#a9188b85695d5d6428e8afb623b2d351d">mouseCursorTimer</a>-&gt;stop();
<a name="l00227"></a>00227       <a class="code" href="classSlideshowWidget.html#a9188b85695d5d6428e8afb623b2d351d">mouseCursorTimer</a>-&gt;start( (<span class="keywordtype">int</span>)<a class="code" href="presentationWidget_8cpp.html#aa680fb3258e377b6f339d236c182bc29">HIDE_MOUSE_DELAY</a>, TRUE );  
<a name="l00228"></a>00228       
<a name="l00229"></a>00229       <span class="keywordtype">int</span> xMid = x + (w/2);
<a name="l00230"></a>00230       <span class="keywordtype">int</span> yMid = y + (h/2);
<a name="l00231"></a>00231       <span class="keywordtype">int</span> dx = e-&gt;pos().x() - xMid;
<a name="l00232"></a>00232       <span class="keywordtype">int</span> dy = e-&gt;pos().y() - yMid;
<a name="l00233"></a>00233       <span class="keywordtype">int</span> distSqrd = dx*dx + dy*dy;
<a name="l00234"></a>00234       <span class="comment">//center play/pause button is 55 pixels in radius</span>
<a name="l00235"></a>00235       <span class="keywordflow">if</span>(distSqrd &lt;= 3025)
<a name="l00236"></a>00236         <a class="code" href="classSlideshowWidget.html#a2e0605ace7bf0d4cb9079bbb0e02cc5e">toggleAutoPlay</a>();
<a name="l00237"></a>00237       <span class="comment">//else one of the other buttons has been pressed</span>
<a name="l00238"></a>00238       <span class="keywordflow">else</span>
<a name="l00239"></a>00239       {
<a name="l00240"></a>00240         <span class="keywordflow">if</span>(e-&gt;pos().x() &lt; xMid)
<a name="l00241"></a>00241         {
<a name="l00242"></a>00242           <span class="comment">//top left is prev photo button</span>
<a name="l00243"></a>00243           <span class="keywordflow">if</span>(e-&gt;pos().y() &lt; yMid)
<a name="l00244"></a>00244             <a class="code" href="classSlideshowWidget.html#a79801be2591555a2fb8541da08e0546e">backupPhoto</a>();
<a name="l00245"></a>00245           <span class="comment">//bottom left is prev collection button</span>
<a name="l00246"></a>00246           <span class="keywordflow">else</span>
<a name="l00247"></a>00247             <a class="code" href="classSlideshowWidget.html#a19ac0e084c892fb6b8a2b35663581bdb">backupCollection</a>();
<a name="l00248"></a>00248         }
<a name="l00249"></a>00249         <span class="keywordflow">else</span>
<a name="l00250"></a>00250         {
<a name="l00251"></a>00251           <span class="comment">//top right is next photo button</span>
<a name="l00252"></a>00252           <span class="keywordflow">if</span>(e-&gt;pos().y() &lt; yMid)
<a name="l00253"></a>00253             <a class="code" href="classSlideshowWidget.html#a8faddc16f3b3096ee87a7fc2af40c5db">advancePhoto</a>();
<a name="l00254"></a>00254           <span class="comment">//bottom right is next collection button</span>
<a name="l00255"></a>00255           <span class="keywordflow">else</span>
<a name="l00256"></a>00256            <a class="code" href="classSlideshowWidget.html#a417843612405f76a093d25e850c76e57">advanceCollection</a>();
<a name="l00257"></a>00257         }
<a name="l00258"></a>00258       }
<a name="l00259"></a>00259     }
<a name="l00260"></a>00260     
<a name="l00261"></a>00261   }
<a name="l00262"></a>00262 }
<a name="l00263"></a>00263 <span class="comment">//==============================================</span>
<a name="l00264"></a><a class="code" href="classSlideshowWidget.html#aa82cd0f7579725552cdb231f3882b273">00264</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#aa82cd0f7579725552cdb231f3882b273">SlideshowWidget::mouseMoveEvent</a>(QMouseEvent *)
<a name="l00265"></a>00265 {
<a name="l00266"></a>00266   <span class="comment">//mouse move events often are triggered when we are exiting</span>
<a name="l00267"></a>00267   <span class="comment">//don&#39;t restart hiding mouse in these scenarios</span>
<a name="l00268"></a>00268   <span class="keywordflow">if</span>(!<a class="code" href="classSlideshowWidget.html#a3f5f8ce055ff93c9f46b82bc824e7afc">photoLoaded</a>)
<a name="l00269"></a>00269     <span class="keywordflow">return</span>;
<a name="l00270"></a>00270   
<a name="l00271"></a>00271   <a class="code" href="classSlideshowWidget.html#a9188b85695d5d6428e8afb623b2d351d">mouseCursorTimer</a>-&gt;stop();
<a name="l00272"></a>00272   
<a name="l00273"></a>00273   <span class="comment">//restore the mouse cursor</span>
<a name="l00274"></a>00274   <span class="comment">//hide again if inactive for three seconds</span>
<a name="l00275"></a>00275   <span class="comment">//if mouse not already shown repaint</span>
<a name="l00276"></a>00276   <span class="keywordflow">if</span>(!<a class="code" href="classSlideshowWidget.html#a809b706062b4aed4bd6ea45985c56f50">mouseShown</a>)
<a name="l00277"></a>00277   {
<a name="l00278"></a>00278     qApp-&gt;restoreOverrideCursor();
<a name="l00279"></a>00279     <a class="code" href="classSlideshowWidget.html#a809b706062b4aed4bd6ea45985c56f50">mouseShown</a> = <span class="keyword">true</span>;
<a name="l00280"></a>00280     <a class="code" href="classSlideshowWidget.html#a29a0b1c4c0796c8f81855570268384a8">paintOverlaidControls</a>();
<a name="l00281"></a>00281   }
<a name="l00282"></a>00282   
<a name="l00283"></a>00283   <a class="code" href="classSlideshowWidget.html#a9188b85695d5d6428e8afb623b2d351d">mouseCursorTimer</a>-&gt;start( (<span class="keywordtype">int</span>)<a class="code" href="presentationWidget_8cpp.html#aa680fb3258e377b6f339d236c182bc29">HIDE_MOUSE_DELAY</a>, TRUE );  
<a name="l00284"></a>00284 }
<a name="l00285"></a>00285 <span class="comment">//==============================================</span>
<a name="l00286"></a><a class="code" href="classSlideshowWidget.html#a4c4fa3e8d09fa4ef947295d3bc2f4965">00286</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a4c4fa3e8d09fa4ef947295d3bc2f4965">SlideshowWidget::contextMenuEvent</a> ( QContextMenuEvent * e )
<a name="l00287"></a>00287 {
<a name="l00288"></a>00288   <span class="comment">//disable hiding the mouse cursor until the context menu is destroyed</span>
<a name="l00289"></a>00289   <a class="code" href="classSlideshowWidget.html#a9188b85695d5d6428e8afb623b2d351d">mouseCursorTimer</a>-&gt;stop();
<a name="l00290"></a>00290 
<a name="l00291"></a>00291   <span class="comment">//disable autoPlay temporarily while context menu is open, drop shadows look horrid if</span>
<a name="l00292"></a>00292   <span class="comment">//photo scrolls while menu is up anyways</span>
<a name="l00293"></a>00293   <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;stop();
<a name="l00294"></a>00294   
<a name="l00295"></a>00295   QPopupMenu contextMenu(<span class="keyword">this</span>);
<a name="l00296"></a>00296   <a class="code" href="classSlideshowWidget.html#aca5d981a675bacc58b8a21d7615c0ace">contextMenuShown</a> = <span class="keyword">true</span>;
<a name="l00297"></a>00297   connect( &amp;contextMenu, SIGNAL( aboutToHide() ), <span class="keyword">this</span>, SLOT( <a class="code" href="classSlideshowWidget.html#a49c2086c09332aa8ad97dea2d3e1e626">contextMenuHiding</a>() ) );
<a name="l00298"></a>00298   
<a name="l00299"></a>00299   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a>)  
<a name="l00300"></a>00300     contextMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/pause.png&quot;</span>) ),
<a name="l00301"></a>00301                             tr(<span class="stringliteral">&quot;Pause&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a2e0605ace7bf0d4cb9079bbb0e02cc5e">toggleAutoPlay</a>()), Key_Return );
<a name="l00302"></a>00302   <span class="keywordflow">else</span>                            
<a name="l00303"></a>00303     contextMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/play.png&quot;</span>) ),
<a name="l00304"></a>00304                             tr(<span class="stringliteral">&quot;Play&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a2e0605ace7bf0d4cb9079bbb0e02cc5e">toggleAutoPlay</a>()), Key_Return );
<a name="l00305"></a>00305                             
<a name="l00306"></a>00306   <span class="keywordtype">int</span> speedUpID = contextMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/speedUp.png&quot;</span>) ),
<a name="l00307"></a>00307                                            tr(<span class="stringliteral">&quot;Speed Up&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#acb577d6a08a5c85541909cc66f849fb8">speedUp</a>()), Key_Plus );
<a name="l00308"></a>00308   <span class="keywordtype">int</span> slowDownID = contextMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/slowDown.png&quot;</span>) ),
<a name="l00309"></a>00309                                             tr(<span class="stringliteral">&quot;Slow Down&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a474b073c0b8eb6964e83577c570d6976">slowDown</a>()), Key_Minus );
<a name="l00310"></a>00310                           
<a name="l00311"></a>00311   <span class="comment">//if not currently playing disable speeding up/slowing down options                          </span>
<a name="l00312"></a>00312   <span class="keywordflow">if</span>(!<a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a>)
<a name="l00313"></a>00313   {                          
<a name="l00314"></a>00314     contextMenu.setItemEnabled( speedUpID, <span class="keyword">false</span> );
<a name="l00315"></a>00315     contextMenu.setItemEnabled( slowDownID, <span class="keyword">false</span> );
<a name="l00316"></a>00316   }
<a name="l00317"></a>00317                   
<a name="l00318"></a>00318   QPopupMenu navigateMenu(&amp;contextMenu);
<a name="l00319"></a>00319   navigateMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/backupPhoto.png&quot;</span>) ),
<a name="l00320"></a>00320                           tr(<span class="stringliteral">&quot;Backup Photo&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a79801be2591555a2fb8541da08e0546e">backupPhoto</a>()), Key_Left );
<a name="l00321"></a>00321   navigateMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/advancePhoto.png&quot;</span>) ),
<a name="l00322"></a>00322                           tr(<span class="stringliteral">&quot;Advance Photo&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a8faddc16f3b3096ee87a7fc2af40c5db">advancePhoto</a>()), Key_Right );
<a name="l00323"></a>00323   navigateMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/skipToFirstPhoto.png&quot;</span>) ),
<a name="l00324"></a>00324                           tr(<span class="stringliteral">&quot;Skip to First Photo&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a955b5b56d7c0b9a5d697e55f4af061af">skipToFirstPhoto</a>()), Key_Home );
<a name="l00325"></a>00325   navigateMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/skipToLastPhoto.png&quot;</span>) ),
<a name="l00326"></a>00326                           tr(<span class="stringliteral">&quot;Skip to Last Photo&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a6c5a7903320dd6c718d4487fc22b831d">skipToLastPhoto</a>()), Key_End );
<a name="l00327"></a>00327   navigateMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/backupCollection.png&quot;</span>) ),
<a name="l00328"></a>00328                           tr(<span class="stringliteral">&quot;Backup Collection&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a19ac0e084c892fb6b8a2b35663581bdb">backupCollection</a>()), Key_Up );
<a name="l00329"></a>00329   navigateMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/advanceCollection.png&quot;</span>) ),
<a name="l00330"></a>00330                           tr(<span class="stringliteral">&quot;Advance Collection&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a417843612405f76a093d25e850c76e57">advanceCollection</a>()), Key_Down );
<a name="l00331"></a>00331   contextMenu.insertItem( tr(<span class="stringliteral">&quot;Navigate&quot;</span>), &amp;navigateMenu );
<a name="l00332"></a>00332                                       
<a name="l00333"></a>00333   contextMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/increaseTextSize.png&quot;</span>) ),
<a name="l00334"></a>00334                           tr(<span class="stringliteral">&quot;Increase Text Size&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a66412652aa94f65830a53221f2269332">increaseTextSize</a>()), CTRL+Key_Plus );
<a name="l00335"></a>00335   contextMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/decreaseTextSize.png&quot;</span>) ),
<a name="l00336"></a>00336                           tr(<span class="stringliteral">&quot;Decrease Text Size&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a2c9d32228f59a49b09c805aa0f8deb64">decreaseTextSize</a>()), CTRL+Key_Minus );
<a name="l00337"></a>00337   
<a name="l00338"></a>00338   contextMenu.insertItem( QIconSet( QPixmap(QString(<a class="code" href="config_8cpp.html#a59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a>)+<span class="stringliteral">&quot;menuIcons/exit.png&quot;</span>) ),
<a name="l00339"></a>00339                           tr(<span class="stringliteral">&quot;Exit&quot;</span>), <span class="keyword">this</span>, SLOT(<a class="code" href="classSlideshowWidget.html#a17ae244d385754e4a17f828c8f87074f">stop</a>()), Key_Escape );
<a name="l00340"></a>00340                     
<a name="l00341"></a>00341   contextMenu.exec( QPoint(e-&gt;globalX(), e-&gt;globalY()) );
<a name="l00342"></a>00342   <a class="code" href="classSlideshowWidget.html#aca5d981a675bacc58b8a21d7615c0ace">contextMenuShown</a> = <span class="keyword">false</span>;
<a name="l00343"></a>00343 }
<a name="l00344"></a>00344 <span class="comment">//==============================================</span>
<a name="l00345"></a><a class="code" href="classSlideshowWidget.html#a49c2086c09332aa8ad97dea2d3e1e626">00345</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a49c2086c09332aa8ad97dea2d3e1e626">SlideshowWidget::contextMenuHiding</a>()
<a name="l00346"></a>00346 {
<a name="l00347"></a>00347   <a class="code" href="classSlideshowWidget.html#ace72c2930bc43236f5e6051c27111188">contextMenuHidingBool</a> = <span class="keyword">true</span>;
<a name="l00348"></a>00348   
<a name="l00349"></a>00349   <span class="comment">//start back up timer for hiding the mouse cursor</span>
<a name="l00350"></a>00350   <a class="code" href="classSlideshowWidget.html#a9188b85695d5d6428e8afb623b2d351d">mouseCursorTimer</a>-&gt;start( (<span class="keywordtype">int</span>)<a class="code" href="presentationWidget_8cpp.html#aa680fb3258e377b6f339d236c182bc29">HIDE_MOUSE_DELAY</a>, TRUE );  
<a name="l00351"></a>00351 
<a name="l00352"></a>00352   <span class="comment">//if autoPlay is enabled start that timer back up too</span>
<a name="l00353"></a>00353   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a>)
<a name="l00354"></a>00354     <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;start( (<span class="keywordtype">int</span>)1000*<a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a>, TRUE );
<a name="l00355"></a>00355 }
<a name="l00356"></a>00356 <span class="comment">//==============================================</span>
<a name="l00357"></a><a class="code" href="classSlideshowWidget.html#a2e0605ace7bf0d4cb9079bbb0e02cc5e">00357</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a2e0605ace7bf0d4cb9079bbb0e02cc5e">SlideshowWidget::toggleAutoPlay</a>()
<a name="l00358"></a>00358 {
<a name="l00359"></a>00359   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a>)
<a name="l00360"></a>00360   {
<a name="l00361"></a>00361     <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;stop();
<a name="l00362"></a>00362     <a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a> = <span class="keyword">false</span>;
<a name="l00363"></a>00363     <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">refreshScreen</a>(); 
<a name="l00364"></a>00364   }
<a name="l00365"></a>00365   <span class="keywordflow">else</span>
<a name="l00366"></a>00366   {
<a name="l00367"></a>00367     <a class="code" href="classSlideshowWidget.html#a49d4c0224415d77cbf7ea769a68dc115">displayAutoPlayDelay</a> = <span class="keyword">true</span>;
<a name="l00368"></a>00368     <a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a> = <span class="keyword">true</span>;      
<a name="l00369"></a>00369     <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">refreshScreen</a>();
<a name="l00370"></a>00370     <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;start( (<span class="keywordtype">int</span>)1000*<a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a>, TRUE );
<a name="l00371"></a>00371   }
<a name="l00372"></a>00372 }
<a name="l00373"></a>00373 <span class="comment">//==============================================</span>
<a name="l00374"></a><a class="code" href="classSlideshowWidget.html#abdc12e660f9df23d3c659f4162d768fc">00374</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#abdc12e660f9df23d3c659f4162d768fc">SlideshowWidget::hideMouse</a>()
<a name="l00375"></a>00375 {
<a name="l00376"></a>00376   qApp-&gt;setOverrideCursor( QCursor(Qt::BlankCursor));
<a name="l00377"></a>00377   <a class="code" href="classSlideshowWidget.html#a809b706062b4aed4bd6ea45985c56f50">mouseShown</a> = <span class="keyword">false</span>;
<a name="l00378"></a>00378   <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">refreshScreen</a>();
<a name="l00379"></a>00379 }
<a name="l00380"></a>00380 <span class="comment">//==============================================</span>
<a name="l00381"></a><a class="code" href="classSlideshowWidget.html#a8ffeb871f8ba671ea6cfa4cdcf26dccc">00381</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a8ffeb871f8ba671ea6cfa4cdcf26dccc">SlideshowWidget::paintEvent</a>( QPaintEvent * ) 
<a name="l00382"></a>00382 { 
<a name="l00383"></a>00383   <span class="comment">//blit the screen buffer to the screen</span>
<a name="l00384"></a>00384   bitBlt( <span class="keyword">this</span>, 0, 0, &amp;<a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>, 
<a name="l00385"></a>00385           0, 0, <a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>.width(), <a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>.height(), 
<a name="l00386"></a>00386           CopyROP, true );
<a name="l00387"></a>00387 }
<a name="l00388"></a>00388 <span class="comment">//==============================================</span>
<a name="l00389"></a><a class="code" href="classSlideshowWidget.html#a317ec2ab0a81880dc39654fe3cd1d8c5">00389</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a317ec2ab0a81880dc39654fe3cd1d8c5">SlideshowWidget::loadPhoto</a>()
<a name="l00390"></a>00390 {
<a name="l00391"></a>00391   <span class="comment">//exchange prev and curr pointers</span>
<a name="l00392"></a>00392   QImage* tmp = <a class="code" href="classSlideshowWidget.html#aa2a873f5dd06f75aac88914629c830d7">prevImage</a>;
<a name="l00393"></a>00393   <a class="code" href="classSlideshowWidget.html#aa2a873f5dd06f75aac88914629c830d7">prevImage</a> = <a class="code" href="classSlideshowWidget.html#ab3d4b489bad97babac212077a5062011">currImage</a>;
<a name="l00394"></a>00394   <a class="code" href="classSlideshowWidget.html#ab3d4b489bad97babac212077a5062011">currImage</a> = tmp;
<a name="l00395"></a>00395 
<a name="l00396"></a>00396   <span class="comment">//scale full size image to fit screen</span>
<a name="l00397"></a>00397   <a class="code" href="imageTools_8cpp.html#a126e11984fb8124e78e3b1b68a24870c" title="Scale image and save copy to disk.">scaleImage</a>( <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a>-&gt;<a class="code" href="classPhoto.html#a5ebb6fccddd609df5d407498957e1089" title="Gets the image filename.">getImageFilename</a>(),*<a class="code" href="classSlideshowWidget.html#ab3d4b489bad97babac212077a5062011">currImage</a>, 
<a name="l00398"></a>00398               <a class="code" href="classSlideshowWidget.html#a31bd5823f873e774487736d8b2a047e7">screenWidth</a>, <a class="code" href="classSlideshowWidget.html#adf95b8dbb38136a93990de47cdf4dea9">screenHeight</a> );
<a name="l00399"></a>00399   <a class="code" href="classSlideshowWidget.html#a3f5f8ce055ff93c9f46b82bc824e7afc">photoLoaded</a> = <span class="keyword">true</span>;                  
<a name="l00400"></a>00400 }
<a name="l00401"></a>00401 <span class="comment">//==============================================</span>
<a name="l00402"></a><a class="code" href="classSlideshowWidget.html#a58c2b7e3463e1281f90811b5475354dd">00402</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a58c2b7e3463e1281f90811b5475354dd">SlideshowWidget::showPhoto</a>()
<a name="l00403"></a>00403 { 
<a name="l00404"></a>00404   QString tempString = <span class="stringliteral">&quot;&quot;</span>;
<a name="l00405"></a>00405   <span class="keywordtype">int</span> x, y;
<a name="l00406"></a>00406   
<a name="l00407"></a>00407   <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>-&gt;fill(black);
<a name="l00408"></a>00408   QPainter p;
<a name="l00409"></a>00409   <span class="comment">//------------------------------</span>
<a name="l00410"></a>00410   <span class="comment">//paint photo</span>
<a name="l00411"></a>00411   p.begin( <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a> );
<a name="l00412"></a>00412   p.drawImage( (<a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>-&gt;width() - <a class="code" href="classSlideshowWidget.html#ab3d4b489bad97babac212077a5062011">currImage</a>-&gt;width() ) / 2,
<a name="l00413"></a>00413                (<a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>-&gt;height() - <a class="code" href="classSlideshowWidget.html#ab3d4b489bad97babac212077a5062011">currImage</a>-&gt;height() ) / 2,
<a name="l00414"></a>00414                *<a class="code" href="classSlideshowWidget.html#ab3d4b489bad97babac212077a5062011">currImage</a> );
<a name="l00415"></a>00415   <span class="comment">//------------------------------</span>
<a name="l00416"></a>00416   <span class="comment">//setup font stuff for writing text</span>
<a name="l00417"></a>00417   p.setPen(QColor(<span class="stringliteral">&quot;black&quot;</span>));
<a name="l00418"></a>00418   QFont f( <span class="stringliteral">&quot;times&quot;</span>, <a class="code" href="classSlideshowWidget.html#aa84213018949e195e72bcd3c71cf35a0">fontSize</a>, QFont::Bold );
<a name="l00419"></a>00419   QFontMetrics fm( f );
<a name="l00420"></a>00420   p.setFont( f );
<a name="l00421"></a>00421   <span class="comment">//------------------------------</span>
<a name="l00422"></a>00422   <span class="comment">//paint description               </span>
<a name="l00423"></a>00423   tempString = <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a>-&gt;<a class="code" href="classPhoto.html#adb7ed08547098feeaff5753f2600f4bc" title="Gets the description.">getDescription</a>();
<a name="l00424"></a>00424   <span class="keywordflow">if</span>(tempString.stripWhiteSpace().length() &gt; 0)
<a name="l00425"></a>00425   {
<a name="l00426"></a>00426     x = <a class="code" href="presentationWidget_8cpp.html#a5b2e04a7d65c6182ea7378b3647b3300">TEXT_MARGIN</a>;
<a name="l00427"></a>00427     y = <a class="code" href="classSlideshowWidget.html#adf95b8dbb38136a93990de47cdf4dea9">screenHeight</a> - <a class="code" href="presentationWidget_8cpp.html#a5b2e04a7d65c6182ea7378b3647b3300">TEXT_MARGIN</a> - fm.height() - 2*<a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.height();
<a name="l00428"></a>00428     <span class="comment">//-------</span>
<a name="l00429"></a>00429     <span class="comment">//top left corner</span>
<a name="l00430"></a>00430     p.drawImage( x, y, <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a> );
<a name="l00431"></a>00431   
<a name="l00432"></a>00432     <span class="comment">//top edge                 </span>
<a name="l00433"></a>00433     p.drawImage( QRect( x + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.width(), y, 
<a name="l00434"></a>00434                         fm.width(tempString), <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.height() ), 
<a name="l00435"></a>00435                  <a class="code" href="classSlideshowWidget.html#a68421b31778cb0ae6aa6f77a60153ff8">Top_TextBorder</a> );
<a name="l00436"></a>00436   
<a name="l00437"></a>00437     <span class="comment">//top right corner               </span>
<a name="l00438"></a>00438     p.drawImage( x + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.width() + fm.width(tempString), 
<a name="l00439"></a>00439                  y, <a class="code" href="classSlideshowWidget.html#a74071d8cc71c23973dad3f001297960d">TR_TextBorder</a> );
<a name="l00440"></a>00440     <span class="comment">//-------</span>
<a name="l00441"></a>00441     <span class="comment">//left edge                 </span>
<a name="l00442"></a>00442     p.drawImage( QRect( x, 
<a name="l00443"></a>00443                         y + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.height(), 
<a name="l00444"></a>00444                         <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.width(), fm.height() ), 
<a name="l00445"></a>00445                  <a class="code" href="classSlideshowWidget.html#a347eb2833882a3caec52a947b834448b">Left_TextBorder</a> );
<a name="l00446"></a>00446   
<a name="l00447"></a>00447     <span class="comment">//right edge                 </span>
<a name="l00448"></a>00448     p.drawImage( QRect( x + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.width() + fm.width(tempString), 
<a name="l00449"></a>00449                         y + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.height(), 
<a name="l00450"></a>00450                         <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.width(), fm.height() ), 
<a name="l00451"></a>00451                  <a class="code" href="classSlideshowWidget.html#a9e2ef6641de9ddd021250adbacd4abfe">Right_TextBorder</a> );
<a name="l00452"></a>00452     <span class="comment">//-------</span>
<a name="l00453"></a>00453     <span class="comment">//bottom left corner</span>
<a name="l00454"></a>00454     p.drawImage( x, 
<a name="l00455"></a>00455                  y + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.height() + fm.height(), <a class="code" href="classSlideshowWidget.html#a50abb2c721833be757a921150017d55d">BL_TextBorder</a> );
<a name="l00456"></a>00456     
<a name="l00457"></a>00457     <span class="comment">//bottom edge                 </span>
<a name="l00458"></a>00458     p.drawImage( QRect( x + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.width(), 
<a name="l00459"></a>00459                         y + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.height() + fm.height(),
<a name="l00460"></a>00460                         fm.width(tempString), <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.height() ), 
<a name="l00461"></a>00461                  <a class="code" href="classSlideshowWidget.html#a491d208371abc55a419e099301a577d1">Bottom_TextBorder</a> );
<a name="l00462"></a>00462   
<a name="l00463"></a>00463     <span class="comment">//bottom right corner</span>
<a name="l00464"></a>00464     p.drawImage( x + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.width() + fm.width(tempString), 
<a name="l00465"></a>00465                  y + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.height() + fm.height(), <a class="code" href="classSlideshowWidget.html#aeb822ce2a4343251c7805c981fe758ae">BR_TextBorder</a> );
<a name="l00466"></a>00466     <span class="comment">//-------</span>
<a name="l00467"></a>00467     p.fillRect( x + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.width(), y + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.height(), 
<a name="l00468"></a>00468                 fm.width(tempString), fm.height(), QBrush(QColor(<span class="stringliteral">&quot;white&quot;</span>)) );
<a name="l00469"></a>00469     p.drawText( x + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.width(), y + <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.height() + fm.ascent(), tempString );
<a name="l00470"></a>00470   }
<a name="l00471"></a>00471   <span class="comment">//------------------------------</span>
<a name="l00472"></a>00472   p.end();                 
<a name="l00473"></a>00473 }  
<a name="l00474"></a>00474 <span class="comment">//==============================================</span>
<a name="l00475"></a><a class="code" href="classSlideshowWidget.html#a2df16f886eab1592deafefb6e9fd3e97">00475</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a2df16f886eab1592deafefb6e9fd3e97">SlideshowWidget::beginSlideshow</a>(<a class="code" href="classAlbum.html" title="An album contains Subalbums.">Album</a>* albm, <a class="code" href="classSubalbum.html" title="A subalbum contains photos.">Subalbum</a>* startCollection, <a class="code" href="classPhoto.html" title="A photo consists of a full size image, a smaller slide show image, a very small thumbnail...">Photo</a>* startPhoto)
<a name="l00476"></a>00476 {
<a name="l00477"></a>00477   <a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a> = <span class="keyword">true</span>;
<a name="l00478"></a>00478   <a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a> = 4;
<a name="l00479"></a>00479   <a class="code" href="classSlideshowWidget.html#a49d4c0224415d77cbf7ea769a68dc115">displayAutoPlayDelay</a> = <span class="keyword">true</span>;
<a name="l00480"></a>00480   <a class="code" href="classSlideshowWidget.html#a0572976e05e0d5396127085e07f56bfb">displayDebugMessages</a> = <span class="keyword">false</span>;
<a name="l00481"></a>00481   <a class="code" href="classSlideshowWidget.html#aa84213018949e195e72bcd3c71cf35a0">fontSize</a> = 24;
<a name="l00482"></a>00482   
<a name="l00483"></a>00483   <span class="comment">//store album handle and show cover page</span>
<a name="l00484"></a>00484   <a class="code" href="classSlideshowWidget.html#af886ca37902cbfb253453b1ef55c02a5">curAlbum</a> = albm;
<a name="l00485"></a>00485   
<a name="l00486"></a>00486   <span class="comment">//determine presentation resources path</span>
<a name="l00487"></a>00487   QString presentationResourcesPath;
<a name="l00488"></a>00488   QDir tempDir( <a class="code" href="config_8cpp.html#aee0cb822aa7f2b785c390ae0099e22a9">THEMES_PATH</a> );
<a name="l00489"></a>00489 
<a name="l00490"></a>00490   <span class="comment">//if theme installed on system using its resources</span>
<a name="l00491"></a>00491   <span class="keywordflow">if</span>( tempDir.exists( <a class="code" href="config_8cpp.html#aee0cb822aa7f2b785c390ae0099e22a9">THEMES_PATH</a> + albm-&gt;<a class="code" href="classAlbum.html#ab8b862619156446a3f13d3a2cd8ee411" title="Returns currently selected theme.">getTheme</a>()) )
<a name="l00492"></a>00492   { 
<a name="l00493"></a>00493     presentationResourcesPath = <a class="code" href="config_8cpp.html#aee0cb822aa7f2b785c390ae0099e22a9">THEMES_PATH</a> + albm-&gt;<a class="code" href="classAlbum.html#ab8b862619156446a3f13d3a2cd8ee411" title="Returns currently selected theme.">getTheme</a>() + <span class="stringliteral">&quot;/misc_resources/&quot;</span>; 
<a name="l00494"></a>00494   }
<a name="l00495"></a>00495   <span class="comment">//else try to load resources from the saved album path, this is necessary</span>
<a name="l00496"></a>00496   <span class="comment">//when viewing albums on machines that do not have the used theme installed</span>
<a name="l00497"></a>00497   <span class="keywordflow">else</span> 
<a name="l00498"></a>00498   { 
<a name="l00499"></a>00499     presentationResourcesPath = albm-&gt;<a class="code" href="classAlbum.html#ad00fd15f7683622ffc3d2cef1fe3f9ca" title="Returns the current save location of all images.">getSaveLocation</a>() + <span class="stringliteral">&quot;/misc_resources/&quot;</span>; 
<a name="l00500"></a>00500   }  
<a name="l00501"></a>00501     
<a name="l00502"></a>00502   <span class="comment">//load text border images</span>
<a name="l00503"></a>00503   <a class="code" href="classSlideshowWidget.html#a68421b31778cb0ae6aa6f77a60153ff8">Top_TextBorder</a>.load(presentationResourcesPath + <span class="stringliteral">&quot;Top_TextBorder.png&quot;</span> );
<a name="l00504"></a>00504   <a class="code" href="classSlideshowWidget.html#a491d208371abc55a419e099301a577d1">Bottom_TextBorder</a>.load(presentationResourcesPath + <span class="stringliteral">&quot;Bottom_TextBorder.png&quot;</span> );
<a name="l00505"></a>00505   <a class="code" href="classSlideshowWidget.html#a347eb2833882a3caec52a947b834448b">Left_TextBorder</a>.load(presentationResourcesPath + <span class="stringliteral">&quot;Left_TextBorder.png&quot;</span> );
<a name="l00506"></a>00506   <a class="code" href="classSlideshowWidget.html#a9e2ef6641de9ddd021250adbacd4abfe">Right_TextBorder</a>.load(presentationResourcesPath + <span class="stringliteral">&quot;Right_TextBorder.png&quot;</span> );
<a name="l00507"></a>00507   <a class="code" href="classSlideshowWidget.html#a577f2aa302a19ef330835914c03a9a35">TL_TextBorder</a>.load(presentationResourcesPath + <span class="stringliteral">&quot;TL_TextBorder.png&quot;</span> );
<a name="l00508"></a>00508   <a class="code" href="classSlideshowWidget.html#a74071d8cc71c23973dad3f001297960d">TR_TextBorder</a>.load(presentationResourcesPath + <span class="stringliteral">&quot;TR_TextBorder.png&quot;</span> );
<a name="l00509"></a>00509   <a class="code" href="classSlideshowWidget.html#a50abb2c721833be757a921150017d55d">BL_TextBorder</a>.load(presentationResourcesPath + <span class="stringliteral">&quot;BL_TextBorder.png&quot;</span> );
<a name="l00510"></a>00510   <a class="code" href="classSlideshowWidget.html#aeb822ce2a4343251c7805c981fe758ae">BR_TextBorder</a>.load(presentationResourcesPath + <span class="stringliteral">&quot;BR_TextBorder.png&quot;</span> );
<a name="l00511"></a>00511   
<a name="l00512"></a>00512   qApp-&gt;setOverrideCursor( QCursor(Qt::BlankCursor));
<a name="l00513"></a>00513   <a class="code" href="classSlideshowWidget.html#a809b706062b4aed4bd6ea45985c56f50">mouseShown</a> = <span class="keyword">false</span>;
<a name="l00514"></a>00514   setMouseTracking(<span class="keyword">true</span>);
<a name="l00515"></a>00515 <span class="comment">/*  showCoverPage();*/</span>
<a name="l00516"></a>00516   
<a name="l00517"></a>00517   <span class="comment">//if collection and photo pointers are not null go immediately to specified collection/photo</span>
<a name="l00518"></a>00518   <span class="keywordflow">if</span>(startCollection != NULL &amp;&amp; startPhoto != NULL)
<a name="l00519"></a>00519   {
<a name="l00520"></a>00520     <span class="comment">//set photo and collection  pointers</span>
<a name="l00521"></a>00521     <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> = startPhoto;
<a name="l00522"></a>00522     <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a> = startCollection;
<a name="l00523"></a>00523     
<a name="l00524"></a>00524     <span class="comment">//set photo and collection count #&#39;s</span>
<a name="l00525"></a>00525     <a class="code" href="classSlideshowWidget.html#a02915be5f404306f656978134a6ba62e">collectionNum</a> = 1;
<a name="l00526"></a>00526     <a class="code" href="classSubalbum.html" title="A subalbum contains photos.">Subalbum</a>* tmpCollection = albm-&gt;<a class="code" href="classAlbum.html#a0870f79ed21521222c97a704bad0d50f" title="Returns a pointer to the first Subalbum.">getFirstSubalbum</a>();
<a name="l00527"></a>00527     <span class="keywordflow">while</span>(tmpCollection != NULL &amp;&amp; tmpCollection != <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>)
<a name="l00528"></a>00528     {
<a name="l00529"></a>00529       tmpCollection = tmpCollection-&gt;<a class="code" href="classSubalbum.html#a510a01088f04712e93ae202cc758065f" title="Returns pointer to next subalbum.">getNext</a>();
<a name="l00530"></a>00530       <a class="code" href="classSlideshowWidget.html#a02915be5f404306f656978134a6ba62e">collectionNum</a>++;
<a name="l00531"></a>00531     }
<a name="l00532"></a>00532     <a class="code" href="classSlideshowWidget.html#ae5a03dd8226ae19bc52f36e0fc30ea3a">photoNum</a> = 1;
<a name="l00533"></a>00533     <a class="code" href="classPhoto.html" title="A photo consists of a full size image, a smaller slide show image, a very small thumbnail...">Photo</a>* tmpPhoto = <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#aa38b7736f58738d25426bf0cd93fc28a" title="Returns first photo in subalbum.">getFirst</a>();
<a name="l00534"></a>00534     <span class="keywordflow">while</span>(tmpPhoto != NULL &amp;&amp; tmpPhoto!= <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a>)
<a name="l00535"></a>00535     {
<a name="l00536"></a>00536       tmpPhoto = tmpPhoto-&gt;<a class="code" href="classPhoto.html#a357f9d79451532a37f41142d3aaba9f9" title="Returns next photo pointer.">getNext</a>();
<a name="l00537"></a>00537       <a class="code" href="classSlideshowWidget.html#ae5a03dd8226ae19bc52f36e0fc30ea3a">photoNum</a>++;
<a name="l00538"></a>00538     }
<a name="l00539"></a>00539     
<a name="l00540"></a>00540     <span class="comment">//load photo and display</span>
<a name="l00541"></a>00541     <a class="code" href="classSlideshowWidget.html#a317ec2ab0a81880dc39654fe3cd1d8c5">loadPhoto</a>();
<a name="l00542"></a>00542     <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">refreshScreen</a>();
<a name="l00543"></a>00543     
<a name="l00544"></a>00544     <span class="comment">//start auto-advance counter</span>
<a name="l00545"></a>00545     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a>)
<a name="l00546"></a>00546       <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;start( (<span class="keywordtype">int</span>)1000*<a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a>, TRUE );
<a name="l00547"></a>00547   }
<a name="l00548"></a>00548   <span class="comment">//otherwise show album cover page</span>
<a name="l00549"></a>00549   <span class="keywordflow">else</span> { <a class="code" href="classSlideshowWidget.html#a0f391dceb73a96219f2eb09f508aa067">showCoverPage</a>(); }   
<a name="l00550"></a>00550 }
<a name="l00551"></a>00551 <span class="comment">//==============================================</span>
<a name="l00552"></a><a class="code" href="classSlideshowWidget.html#a0f391dceb73a96219f2eb09f508aa067">00552</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a0f391dceb73a96219f2eb09f508aa067">SlideshowWidget::showCoverPage</a>()
<a name="l00553"></a>00553 {
<a name="l00554"></a>00554   <span class="comment">//for now just bring up first collection</span>
<a name="l00555"></a>00555   <a class="code" href="classSlideshowWidget.html#a02915be5f404306f656978134a6ba62e">collectionNum</a> = 1;
<a name="l00556"></a>00556   <a class="code" href="classSlideshowWidget.html#ae8ab7a341a867a0a1a42697c1d1942ee">showCollectionPage</a>(<a class="code" href="classSlideshowWidget.html#af886ca37902cbfb253453b1ef55c02a5">curAlbum</a>-&gt;<a class="code" href="classAlbum.html#a0870f79ed21521222c97a704bad0d50f" title="Returns a pointer to the first Subalbum.">getFirstSubalbum</a>() );
<a name="l00557"></a>00557 }
<a name="l00558"></a>00558 <span class="comment">//==============================================</span>
<a name="l00559"></a><a class="code" href="classSlideshowWidget.html#ae8ab7a341a867a0a1a42697c1d1942ee">00559</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#ae8ab7a341a867a0a1a42697c1d1942ee">SlideshowWidget::showCollectionPage</a>(<a class="code" href="classSubalbum.html" title="A subalbum contains photos.">Subalbum</a>* subalbum)
<a name="l00560"></a>00560 {
<a name="l00561"></a>00561   <span class="comment">//set subalbum pointer</span>
<a name="l00562"></a>00562   <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a> = subalbum;
<a name="l00563"></a>00563   
<a name="l00564"></a>00564   <span class="comment">//for now load up first photo</span>
<a name="l00565"></a>00565   <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> = <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#aa38b7736f58738d25426bf0cd93fc28a" title="Returns first photo in subalbum.">getFirst</a>();
<a name="l00566"></a>00566   <a class="code" href="classSlideshowWidget.html#ae5a03dd8226ae19bc52f36e0fc30ea3a">photoNum</a> = 1;  
<a name="l00567"></a>00567   
<a name="l00568"></a>00568   <a class="code" href="classSlideshowWidget.html#a317ec2ab0a81880dc39654fe3cd1d8c5">loadPhoto</a>();
<a name="l00569"></a>00569   <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">refreshScreen</a>();
<a name="l00570"></a>00570   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a>)
<a name="l00571"></a>00571     <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;start( (<span class="keywordtype">int</span>)1000*<a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a>, TRUE );
<a name="l00572"></a>00572 }
<a name="l00573"></a>00573 <span class="comment">//==============================================</span>
<a name="l00574"></a><a class="code" href="classSlideshowWidget.html#acb577d6a08a5c85541909cc66f849fb8">00574</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#acb577d6a08a5c85541909cc66f849fb8">SlideshowWidget::speedUp</a>()
<a name="l00575"></a>00575 {
<a name="l00576"></a>00576   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a> &amp;&amp; <a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a> &gt; 1)
<a name="l00577"></a>00577   {
<a name="l00578"></a>00578     <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;stop();
<a name="l00579"></a>00579     <a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a> = <a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a> / 2;
<a name="l00580"></a>00580     <a class="code" href="classSlideshowWidget.html#a49d4c0224415d77cbf7ea769a68dc115">displayAutoPlayDelay</a> = <span class="keyword">true</span>;
<a name="l00581"></a>00581     <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">refreshScreen</a>();
<a name="l00582"></a>00582     <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;start( (<span class="keywordtype">int</span>)1000*<a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a>, TRUE );
<a name="l00583"></a>00583   }
<a name="l00584"></a>00584 }
<a name="l00585"></a>00585 <span class="comment">//==============================================</span>
<a name="l00586"></a><a class="code" href="classSlideshowWidget.html#a474b073c0b8eb6964e83577c570d6976">00586</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a474b073c0b8eb6964e83577c570d6976">SlideshowWidget::slowDown</a>()
<a name="l00587"></a>00587 {
<a name="l00588"></a>00588   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a> &amp;&amp; <a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a> &lt; 8)
<a name="l00589"></a>00589   {
<a name="l00590"></a>00590     <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;stop();
<a name="l00591"></a>00591     <a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a> = <a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a> * 2;
<a name="l00592"></a>00592     <a class="code" href="classSlideshowWidget.html#a49d4c0224415d77cbf7ea769a68dc115">displayAutoPlayDelay</a> = <span class="keyword">true</span>;
<a name="l00593"></a>00593     <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">refreshScreen</a>();
<a name="l00594"></a>00594     <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;start( (<span class="keywordtype">int</span>)1000*<a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a>, TRUE );
<a name="l00595"></a>00595   }
<a name="l00596"></a>00596 }
<a name="l00597"></a>00597 <span class="comment">//==============================================</span>
<a name="l00598"></a><a class="code" href="classSlideshowWidget.html#a66412652aa94f65830a53221f2269332">00598</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a66412652aa94f65830a53221f2269332">SlideshowWidget::increaseTextSize</a>()
<a name="l00599"></a>00599 {
<a name="l00600"></a>00600   <a class="code" href="classSlideshowWidget.html#aa84213018949e195e72bcd3c71cf35a0">fontSize</a>++;
<a name="l00601"></a>00601   <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">refreshScreen</a>();
<a name="l00602"></a>00602 }
<a name="l00603"></a>00603 <span class="comment">//==============================================</span>
<a name="l00604"></a><a class="code" href="classSlideshowWidget.html#a2c9d32228f59a49b09c805aa0f8deb64">00604</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a2c9d32228f59a49b09c805aa0f8deb64">SlideshowWidget::decreaseTextSize</a>()
<a name="l00605"></a>00605 {
<a name="l00606"></a>00606   <a class="code" href="classSlideshowWidget.html#aa84213018949e195e72bcd3c71cf35a0">fontSize</a>--;
<a name="l00607"></a>00607   <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">refreshScreen</a>();
<a name="l00608"></a>00608 }
<a name="l00609"></a>00609 <span class="comment">//==============================================</span>
<a name="l00610"></a><a class="code" href="classSlideshowWidget.html#a8faddc16f3b3096ee87a7fc2af40c5db">00610</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a8faddc16f3b3096ee87a7fc2af40c5db">SlideshowWidget::advancePhoto</a>()
<a name="l00611"></a>00611 {
<a name="l00612"></a>00612   <span class="comment">//bail if currently animating</span>
<a name="l00613"></a>00613   <a class="code" href="classSlideshowWidget.html#a154a32270a20651e7ec6a35ed3abc00a">animatingMutex</a>.lock();
<a name="l00614"></a>00614   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#aa1e72620fa9e34684c468796f8db7535">animating</a>)
<a name="l00615"></a>00615   {
<a name="l00616"></a>00616     <a class="code" href="classSlideshowWidget.html#a154a32270a20651e7ec6a35ed3abc00a">animatingMutex</a>.unlock();      
<a name="l00617"></a>00617     <span class="keywordflow">return</span>;
<a name="l00618"></a>00618   }
<a name="l00619"></a>00619   
<a name="l00620"></a>00620   <span class="comment">//stop autoPlay timer so next advance only occur after delay after advance is complete</span>
<a name="l00621"></a>00621   <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;stop();
<a name="l00622"></a>00622    
<a name="l00623"></a>00623   <a class="code" href="classSlideshowWidget.html#aa1e72620fa9e34684c468796f8db7535">animating</a> = <span class="keyword">true</span>;
<a name="l00624"></a>00624   <span class="keywordflow">if</span>(<a class="code" href="presentationWidget_8cpp.html#a1e29ec442a293f4d0c8df2865f72bc7f">USE_ANIMATION</a>)
<a name="l00625"></a>00625     <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a392d314d6eb6c2fcc09b3400094ca2ba">SCROLL_LEFT</a>;
<a name="l00626"></a>00626   <span class="keywordflow">else</span>
<a name="l00627"></a>00627     <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a9b293fee8577ffd6e0e44036b9a47dea">IMMEDIATE</a>;
<a name="l00628"></a>00628   <a class="code" href="classSlideshowWidget.html#a154a32270a20651e7ec6a35ed3abc00a">animatingMutex</a>.unlock();      
<a name="l00629"></a>00629   
<a name="l00630"></a>00630   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a>-&gt;<a class="code" href="classPhoto.html#a357f9d79451532a37f41142d3aaba9f9" title="Returns next photo pointer.">getNext</a>() == NULL) 
<a name="l00631"></a>00631   {  <a class="code" href="classSlideshowWidget.html#a417843612405f76a093d25e850c76e57">advanceCollection</a>(); }
<a name="l00632"></a>00632   <span class="keywordflow">else</span>
<a name="l00633"></a>00633   {
<a name="l00634"></a>00634     <span class="comment">//load and display new photo</span>
<a name="l00635"></a>00635     <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> = <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a>-&gt;<a class="code" href="classPhoto.html#a357f9d79451532a37f41142d3aaba9f9" title="Returns next photo pointer.">getNext</a>();
<a name="l00636"></a>00636     <a class="code" href="classSlideshowWidget.html#ae5a03dd8226ae19bc52f36e0fc30ea3a">photoNum</a>++;
<a name="l00637"></a>00637     <a class="code" href="classSlideshowWidget.html#a317ec2ab0a81880dc39654fe3cd1d8c5">loadPhoto</a>();
<a name="l00638"></a>00638     <a class="code" href="classSlideshowWidget.html#acdb1247c28fe9e9fa88b10162aae2aea">exchangePhotos</a>();
<a name="l00639"></a>00639   }
<a name="l00640"></a>00640 }
<a name="l00641"></a>00641 <span class="comment">//==============================================</span>
<a name="l00642"></a><a class="code" href="classSlideshowWidget.html#a79801be2591555a2fb8541da08e0546e">00642</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a79801be2591555a2fb8541da08e0546e">SlideshowWidget::backupPhoto</a>()
<a name="l00643"></a>00643 {
<a name="l00644"></a>00644   <span class="comment">//bail if currently animating</span>
<a name="l00645"></a>00645   <a class="code" href="classSlideshowWidget.html#a154a32270a20651e7ec6a35ed3abc00a">animatingMutex</a>.lock();
<a name="l00646"></a>00646   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#aa1e72620fa9e34684c468796f8db7535">animating</a>)
<a name="l00647"></a>00647   {
<a name="l00648"></a>00648     <a class="code" href="classSlideshowWidget.html#a154a32270a20651e7ec6a35ed3abc00a">animatingMutex</a>.unlock();      
<a name="l00649"></a>00649     <span class="keywordflow">return</span>;
<a name="l00650"></a>00650   }
<a name="l00651"></a>00651   
<a name="l00652"></a>00652   <a class="code" href="classSlideshowWidget.html#aa1e72620fa9e34684c468796f8db7535">animating</a> = <span class="keyword">true</span>;
<a name="l00653"></a>00653   <span class="keywordflow">if</span>(<a class="code" href="presentationWidget_8cpp.html#a1e29ec442a293f4d0c8df2865f72bc7f">USE_ANIMATION</a>)
<a name="l00654"></a>00654     <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3ad1f46da31fcd95a223a94c6024363f6b">SCROLL_RIGHT</a>;
<a name="l00655"></a>00655   <span class="keywordflow">else</span>
<a name="l00656"></a>00656     <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a9b293fee8577ffd6e0e44036b9a47dea">IMMEDIATE</a>;
<a name="l00657"></a>00657   <a class="code" href="classSlideshowWidget.html#a154a32270a20651e7ec6a35ed3abc00a">animatingMutex</a>.unlock();      
<a name="l00658"></a>00658   
<a name="l00659"></a>00659   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a>-&gt;<a class="code" href="classPhoto.html#a9740a1e6a5ad83534e1c3b2b2622cf7a" title="Returns the previous photo pointer.">getPrev</a>() == NULL) 
<a name="l00660"></a>00660   {  <a class="code" href="classSlideshowWidget.html#a19ac0e084c892fb6b8a2b35663581bdb">backupCollection</a>(); }
<a name="l00661"></a>00661   <span class="keywordflow">else</span>
<a name="l00662"></a>00662   {
<a name="l00663"></a>00663   <span class="comment">//load and display new photo</span>
<a name="l00664"></a>00664   <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> = <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a>-&gt;<a class="code" href="classPhoto.html#a9740a1e6a5ad83534e1c3b2b2622cf7a" title="Returns the previous photo pointer.">getPrev</a>();
<a name="l00665"></a>00665   <a class="code" href="classSlideshowWidget.html#ae5a03dd8226ae19bc52f36e0fc30ea3a">photoNum</a>--;   
<a name="l00666"></a>00666   <a class="code" href="classSlideshowWidget.html#a317ec2ab0a81880dc39654fe3cd1d8c5">loadPhoto</a>();
<a name="l00667"></a>00667   <a class="code" href="classSlideshowWidget.html#acdb1247c28fe9e9fa88b10162aae2aea">exchangePhotos</a>();
<a name="l00668"></a>00668 }
<a name="l00669"></a>00669 }
<a name="l00670"></a>00670 <span class="comment">//==============================================</span>
<a name="l00671"></a><a class="code" href="classSlideshowWidget.html#a955b5b56d7c0b9a5d697e55f4af061af">00671</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a955b5b56d7c0b9a5d697e55f4af061af">SlideshowWidget::skipToFirstPhoto</a>()
<a name="l00672"></a>00672 {
<a name="l00673"></a>00673   <span class="comment">//bail if already at first photo in collection</span>
<a name="l00674"></a>00674   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> == <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#aa38b7736f58738d25426bf0cd93fc28a" title="Returns first photo in subalbum.">getFirst</a>())
<a name="l00675"></a>00675     <span class="keywordflow">return</span>;
<a name="l00676"></a>00676   
<a name="l00677"></a>00677   <span class="comment">//bail if currently animating</span>
<a name="l00678"></a>00678   <a class="code" href="classSlideshowWidget.html#a154a32270a20651e7ec6a35ed3abc00a">animatingMutex</a>.lock();
<a name="l00679"></a>00679   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#aa1e72620fa9e34684c468796f8db7535">animating</a>)
<a name="l00680"></a>00680   {
<a name="l00681"></a>00681     <a class="code" href="classSlideshowWidget.html#a154a32270a20651e7ec6a35ed3abc00a">animatingMutex</a>.unlock();      
<a name="l00682"></a>00682     <span class="keywordflow">return</span>;
<a name="l00683"></a>00683   }
<a name="l00684"></a>00684   
<a name="l00685"></a>00685   <a class="code" href="classSlideshowWidget.html#aa1e72620fa9e34684c468796f8db7535">animating</a> = <span class="keyword">true</span>;
<a name="l00686"></a>00686   <span class="keywordflow">if</span>(<a class="code" href="presentationWidget_8cpp.html#a1e29ec442a293f4d0c8df2865f72bc7f">USE_ANIMATION</a>)
<a name="l00687"></a>00687     <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3ad1f46da31fcd95a223a94c6024363f6b">SCROLL_RIGHT</a>;
<a name="l00688"></a>00688   <span class="keywordflow">else</span>
<a name="l00689"></a>00689     <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a9b293fee8577ffd6e0e44036b9a47dea">IMMEDIATE</a>;
<a name="l00690"></a>00690   <a class="code" href="classSlideshowWidget.html#a154a32270a20651e7ec6a35ed3abc00a">animatingMutex</a>.unlock();      
<a name="l00691"></a>00691   
<a name="l00692"></a>00692   <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> = <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#aa38b7736f58738d25426bf0cd93fc28a" title="Returns first photo in subalbum.">getFirst</a>();
<a name="l00693"></a>00693   <a class="code" href="classSlideshowWidget.html#ae5a03dd8226ae19bc52f36e0fc30ea3a">photoNum</a> = 1;    
<a name="l00694"></a>00694   <span class="comment">//load and display new photo</span>
<a name="l00695"></a>00695   <a class="code" href="classSlideshowWidget.html#a317ec2ab0a81880dc39654fe3cd1d8c5">loadPhoto</a>();
<a name="l00696"></a>00696   <a class="code" href="classSlideshowWidget.html#acdb1247c28fe9e9fa88b10162aae2aea">exchangePhotos</a>();
<a name="l00697"></a>00697 }
<a name="l00698"></a>00698 <span class="comment">//==============================================</span>
<a name="l00699"></a><a class="code" href="classSlideshowWidget.html#a6c5a7903320dd6c718d4487fc22b831d">00699</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a6c5a7903320dd6c718d4487fc22b831d">SlideshowWidget::skipToLastPhoto</a>()
<a name="l00700"></a>00700 {
<a name="l00701"></a>00701   <span class="comment">//bail if already at last photo in collection</span>
<a name="l00702"></a>00702   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> == <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#a22578a064d4c60f3bba4b0e8d314ce42" title="Returns last photo in subalbum.">getLast</a>())
<a name="l00703"></a>00703     <span class="keywordflow">return</span>;
<a name="l00704"></a>00704   
<a name="l00705"></a>00705   <span class="comment">//bail if currently animating</span>
<a name="l00706"></a>00706   <a class="code" href="classSlideshowWidget.html#a154a32270a20651e7ec6a35ed3abc00a">animatingMutex</a>.lock();
<a name="l00707"></a>00707   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#aa1e72620fa9e34684c468796f8db7535">animating</a>)
<a name="l00708"></a>00708   {
<a name="l00709"></a>00709     <a class="code" href="classSlideshowWidget.html#a154a32270a20651e7ec6a35ed3abc00a">animatingMutex</a>.unlock();      
<a name="l00710"></a>00710     <span class="keywordflow">return</span>;
<a name="l00711"></a>00711   }
<a name="l00712"></a>00712   
<a name="l00713"></a>00713   <a class="code" href="classSlideshowWidget.html#aa1e72620fa9e34684c468796f8db7535">animating</a> = <span class="keyword">true</span>;
<a name="l00714"></a>00714   <span class="keywordflow">if</span>(<a class="code" href="presentationWidget_8cpp.html#a1e29ec442a293f4d0c8df2865f72bc7f">USE_ANIMATION</a>)
<a name="l00715"></a>00715     <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a392d314d6eb6c2fcc09b3400094ca2ba">SCROLL_LEFT</a>;
<a name="l00716"></a>00716   <span class="keywordflow">else</span>
<a name="l00717"></a>00717     <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a9b293fee8577ffd6e0e44036b9a47dea">IMMEDIATE</a>;
<a name="l00718"></a>00718   <a class="code" href="classSlideshowWidget.html#a154a32270a20651e7ec6a35ed3abc00a">animatingMutex</a>.unlock();      
<a name="l00719"></a>00719   
<a name="l00720"></a>00720   <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> = <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#a22578a064d4c60f3bba4b0e8d314ce42" title="Returns last photo in subalbum.">getLast</a>();
<a name="l00721"></a>00721   <a class="code" href="classSlideshowWidget.html#ae5a03dd8226ae19bc52f36e0fc30ea3a">photoNum</a> = <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#a1a55114adae96d7c2a87e37f6a40fe2d" title="Returns the number of photos in the subalbum.">getNumPhotos</a>();  
<a name="l00722"></a>00722   
<a name="l00723"></a>00723   <span class="comment">//load and display new photo</span>
<a name="l00724"></a>00724   <a class="code" href="classSlideshowWidget.html#a317ec2ab0a81880dc39654fe3cd1d8c5">loadPhoto</a>();
<a name="l00725"></a>00725   <a class="code" href="classSlideshowWidget.html#acdb1247c28fe9e9fa88b10162aae2aea">exchangePhotos</a>();
<a name="l00726"></a>00726 }
<a name="l00727"></a>00727 <span class="comment">//==============================================</span>
<a name="l00728"></a><a class="code" href="classSlideshowWidget.html#a417843612405f76a093d25e850c76e57">00728</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a417843612405f76a093d25e850c76e57">SlideshowWidget::advanceCollection</a>()
<a name="l00729"></a>00729 {
<a name="l00730"></a>00730   <span class="keywordflow">if</span>(<a class="code" href="presentationWidget_8cpp.html#a1e29ec442a293f4d0c8df2865f72bc7f">USE_ANIMATION</a>)
<a name="l00731"></a>00731   {
<a name="l00732"></a>00732     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#a510a01088f04712e93ae202cc758065f" title="Returns pointer to next subalbum.">getNext</a>() == NULL &amp;&amp;
<a name="l00733"></a>00733        <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a> == <a class="code" href="classSlideshowWidget.html#af886ca37902cbfb253453b1ef55c02a5">curAlbum</a>-&gt;<a class="code" href="classAlbum.html#a0870f79ed21521222c97a704bad0d50f" title="Returns a pointer to the first Subalbum.">getFirstSubalbum</a>() )
<a name="l00734"></a>00734       <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3ad1f46da31fcd95a223a94c6024363f6b">SCROLL_RIGHT</a>;
<a name="l00735"></a>00735     <span class="keywordflow">else</span>
<a name="l00736"></a>00736       <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3adc276c852fdda273d5091ee8e2ceb4ec">SCROLL_UP</a>;
<a name="l00737"></a>00737   }
<a name="l00738"></a>00738   <span class="keywordflow">else</span>
<a name="l00739"></a>00739     <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a9b293fee8577ffd6e0e44036b9a47dea">IMMEDIATE</a>;
<a name="l00740"></a>00740 
<a name="l00741"></a>00741   <span class="comment">//keep advancing collections until we find one with a photo in it</span>
<a name="l00742"></a>00742   <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> = NULL;
<a name="l00743"></a>00743   <span class="keywordflow">while</span>(<a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> == NULL)
<a name="l00744"></a>00744   {  
<a name="l00745"></a>00745     <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a> = <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#a510a01088f04712e93ae202cc758065f" title="Returns pointer to next subalbum.">getNext</a>();
<a name="l00746"></a>00746     <a class="code" href="classSlideshowWidget.html#a02915be5f404306f656978134a6ba62e">collectionNum</a>++;
<a name="l00747"></a>00747     <span class="keywordflow">if</span>(!<a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>)
<a name="l00748"></a>00748     {
<a name="l00749"></a>00749       <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a> = <a class="code" href="classSlideshowWidget.html#af886ca37902cbfb253453b1ef55c02a5">curAlbum</a>-&gt;<a class="code" href="classAlbum.html#a0870f79ed21521222c97a704bad0d50f" title="Returns a pointer to the first Subalbum.">getFirstSubalbum</a>();
<a name="l00750"></a>00750       <a class="code" href="classSlideshowWidget.html#a02915be5f404306f656978134a6ba62e">collectionNum</a> = 1;
<a name="l00751"></a>00751     }
<a name="l00752"></a>00752     
<a name="l00753"></a>00753     <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> = <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#aa38b7736f58738d25426bf0cd93fc28a" title="Returns first photo in subalbum.">getFirst</a>();
<a name="l00754"></a>00754   }
<a name="l00755"></a>00755   <a class="code" href="classSlideshowWidget.html#ae5a03dd8226ae19bc52f36e0fc30ea3a">photoNum</a> = 1;
<a name="l00756"></a>00756   
<a name="l00757"></a>00757   <span class="comment">//load and display new photo</span>
<a name="l00758"></a>00758   <a class="code" href="classSlideshowWidget.html#a317ec2ab0a81880dc39654fe3cd1d8c5">loadPhoto</a>();
<a name="l00759"></a>00759   <a class="code" href="classSlideshowWidget.html#acdb1247c28fe9e9fa88b10162aae2aea">exchangePhotos</a>();
<a name="l00760"></a>00760 }
<a name="l00761"></a>00761 <span class="comment">//==============================================</span>
<a name="l00762"></a><a class="code" href="classSlideshowWidget.html#a19ac0e084c892fb6b8a2b35663581bdb">00762</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a19ac0e084c892fb6b8a2b35663581bdb">SlideshowWidget::backupCollection</a>()
<a name="l00763"></a>00763 {
<a name="l00764"></a>00764   <span class="keywordflow">if</span>(<a class="code" href="presentationWidget_8cpp.html#a1e29ec442a293f4d0c8df2865f72bc7f">USE_ANIMATION</a>)
<a name="l00765"></a>00765   {
<a name="l00766"></a>00766     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#a08c5cb587f5faa8b18a96ee04af8dc56" title="Returns pointer to prev subalbum.">getPrev</a>() == NULL &amp;&amp;
<a name="l00767"></a>00767        <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a> == <a class="code" href="classSlideshowWidget.html#af886ca37902cbfb253453b1ef55c02a5">curAlbum</a>-&gt;<a class="code" href="classAlbum.html#ad01a098e95e90dccfc2a3b4cb2169f83" title="Returns a pointer to the last Subalbum.">getLastSubalbum</a>() )
<a name="l00768"></a>00768       <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3ad1f46da31fcd95a223a94c6024363f6b">SCROLL_RIGHT</a>;
<a name="l00769"></a>00769     <span class="keywordflow">else</span>
<a name="l00770"></a>00770       <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a9d522bb191bf21bcaace5569ec49475d">SCROLL_DOWN</a>;
<a name="l00771"></a>00771   }
<a name="l00772"></a>00772   <span class="keywordflow">else</span>
<a name="l00773"></a>00773     <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> = <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a9b293fee8577ffd6e0e44036b9a47dea">IMMEDIATE</a>;
<a name="l00774"></a>00774   
<a name="l00775"></a>00775   <span class="comment">//keep backing up collections until we find one with a photo in it</span>
<a name="l00776"></a>00776   <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> = NULL;
<a name="l00777"></a>00777   <span class="keywordflow">while</span>(<a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> == NULL)
<a name="l00778"></a>00778   {
<a name="l00779"></a>00779     <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a> = <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#a08c5cb587f5faa8b18a96ee04af8dc56" title="Returns pointer to prev subalbum.">getPrev</a>();
<a name="l00780"></a>00780     <a class="code" href="classSlideshowWidget.html#a02915be5f404306f656978134a6ba62e">collectionNum</a>--;
<a name="l00781"></a>00781     <span class="keywordflow">if</span>(!<a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>)
<a name="l00782"></a>00782     {
<a name="l00783"></a>00783       <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a> = <a class="code" href="classSlideshowWidget.html#af886ca37902cbfb253453b1ef55c02a5">curAlbum</a>-&gt;<a class="code" href="classAlbum.html#ad01a098e95e90dccfc2a3b4cb2169f83" title="Returns a pointer to the last Subalbum.">getLastSubalbum</a>();
<a name="l00784"></a>00784       <a class="code" href="classSlideshowWidget.html#a02915be5f404306f656978134a6ba62e">collectionNum</a> = <a class="code" href="classSlideshowWidget.html#af886ca37902cbfb253453b1ef55c02a5">curAlbum</a>-&gt;<a class="code" href="classAlbum.html#a612d94f8a24a71110343722e8f9d45f9" title="Returns number of subalbums.">getNumSubalbums</a>();
<a name="l00785"></a>00785     } 
<a name="l00786"></a>00786        
<a name="l00787"></a>00787     <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a> = <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#a22578a064d4c60f3bba4b0e8d314ce42" title="Returns last photo in subalbum.">getLast</a>();
<a name="l00788"></a>00788   }
<a name="l00789"></a>00789   <a class="code" href="classSlideshowWidget.html#ae5a03dd8226ae19bc52f36e0fc30ea3a">photoNum</a> = <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#a1a55114adae96d7c2a87e37f6a40fe2d" title="Returns the number of photos in the subalbum.">getNumPhotos</a>();
<a name="l00790"></a>00790   
<a name="l00791"></a>00791   <span class="comment">//load and display new photo</span>
<a name="l00792"></a>00792   <a class="code" href="classSlideshowWidget.html#a317ec2ab0a81880dc39654fe3cd1d8c5">loadPhoto</a>();
<a name="l00793"></a>00793   <a class="code" href="classSlideshowWidget.html#acdb1247c28fe9e9fa88b10162aae2aea">exchangePhotos</a>();
<a name="l00794"></a>00794 }
<a name="l00795"></a>00795 <span class="comment">//==============================================</span>
<a name="l00796"></a><a class="code" href="classSlideshowWidget.html#a46e5367994846564c3d58968f9ee23d6">00796</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a46e5367994846564c3d58968f9ee23d6">SlideshowWidget::animate</a>()
<a name="l00797"></a>00797 {
<a name="l00798"></a>00798   <span class="comment">//---------------------------------</span>
<a name="l00799"></a>00799   <span class="comment">//determine new number of columns to be shown</span>
<a name="l00800"></a>00800     
<a name="l00801"></a>00801   <span class="comment">//determine # of ms that have passed since last redraw</span>
<a name="l00802"></a>00802   <a class="code" href="classSlideshowWidget.html#a3256d9337f65d3c76b2ab86a094513e9">currentTime</a>.start();
<a name="l00803"></a>00803   <span class="keywordtype">double</span> ms = <a class="code" href="classSlideshowWidget.html#a6b200b96d0f64d829781846ad78ed745">lastTime</a>.msecsTo(<a class="code" href="classSlideshowWidget.html#a3256d9337f65d3c76b2ab86a094513e9">currentTime</a>);
<a name="l00804"></a>00804 
<a name="l00805"></a>00805   <span class="comment">//determine increment</span>
<a name="l00806"></a>00806   <span class="keywordtype">int</span> inc = (int)(ms/<a class="code" href="classSlideshowWidget.html#ab82824be6432d628ee1356e4e1e143a9">delay</a>);
<a name="l00807"></a>00807 
<a name="l00808"></a>00808   <span class="comment">//if increment is not zero then update last time</span>
<a name="l00809"></a>00809   <span class="keywordflow">if</span>(inc != 0)
<a name="l00810"></a>00810   {
<a name="l00811"></a>00811     <a class="code" href="classSlideshowWidget.html#a6b200b96d0f64d829781846ad78ed745">lastTime</a> = <a class="code" href="classSlideshowWidget.html#a3256d9337f65d3c76b2ab86a094513e9">currentTime</a>;
<a name="l00812"></a>00812   }
<a name="l00813"></a>00813 
<a name="l00814"></a>00814   <span class="comment">//update number of columns shown</span>
<a name="l00815"></a>00815   <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>+=inc;
<a name="l00816"></a>00816   
<a name="l00817"></a>00817   <span class="comment">//boundary conditions</span>
<a name="l00818"></a>00818   <span class="keywordflow">if</span>( <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a> &gt; <a class="code" href="classSlideshowWidget.html#a31bd5823f873e774487736d8b2a047e7">screenWidth</a> &amp;&amp; (<a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a392d314d6eb6c2fcc09b3400094ca2ba">SCROLL_LEFT</a> || <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3ad1f46da31fcd95a223a94c6024363f6b">SCROLL_RIGHT</a>) )
<a name="l00819"></a>00819     <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a> = <a class="code" href="classSlideshowWidget.html#a31bd5823f873e774487736d8b2a047e7">screenWidth</a>;
<a name="l00820"></a>00820   <span class="keywordflow">if</span>( <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a> &gt; <a class="code" href="classSlideshowWidget.html#adf95b8dbb38136a93990de47cdf4dea9">screenHeight</a> &amp;&amp; (<a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3adc276c852fdda273d5091ee8e2ceb4ec">SCROLL_UP</a> || <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a9d522bb191bf21bcaace5569ec49475d">SCROLL_DOWN</a>) )
<a name="l00821"></a>00821     <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a> = <a class="code" href="classSlideshowWidget.html#adf95b8dbb38136a93990de47cdf4dea9">screenHeight</a>;
<a name="l00822"></a>00822   
<a name="l00823"></a>00823   <span class="comment">//if step changed then redraw</span>
<a name="l00824"></a>00824   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a> != <a class="code" href="classSlideshowWidget.html#a6048fcc7d40e7ce22fc56d0bf04a257a">lastStep</a>) 
<a name="l00825"></a>00825   {
<a name="l00826"></a>00826     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a392d314d6eb6c2fcc09b3400094ca2ba">SCROLL_LEFT</a>)
<a name="l00827"></a>00827     {
<a name="l00828"></a>00828       bitBlt( &amp;<a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>, 0, 0, 
<a name="l00829"></a>00829               <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>, 
<a name="l00830"></a>00830               <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>, 0, 
<a name="l00831"></a>00831               <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>-&gt;width() - <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>, <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>-&gt;height(), 
<a name="l00832"></a>00832               CopyROP, true );
<a name="l00833"></a>00833       bitBlt( &amp;<a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>, <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>-&gt;width() - <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>, 0, 
<a name="l00834"></a>00834               <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>, 
<a name="l00835"></a>00835               0, 0, <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>, paintBufferCurr-&gt;height(), 
<a name="l00836"></a>00836               CopyROP, true );
<a name="l00837"></a>00837     }
<a name="l00838"></a>00838     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3ad1f46da31fcd95a223a94c6024363f6b">SCROLL_RIGHT</a>)
<a name="l00839"></a>00839     {
<a name="l00840"></a>00840       bitBlt( &amp;<a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>, <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>, 0, 
<a name="l00841"></a>00841               <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>, 
<a name="l00842"></a>00842               0, 0, 
<a name="l00843"></a>00843               <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>-&gt;width() - <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>, <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>-&gt;height(), 
<a name="l00844"></a>00844               CopyROP, true );
<a name="l00845"></a>00845       bitBlt( &amp;<a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>, 0, 0, 
<a name="l00846"></a>00846               <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>, 
<a name="l00847"></a>00847               <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>-&gt;width() - <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>, 0, <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>, <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>-&gt;height(), 
<a name="l00848"></a>00848               CopyROP, true );
<a name="l00849"></a>00849     }
<a name="l00850"></a>00850     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3adc276c852fdda273d5091ee8e2ceb4ec">SCROLL_UP</a>)
<a name="l00851"></a>00851     {
<a name="l00852"></a>00852       bitBlt( &amp;<a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>, 0, 0, 
<a name="l00853"></a>00853               <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>, 
<a name="l00854"></a>00854               0, <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>,  
<a name="l00855"></a>00855               <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>-&gt;width(), <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>-&gt;height() - <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>, 
<a name="l00856"></a>00856               CopyROP, true );
<a name="l00857"></a>00857       bitBlt( &amp;<a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>, 0, <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>-&gt;height() - <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>,
<a name="l00858"></a>00858               <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>, 
<a name="l00859"></a>00859               0, 0, paintBufferCurr-&gt;width(), <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>,
<a name="l00860"></a>00860               CopyROP, true );
<a name="l00861"></a>00861     }
<a name="l00862"></a>00862     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a9d522bb191bf21bcaace5569ec49475d">SCROLL_DOWN</a>)
<a name="l00863"></a>00863     {
<a name="l00864"></a>00864       bitBlt( &amp;<a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>, 0, <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>,
<a name="l00865"></a>00865               <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>, 
<a name="l00866"></a>00866               0, 0, 
<a name="l00867"></a>00867               <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>-&gt;width(), <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>-&gt;height() - <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>, 
<a name="l00868"></a>00868               CopyROP, true );
<a name="l00869"></a>00869       bitBlt( &amp;<a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>, 0, 0, 
<a name="l00870"></a>00870               <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>, 
<a name="l00871"></a>00871               0, <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>-&gt;height() - <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>, <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>-&gt;width(), <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>, 
<a name="l00872"></a>00872               CopyROP, true );
<a name="l00873"></a>00873     }
<a name="l00874"></a>00874   
<a name="l00875"></a>00875     <span class="comment">//paint overlaid controls</span>
<a name="l00876"></a>00876     <a class="code" href="classSlideshowWidget.html#a29a0b1c4c0796c8f81855570268384a8">paintOverlaidControls</a>();
<a name="l00877"></a>00877     
<a name="l00878"></a>00878     <span class="comment">//blit to screen</span>
<a name="l00879"></a>00879     repaint(<span class="keyword">false</span>);
<a name="l00880"></a>00880      
<a name="l00881"></a>00881     <a class="code" href="classSlideshowWidget.html#a6048fcc7d40e7ce22fc56d0bf04a257a">lastStep</a> = <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a>;
<a name="l00882"></a>00882   
<a name="l00883"></a>00883     <span class="comment">//not done animating, reiterate</span>
<a name="l00884"></a>00884     <span class="keywordflow">if</span>( 
<a name="l00885"></a>00885         (
<a name="l00886"></a>00886           <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a> &lt; <a class="code" href="classSlideshowWidget.html#a31bd5823f873e774487736d8b2a047e7">screenWidth</a> &amp;&amp; 
<a name="l00887"></a>00887           (<a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a392d314d6eb6c2fcc09b3400094ca2ba">SCROLL_LEFT</a> || <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3ad1f46da31fcd95a223a94c6024363f6b">SCROLL_RIGHT</a>) 
<a name="l00888"></a>00888         ) ||
<a name="l00889"></a>00889         (
<a name="l00890"></a>00890           <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a> &lt; <a class="code" href="classSlideshowWidget.html#adf95b8dbb38136a93990de47cdf4dea9">screenHeight</a> &amp;&amp; 
<a name="l00891"></a>00891           (<a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3adc276c852fdda273d5091ee8e2ceb4ec">SCROLL_UP</a> || <a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a9d522bb191bf21bcaace5569ec49475d">SCROLL_DOWN</a>) 
<a name="l00892"></a>00892         )
<a name="l00893"></a>00893       )
<a name="l00894"></a>00894     {
<a name="l00895"></a>00895       <span class="comment">//update speed</span>
<a name="l00896"></a>00896       <a class="code" href="classSlideshowWidget.html#ab82824be6432d628ee1356e4e1e143a9">delay</a> = <a class="code" href="classSlideshowWidget.html#ab82824be6432d628ee1356e4e1e143a9">delay</a> * <a class="code" href="classSlideshowWidget.html#abe39c93eb4311f3432b07230f92a6b71">accel</a>;
<a name="l00897"></a>00897       <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ab82824be6432d628ee1356e4e1e143a9">delay</a> &lt; <a class="code" href="classSlideshowWidget.html#a61733b60d827fa8213148ca59a36af5b">minDelay</a>) <a class="code" href="classSlideshowWidget.html#ab82824be6432d628ee1356e4e1e143a9">delay</a> = <a class="code" href="classSlideshowWidget.html#a61733b60d827fa8213148ca59a36af5b">minDelay</a> ;
<a name="l00898"></a>00898 
<a name="l00899"></a>00899       <span class="comment">//restart timer</span>
<a name="l00900"></a>00900       <a class="code" href="classSlideshowWidget.html#af5cc70ba61fca963996963c6159c65f6">animatingTimer</a>-&gt;start( (<span class="keywordtype">int</span>)<a class="code" href="classSlideshowWidget.html#ab82824be6432d628ee1356e4e1e143a9">delay</a>, TRUE );
<a name="l00901"></a>00901     }
<a name="l00902"></a>00902     <span class="comment">//done animating....</span>
<a name="l00903"></a>00903     <span class="keywordflow">else</span>
<a name="l00904"></a>00904     {
<a name="l00905"></a>00905       <a class="code" href="classSlideshowWidget.html#aa1e72620fa9e34684c468796f8db7535">animating</a> = <span class="keyword">false</span>;
<a name="l00906"></a>00906       
<a name="l00907"></a>00907       <span class="comment">//if using debug messages use refreshScreen method which actually displays these.</span>
<a name="l00908"></a>00908       <span class="comment">//such messages are laid on time and thus not shown when transitioning</span>
<a name="l00909"></a>00909       <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a0572976e05e0d5396127085e07f56bfb">displayDebugMessages</a>)
<a name="l00910"></a>00910         <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">refreshScreen</a>();  
<a name="l00911"></a>00911         
<a name="l00912"></a>00912       <span class="comment">//if autoplay is enabled restart timer</span>
<a name="l00913"></a>00913       <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a>)
<a name="l00914"></a>00914         <a class="code" href="classSlideshowWidget.html#a82b21036f647e243572b366b2c701ed7">autoPlayTimer</a>-&gt;start( (<span class="keywordtype">int</span>)1000*<a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a>, TRUE );
<a name="l00915"></a>00915     }
<a name="l00916"></a>00916   }
<a name="l00917"></a>00917   <span class="keywordflow">else</span>
<a name="l00918"></a>00918   {
<a name="l00919"></a>00919     <span class="comment">//update speed</span>
<a name="l00920"></a>00920     <a class="code" href="classSlideshowWidget.html#ab82824be6432d628ee1356e4e1e143a9">delay</a> = <a class="code" href="classSlideshowWidget.html#ab82824be6432d628ee1356e4e1e143a9">delay</a> * <a class="code" href="classSlideshowWidget.html#abe39c93eb4311f3432b07230f92a6b71">accel</a>;
<a name="l00921"></a>00921     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ab82824be6432d628ee1356e4e1e143a9">delay</a> &lt; <a class="code" href="classSlideshowWidget.html#a61733b60d827fa8213148ca59a36af5b">minDelay</a>) <a class="code" href="classSlideshowWidget.html#ab82824be6432d628ee1356e4e1e143a9">delay</a> = <a class="code" href="classSlideshowWidget.html#a61733b60d827fa8213148ca59a36af5b">minDelay</a>;
<a name="l00922"></a>00922 
<a name="l00923"></a>00923     <span class="comment">//restart timer</span>
<a name="l00924"></a>00924     <a class="code" href="classSlideshowWidget.html#af5cc70ba61fca963996963c6159c65f6">animatingTimer</a>-&gt;start( (<span class="keywordtype">int</span>)<a class="code" href="classSlideshowWidget.html#ab82824be6432d628ee1356e4e1e143a9">delay</a>, TRUE );
<a name="l00925"></a>00925   }
<a name="l00926"></a>00926   <span class="comment">//---------------------------------------</span>
<a name="l00927"></a>00927 }
<a name="l00928"></a>00928 <span class="comment">//==============================================</span>
<a name="l00929"></a><a class="code" href="classSlideshowWidget.html#acdb1247c28fe9e9fa88b10162aae2aea">00929</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#acdb1247c28fe9e9fa88b10162aae2aea">SlideshowWidget::exchangePhotos</a>()
<a name="l00930"></a>00930 {
<a name="l00931"></a>00931   <span class="comment">//if transition is set to immediate then just show new photo</span>
<a name="l00932"></a>00932   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ad101cee1cb319093c8b1c42a2ee93339">type</a> == <a class="code" href="presentationWidget_8h.html#acab78672e4a9ba36667305ad072ecbf3a9b293fee8577ffd6e0e44036b9a47dea">IMMEDIATE</a>)
<a name="l00933"></a>00933   {
<a name="l00934"></a>00934     <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">refreshScreen</a>();
<a name="l00935"></a>00935     <a class="code" href="classSlideshowWidget.html#aa1e72620fa9e34684c468796f8db7535">animating</a> = <span class="keyword">false</span>;
<a name="l00936"></a>00936     <span class="keywordflow">return</span>;
<a name="l00937"></a>00937   }
<a name="l00938"></a>00938   
<a name="l00939"></a>00939   <span class="comment">//setup step counter</span>
<a name="l00940"></a>00940   <a class="code" href="classSlideshowWidget.html#a6048fcc7d40e7ce22fc56d0bf04a257a">lastStep</a> = 0;
<a name="l00941"></a>00941   <a class="code" href="classSlideshowWidget.html#a8a1cf3f6652301de8d9faadecb025250">step</a> = 0;
<a name="l00942"></a>00942 
<a name="l00943"></a>00943   <span class="comment">//set initial delay/speed</span>
<a name="l00944"></a>00944   <a class="code" href="classSlideshowWidget.html#ab82824be6432d628ee1356e4e1e143a9">delay</a> = <a class="code" href="classSlideshowWidget.html#ad315c38970b5e1cedb11c6871fc63b44">initDelay</a>;
<a name="l00945"></a>00945 
<a name="l00946"></a>00946   <span class="comment">//exchange buffers</span>
<a name="l00947"></a>00947   QPixmap* temp = <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>;
<a name="l00948"></a>00948   <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a> = <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a>;
<a name="l00949"></a>00949   <a class="code" href="classSlideshowWidget.html#a4dbc3515b0eeaac9f735467b3072c11d">paintBufferPrev</a> = temp;
<a name="l00950"></a>00950   
<a name="l00951"></a>00951   <span class="comment">//paint new image to curr buffer</span>
<a name="l00952"></a>00952   <a class="code" href="classSlideshowWidget.html#a58c2b7e3463e1281f90811b5475354dd">showPhoto</a>();
<a name="l00953"></a>00953   
<a name="l00954"></a>00954   <span class="comment">//find current time, used to decide how many new columns to reveal in first iteration</span>
<a name="l00955"></a>00955   <a class="code" href="classSlideshowWidget.html#a6b200b96d0f64d829781846ad78ed745">lastTime</a>.start();
<a name="l00956"></a>00956   
<a name="l00957"></a>00957   <span class="comment">//begin animation</span>
<a name="l00958"></a>00958   <a class="code" href="classSlideshowWidget.html#a46e5367994846564c3d58968f9ee23d6">animate</a>();
<a name="l00959"></a>00959 }
<a name="l00960"></a>00960 <span class="comment">//==============================================</span>
<a name="l00961"></a><a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">00961</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a07f19c759b224128d4b379363946fe25">SlideshowWidget::refreshScreen</a>()
<a name="l00962"></a>00962 {
<a name="l00963"></a>00963   <span class="comment">//paint current photo to paintBufferCurr</span>
<a name="l00964"></a>00964   <a class="code" href="classSlideshowWidget.html#a58c2b7e3463e1281f90811b5475354dd">showPhoto</a>();
<a name="l00965"></a>00965   
<a name="l00966"></a>00966   <span class="comment">//blit to screen buffer    </span>
<a name="l00967"></a>00967   bitBlt( &amp;<a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a>, 0, 0, 
<a name="l00968"></a>00968           <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>, 
<a name="l00969"></a>00969           0, 0, <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>-&gt;width(), <a class="code" href="classSlideshowWidget.html#aabba514fe35b3dddf7872c953288246f">paintBufferCurr</a>-&gt;height(), 
<a name="l00970"></a>00970           CopyROP, true );
<a name="l00971"></a>00971           
<a name="l00972"></a>00972   <span class="comment">//paint overlaid controls</span>
<a name="l00973"></a>00973   <a class="code" href="classSlideshowWidget.html#a29a0b1c4c0796c8f81855570268384a8">paintOverlaidControls</a>();
<a name="l00974"></a>00974 }
<a name="l00975"></a>00975 <span class="comment">//==============================================</span>
<a name="l00976"></a><a class="code" href="classSlideshowWidget.html#a29a0b1c4c0796c8f81855570268384a8">00976</a> <span class="keywordtype">void</span> <a class="code" href="classSlideshowWidget.html#a29a0b1c4c0796c8f81855570268384a8">SlideshowWidget::paintOverlaidControls</a>()
<a name="l00977"></a>00977 {
<a name="l00978"></a>00978   QString tempString = <span class="stringliteral">&quot;&quot;</span>;
<a name="l00979"></a>00979   <span class="keywordtype">int</span> x, y;
<a name="l00980"></a>00980   
<a name="l00981"></a>00981   <span class="comment">//setup painter to screen buffer for laying on top all top level widgets</span>
<a name="l00982"></a>00982   QPainter p;
<a name="l00983"></a>00983   p.begin( &amp;<a class="code" href="classSlideshowWidget.html#a37480ca068bbe2ec6c7f7fca1834f3d0">screenBuffer</a> );
<a name="l00984"></a>00984   <span class="comment">//------------------------------</span>
<a name="l00985"></a>00985   <span class="comment">//setup font stuff for writing text</span>
<a name="l00986"></a>00986   QFont f( <span class="stringliteral">&quot;times&quot;</span>, <a class="code" href="classSlideshowWidget.html#aa84213018949e195e72bcd3c71cf35a0">fontSize</a>, QFont::Bold );
<a name="l00987"></a>00987   QFontMetrics fm( f );
<a name="l00988"></a>00988   p.setFont( f );
<a name="l00989"></a>00989   <span class="comment">//------------------------------</span>
<a name="l00990"></a>00990   <span class="comment">//paint autoPlay delay</span>
<a name="l00991"></a>00991   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a> &amp;&amp; <a class="code" href="classSlideshowWidget.html#a49d4c0224415d77cbf7ea769a68dc115">displayAutoPlayDelay</a>)
<a name="l00992"></a>00992   {
<a name="l00993"></a>00993     <span class="comment">//get handle on right speed icon</span>
<a name="l00994"></a>00994     QImage* speedIcon;
<a name="l00995"></a>00995     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a> == 1) speedIcon = &amp;<a class="code" href="classSlideshowWidget.html#af21988ce80ddffb2fa67d726a5210d5a">speed1</a>;
<a name="l00996"></a>00996     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a> == 2) speedIcon = &amp;<a class="code" href="classSlideshowWidget.html#ab4caad8be1fdf1d058e73fa6071bbba0">speed2</a>;
<a name="l00997"></a>00997     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#abe0eb0c0b949cda86a2feb6b315ca5c5">autoPlayDelay</a> == 4) speedIcon = &amp;<a class="code" href="classSlideshowWidget.html#a5a65b068e4e4815187a2d0116e395ede">speed4</a>;
<a name="l00998"></a>00998     <span class="keywordflow">else</span> speedIcon = &amp;<a class="code" href="classSlideshowWidget.html#a3be5473055b6079cde6db82d91d15012">speed8</a>;
<a name="l00999"></a>00999     
<a name="l01000"></a>01000     <span class="keywordtype">int</span> maxWidth = <a class="code" href="classSlideshowWidget.html#af21988ce80ddffb2fa67d726a5210d5a">speed1</a>.width();
<a name="l01001"></a>01001     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ab4caad8be1fdf1d058e73fa6071bbba0">speed2</a>.width() &gt; maxWidth) maxWidth = <a class="code" href="classSlideshowWidget.html#ab4caad8be1fdf1d058e73fa6071bbba0">speed2</a>.width();
<a name="l01002"></a>01002     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a5a65b068e4e4815187a2d0116e395ede">speed4</a>.width() &gt; maxWidth) maxWidth = <a class="code" href="classSlideshowWidget.html#a5a65b068e4e4815187a2d0116e395ede">speed4</a>.width();
<a name="l01003"></a>01003     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a3be5473055b6079cde6db82d91d15012">speed8</a>.width() &gt; maxWidth) maxWidth = <a class="code" href="classSlideshowWidget.html#a3be5473055b6079cde6db82d91d15012">speed8</a>.width();
<a name="l01004"></a>01004     
<a name="l01005"></a>01005     <span class="keywordtype">int</span> maxHeight = <a class="code" href="classSlideshowWidget.html#af21988ce80ddffb2fa67d726a5210d5a">speed1</a>.height();
<a name="l01006"></a>01006     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#ab4caad8be1fdf1d058e73fa6071bbba0">speed2</a>.height() &gt; maxHeight) maxHeight = <a class="code" href="classSlideshowWidget.html#ab4caad8be1fdf1d058e73fa6071bbba0">speed2</a>.height();
<a name="l01007"></a>01007     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a5a65b068e4e4815187a2d0116e395ede">speed4</a>.height() &gt; maxHeight) maxHeight = <a class="code" href="classSlideshowWidget.html#a5a65b068e4e4815187a2d0116e395ede">speed4</a>.height();
<a name="l01008"></a>01008     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a3be5473055b6079cde6db82d91d15012">speed8</a>.height() &gt; maxHeight) maxHeight = <a class="code" href="classSlideshowWidget.html#a3be5473055b6079cde6db82d91d15012">speed8</a>.height();
<a name="l01009"></a>01009     
<a name="l01010"></a>01010     x = <a class="code" href="classSlideshowWidget.html#a31bd5823f873e774487736d8b2a047e7">screenWidth</a> - <a class="code" href="presentationWidget_8cpp.html#a5b2e04a7d65c6182ea7378b3647b3300">TEXT_MARGIN</a> - speedIcon-&gt;width() - (maxWidth - speedIcon-&gt;width())/2;
<a name="l01011"></a>01011     y = <a class="code" href="classSlideshowWidget.html#adf95b8dbb38136a93990de47cdf4dea9">screenHeight</a> - <a class="code" href="presentationWidget_8cpp.html#a5b2e04a7d65c6182ea7378b3647b3300">TEXT_MARGIN</a> - speedIcon-&gt;height() - (maxHeight - speedIcon-&gt;height())/2;
<a name="l01012"></a>01012     
<a name="l01013"></a>01013     p.drawImage( x, y, *speedIcon );
<a name="l01014"></a>01014     <a class="code" href="classSlideshowWidget.html#a49d4c0224415d77cbf7ea769a68dc115">displayAutoPlayDelay</a> = <span class="keyword">false</span>;
<a name="l01015"></a>01015   }
<a name="l01016"></a>01016   <span class="comment">//------------------------------</span>
<a name="l01017"></a>01017   <span class="comment">//if debugging enabled paint such messages</span>
<a name="l01018"></a>01018   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a0572976e05e0d5396127085e07f56bfb">displayDebugMessages</a>)
<a name="l01019"></a>01019   {
<a name="l01020"></a>01020     <span class="comment">//before debugging message set color to green</span>
<a name="l01021"></a>01021     p.setPen(QColor(<span class="stringliteral">&quot;green&quot;</span>));
<a name="l01022"></a>01022     <span class="comment">//------------------------------</span>
<a name="l01023"></a>01023     <span class="comment">//paint collection number</span>
<a name="l01024"></a>01024     tempString = QString(<span class="stringliteral">&quot;(Collection %1 / %2)&quot;</span>).arg(<a class="code" href="classSlideshowWidget.html#a02915be5f404306f656978134a6ba62e">collectionNum</a>).arg(<a class="code" href="classSlideshowWidget.html#af886ca37902cbfb253453b1ef55c02a5">curAlbum</a>-&gt;<a class="code" href="classAlbum.html#a612d94f8a24a71110343722e8f9d45f9" title="Returns number of subalbums.">getNumSubalbums</a>());
<a name="l01025"></a>01025     x = 0;
<a name="l01026"></a>01026     y = 0;
<a name="l01027"></a>01027     p.fillRect( x, y, fm.width(tempString), fm.height(), QBrush(QColor(<span class="stringliteral">&quot;black&quot;</span>)) );
<a name="l01028"></a>01028     p.drawText( x, y + fm.ascent(), tempString );
<a name="l01029"></a>01029     <span class="comment">//------------------------------</span>
<a name="l01030"></a>01030     <span class="comment">//paint photo number</span>
<a name="l01031"></a>01031     tempString = QString(<span class="stringliteral">&quot;(Photo %1 / %2)&quot;</span>).arg(<a class="code" href="classSlideshowWidget.html#ae5a03dd8226ae19bc52f36e0fc30ea3a">photoNum</a>).arg(<a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#a1a55114adae96d7c2a87e37f6a40fe2d" title="Returns the number of photos in the subalbum.">getNumPhotos</a>());
<a name="l01032"></a>01032     x = <a class="code" href="classSlideshowWidget.html#a31bd5823f873e774487736d8b2a047e7">screenWidth</a> - fm.width(tempString);
<a name="l01033"></a>01033     y = 0;
<a name="l01034"></a>01034     p.fillRect( x, y, fm.width(tempString), fm.height(), QBrush(QColor(<span class="stringliteral">&quot;black&quot;</span>)) );
<a name="l01035"></a>01035     p.drawText(x, y + fm.ascent(), tempString );
<a name="l01036"></a>01036   }
<a name="l01037"></a>01037   <span class="comment">//------------------------------</span>
<a name="l01038"></a>01038   <span class="comment">//if the mouse is shown paint the control interface</span>
<a name="l01039"></a>01039   <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a809b706062b4aed4bd6ea45985c56f50">mouseShown</a>)
<a name="l01040"></a>01040   {
<a name="l01041"></a>01041     QImage* shownInterface;
<a name="l01042"></a>01042     <span class="keywordflow">if</span>(<a class="code" href="classSlideshowWidget.html#a3c187f1cbcbfc3c820b5ecc44cc64279">autoPlay</a>)
<a name="l01043"></a>01043       shownInterface = &amp;<a class="code" href="classSlideshowWidget.html#acdf1f11466838df262a5bd85fca74386">pauseInterface</a>;
<a name="l01044"></a>01044     <span class="keywordflow">else</span>
<a name="l01045"></a>01045       shownInterface = &amp;<a class="code" href="classSlideshowWidget.html#a3f5a47e749b406a5db40b2703ba2c531">playInterface</a>;
<a name="l01046"></a>01046 
<a name="l01047"></a>01047     x = ( <a class="code" href="classSlideshowWidget.html#a31bd5823f873e774487736d8b2a047e7">screenWidth</a> - shownInterface-&gt;width() ) / 2;
<a name="l01048"></a>01048     y = <a class="code" href="classSlideshowWidget.html#adf95b8dbb38136a93990de47cdf4dea9">screenHeight</a> - shownInterface-&gt;height() - <a class="code" href="presentationWidget_8cpp.html#a5b2e04a7d65c6182ea7378b3647b3300">TEXT_MARGIN</a>;
<a name="l01049"></a>01049     p.drawImage( x, y, *shownInterface );
<a name="l01050"></a>01050 
<a name="l01051"></a>01051     <span class="comment">//paint collection # and photo #</span>
<a name="l01052"></a>01052     f.setPointSize( 14 );      
<a name="l01053"></a>01053     fm = QFontMetrics( f );
<a name="l01054"></a>01054     tempString = QString(<span class="stringliteral">&quot;%1 / %2&quot;</span>).arg(<a class="code" href="classSlideshowWidget.html#ae5a03dd8226ae19bc52f36e0fc30ea3a">photoNum</a>).arg(<a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>-&gt;<a class="code" href="classSubalbum.html#a1a55114adae96d7c2a87e37f6a40fe2d" title="Returns the number of photos in the subalbum.">getNumPhotos</a>());
<a name="l01055"></a>01055     x = x + (shownInterface-&gt;width() / 2) - (fm.width(tempString) / 2);
<a name="l01056"></a>01056     y = y + 104;
<a name="l01057"></a>01057     p.setFont( f );
<a name="l01058"></a>01058     p.setPen(QColor(<span class="stringliteral">&quot;white&quot;</span>));
<a name="l01059"></a>01059     p.drawText( x, y, tempString );
<a name="l01060"></a>01060   }
<a name="l01061"></a>01061   <span class="comment">//------------------------------</span>
<a name="l01062"></a>01062   <span class="comment">//ender painter and flast to screen</span>
<a name="l01063"></a>01063   p.end();
<a name="l01064"></a>01064   repaint(<span class="keyword">false</span>);
<a name="l01065"></a>01065 }
<a name="l01066"></a>01066 <span class="comment">//==============================================</span>
<a name="l01067"></a><a class="code" href="classSlideshowWidget.html#a44d7d6d30dd3c97109051a17cacd90df">01067</a> <a class="code" href="classSubalbum.html" title="A subalbum contains photos.">Subalbum</a>* <a class="code" href="classSlideshowWidget.html#a44d7d6d30dd3c97109051a17cacd90df" title="returns a pointer to the currently visible collection">SlideshowWidget::getCurCollection</a>() { <span class="keywordflow">return</span> <a class="code" href="classSlideshowWidget.html#a84b2c9751ae47c791187ea0c9b89ca55">curCollection</a>; }
<a name="l01068"></a>01068 <span class="comment">//==============================================</span>
<a name="l01069"></a><a class="code" href="classSlideshowWidget.html#a8db17b7473aa59da6ed89963b62f3669">01069</a> <a class="code" href="classPhoto.html" title="A photo consists of a full size image, a smaller slide show image, a very small thumbnail...">Photo</a>* <a class="code" href="classSlideshowWidget.html#a8db17b7473aa59da6ed89963b62f3669" title="returns a pointer to the currently visible photo">SlideshowWidget::getCurPhoto</a>() { <span class="keywordflow">return</span> <a class="code" href="classSlideshowWidget.html#ab990bb00d899b17c2a22543250fc40de">curPhoto</a>; }
<a name="l01070"></a>01070 <span class="comment">//==============================================</span>
<a name="l01071"></a>01071 
</pre></div></div>
<hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address>
</body>
</html>