Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 1f9eb832ba1e4b88d9a5c2b384813bb4 > files > 3883

kdelibs3-apidocs-3.5.10-31.fc15.noarch.rpm

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

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

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

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

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

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

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



</head>

<body>

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

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

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


</div>

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


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

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


<!-- Generated by Doxygen 1.7.4 -->
<div class="header">
  <div class="headertitle">
<div class="title">knuminput.cpp</div>  </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// -*- c-basic-offset: 4 -*-</span>
<a name="l00002"></a>00002 <span class="comment">/*</span>
<a name="l00003"></a>00003 <span class="comment"> * knuminput.cpp</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
<a name="l00005"></a>00005 <span class="comment"> * Initial implementation:</span>
<a name="l00006"></a>00006 <span class="comment"> *     Copyright (c) 1997 Patrick Dowler &lt;dowler@morgul.fsh.uvic.ca&gt;</span>
<a name="l00007"></a>00007 <span class="comment"> * Rewritten and maintained by:</span>
<a name="l00008"></a>00008 <span class="comment"> *     Copyright (c) 2000 Dirk A. Mueller &lt;mueller@kde.org&gt;</span>
<a name="l00009"></a>00009 <span class="comment"> * KDoubleSpinBox:</span>
<a name="l00010"></a>00010 <span class="comment"> *     Copyright (c) 2002 Marc Mutz &lt;mutz@kde.org&gt;</span>
<a name="l00011"></a>00011 <span class="comment"> *</span>
<a name="l00012"></a>00012 <span class="comment"> *  Requires the Qt widget libraries, available at no cost at</span>
<a name="l00013"></a>00013 <span class="comment"> *  http://www.troll.no/</span>
<a name="l00014"></a>00014 <span class="comment"> *</span>
<a name="l00015"></a>00015 <span class="comment"> *  This library is free software; you can redistribute it and/or</span>
<a name="l00016"></a>00016 <span class="comment"> *  modify it under the terms of the GNU Library General Public</span>
<a name="l00017"></a>00017 <span class="comment"> *  License as published by the Free Software Foundation; either</span>
<a name="l00018"></a>00018 <span class="comment"> *  version 2 of the License, or (at your option) any later version.</span>
<a name="l00019"></a>00019 <span class="comment"> *</span>
<a name="l00020"></a>00020 <span class="comment"> *  This library is distributed in the hope that it will be useful,</span>
<a name="l00021"></a>00021 <span class="comment"> *  but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00022"></a>00022 <span class="comment"> *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
<a name="l00023"></a>00023 <span class="comment"> *  Library General Public License for more details.</span>
<a name="l00024"></a>00024 <span class="comment"> *</span>
<a name="l00025"></a>00025 <span class="comment"> *  You should have received a copy of the GNU Library General Public License</span>
<a name="l00026"></a>00026 <span class="comment"> *  along with this library; see the file COPYING.LIB.  If not, write to</span>
<a name="l00027"></a>00027 <span class="comment"> *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,</span>
<a name="l00028"></a>00028 <span class="comment"> *  Boston, MA 02110-1301, USA.</span>
<a name="l00029"></a>00029 <span class="comment"> */</span>
<a name="l00030"></a>00030 
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;config.h&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#ifdef HAVE_LIMITS_H</span>
<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#include &lt;limits.h&gt;</span>
<a name="l00034"></a>00034 <span class="preprocessor">#endif</span>
<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include &lt;assert.h&gt;</span>
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;math.h&gt;</span>
<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;algorithm&gt;</span>
<a name="l00038"></a>00038 
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;qapplication.h&gt;</span>
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;qlabel.h&gt;</span>
<a name="l00041"></a>00041 <span class="preprocessor">#include &lt;qlineedit.h&gt;</span>
<a name="l00042"></a>00042 <span class="preprocessor">#include &lt;qsize.h&gt;</span>
<a name="l00043"></a>00043 <span class="preprocessor">#include &lt;qslider.h&gt;</span>
<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;qspinbox.h&gt;</span>
<a name="l00045"></a>00045 <span class="preprocessor">#include &lt;qstyle.h&gt;</span>
<a name="l00046"></a>00046 
<a name="l00047"></a>00047 <span class="preprocessor">#include &lt;kglobal.h&gt;</span>
<a name="l00048"></a>00048 <span class="preprocessor">#include &lt;<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/klocale_8h.html">klocale.h</a>&gt;</span>
<a name="l00049"></a>00049 <span class="preprocessor">#include &lt;kdebug.h&gt;</span>
<a name="l00050"></a>00050 
<a name="l00051"></a>00051 <span class="preprocessor">#include &quot;kdialog.h&quot;</span>
<a name="l00052"></a>00052 <span class="preprocessor">#include &quot;knumvalidator.h&quot;</span>
<a name="l00053"></a>00053 <span class="preprocessor">#include &quot;knuminput.h&quot;</span>
<a name="l00054"></a>00054 
<a name="l00055"></a>00055 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> calcDiffByTen( <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y ) {
<a name="l00056"></a>00056     <span class="comment">// calculate ( x - y ) / 10 without overflowing ints:</span>
<a name="l00057"></a>00057     <span class="keywordflow">return</span> ( x / 10 ) - ( y / 10 )  +  ( x % 10 - y % 10 ) / 10;
<a name="l00058"></a>00058 }
<a name="l00059"></a>00059 
<a name="l00060"></a>00060 <span class="comment">// ----------------------------------------------------------------------------</span>
<a name="l00061"></a>00061 
<a name="l00062"></a><a class="code" href="classKNumInput.html#a4cb485b71ad029275f35fca34a87e7ec">00062</a> <a class="code" href="classKNumInput.html#a4cb485b71ad029275f35fca34a87e7ec" title="Default constructor.">KNumInput::KNumInput</a>(<a class="codeRef" href="qwidget.html">QWidget</a>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)
<a name="l00063"></a>00063     : <a class="codeRef" href="qwidget.html">QWidget</a>(parent, name)
<a name="l00064"></a>00064 {
<a name="l00065"></a>00065     init();
<a name="l00066"></a>00066 }
<a name="l00067"></a>00067 
<a name="l00068"></a><a class="code" href="classKNumInput.html#a449c0a14a916eaf0eb33ac8697be308f">00068</a> <a class="code" href="classKNumInput.html#a4cb485b71ad029275f35fca34a87e7ec" title="Default constructor.">KNumInput::KNumInput</a>(<a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a>* below, <a class="codeRef" href="qwidget.html">QWidget</a>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)
<a name="l00069"></a>00069     : <a class="codeRef" href="qwidget.html">QWidget</a>(parent, name)
<a name="l00070"></a>00070 {
<a name="l00071"></a>00071     init();
<a name="l00072"></a>00072 
<a name="l00073"></a>00073     <span class="keywordflow">if</span>(below) {
<a name="l00074"></a>00074         m_next = below-&gt;m_next;
<a name="l00075"></a>00075         m_prev = below;
<a name="l00076"></a>00076         below-&gt;m_next = <span class="keyword">this</span>;
<a name="l00077"></a>00077         <span class="keywordflow">if</span>(m_next)
<a name="l00078"></a>00078             m_next-&gt;m_prev = <span class="keyword">this</span>;
<a name="l00079"></a>00079     }
<a name="l00080"></a>00080 }
<a name="l00081"></a>00081 
<a name="l00082"></a>00082 <span class="keywordtype">void</span> KNumInput::init()
<a name="l00083"></a>00083 {
<a name="l00084"></a>00084     m_prev = m_next = 0;
<a name="l00085"></a>00085     m_colw1 = m_colw2 = 0;
<a name="l00086"></a>00086 
<a name="l00087"></a>00087     m_label = 0;
<a name="l00088"></a>00088     m_slider = 0;
<a name="l00089"></a>00089     m_alignment = 0;
<a name="l00090"></a>00090 }
<a name="l00091"></a>00091 
<a name="l00092"></a>00092 KNumInput::~KNumInput()
<a name="l00093"></a>00093 {
<a name="l00094"></a>00094     <span class="keywordflow">if</span>(m_prev)
<a name="l00095"></a>00095         m_prev-&gt;m_next = m_next;
<a name="l00096"></a>00096 
<a name="l00097"></a>00097     <span class="keywordflow">if</span>(m_next)
<a name="l00098"></a>00098         m_next-&gt;m_prev = m_prev;
<a name="l00099"></a>00099 }
<a name="l00100"></a>00100 
<a name="l00101"></a><a class="code" href="classKNumInput.html#a04bbf9befb219ab867286fc76edc534c">00101</a> <span class="keywordtype">void</span> <a class="code" href="classKNumInput.html#a04bbf9befb219ab867286fc76edc534c" title="Sets the text and alignment of the main description label.">KNumInput::setLabel</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp; label, <span class="keywordtype">int</span> a)
<a name="l00102"></a>00102 {
<a name="l00103"></a>00103     <span class="keywordflow">if</span>(label.<a class="codeRef" href="qstring.html#isEmpty">isEmpty</a>()) {
<a name="l00104"></a>00104         <span class="keyword">delete</span> m_label;
<a name="l00105"></a>00105         m_label = 0;
<a name="l00106"></a>00106         m_alignment = 0;
<a name="l00107"></a>00107     }
<a name="l00108"></a>00108     <span class="keywordflow">else</span> {
<a name="l00109"></a>00109         <span class="keywordflow">if</span> (m_label) m_label-&gt;<a class="codeRef" href="qlabel.html#setText">setText</a>(label);
<a name="l00110"></a>00110         <span class="keywordflow">else</span> m_label = <span class="keyword">new</span> <a class="codeRef" href="qlabel.html">QLabel</a>(label, <span class="keyword">this</span>, <span class="stringliteral">&quot;KNumInput::QLabel&quot;</span>);
<a name="l00111"></a>00111         m_label-&gt;<a class="codeRef" href="qlabel.html#setAlignment">setAlignment</a>((a &amp; (~(AlignTop|AlignBottom|AlignVCenter)))
<a name="l00112"></a>00112                               | AlignVCenter);
<a name="l00113"></a>00113         <span class="comment">// if no vertical alignment set, use Top alignment</span>
<a name="l00114"></a>00114         <span class="keywordflow">if</span>(!(a &amp; (AlignTop|AlignBottom|AlignVCenter)))
<a name="l00115"></a>00115            a |= AlignTop;
<a name="l00116"></a>00116         m_alignment = a;
<a name="l00117"></a>00117     }
<a name="l00118"></a>00118 
<a name="l00119"></a>00119     <a class="codeRef" href="qwidget.html#layout">layout</a>(<span class="keyword">true</span>);
<a name="l00120"></a>00120 }
<a name="l00121"></a>00121 
<a name="l00122"></a>00122 <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKNumInput.html#ad5af11e5339f125a1b867f71ed0ad244">KNumInput::label</a>()<span class="keyword"> const</span>
<a name="l00123"></a>00123 <span class="keyword"></span>{
<a name="l00124"></a>00124     <span class="keywordflow">if</span> (m_label) <span class="keywordflow">return</span> m_label-&gt;<a class="codeRef" href="qlabel.html#text">text</a>();
<a name="l00125"></a>00125     <span class="keywordflow">return</span> QString::null;
<a name="l00126"></a>00126 }
<a name="l00127"></a>00127 
<a name="l00128"></a><a class="code" href="classKNumInput.html#a1fb3d4a91435fb7f1626ca6a93934a12">00128</a> <span class="keywordtype">void</span> <a class="codeRef" href="qwidget.html#layout">KNumInput::layout</a>(<span class="keywordtype">bool</span> deep)
<a name="l00129"></a>00129 {
<a name="l00130"></a>00130     <span class="keywordtype">int</span> w1 = m_colw1;
<a name="l00131"></a>00131     <span class="keywordtype">int</span> w2 = m_colw2;
<a name="l00132"></a>00132 
<a name="l00133"></a>00133     <span class="comment">// label sizeHint</span>
<a name="l00134"></a>00134     m_sizeLabel = (m_label ? m_label-&gt;sizeHint() : <a class="codeRef" href="qsize.html">QSize</a>(0,0));
<a name="l00135"></a>00135 
<a name="l00136"></a>00136     <span class="keywordflow">if</span>(m_label &amp;&amp; (m_alignment &amp; AlignVCenter))
<a name="l00137"></a>00137         m_colw1 = m_sizeLabel.<a class="codeRef" href="qsize.html#width">width</a>() + 4;
<a name="l00138"></a>00138     <span class="keywordflow">else</span>
<a name="l00139"></a>00139         m_colw1 = 0;
<a name="l00140"></a>00140 
<a name="l00141"></a>00141     <span class="comment">// slider sizeHint</span>
<a name="l00142"></a>00142     m_sizeSlider = (m_slider ? m_slider-&gt;sizeHint() : <a class="codeRef" href="qsize.html">QSize</a>(0, 0));
<a name="l00143"></a>00143 
<a name="l00144"></a>00144     <a class="code" href="classKNumInput.html#a5e697b34759f4cc3cd3d33d6dc2b4eac" title="You need to overwrite this method and implement your layout calculations there.">doLayout</a>();
<a name="l00145"></a>00145 
<a name="l00146"></a>00146     <span class="keywordflow">if</span>(!deep) {
<a name="l00147"></a>00147         m_colw1 = w1;
<a name="l00148"></a>00148         m_colw2 = w2;
<a name="l00149"></a>00149         <span class="keywordflow">return</span>;
<a name="l00150"></a>00150     }
<a name="l00151"></a>00151 
<a name="l00152"></a>00152     <a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a>* p = <span class="keyword">this</span>;
<a name="l00153"></a>00153     <span class="keywordflow">while</span>(p) {
<a name="l00154"></a>00154         p-&gt;<a class="code" href="classKNumInput.html#a5e697b34759f4cc3cd3d33d6dc2b4eac" title="You need to overwrite this method and implement your layout calculations there.">doLayout</a>();
<a name="l00155"></a>00155         w1 = QMAX(w1, p-&gt;m_colw1);
<a name="l00156"></a>00156         w2 = QMAX(w2, p-&gt;m_colw2);
<a name="l00157"></a>00157         p = p-&gt;m_prev;
<a name="l00158"></a>00158     }
<a name="l00159"></a>00159 
<a name="l00160"></a>00160     p = m_next;
<a name="l00161"></a>00161     <span class="keywordflow">while</span>(p) {
<a name="l00162"></a>00162         p-&gt;<a class="code" href="classKNumInput.html#a5e697b34759f4cc3cd3d33d6dc2b4eac" title="You need to overwrite this method and implement your layout calculations there.">doLayout</a>();
<a name="l00163"></a>00163         w1 = QMAX(w1, p-&gt;m_colw1);
<a name="l00164"></a>00164         w2 = QMAX(w2, p-&gt;m_colw2);
<a name="l00165"></a>00165         p = p-&gt;m_next;
<a name="l00166"></a>00166     }
<a name="l00167"></a>00167 
<a name="l00168"></a>00168     p = <span class="keyword">this</span>;
<a name="l00169"></a>00169     <span class="keywordflow">while</span>(p) {
<a name="l00170"></a>00170         p-&gt;m_colw1 = w1;
<a name="l00171"></a>00171         p-&gt;m_colw2 = w2;
<a name="l00172"></a>00172         p = p-&gt;m_prev;
<a name="l00173"></a>00173     }
<a name="l00174"></a>00174 
<a name="l00175"></a>00175     p = m_next;
<a name="l00176"></a>00176     <span class="keywordflow">while</span>(p) {
<a name="l00177"></a>00177         p-&gt;m_colw1 = w1;
<a name="l00178"></a>00178         p-&gt;m_colw2 = w2;
<a name="l00179"></a>00179         p = p-&gt;m_next;
<a name="l00180"></a>00180     }
<a name="l00181"></a>00181 
<a name="l00182"></a>00182 <span class="comment">//    kdDebug() &lt;&lt; &quot;w1 &quot; &lt;&lt; w1 &lt;&lt; &quot; w2 &quot; &lt;&lt; w2 &lt;&lt; endl;</span>
<a name="l00183"></a>00183 }
<a name="l00184"></a>00184 
<a name="l00185"></a><a class="code" href="classKNumInput.html#af52728e4c13a8457eb844501fe402c0b">00185</a> <a class="codeRef" href="qsizepolicy.html">QSizePolicy</a> <a class="code" href="classKNumInput.html#af52728e4c13a8457eb844501fe402c0b" title="Specifies that this widget may stretch horizontally, but is fixed vertically (like QSpinBox itself)...">KNumInput::sizePolicy</a>()<span class="keyword"> const</span>
<a name="l00186"></a>00186 <span class="keyword"></span>{
<a name="l00187"></a>00187     <span class="keywordflow">return</span> <a class="codeRef" href="qsizepolicy.html">QSizePolicy</a>( QSizePolicy::Minimum, QSizePolicy::Fixed );
<a name="l00188"></a>00188 }
<a name="l00189"></a>00189 
<a name="l00190"></a><a class="code" href="classKNumInput.html#a4e27ab1e4cbb645b506245b245c0a337">00190</a> <a class="codeRef" href="qsize.html">QSize</a> <a class="code" href="classKNumInput.html#a4e27ab1e4cbb645b506245b245c0a337" title="Returns a size which fits the contents of the control.">KNumInput::sizeHint</a>()<span class="keyword"> const</span>
<a name="l00191"></a>00191 <span class="keyword"></span>{
<a name="l00192"></a>00192     <span class="keywordflow">return</span> <a class="codeRef" href="qwidget.html#minimumSizeHint">minimumSizeHint</a>();
<a name="l00193"></a>00193 }
<a name="l00194"></a>00194 
<a name="l00195"></a><a class="code" href="classKNumInput.html#ab1e612af1528520753a1cbad77815224">00195</a> <span class="keywordtype">void</span> <a class="code" href="classKNumInput.html#ab1e612af1528520753a1cbad77815224" title="Sets the spacing of tickmarks for the slider.">KNumInput::setSteps</a>(<span class="keywordtype">int</span> minor, <span class="keywordtype">int</span> major)
<a name="l00196"></a>00196 {
<a name="l00197"></a>00197     <span class="keywordflow">if</span>(m_slider)
<a name="l00198"></a>00198         m_slider-&gt;setSteps( minor, major );
<a name="l00199"></a>00199 }
<a name="l00200"></a>00200 
<a name="l00201"></a>00201 
<a name="l00202"></a>00202 <span class="comment">// ----------------------------------------------------------------------------</span>
<a name="l00203"></a>00203 
<a name="l00204"></a><a class="code" href="classKIntSpinBox.html#aa56906a9636993f1da61ca1516e2aaa6">00204</a> <a class="code" href="classKIntSpinBox.html#aa56906a9636993f1da61ca1516e2aaa6" title="Constructor.">KIntSpinBox::KIntSpinBox</a>(<a class="codeRef" href="qwidget.html">QWidget</a> *parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
<a name="l00205"></a>00205     : <a class="codeRef" href="qspinbox.html">QSpinBox</a>(0, 99, 1, parent, name)
<a name="l00206"></a>00206 {
<a name="l00207"></a>00207     <a class="codeRef" href="qspinbox.html#editor">editor</a>()-&gt;setAlignment(AlignRight);
<a name="l00208"></a>00208     val_base = 10;
<a name="l00209"></a>00209     <a class="codeRef" href="qspinbox.html#setValue">setValue</a>(0);
<a name="l00210"></a>00210 }
<a name="l00211"></a>00211 
<a name="l00212"></a><a class="code" href="classKIntSpinBox.html#a0ef67aab0f6328f384320d02b2c3d866">00212</a> <a class="code" href="classKIntSpinBox.html#a0ef67aab0f6328f384320d02b2c3d866" title="Destructor.">KIntSpinBox::~KIntSpinBox</a>()
<a name="l00213"></a>00213 {
<a name="l00214"></a>00214 }
<a name="l00215"></a>00215 
<a name="l00216"></a><a class="code" href="classKIntSpinBox.html#afc855286f8779e2e5480149d4a92b294">00216</a> <a class="code" href="classKIntSpinBox.html#aa56906a9636993f1da61ca1516e2aaa6" title="Constructor.">KIntSpinBox::KIntSpinBox</a>(<span class="keywordtype">int</span> lower, <span class="keywordtype">int</span> upper, <span class="keywordtype">int</span> step, <span class="keywordtype">int</span> value, <span class="keywordtype">int</span> base,
<a name="l00217"></a>00217                          <a class="codeRef" href="qwidget.html">QWidget</a>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)
<a name="l00218"></a>00218     : <a class="codeRef" href="qspinbox.html">QSpinBox</a>(lower, upper, step, parent, name)
<a name="l00219"></a>00219 {
<a name="l00220"></a>00220     <a class="codeRef" href="qspinbox.html#editor">editor</a>()-&gt;setAlignment(AlignRight);
<a name="l00221"></a>00221     val_base = <a class="code" href="classKIntSpinBox.html#a823b373159bedea0cdb95873daec2f3c">base</a>;
<a name="l00222"></a>00222     <a class="codeRef" href="qspinbox.html#setValue">setValue</a>(value);
<a name="l00223"></a>00223 }
<a name="l00224"></a>00224 
<a name="l00225"></a><a class="code" href="classKIntSpinBox.html#a63b791377bce1d4d7e375d9963d63cf0">00225</a> <span class="keywordtype">void</span> <a class="code" href="classKIntSpinBox.html#a63b791377bce1d4d7e375d9963d63cf0" title="Sets the base in which the numbers in the spin box are represented.">KIntSpinBox::setBase</a>(<span class="keywordtype">int</span> base)
<a name="l00226"></a>00226 {
<a name="l00227"></a>00227     val_base = <a class="code" href="classKIntSpinBox.html#a823b373159bedea0cdb95873daec2f3c">base</a>;
<a name="l00228"></a>00228 }
<a name="l00229"></a>00229 
<a name="l00230"></a>00230 
<a name="l00231"></a>00231 <span class="keywordtype">int</span> <a class="code" href="classKIntSpinBox.html#a823b373159bedea0cdb95873daec2f3c">KIntSpinBox::base</a>()<span class="keyword"> const</span>
<a name="l00232"></a>00232 <span class="keyword"></span>{
<a name="l00233"></a>00233     <span class="keywordflow">return</span> val_base;
<a name="l00234"></a>00234 }
<a name="l00235"></a>00235 
<a name="l00236"></a><a class="code" href="classKIntSpinBox.html#a4c6603edf5be36bf242b0976b3c3d84c">00236</a> <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKIntSpinBox.html#a4c6603edf5be36bf242b0976b3c3d84c" title="Overloaded the method in QSpinBox to make use of the base given in the constructor.">KIntSpinBox::mapValueToText</a>(<span class="keywordtype">int</span> v)
<a name="l00237"></a>00237 {
<a name="l00238"></a>00238     <span class="keywordflow">return</span> <a class="codeRef" href="qstring.html#number">QString::number</a>(v, val_base);
<a name="l00239"></a>00239 }
<a name="l00240"></a>00240 
<a name="l00241"></a><a class="code" href="classKIntSpinBox.html#ab5098ae92829ec66b7e4deb0d0e8a9c7">00241</a> <span class="keywordtype">int</span> <a class="code" href="classKIntSpinBox.html#ab5098ae92829ec66b7e4deb0d0e8a9c7" title="Overloaded the method in QSpinBox to make use of the base given in the constructor.">KIntSpinBox::mapTextToValue</a>(<span class="keywordtype">bool</span>* ok)
<a name="l00242"></a>00242 {
<a name="l00243"></a>00243     <span class="keywordflow">return</span> <a class="codeRef" href="qspinbox.html#cleanText">cleanText</a>().toInt(ok, val_base);
<a name="l00244"></a>00244 }
<a name="l00245"></a>00245 
<a name="l00246"></a><a class="code" href="classKIntSpinBox.html#a986b208de990b17b38065886a6c443d0">00246</a> <span class="keywordtype">void</span> <a class="code" href="classKIntSpinBox.html#a986b208de990b17b38065886a6c443d0" title="sets focus and optionally marks all text">KIntSpinBox::setEditFocus</a>(<span class="keywordtype">bool</span> mark)
<a name="l00247"></a>00247 {
<a name="l00248"></a>00248     <a class="codeRef" href="qspinbox.html#editor">editor</a>()-&gt;setFocus();
<a name="l00249"></a>00249     <span class="keywordflow">if</span>(mark)
<a name="l00250"></a>00250         <a class="codeRef" href="qspinbox.html#editor">editor</a>()-&gt;selectAll();
<a name="l00251"></a>00251 }
<a name="l00252"></a>00252 
<a name="l00253"></a>00253 
<a name="l00254"></a>00254 <span class="comment">// ----------------------------------------------------------------------------</span>
<a name="l00255"></a>00255 
<a name="l00256"></a>00256 <span class="keyword">class </span>KIntNumInput::KIntNumInputPrivate {
<a name="l00257"></a>00257 <span class="keyword">public</span>:
<a name="l00258"></a>00258     <span class="keywordtype">int</span> <a class="code" href="classKIntNumInput.html#a2062a165c5308432dad286f11f4b9b21">referencePoint</a>;
<a name="l00259"></a>00259     <span class="keywordtype">short</span> blockRelative;
<a name="l00260"></a>00260     KIntNumInputPrivate( <span class="keywordtype">int</span> r )
<a name="l00261"></a>00261     : <a class="code" href="classKIntNumInput.html#a2062a165c5308432dad286f11f4b9b21">referencePoint</a>( r ),
<a name="l00262"></a>00262       blockRelative( 0 ) {}
<a name="l00263"></a>00263 };
<a name="l00264"></a>00264 
<a name="l00265"></a>00265 
<a name="l00266"></a><a class="code" href="classKIntNumInput.html#af80282615e175ec99b9eea9d19f2ef3d">00266</a> <a class="code" href="classKIntNumInput.html#a1927d5b59e13f3f699e27e8083b37394" title="Constructs an input control for integer values with base 10 and initial value 0.">KIntNumInput::KIntNumInput</a>(<a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a>* below, <span class="keywordtype">int</span> val, <a class="codeRef" href="qwidget.html">QWidget</a>* parent,
<a name="l00267"></a>00267                            <span class="keywordtype">int</span> _base, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)
<a name="l00268"></a>00268     : <a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a>(below, parent, name)
<a name="l00269"></a>00269 {
<a name="l00270"></a>00270     init(val, _base);
<a name="l00271"></a>00271 }
<a name="l00272"></a>00272 
<a name="l00273"></a><a class="code" href="classKIntNumInput.html#a1927d5b59e13f3f699e27e8083b37394">00273</a> <a class="code" href="classKIntNumInput.html#a1927d5b59e13f3f699e27e8083b37394" title="Constructs an input control for integer values with base 10 and initial value 0.">KIntNumInput::KIntNumInput</a>(<a class="codeRef" href="qwidget.html">QWidget</a> *parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
<a name="l00274"></a>00274     : <a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a>(parent, name)
<a name="l00275"></a>00275 {
<a name="l00276"></a>00276     init(0, 10);
<a name="l00277"></a>00277 }
<a name="l00278"></a>00278 
<a name="l00279"></a><a class="code" href="classKIntNumInput.html#a17731a9479c1c528648098be1f6760af">00279</a> <a class="code" href="classKIntNumInput.html#a1927d5b59e13f3f699e27e8083b37394" title="Constructs an input control for integer values with base 10 and initial value 0.">KIntNumInput::KIntNumInput</a>(<span class="keywordtype">int</span> val, <a class="codeRef" href="qwidget.html">QWidget</a> *parent, <span class="keywordtype">int</span> _base, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
<a name="l00280"></a>00280     : <a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a>(parent, name)
<a name="l00281"></a>00281 {
<a name="l00282"></a>00282     init(val, _base);
<a name="l00283"></a>00283 
<a name="l00284"></a>00284 }
<a name="l00285"></a>00285 
<a name="l00286"></a>00286 <span class="keywordtype">void</span> KIntNumInput::init(<span class="keywordtype">int</span> val, <span class="keywordtype">int</span> _base)
<a name="l00287"></a>00287 {
<a name="l00288"></a>00288     d = <span class="keyword">new</span> KIntNumInputPrivate( val );
<a name="l00289"></a>00289     m_spin = <span class="keyword">new</span> <a class="code" href="classKIntSpinBox.html" title="A QSpinBox with support for arbitrary base numbers.">KIntSpinBox</a>(INT_MIN, INT_MAX, 1, val, _base, <span class="keyword">this</span>, <span class="stringliteral">&quot;KIntNumInput::KIntSpinBox&quot;</span>);
<a name="l00290"></a>00290     <span class="comment">// the KIntValidator is broken beyond believe for</span>
<a name="l00291"></a>00291     <span class="comment">// spinboxes which have suffix or prefix texts, so</span>
<a name="l00292"></a>00292     <span class="comment">// better don&#39;t use it unless absolutely necessary</span>
<a name="l00293"></a>00293     <span class="keywordflow">if</span> (_base != 10)
<a name="l00294"></a>00294         m_spin-&gt;<a class="codeRef" href="qspinbox.html#setValidator">setValidator</a>(<span class="keyword">new</span> <a class="code" href="classKIntValidator.html" title="QValidator for integers.">KIntValidator</a>(<span class="keyword">this</span>, _base, <span class="stringliteral">&quot;KNumInput::KIntValidtr&quot;</span>));
<a name="l00295"></a>00295 
<a name="l00296"></a>00296     connect(m_spin, SIGNAL(<a class="code" href="classKIntNumInput.html#ae0a69fb9eae735248a4cc66c4720b184" title="Emitted every time the value changes (by calling setValue() or by user interaction).">valueChanged</a>(<span class="keywordtype">int</span>)), SLOT(spinValueChanged(<span class="keywordtype">int</span>)));
<a name="l00297"></a>00297     connect(<span class="keyword">this</span>, SIGNAL(<a class="code" href="classKIntNumInput.html#ae0a69fb9eae735248a4cc66c4720b184" title="Emitted every time the value changes (by calling setValue() or by user interaction).">valueChanged</a>(<span class="keywordtype">int</span>)),
<a name="l00298"></a>00298         SLOT(slotEmitRelativeValueChanged(<span class="keywordtype">int</span>)));
<a name="l00299"></a>00299 
<a name="l00300"></a>00300     <a class="codeRef" href="qwidget.html#setFocusProxy">setFocusProxy</a>(m_spin);
<a name="l00301"></a>00301     <a class="codeRef" href="qwidget.html#layout">layout</a>(<span class="keyword">true</span>);
<a name="l00302"></a>00302 }
<a name="l00303"></a>00303 
<a name="l00304"></a><a class="code" href="classKIntNumInput.html#add4d856af81d371c663282098241c88b">00304</a> <span class="keywordtype">void</span> <a class="code" href="classKIntNumInput.html#add4d856af81d371c663282098241c88b" title="Sets the reference point for relativeValue.">KIntNumInput::setReferencePoint</a>( <span class="keywordtype">int</span> ref ) {
<a name="l00305"></a>00305     <span class="comment">// clip to valid range:</span>
<a name="l00306"></a>00306     ref = kMin( <a class="code" href="classKIntNumInput.html#a566f0608cd8f47e1b64f166e7ad31bcd">maxValue</a>(), kMax( <a class="code" href="classKIntNumInput.html#a5350b8f0b5556a96e8935af0f07f0cbc">minValue</a>(),  ref ) );
<a name="l00307"></a>00307     d-&gt;referencePoint = ref;
<a name="l00308"></a>00308 }
<a name="l00309"></a>00309 
<a name="l00310"></a>00310 <span class="keywordtype">int</span> <a class="code" href="classKIntNumInput.html#a2062a165c5308432dad286f11f4b9b21">KIntNumInput::referencePoint</a>()<span class="keyword"> const </span>{
<a name="l00311"></a>00311     <span class="keywordflow">return</span> d-&gt;referencePoint;
<a name="l00312"></a>00312 }
<a name="l00313"></a>00313 
<a name="l00314"></a>00314 <span class="keywordtype">void</span> KIntNumInput::spinValueChanged(<span class="keywordtype">int</span> val)
<a name="l00315"></a>00315 {
<a name="l00316"></a>00316     <span class="keywordflow">if</span>(m_slider)
<a name="l00317"></a>00317         m_slider-&gt;<a class="codeRef" href="qslider.html#setValue">setValue</a>(val);
<a name="l00318"></a>00318 
<a name="l00319"></a>00319     emit <a class="code" href="classKIntNumInput.html#ae0a69fb9eae735248a4cc66c4720b184" title="Emitted every time the value changes (by calling setValue() or by user interaction).">valueChanged</a>(val);
<a name="l00320"></a>00320 }
<a name="l00321"></a>00321 
<a name="l00322"></a>00322 <span class="keywordtype">void</span> KIntNumInput::slotEmitRelativeValueChanged( <span class="keywordtype">int</span> value ) {
<a name="l00323"></a>00323     <span class="keywordflow">if</span> ( d-&gt;blockRelative || !d-&gt;referencePoint ) <span class="keywordflow">return</span>;
<a name="l00324"></a>00324     emit <a class="code" href="classKIntNumInput.html#aa2dcdfc7fc6bf8dec064fe2850940504" title="Emitted whenever valueChanged is.">relativeValueChanged</a>( <span class="keywordtype">double</span>( value ) / <span class="keywordtype">double</span>( d-&gt;referencePoint ) );
<a name="l00325"></a>00325 }
<a name="l00326"></a>00326 
<a name="l00327"></a><a class="code" href="classKIntNumInput.html#a945502ab13a79383ced49084349a7b4c">00327</a> <span class="keywordtype">void</span> <a class="code" href="classKIntNumInput.html#a945502ab13a79383ced49084349a7b4c">KIntNumInput::setRange</a>(<span class="keywordtype">int</span> lower, <span class="keywordtype">int</span> upper, <span class="keywordtype">int</span> step, <span class="keywordtype">bool</span> slider)
<a name="l00328"></a>00328 {
<a name="l00329"></a>00329     upper = kMax(upper, lower);
<a name="l00330"></a>00330     lower = kMin(upper, lower);
<a name="l00331"></a>00331     m_spin-&gt;<a class="codeRef" href="qspinbox.html#setMinValue">setMinValue</a>(lower);
<a name="l00332"></a>00332     m_spin-&gt;<a class="codeRef" href="qspinbox.html#setMaxValue">setMaxValue</a>(upper);
<a name="l00333"></a>00333     m_spin-&gt;<a class="codeRef" href="qspinbox.html#setLineStep">setLineStep</a>(step);
<a name="l00334"></a>00334 
<a name="l00335"></a>00335     step = m_spin-&gt;<a class="codeRef" href="qspinbox.html#lineStep">lineStep</a>(); <span class="comment">// maybe QRangeControl didn&#39;t like out lineStep?</span>
<a name="l00336"></a>00336 
<a name="l00337"></a>00337     <span class="keywordflow">if</span>(slider) {
<a name="l00338"></a>00338     <span class="keywordflow">if</span> (m_slider)
<a name="l00339"></a>00339         m_slider-&gt;<a class="codeRef" href="qslider.html#setRange">setRange</a>(lower, upper);
<a name="l00340"></a>00340     <span class="keywordflow">else</span> {
<a name="l00341"></a>00341         m_slider = <span class="keyword">new</span> <a class="codeRef" href="qslider.html">QSlider</a>(lower, upper, step, m_spin-&gt;<a class="codeRef" href="qspinbox.html#value">value</a>(),
<a name="l00342"></a>00342                    QSlider::Horizontal, <span class="keyword">this</span>);
<a name="l00343"></a>00343         m_slider-&gt;<a class="codeRef" href="qslider.html#setTickmarks">setTickmarks</a>(QSlider::Below);
<a name="l00344"></a>00344         connect(m_slider, SIGNAL(<a class="code" href="classKIntNumInput.html#ae0a69fb9eae735248a4cc66c4720b184" title="Emitted every time the value changes (by calling setValue() or by user interaction).">valueChanged</a>(<span class="keywordtype">int</span>)),
<a name="l00345"></a>00345             m_spin, SLOT(<a class="code" href="classKIntNumInput.html#a927b59ceeae49d9553f38d236d3b3412" title="Sets the value of the control.">setValue</a>(<span class="keywordtype">int</span>)));
<a name="l00346"></a>00346     }
<a name="l00347"></a>00347 
<a name="l00348"></a>00348     <span class="comment">// calculate (upper-lower)/10 without overflowing int&#39;s:</span>
<a name="l00349"></a>00349         <span class="keywordtype">int</span> major = calcDiffByTen( upper, lower );
<a name="l00350"></a>00350     <span class="keywordflow">if</span> ( major==0 ) major = step; <span class="comment">// #### workaround Qt bug in 2.1-beta4</span>
<a name="l00351"></a>00351 
<a name="l00352"></a>00352         m_slider-&gt;setSteps(step, major);
<a name="l00353"></a>00353         m_slider-&gt;<a class="codeRef" href="qslider.html#setTickInterval">setTickInterval</a>(major);
<a name="l00354"></a>00354     }
<a name="l00355"></a>00355     <span class="keywordflow">else</span> {
<a name="l00356"></a>00356         <span class="keyword">delete</span> m_slider;
<a name="l00357"></a>00357         m_slider = 0;
<a name="l00358"></a>00358     }
<a name="l00359"></a>00359 
<a name="l00360"></a>00360     <span class="comment">// check that reference point is still inside valid range:</span>
<a name="l00361"></a>00361     <a class="code" href="classKIntNumInput.html#add4d856af81d371c663282098241c88b" title="Sets the reference point for relativeValue.">setReferencePoint</a>( <a class="code" href="classKIntNumInput.html#a2062a165c5308432dad286f11f4b9b21">referencePoint</a>() );
<a name="l00362"></a>00362 
<a name="l00363"></a>00363     <a class="codeRef" href="qwidget.html#layout">layout</a>(<span class="keyword">true</span>);
<a name="l00364"></a>00364 }
<a name="l00365"></a>00365 
<a name="l00366"></a><a class="code" href="classKIntNumInput.html#a8166027351aa9ac89ee9cd195dbc587a">00366</a> <span class="keywordtype">void</span> <a class="code" href="classKIntNumInput.html#a8166027351aa9ac89ee9cd195dbc587a" title="Sets the minimum value.">KIntNumInput::setMinValue</a>(<span class="keywordtype">int</span> min)
<a name="l00367"></a>00367 {
<a name="l00368"></a>00368     <a class="code" href="classKIntNumInput.html#a945502ab13a79383ced49084349a7b4c">setRange</a>(min, m_spin-&gt;<a class="codeRef" href="qspinbox.html#maxValue">maxValue</a>(), m_spin-&gt;<a class="codeRef" href="qspinbox.html#lineStep">lineStep</a>(), m_slider);
<a name="l00369"></a>00369 }
<a name="l00370"></a>00370 
<a name="l00371"></a>00371 <span class="keywordtype">int</span> <a class="code" href="classKIntNumInput.html#a5350b8f0b5556a96e8935af0f07f0cbc">KIntNumInput::minValue</a>()<span class="keyword"> const</span>
<a name="l00372"></a>00372 <span class="keyword"></span>{
<a name="l00373"></a>00373     <span class="keywordflow">return</span> m_spin-&gt;<a class="codeRef" href="qspinbox.html#minValue">minValue</a>();
<a name="l00374"></a>00374 }
<a name="l00375"></a>00375 
<a name="l00376"></a><a class="code" href="classKIntNumInput.html#a52fd47612ef235641d17ca777648cd7e">00376</a> <span class="keywordtype">void</span> <a class="code" href="classKIntNumInput.html#a52fd47612ef235641d17ca777648cd7e" title="Sets the maximum value.">KIntNumInput::setMaxValue</a>(<span class="keywordtype">int</span> max)
<a name="l00377"></a>00377 {
<a name="l00378"></a>00378     <a class="code" href="classKIntNumInput.html#a945502ab13a79383ced49084349a7b4c">setRange</a>(m_spin-&gt;<a class="codeRef" href="qspinbox.html#minValue">minValue</a>(), max, m_spin-&gt;<a class="codeRef" href="qspinbox.html#lineStep">lineStep</a>(), m_slider);
<a name="l00379"></a>00379 }
<a name="l00380"></a>00380 
<a name="l00381"></a>00381 <span class="keywordtype">int</span> <a class="code" href="classKIntNumInput.html#a566f0608cd8f47e1b64f166e7ad31bcd">KIntNumInput::maxValue</a>()<span class="keyword"> const</span>
<a name="l00382"></a>00382 <span class="keyword"></span>{
<a name="l00383"></a>00383     <span class="keywordflow">return</span> m_spin-&gt;<a class="codeRef" href="qspinbox.html#maxValue">maxValue</a>();
<a name="l00384"></a>00384 }
<a name="l00385"></a>00385 
<a name="l00386"></a><a class="code" href="classKIntNumInput.html#a3d6050eb0eec81fba325c99b8ff071f2">00386</a> <span class="keywordtype">void</span> <a class="code" href="classKIntNumInput.html#a3d6050eb0eec81fba325c99b8ff071f2" title="Sets the suffix to suffix.">KIntNumInput::setSuffix</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp;suffix)
<a name="l00387"></a>00387 {
<a name="l00388"></a>00388     m_spin-&gt;<a class="codeRef" href="qspinbox.html#setSuffix">setSuffix</a>(suffix);
<a name="l00389"></a>00389 
<a name="l00390"></a>00390     <a class="codeRef" href="qwidget.html#layout">layout</a>(<span class="keyword">true</span>);
<a name="l00391"></a>00391 }
<a name="l00392"></a>00392 
<a name="l00393"></a>00393 <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKIntNumInput.html#acc9a94dd93fd6b0ec887aedf9bc50d7d">KIntNumInput::suffix</a>()<span class="keyword"> const</span>
<a name="l00394"></a>00394 <span class="keyword"></span>{
<a name="l00395"></a>00395     <span class="keywordflow">return</span> m_spin-&gt;<a class="codeRef" href="qspinbox.html#suffix">suffix</a>();
<a name="l00396"></a>00396 }
<a name="l00397"></a>00397 
<a name="l00398"></a><a class="code" href="classKIntNumInput.html#af42c0016f6e06e1d84914140a8d1575b">00398</a> <span class="keywordtype">void</span> <a class="code" href="classKIntNumInput.html#af42c0016f6e06e1d84914140a8d1575b" title="Sets the prefix to prefix.">KIntNumInput::setPrefix</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp;prefix)
<a name="l00399"></a>00399 {
<a name="l00400"></a>00400     m_spin-&gt;<a class="codeRef" href="qspinbox.html#setPrefix">setPrefix</a>(prefix);
<a name="l00401"></a>00401 
<a name="l00402"></a>00402     <a class="codeRef" href="qwidget.html#layout">layout</a>(<span class="keyword">true</span>);
<a name="l00403"></a>00403 }
<a name="l00404"></a>00404 
<a name="l00405"></a>00405 <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKIntNumInput.html#a7b2aa26446a1f0fb3c1c12293405cfe6">KIntNumInput::prefix</a>()<span class="keyword"> const</span>
<a name="l00406"></a>00406 <span class="keyword"></span>{
<a name="l00407"></a>00407     <span class="keywordflow">return</span> m_spin-&gt;<a class="codeRef" href="qspinbox.html#prefix">prefix</a>();
<a name="l00408"></a>00408 }
<a name="l00409"></a>00409 
<a name="l00410"></a><a class="code" href="classKIntNumInput.html#a05137ced419caec4b32c9487319e746c">00410</a> <span class="keywordtype">void</span> <a class="code" href="classKIntNumInput.html#a05137ced419caec4b32c9487319e746c" title="sets focus to the edit widget and marks all text in if mark == true">KIntNumInput::setEditFocus</a>(<span class="keywordtype">bool</span> mark)
<a name="l00411"></a>00411 {
<a name="l00412"></a>00412     m_spin-&gt;<a class="code" href="classKIntSpinBox.html#a986b208de990b17b38065886a6c443d0" title="sets focus and optionally marks all text">setEditFocus</a>(mark);
<a name="l00413"></a>00413 }
<a name="l00414"></a>00414 
<a name="l00415"></a><a class="code" href="classKIntNumInput.html#a4ab1d107c0ab3c5be017b990da6ad3e0">00415</a> <a class="codeRef" href="qsize.html">QSize</a> <a class="code" href="classKIntNumInput.html#a4ab1d107c0ab3c5be017b990da6ad3e0" title="This method returns the minimum size necessary to display the control.">KIntNumInput::minimumSizeHint</a>()<span class="keyword"> const</span>
<a name="l00416"></a>00416 <span class="keyword"></span>{
<a name="l00417"></a>00417     <a class="codeRef" href="qwidget.html#constPolish">constPolish</a>();
<a name="l00418"></a>00418 
<a name="l00419"></a>00419     <span class="keywordtype">int</span> w;
<a name="l00420"></a>00420     <span class="keywordtype">int</span> h;
<a name="l00421"></a>00421 
<a name="l00422"></a>00422     h = 2 + QMAX(m_sizeSpin.<a class="codeRef" href="qsize.html#height">height</a>(), m_sizeSlider.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00423"></a>00423 
<a name="l00424"></a>00424     <span class="comment">// if in extra row, then count it here</span>
<a name="l00425"></a>00425     <span class="keywordflow">if</span>(m_label &amp;&amp; (m_alignment &amp; (AlignBottom|AlignTop)))
<a name="l00426"></a>00426         h += 4 + m_sizeLabel.<a class="codeRef" href="qsize.html#height">height</a>();
<a name="l00427"></a>00427     <span class="keywordflow">else</span>
<a name="l00428"></a>00428         <span class="comment">// label is in the same row as the other widgets</span>
<a name="l00429"></a>00429         h = QMAX(h, m_sizeLabel.<a class="codeRef" href="qsize.html#height">height</a>() + 2);
<a name="l00430"></a>00430 
<a name="l00431"></a>00431     w = m_slider ? m_slider-&gt;sizeHint().width() + 8 : 0;
<a name="l00432"></a>00432     w += m_colw1 + m_colw2;
<a name="l00433"></a>00433 
<a name="l00434"></a>00434     <span class="keywordflow">if</span>(m_alignment &amp; (AlignTop|AlignBottom))
<a name="l00435"></a>00435         w = QMAX(w, m_sizeLabel.<a class="codeRef" href="qsize.html#width">width</a>() + 4);
<a name="l00436"></a>00436 
<a name="l00437"></a>00437     <span class="keywordflow">return</span> <a class="codeRef" href="qsize.html">QSize</a>(w, h);
<a name="l00438"></a>00438 }
<a name="l00439"></a>00439 
<a name="l00440"></a><a class="code" href="classKIntNumInput.html#a51e6a29cab92947e80ab7cda25e0260d">00440</a> <span class="keywordtype">void</span> <a class="code" href="classKIntNumInput.html#a51e6a29cab92947e80ab7cda25e0260d" title="You need to overwrite this method and implement your layout calculations there.">KIntNumInput::doLayout</a>()
<a name="l00441"></a>00441 {
<a name="l00442"></a>00442     m_sizeSpin = m_spin-&gt;sizeHint();
<a name="l00443"></a>00443     m_colw2 = m_sizeSpin.<a class="codeRef" href="qsize.html#width">width</a>();
<a name="l00444"></a>00444 
<a name="l00445"></a>00445     <span class="keywordflow">if</span> (m_label)
<a name="l00446"></a>00446         m_label-&gt;<a class="codeRef" href="qlabel.html#setBuddy">setBuddy</a>(m_spin);
<a name="l00447"></a>00447 }
<a name="l00448"></a>00448 
<a name="l00449"></a>00449 <span class="keywordtype">void</span> KIntNumInput::resizeEvent(<a class="codeRef" href="qresizeevent.html">QResizeEvent</a>* e)
<a name="l00450"></a>00450 {
<a name="l00451"></a>00451     <span class="keywordtype">int</span> w = m_colw1;
<a name="l00452"></a>00452     <span class="keywordtype">int</span> h = 0;
<a name="l00453"></a>00453 
<a name="l00454"></a>00454     <span class="keywordflow">if</span>(m_label &amp;&amp; (m_alignment &amp; AlignTop)) {
<a name="l00455"></a>00455         m_label-&gt;setGeometry(0, 0, e-&gt;<a class="codeRef" href="qresizeevent.html#size">size</a>().width(), m_sizeLabel.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00456"></a>00456         h += m_sizeLabel.<a class="codeRef" href="qsize.html#height">height</a>() + <a class="code" href="classKDialog.html#a77f3df3337a2c906c8685d1c254a3a35" title="Return the number of pixels you shall use between widgets inside a dialog according to the KDE standa...">KDialog::spacingHint</a>();
<a name="l00457"></a>00457     }
<a name="l00458"></a>00458 
<a name="l00459"></a>00459     <span class="keywordflow">if</span>(m_label &amp;&amp; (m_alignment &amp; AlignVCenter))
<a name="l00460"></a>00460         m_label-&gt;setGeometry(0, 0, w, m_sizeSpin.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00461"></a>00461 
<a name="l00462"></a>00462     <span class="keywordflow">if</span> (qApp-&gt;reverseLayout())
<a name="l00463"></a>00463     {
<a name="l00464"></a>00464         m_spin-&gt;setGeometry(w, h, m_slider ? m_colw2 : QMAX(m_colw2, e-&gt;<a class="codeRef" href="qresizeevent.html#size">size</a>().width() - w), m_sizeSpin.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00465"></a>00465         w += m_colw2 + 8;
<a name="l00466"></a>00466 
<a name="l00467"></a>00467         <span class="keywordflow">if</span>(m_slider)
<a name="l00468"></a>00468             m_slider-&gt;setGeometry(w, h, e-&gt;<a class="codeRef" href="qresizeevent.html#size">size</a>().width() - w, m_sizeSpin.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00469"></a>00469     }
<a name="l00470"></a>00470     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_slider) {
<a name="l00471"></a>00471         m_slider-&gt;setGeometry(w, h, e-&gt;<a class="codeRef" href="qresizeevent.html#size">size</a>().width() - (w + m_colw2 + <a class="code" href="classKDialog.html#a77f3df3337a2c906c8685d1c254a3a35" title="Return the number of pixels you shall use between widgets inside a dialog according to the KDE standa...">KDialog::spacingHint</a>()), m_sizeSpin.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00472"></a>00472         m_spin-&gt;setGeometry(w + m_slider-&gt;size().width() + <a class="code" href="classKDialog.html#a77f3df3337a2c906c8685d1c254a3a35" title="Return the number of pixels you shall use between widgets inside a dialog according to the KDE standa...">KDialog::spacingHint</a>(), h, m_colw2, m_sizeSpin.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00473"></a>00473     }
<a name="l00474"></a>00474     <span class="keywordflow">else</span> {
<a name="l00475"></a>00475         m_spin-&gt;setGeometry(w, h, QMAX(m_colw2, e-&gt;<a class="codeRef" href="qresizeevent.html#size">size</a>().width() - w), m_sizeSpin.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00476"></a>00476     }
<a name="l00477"></a>00477 
<a name="l00478"></a>00478     h += m_sizeSpin.<a class="codeRef" href="qsize.html#height">height</a>() + 2;
<a name="l00479"></a>00479 
<a name="l00480"></a>00480     <span class="keywordflow">if</span>(m_label &amp;&amp; (m_alignment &amp; AlignBottom))
<a name="l00481"></a>00481         m_label-&gt;setGeometry(0, h, m_sizeLabel.<a class="codeRef" href="qsize.html#width">width</a>(), m_sizeLabel.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00482"></a>00482 }
<a name="l00483"></a>00483 
<a name="l00484"></a><a class="code" href="classKIntNumInput.html#a3ab255c0aede7d8fb55e9aba0f3c3051">00484</a> <a class="code" href="classKIntNumInput.html#a3ab255c0aede7d8fb55e9aba0f3c3051" title="Destructor.">KIntNumInput::~KIntNumInput</a>()
<a name="l00485"></a>00485 {
<a name="l00486"></a>00486     <span class="keyword">delete</span> d;
<a name="l00487"></a>00487 }
<a name="l00488"></a>00488 
<a name="l00489"></a><a class="code" href="classKIntNumInput.html#a927b59ceeae49d9553f38d236d3b3412">00489</a> <span class="keywordtype">void</span> <a class="code" href="classKIntNumInput.html#a927b59ceeae49d9553f38d236d3b3412" title="Sets the value of the control.">KIntNumInput::setValue</a>(<span class="keywordtype">int</span> val)
<a name="l00490"></a>00490 {
<a name="l00491"></a>00491     m_spin-&gt;<a class="codeRef" href="qspinbox.html#setValue">setValue</a>(val);
<a name="l00492"></a>00492     <span class="comment">// slider value is changed by spinValueChanged</span>
<a name="l00493"></a>00493 }
<a name="l00494"></a>00494 
<a name="l00495"></a><a class="code" href="classKIntNumInput.html#a0ea467329ac9af585227f22cad8c1d10">00495</a> <span class="keywordtype">void</span> <a class="code" href="classKIntNumInput.html#a0ea467329ac9af585227f22cad8c1d10" title="Sets the value in units of the referencePoint.">KIntNumInput::setRelativeValue</a>( <span class="keywordtype">double</span> r ) {
<a name="l00496"></a>00496     <span class="keywordflow">if</span> ( !d-&gt;referencePoint ) <span class="keywordflow">return</span>;
<a name="l00497"></a>00497     ++d-&gt;blockRelative;
<a name="l00498"></a>00498     <a class="code" href="classKIntNumInput.html#a927b59ceeae49d9553f38d236d3b3412" title="Sets the value of the control.">setValue</a>( <span class="keywordtype">int</span>( d-&gt;referencePoint * r + 0.5 ) );
<a name="l00499"></a>00499     --d-&gt;blockRelative;
<a name="l00500"></a>00500 }
<a name="l00501"></a>00501 
<a name="l00502"></a>00502 <span class="keywordtype">double</span> <a class="code" href="classKIntNumInput.html#a51bd71276c4ee282825a7e660a51f93d">KIntNumInput::relativeValue</a>()<span class="keyword"> const </span>{
<a name="l00503"></a>00503     <span class="keywordflow">if</span> ( !d-&gt;referencePoint ) <span class="keywordflow">return</span> 0;
<a name="l00504"></a>00504     <span class="keywordflow">return</span> double( <a class="code" href="classKIntNumInput.html#ab10af109175d1c8b312d75f062af968f">value</a>() ) / double ( d-&gt;referencePoint );
<a name="l00505"></a>00505 }
<a name="l00506"></a>00506 
<a name="l00507"></a>00507 <span class="keywordtype">int</span>  <a class="code" href="classKIntNumInput.html#ab10af109175d1c8b312d75f062af968f">KIntNumInput::value</a>()<span class="keyword"> const</span>
<a name="l00508"></a>00508 <span class="keyword"></span>{
<a name="l00509"></a>00509     <span class="keywordflow">return</span> m_spin-&gt;<a class="codeRef" href="qspinbox.html#value">value</a>();
<a name="l00510"></a>00510 }
<a name="l00511"></a>00511 
<a name="l00512"></a><a class="code" href="classKIntNumInput.html#ae382c11e54332e615273ce750b4acdc4">00512</a> <span class="keywordtype">void</span> <a class="code" href="classKIntNumInput.html#ae382c11e54332e615273ce750b4acdc4" title="Sets the special value text.">KIntNumInput::setSpecialValueText</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; text)
<a name="l00513"></a>00513 {
<a name="l00514"></a>00514     m_spin-&gt;<a class="codeRef" href="qspinbox.html#setSpecialValueText">setSpecialValueText</a>(text);
<a name="l00515"></a>00515     <a class="codeRef" href="qwidget.html#layout">layout</a>(<span class="keyword">true</span>);
<a name="l00516"></a>00516 }
<a name="l00517"></a>00517 
<a name="l00518"></a>00518 <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKIntNumInput.html#a25e6f7ad7ac49e38abf867c4a0d861e0">KIntNumInput::specialValueText</a>()<span class="keyword"> const</span>
<a name="l00519"></a>00519 <span class="keyword"></span>{
<a name="l00520"></a>00520     <span class="keywordflow">return</span> m_spin-&gt;<a class="codeRef" href="qspinbox.html#specialValueText">specialValueText</a>();
<a name="l00521"></a>00521 }
<a name="l00522"></a>00522 
<a name="l00523"></a><a class="code" href="classKIntNumInput.html#a8f915c152b8c49e1e1f37bc931034eeb">00523</a> <span class="keywordtype">void</span> <a class="code" href="classKIntNumInput.html#a8f915c152b8c49e1e1f37bc931034eeb" title="Sets the text and alignment of the main description label.">KIntNumInput::setLabel</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp; label, <span class="keywordtype">int</span> a)
<a name="l00524"></a>00524 {
<a name="l00525"></a>00525     <a class="code" href="classKIntNumInput.html#a8f915c152b8c49e1e1f37bc931034eeb" title="Sets the text and alignment of the main description label.">KNumInput::setLabel</a>(label, a);
<a name="l00526"></a>00526 
<a name="l00527"></a>00527     <span class="keywordflow">if</span>(m_label)
<a name="l00528"></a>00528         m_label-&gt;<a class="codeRef" href="qlabel.html#setBuddy">setBuddy</a>(m_spin);
<a name="l00529"></a>00529 }
<a name="l00530"></a>00530 
<a name="l00531"></a>00531 <span class="comment">// ----------------------------------------------------------------------------</span>
<a name="l00532"></a>00532 
<a name="l00533"></a>00533 <span class="keyword">class </span>KDoubleNumInput::KDoubleNumInputPrivate {
<a name="l00534"></a>00534 <span class="keyword">public</span>:
<a name="l00535"></a>00535     KDoubleNumInputPrivate( <span class="keywordtype">double</span> r )
<a name="l00536"></a>00536     : spin( 0 ),
<a name="l00537"></a>00537       <a class="code" href="classKDoubleNumInput.html#a5e784c2142acccb39e4ba4f014a09bdd">referencePoint</a>( r ),
<a name="l00538"></a>00538       blockRelative ( 0 ) {}
<a name="l00539"></a>00539     <a class="code" href="classKDoubleSpinBox.html" title="A spin box for fractional numbers.">KDoubleSpinBox</a> * spin;
<a name="l00540"></a>00540     <span class="keywordtype">double</span> <a class="code" href="classKDoubleNumInput.html#a5e784c2142acccb39e4ba4f014a09bdd">referencePoint</a>;
<a name="l00541"></a>00541     <span class="keywordtype">short</span> blockRelative;
<a name="l00542"></a>00542 };
<a name="l00543"></a>00543 
<a name="l00544"></a><a class="code" href="classKDoubleNumInput.html#aa5b25be7ff283779ef88be8b300ba3f7">00544</a> <a class="code" href="classKDoubleNumInput.html#aa5b25be7ff283779ef88be8b300ba3f7" title="Constructs an input control for double values with initial value 0.00.">KDoubleNumInput::KDoubleNumInput</a>(<a class="codeRef" href="qwidget.html">QWidget</a> *parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
<a name="l00545"></a>00545     : <a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a>(parent, name)
<a name="l00546"></a>00546 {
<a name="l00547"></a>00547     init(0.0, 0.0, 9999.0, 0.01, 2);
<a name="l00548"></a>00548 }
<a name="l00549"></a>00549 
<a name="l00550"></a><a class="code" href="classKDoubleNumInput.html#a56a45f1b8672d6776054ccdb8630fb4d">00550</a> <a class="code" href="classKDoubleNumInput.html#aa5b25be7ff283779ef88be8b300ba3f7" title="Constructs an input control for double values with initial value 0.00.">KDoubleNumInput::KDoubleNumInput</a>(<span class="keywordtype">double</span> lower, <span class="keywordtype">double</span> upper, <span class="keywordtype">double</span> value,
<a name="l00551"></a>00551                  <span class="keywordtype">double</span> step, <span class="keywordtype">int</span> precision, <a class="codeRef" href="qwidget.html">QWidget</a>* parent,
<a name="l00552"></a>00552                  <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
<a name="l00553"></a>00553     : <a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a>(parent, name)
<a name="l00554"></a>00554 {
<a name="l00555"></a>00555     init(value, lower, upper, step, precision);
<a name="l00556"></a>00556 }
<a name="l00557"></a>00557 
<a name="l00558"></a><a class="code" href="classKDoubleNumInput.html#a9cc2a720ec400ea20acc88677d715b10">00558</a> <a class="code" href="classKDoubleNumInput.html#aa5b25be7ff283779ef88be8b300ba3f7" title="Constructs an input control for double values with initial value 0.00.">KDoubleNumInput::KDoubleNumInput</a>(<a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a> *below,
<a name="l00559"></a>00559                  <span class="keywordtype">double</span> lower, <span class="keywordtype">double</span> upper, <span class="keywordtype">double</span> value,
<a name="l00560"></a>00560                  <span class="keywordtype">double</span> step, <span class="keywordtype">int</span> precision, <a class="codeRef" href="qwidget.html">QWidget</a>* parent,
<a name="l00561"></a>00561                  <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
<a name="l00562"></a>00562     : <a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a>(below, parent, name)
<a name="l00563"></a>00563 {
<a name="l00564"></a>00564     init(value, lower, upper, step, precision);
<a name="l00565"></a>00565 }
<a name="l00566"></a>00566 
<a name="l00567"></a><a class="code" href="classKDoubleNumInput.html#acb01262410de2a84b77e2cb0c4949ba3">00567</a> <a class="code" href="classKDoubleNumInput.html#aa5b25be7ff283779ef88be8b300ba3f7" title="Constructs an input control for double values with initial value 0.00.">KDoubleNumInput::KDoubleNumInput</a>(<span class="keywordtype">double</span> value, <a class="codeRef" href="qwidget.html">QWidget</a> *parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
<a name="l00568"></a>00568     : <a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a>(parent, name)
<a name="l00569"></a>00569 {
<a name="l00570"></a>00570     init(value, kMin(0.0, value), kMax(0.0, value), 0.01, 2 );
<a name="l00571"></a>00571 }
<a name="l00572"></a>00572 
<a name="l00573"></a><a class="code" href="classKDoubleNumInput.html#aea3e70c3458a9d8ddc44d064832ed11c">00573</a> <a class="code" href="classKDoubleNumInput.html#aa5b25be7ff283779ef88be8b300ba3f7" title="Constructs an input control for double values with initial value 0.00.">KDoubleNumInput::KDoubleNumInput</a>(<a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a>* below, <span class="keywordtype">double</span> value, <a class="codeRef" href="qwidget.html">QWidget</a>* parent,
<a name="l00574"></a>00574                                  <span class="keyword">const</span> <span class="keywordtype">char</span>* name)
<a name="l00575"></a>00575     : <a class="code" href="classKNumInput.html" title="You need to inherit from this class if you want to implement K*NumInput for a different variable type...">KNumInput</a>(below, parent, name)
<a name="l00576"></a>00576 {
<a name="l00577"></a>00577     init( value, kMin(0.0, value), kMax(0.0, value), 0.01, 2 );
<a name="l00578"></a>00578 }
<a name="l00579"></a>00579 
<a name="l00580"></a><a class="code" href="classKDoubleNumInput.html#ae4680d2fe9475a24fbc7b31ecde231df">00580</a> <a class="code" href="classKDoubleNumInput.html#ae4680d2fe9475a24fbc7b31ecde231df" title="destructor">KDoubleNumInput::~KDoubleNumInput</a>()
<a name="l00581"></a>00581 {
<a name="l00582"></a>00582     <span class="keyword">delete</span> d;
<a name="l00583"></a>00583 }
<a name="l00584"></a>00584 
<a name="l00585"></a>00585 <span class="comment">// ### remove when BIC changes are allowed again:</span>
<a name="l00586"></a>00586 
<a name="l00587"></a>00587 <span class="keywordtype">bool</span> KDoubleNumInput::eventFilter( <a class="codeRef" href="qobject.html">QObject</a> * o, <a class="codeRef" href="qevent.html">QEvent</a> * e ) {
<a name="l00588"></a>00588     <span class="keywordflow">return</span> KNumInput::eventFilter( o, e );
<a name="l00589"></a>00589 }
<a name="l00590"></a>00590 
<a name="l00591"></a>00591 <span class="keywordtype">void</span> KDoubleNumInput::resetEditBox() {
<a name="l00592"></a>00592 
<a name="l00593"></a>00593 }
<a name="l00594"></a>00594 
<a name="l00595"></a>00595 <span class="comment">// ### end stuff to remove when BIC changes are allowed again</span>
<a name="l00596"></a>00596 
<a name="l00597"></a>00597 
<a name="l00598"></a>00598 
<a name="l00599"></a>00599 <span class="keywordtype">void</span> KDoubleNumInput::init(<span class="keywordtype">double</span> value, <span class="keywordtype">double</span> lower, <span class="keywordtype">double</span> upper,
<a name="l00600"></a>00600                <span class="keywordtype">double</span> step, <span class="keywordtype">int</span> precision )
<a name="l00601"></a>00601 {
<a name="l00602"></a>00602     <span class="comment">// ### init no longer used members:</span>
<a name="l00603"></a>00603     edit = 0;
<a name="l00604"></a>00604     m_range = <span class="keyword">true</span>;
<a name="l00605"></a>00605     m_value = 0.0;
<a name="l00606"></a>00606     m_precision = 2;
<a name="l00607"></a>00607     <span class="comment">// ### end</span>
<a name="l00608"></a>00608 
<a name="l00609"></a>00609     d = <span class="keyword">new</span> KDoubleNumInputPrivate( value );
<a name="l00610"></a>00610 
<a name="l00611"></a>00611     d-&gt;spin = <span class="keyword">new</span> <a class="code" href="classKDoubleSpinBox.html" title="A spin box for fractional numbers.">KDoubleSpinBox</a>( lower, upper, step, value, precision,
<a name="l00612"></a>00612                   <span class="keyword">this</span>, <span class="stringliteral">&quot;KDoubleNumInput::d-&gt;spin&quot;</span> );
<a name="l00613"></a>00613     <a class="codeRef" href="qwidget.html#setFocusProxy">setFocusProxy</a>(d-&gt;spin);
<a name="l00614"></a>00614     connect( d-&gt;spin, SIGNAL(<a class="code" href="classKDoubleNumInput.html#af88558275428d24cd6c238a6eeacfc43" title="Emitted every time the value changes (by calling setValue() or by user interaction).">valueChanged</a>(<span class="keywordtype">double</span>)),
<a name="l00615"></a>00615          <span class="keyword">this</span>, SIGNAL(<a class="code" href="classKDoubleNumInput.html#af88558275428d24cd6c238a6eeacfc43" title="Emitted every time the value changes (by calling setValue() or by user interaction).">valueChanged</a>(<span class="keywordtype">double</span>)) );
<a name="l00616"></a>00616     connect( <span class="keyword">this</span>, SIGNAL(<a class="code" href="classKDoubleNumInput.html#af88558275428d24cd6c238a6eeacfc43" title="Emitted every time the value changes (by calling setValue() or by user interaction).">valueChanged</a>(<span class="keywordtype">double</span>)),
<a name="l00617"></a>00617          <span class="keyword">this</span>, SLOT(slotEmitRelativeValueChanged(<span class="keywordtype">double</span>)) );
<a name="l00618"></a>00618 
<a name="l00619"></a>00619     updateLegacyMembers();
<a name="l00620"></a>00620 
<a name="l00621"></a>00621     <a class="codeRef" href="qwidget.html#layout">layout</a>(<span class="keyword">true</span>);
<a name="l00622"></a>00622 }
<a name="l00623"></a>00623 
<a name="l00624"></a>00624 <span class="keywordtype">void</span> KDoubleNumInput::updateLegacyMembers() {
<a name="l00625"></a>00625     <span class="comment">// ### update legacy members that are either not private or for</span>
<a name="l00626"></a>00626     <span class="comment">// which an inlined getter exists:</span>
<a name="l00627"></a>00627     m_lower = <a class="code" href="classKDoubleNumInput.html#ac5a0f792c9928889a68e144ad85d8f26">minValue</a>();
<a name="l00628"></a>00628     m_upper = <a class="code" href="classKDoubleNumInput.html#a3922929a9955e9abf158d1cb4deae68a">maxValue</a>();
<a name="l00629"></a>00629     m_step = d-&gt;spin-&gt;lineStep();
<a name="l00630"></a>00630     m_specialvalue = <a class="code" href="classKDoubleNumInput.html#a871d3513944315d3611bf6f19df5f0aa">specialValueText</a>();
<a name="l00631"></a>00631 }
<a name="l00632"></a>00632 
<a name="l00633"></a>00633 
<a name="l00634"></a>00634 <span class="keywordtype">double</span> KDoubleNumInput::mapSliderToSpin( <span class="keywordtype">int</span> val )<span class="keyword"> const</span>
<a name="l00635"></a>00635 <span class="keyword"></span>{
<a name="l00636"></a>00636     <span class="comment">// map [slidemin,slidemax] to [spinmin,spinmax]</span>
<a name="l00637"></a>00637     <span class="keywordtype">double</span> spinmin = d-&gt;spin-&gt;minValue();
<a name="l00638"></a>00638     <span class="keywordtype">double</span> spinmax = d-&gt;spin-&gt;maxValue();
<a name="l00639"></a>00639     <span class="keywordtype">double</span> slidemin = m_slider-&gt;<a class="codeRef" href="qslider.html#minValue">minValue</a>(); <span class="comment">// cast int to double to avoid</span>
<a name="l00640"></a>00640     <span class="keywordtype">double</span> slidemax = m_slider-&gt;<a class="codeRef" href="qslider.html#maxValue">maxValue</a>(); <span class="comment">// overflow in rel denominator</span>
<a name="l00641"></a>00641     <span class="keywordtype">double</span> rel = ( double(val) - slidemin ) / ( slidemax - slidemin );
<a name="l00642"></a>00642     <span class="keywordflow">return</span> spinmin + rel * ( spinmax - spinmin );
<a name="l00643"></a>00643 }
<a name="l00644"></a>00644 
<a name="l00645"></a>00645 <span class="keywordtype">void</span> KDoubleNumInput::sliderMoved(<span class="keywordtype">int</span> val)
<a name="l00646"></a>00646 {
<a name="l00647"></a>00647     d-&gt;spin-&gt;setValue( mapSliderToSpin( val ) );
<a name="l00648"></a>00648 }
<a name="l00649"></a>00649 
<a name="l00650"></a>00650 <span class="keywordtype">void</span> KDoubleNumInput::slotEmitRelativeValueChanged( <span class="keywordtype">double</span> value )
<a name="l00651"></a>00651 {
<a name="l00652"></a>00652     <span class="keywordflow">if</span> ( !d-&gt;referencePoint ) <span class="keywordflow">return</span>;
<a name="l00653"></a>00653     emit <a class="code" href="classKDoubleNumInput.html#a2b22aed24d7f27607659a54684ef224f" title="This is an overloaded member function, provided for convenience.">relativeValueChanged</a>( value / d-&gt;referencePoint );
<a name="l00654"></a>00654 }
<a name="l00655"></a>00655 
<a name="l00656"></a>00656 <a class="codeRef" href="qsize.html">QSize</a> KDoubleNumInput::minimumSizeHint()<span class="keyword"> const</span>
<a name="l00657"></a>00657 <span class="keyword"></span>{
<a name="l00658"></a>00658     <a class="codeRef" href="qwidget.html#constPolish">constPolish</a>();
<a name="l00659"></a>00659 
<a name="l00660"></a>00660     <span class="keywordtype">int</span> w;
<a name="l00661"></a>00661     <span class="keywordtype">int</span> h;
<a name="l00662"></a>00662 
<a name="l00663"></a>00663     h = 2 + QMAX(m_sizeEdit.<a class="codeRef" href="qsize.html#height">height</a>(), m_sizeSlider.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00664"></a>00664 
<a name="l00665"></a>00665     <span class="comment">// if in extra row, then count it here</span>
<a name="l00666"></a>00666     <span class="keywordflow">if</span>(m_label &amp;&amp; (m_alignment &amp; (AlignBottom|AlignTop)))
<a name="l00667"></a>00667         h += 4 + m_sizeLabel.<a class="codeRef" href="qsize.html#height">height</a>();
<a name="l00668"></a>00668     <span class="keywordflow">else</span>
<a name="l00669"></a>00669         <span class="comment">// label is in the same row as the other widgets</span>
<a name="l00670"></a>00670     h = QMAX(h, m_sizeLabel.<a class="codeRef" href="qsize.html#height">height</a>() + 2);
<a name="l00671"></a>00671 
<a name="l00672"></a>00672     w = m_slider ? m_slider-&gt;sizeHint().width() + 8 : 0;
<a name="l00673"></a>00673     w += m_colw1 + m_colw2;
<a name="l00674"></a>00674 
<a name="l00675"></a>00675     <span class="keywordflow">if</span>(m_alignment &amp; (AlignTop|AlignBottom))
<a name="l00676"></a>00676         w = QMAX(w, m_sizeLabel.<a class="codeRef" href="qsize.html#width">width</a>() + 4);
<a name="l00677"></a>00677 
<a name="l00678"></a>00678     <span class="keywordflow">return</span> <a class="codeRef" href="qsize.html">QSize</a>(w, h);
<a name="l00679"></a>00679 }
<a name="l00680"></a>00680 
<a name="l00681"></a>00681 <span class="keywordtype">void</span> KDoubleNumInput::resizeEvent(<a class="codeRef" href="qresizeevent.html">QResizeEvent</a>* e)
<a name="l00682"></a>00682 {
<a name="l00683"></a>00683     <span class="keywordtype">int</span> w = m_colw1;
<a name="l00684"></a>00684     <span class="keywordtype">int</span> h = 0;
<a name="l00685"></a>00685 
<a name="l00686"></a>00686     <span class="keywordflow">if</span>(m_label &amp;&amp; (m_alignment &amp; AlignTop)) {
<a name="l00687"></a>00687         m_label-&gt;setGeometry(0, 0, e-&gt;<a class="codeRef" href="qresizeevent.html#size">size</a>().width(), m_sizeLabel.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00688"></a>00688         h += m_sizeLabel.<a class="codeRef" href="qsize.html#height">height</a>() + 4;
<a name="l00689"></a>00689     }
<a name="l00690"></a>00690 
<a name="l00691"></a>00691     <span class="keywordflow">if</span>(m_label &amp;&amp; (m_alignment &amp; AlignVCenter))
<a name="l00692"></a>00692         m_label-&gt;setGeometry(0, 0, w, m_sizeEdit.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00693"></a>00693 
<a name="l00694"></a>00694     <span class="keywordflow">if</span> (qApp-&gt;reverseLayout())
<a name="l00695"></a>00695     {
<a name="l00696"></a>00696         d-&gt;spin-&gt;setGeometry(w, h, m_slider ? m_colw2
<a name="l00697"></a>00697                                             : e-&gt;<a class="codeRef" href="qresizeevent.html#size">size</a>().width() - w, m_sizeEdit.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00698"></a>00698         w += m_colw2 + <a class="code" href="classKDialog.html#a77f3df3337a2c906c8685d1c254a3a35" title="Return the number of pixels you shall use between widgets inside a dialog according to the KDE standa...">KDialog::spacingHint</a>();
<a name="l00699"></a>00699 
<a name="l00700"></a>00700         <span class="keywordflow">if</span>(m_slider)
<a name="l00701"></a>00701             m_slider-&gt;setGeometry(w, h, e-&gt;<a class="codeRef" href="qresizeevent.html#size">size</a>().width() - w, m_sizeEdit.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00702"></a>00702     }
<a name="l00703"></a>00703     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_slider) {
<a name="l00704"></a>00704         m_slider-&gt;setGeometry(w, h, e-&gt;<a class="codeRef" href="qresizeevent.html#size">size</a>().width() -
<a name="l00705"></a>00705                                     (m_colw1 + m_colw2 + <a class="code" href="classKDialog.html#a77f3df3337a2c906c8685d1c254a3a35" title="Return the number of pixels you shall use between widgets inside a dialog according to the KDE standa...">KDialog::spacingHint</a>()),
<a name="l00706"></a>00706                               m_sizeEdit.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00707"></a>00707         d-&gt;spin-&gt;setGeometry(w + m_slider-&gt;width() + <a class="code" href="classKDialog.html#a77f3df3337a2c906c8685d1c254a3a35" title="Return the number of pixels you shall use between widgets inside a dialog according to the KDE standa...">KDialog::spacingHint</a>(), h,
<a name="l00708"></a>00708                              m_colw2, m_sizeEdit.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00709"></a>00709     }
<a name="l00710"></a>00710     <span class="keywordflow">else</span> {
<a name="l00711"></a>00711         d-&gt;spin-&gt;setGeometry(w, h, e-&gt;<a class="codeRef" href="qresizeevent.html#size">size</a>().width() - w, m_sizeEdit.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00712"></a>00712     }
<a name="l00713"></a>00713 
<a name="l00714"></a>00714     h += m_sizeEdit.<a class="codeRef" href="qsize.html#height">height</a>() + 2;
<a name="l00715"></a>00715 
<a name="l00716"></a>00716     <span class="keywordflow">if</span>(m_label &amp;&amp; (m_alignment &amp; AlignBottom))
<a name="l00717"></a>00717         m_label-&gt;setGeometry(0, h, m_sizeLabel.<a class="codeRef" href="qsize.html#width">width</a>(), m_sizeLabel.<a class="codeRef" href="qsize.html#height">height</a>());
<a name="l00718"></a>00718 }
<a name="l00719"></a>00719 
<a name="l00720"></a><a class="code" href="classKDoubleNumInput.html#a646fb56d3ce882dfe7c1ebecf7eb8c4c">00720</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleNumInput.html#a646fb56d3ce882dfe7c1ebecf7eb8c4c" title="You need to overwrite this method and implement your layout calculations there.">KDoubleNumInput::doLayout</a>()
<a name="l00721"></a>00721 {
<a name="l00722"></a>00722     m_sizeEdit = d-&gt;spin-&gt;sizeHint();
<a name="l00723"></a>00723     m_colw2 = m_sizeEdit.<a class="codeRef" href="qsize.html#width">width</a>();
<a name="l00724"></a>00724 }
<a name="l00725"></a>00725 
<a name="l00726"></a><a class="code" href="classKDoubleNumInput.html#a6391924d696c842b549fdd86e0e30ed6">00726</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleNumInput.html#a6391924d696c842b549fdd86e0e30ed6" title="Sets the value of the control.">KDoubleNumInput::setValue</a>(<span class="keywordtype">double</span> val)
<a name="l00727"></a>00727 {
<a name="l00728"></a>00728     d-&gt;spin-&gt;setValue( val );
<a name="l00729"></a>00729 }
<a name="l00730"></a>00730 
<a name="l00731"></a><a class="code" href="classKDoubleNumInput.html#a95cc7678cdbc31a6c0d6da3325ea0ce6">00731</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleNumInput.html#a95cc7678cdbc31a6c0d6da3325ea0ce6" title="Sets the value in units of referencePoint.">KDoubleNumInput::setRelativeValue</a>( <span class="keywordtype">double</span> r )
<a name="l00732"></a>00732 {
<a name="l00733"></a>00733     <span class="keywordflow">if</span> ( !d-&gt;referencePoint ) <span class="keywordflow">return</span>;
<a name="l00734"></a>00734     ++d-&gt;blockRelative;
<a name="l00735"></a>00735     <a class="code" href="classKDoubleNumInput.html#a6391924d696c842b549fdd86e0e30ed6" title="Sets the value of the control.">setValue</a>( r * d-&gt;referencePoint );
<a name="l00736"></a>00736     --d-&gt;blockRelative;
<a name="l00737"></a>00737 }
<a name="l00738"></a>00738 
<a name="l00739"></a><a class="code" href="classKDoubleNumInput.html#a8a0a73fac9c4f9e2db400083cc7ac37b">00739</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleNumInput.html#a8a0a73fac9c4f9e2db400083cc7ac37b" title="Sets the reference Point to ref.">KDoubleNumInput::setReferencePoint</a>( <span class="keywordtype">double</span> ref )
<a name="l00740"></a>00740 {
<a name="l00741"></a>00741     <span class="comment">// clip to valid range:</span>
<a name="l00742"></a>00742     ref = kMin( <a class="code" href="classKDoubleNumInput.html#a3922929a9955e9abf158d1cb4deae68a">maxValue</a>(), kMax( <a class="code" href="classKDoubleNumInput.html#ac5a0f792c9928889a68e144ad85d8f26">minValue</a>(), ref ) );
<a name="l00743"></a>00743     d-&gt;referencePoint = ref;
<a name="l00744"></a>00744 }
<a name="l00745"></a>00745 
<a name="l00746"></a><a class="code" href="classKDoubleNumInput.html#a44ccaec363ec32908306eacdf6b6646d">00746</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleNumInput.html#a44ccaec363ec32908306eacdf6b6646d">KDoubleNumInput::setRange</a>(<span class="keywordtype">double</span> lower, <span class="keywordtype">double</span> upper, <span class="keywordtype">double</span> step,
<a name="l00747"></a>00747                                                            <span class="keywordtype">bool</span> slider)
<a name="l00748"></a>00748 {
<a name="l00749"></a>00749     <span class="keywordflow">if</span>( m_slider ) {
<a name="l00750"></a>00750     <span class="comment">// don&#39;t update the slider to avoid an endless recursion</span>
<a name="l00751"></a>00751     <a class="codeRef" href="qspinbox.html">QSpinBox</a> * spin = d-&gt;spin;
<a name="l00752"></a>00752     disconnect(spin, SIGNAL(<a class="code" href="classKDoubleNumInput.html#af88558275428d24cd6c238a6eeacfc43" title="Emitted every time the value changes (by calling setValue() or by user interaction).">valueChanged</a>(<span class="keywordtype">int</span>)),
<a name="l00753"></a>00753         m_slider, SLOT(<a class="code" href="classKDoubleNumInput.html#a6391924d696c842b549fdd86e0e30ed6" title="Sets the value of the control.">setValue</a>(<span class="keywordtype">int</span>)) );
<a name="l00754"></a>00754     }
<a name="l00755"></a>00755     d-&gt;spin-&gt;setRange( lower, upper, step, d-&gt;spin-&gt;precision() );
<a name="l00756"></a>00756 
<a name="l00757"></a>00757     <span class="keywordflow">if</span>(slider) {
<a name="l00758"></a>00758     <span class="comment">// upcast to base type to get the min/maxValue in int form:</span>
<a name="l00759"></a>00759     <a class="codeRef" href="qspinbox.html">QSpinBox</a> * spin = d-&gt;spin;
<a name="l00760"></a>00760         <span class="keywordtype">int</span> slmax = spin-&gt;<a class="codeRef" href="qspinbox.html#maxValue">maxValue</a>();
<a name="l00761"></a>00761     <span class="keywordtype">int</span> slmin = spin-&gt;<a class="codeRef" href="qspinbox.html#minValue">minValue</a>();
<a name="l00762"></a>00762         <span class="keywordtype">int</span> slvalue = spin-&gt;<a class="codeRef" href="qspinbox.html#value">value</a>();
<a name="l00763"></a>00763     <span class="keywordtype">int</span> slstep = spin-&gt;<a class="codeRef" href="qspinbox.html#lineStep">lineStep</a>();
<a name="l00764"></a>00764         <span class="keywordflow">if</span> (m_slider) {
<a name="l00765"></a>00765             m_slider-&gt;<a class="codeRef" href="qslider.html#setRange">setRange</a>(slmin, slmax);
<a name="l00766"></a>00766         m_slider-&gt;<a class="codeRef" href="qslider.html#setLineStep">setLineStep</a>(slstep);
<a name="l00767"></a>00767             m_slider-&gt;<a class="codeRef" href="qslider.html#setValue">setValue</a>(slvalue);
<a name="l00768"></a>00768         } <span class="keywordflow">else</span> {
<a name="l00769"></a>00769             m_slider = <span class="keyword">new</span> <a class="codeRef" href="qslider.html">QSlider</a>(slmin, slmax, slstep, slvalue,
<a name="l00770"></a>00770                                    QSlider::Horizontal, <span class="keyword">this</span>);
<a name="l00771"></a>00771             m_slider-&gt;<a class="codeRef" href="qslider.html#setTickmarks">setTickmarks</a>(QSlider::Below);
<a name="l00772"></a>00772         <span class="comment">// feedback line: when one moves, the other moves, too:</span>
<a name="l00773"></a>00773             connect(m_slider, SIGNAL(<a class="code" href="classKDoubleNumInput.html#af88558275428d24cd6c238a6eeacfc43" title="Emitted every time the value changes (by calling setValue() or by user interaction).">valueChanged</a>(<span class="keywordtype">int</span>)),
<a name="l00774"></a>00774                     SLOT(sliderMoved(<span class="keywordtype">int</span>)) );
<a name="l00775"></a>00775         }
<a name="l00776"></a>00776     connect(spin, SIGNAL(<a class="code" href="classKDoubleNumInput.html#af88558275428d24cd6c238a6eeacfc43" title="Emitted every time the value changes (by calling setValue() or by user interaction).">valueChanged</a>(<span class="keywordtype">int</span>)),
<a name="l00777"></a>00777             m_slider, SLOT(<a class="code" href="classKDoubleNumInput.html#a6391924d696c842b549fdd86e0e30ed6" title="Sets the value of the control.">setValue</a>(<span class="keywordtype">int</span>)) );
<a name="l00778"></a>00778     <span class="comment">// calculate ( slmax - slmin ) / 10 without overflowing ints:</span>
<a name="l00779"></a>00779     <span class="keywordtype">int</span> major = calcDiffByTen( slmax, slmin );
<a name="l00780"></a>00780     <span class="keywordflow">if</span> ( !major ) major = slstep; <span class="comment">// ### needed?</span>
<a name="l00781"></a>00781         m_slider-&gt;<a class="codeRef" href="qslider.html#setTickInterval">setTickInterval</a>(major);
<a name="l00782"></a>00782     } <span class="keywordflow">else</span> {
<a name="l00783"></a>00783         <span class="keyword">delete</span> m_slider;
<a name="l00784"></a>00784         m_slider = 0;
<a name="l00785"></a>00785     }
<a name="l00786"></a>00786 
<a name="l00787"></a>00787     <a class="code" href="classKDoubleNumInput.html#a8a0a73fac9c4f9e2db400083cc7ac37b" title="Sets the reference Point to ref.">setReferencePoint</a>( <a class="code" href="classKDoubleNumInput.html#a5e784c2142acccb39e4ba4f014a09bdd">referencePoint</a>() );
<a name="l00788"></a>00788 
<a name="l00789"></a>00789     <a class="codeRef" href="qwidget.html#layout">layout</a>(<span class="keyword">true</span>);
<a name="l00790"></a>00790     updateLegacyMembers();
<a name="l00791"></a>00791 }
<a name="l00792"></a>00792 
<a name="l00793"></a><a class="code" href="classKDoubleNumInput.html#ae45fbf346e652a6f281a669f44d2f148">00793</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleNumInput.html#ae45fbf346e652a6f281a669f44d2f148" title="Sets the minimum value.">KDoubleNumInput::setMinValue</a>(<span class="keywordtype">double</span> min)
<a name="l00794"></a>00794 {
<a name="l00795"></a>00795     <a class="code" href="classKDoubleNumInput.html#a44ccaec363ec32908306eacdf6b6646d">setRange</a>(min, <a class="code" href="classKDoubleNumInput.html#a3922929a9955e9abf158d1cb4deae68a">maxValue</a>(), d-&gt;spin-&gt;lineStep(), m_slider);
<a name="l00796"></a>00796 }
<a name="l00797"></a>00797 
<a name="l00798"></a>00798 <span class="keywordtype">double</span> <a class="code" href="classKDoubleNumInput.html#ac5a0f792c9928889a68e144ad85d8f26">KDoubleNumInput::minValue</a>()<span class="keyword"> const</span>
<a name="l00799"></a>00799 <span class="keyword"></span>{
<a name="l00800"></a>00800     <span class="keywordflow">return</span> d-&gt;spin-&gt;minValue();
<a name="l00801"></a>00801 }
<a name="l00802"></a>00802 
<a name="l00803"></a><a class="code" href="classKDoubleNumInput.html#adc392f3aa79f82af30b6ac39127326da">00803</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleNumInput.html#adc392f3aa79f82af30b6ac39127326da" title="Sets the maximum value.">KDoubleNumInput::setMaxValue</a>(<span class="keywordtype">double</span> max)
<a name="l00804"></a>00804 {
<a name="l00805"></a>00805     <a class="code" href="classKDoubleNumInput.html#a44ccaec363ec32908306eacdf6b6646d">setRange</a>(<a class="code" href="classKDoubleNumInput.html#ac5a0f792c9928889a68e144ad85d8f26">minValue</a>(), max, d-&gt;spin-&gt;lineStep(), m_slider);
<a name="l00806"></a>00806 }
<a name="l00807"></a>00807 
<a name="l00808"></a>00808 <span class="keywordtype">double</span> <a class="code" href="classKDoubleNumInput.html#a3922929a9955e9abf158d1cb4deae68a">KDoubleNumInput::maxValue</a>()<span class="keyword"> const</span>
<a name="l00809"></a>00809 <span class="keyword"></span>{
<a name="l00810"></a>00810     <span class="keywordflow">return</span> d-&gt;spin-&gt;maxValue();
<a name="l00811"></a>00811 }
<a name="l00812"></a>00812 
<a name="l00813"></a>00813 <span class="keywordtype">double</span>  <a class="code" href="classKDoubleNumInput.html#aa3c778bbc61d96787cdcd47925b8ea34">KDoubleNumInput::value</a>()<span class="keyword"> const</span>
<a name="l00814"></a>00814 <span class="keyword"></span>{
<a name="l00815"></a>00815     <span class="keywordflow">return</span> d-&gt;spin-&gt;value();
<a name="l00816"></a>00816 }
<a name="l00817"></a>00817 
<a name="l00818"></a>00818 <span class="keywordtype">double</span> <a class="code" href="classKDoubleNumInput.html#aff488b6bf55f88bef765650156997c4c">KDoubleNumInput::relativeValue</a>()<span class="keyword"> const</span>
<a name="l00819"></a>00819 <span class="keyword"></span>{
<a name="l00820"></a>00820     <span class="keywordflow">if</span> ( !d-&gt;referencePoint ) <span class="keywordflow">return</span> 0;
<a name="l00821"></a>00821     <span class="keywordflow">return</span> <a class="code" href="classKDoubleNumInput.html#aa3c778bbc61d96787cdcd47925b8ea34">value</a>() / d-&gt;referencePoint;
<a name="l00822"></a>00822 }
<a name="l00823"></a>00823 
<a name="l00824"></a>00824 <span class="keywordtype">double</span> <a class="code" href="classKDoubleNumInput.html#a5e784c2142acccb39e4ba4f014a09bdd">KDoubleNumInput::referencePoint</a>()<span class="keyword"> const</span>
<a name="l00825"></a>00825 <span class="keyword"></span>{
<a name="l00826"></a>00826     <span class="keywordflow">return</span> d-&gt;referencePoint;
<a name="l00827"></a>00827 }
<a name="l00828"></a>00828 
<a name="l00829"></a>00829 <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKDoubleNumInput.html#aba6a484875944ab2f43e979006eb5a7c">KDoubleNumInput::suffix</a>()<span class="keyword"> const</span>
<a name="l00830"></a>00830 <span class="keyword"></span>{
<a name="l00831"></a>00831     <span class="keywordflow">return</span> d-&gt;spin-&gt;suffix();
<a name="l00832"></a>00832 }
<a name="l00833"></a>00833 
<a name="l00834"></a>00834 <a class="codeRef" href="qstring.html">QString</a> <a class="code" href="classKDoubleNumInput.html#ac2f3e3c0f1d22d087a24bb031f94e12e">KDoubleNumInput::prefix</a>()<span class="keyword"> const</span>
<a name="l00835"></a>00835 <span class="keyword"></span>{
<a name="l00836"></a>00836     <span class="keywordflow">return</span> d-&gt;spin-&gt;prefix();
<a name="l00837"></a>00837 }
<a name="l00838"></a>00838 
<a name="l00839"></a><a class="code" href="classKDoubleNumInput.html#a68e51ad7c833b99c94d2eeeb52a7440a">00839</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleNumInput.html#a68e51ad7c833b99c94d2eeeb52a7440a" title="Sets the suffix to be displayed to suffix.">KDoubleNumInput::setSuffix</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp;suffix)
<a name="l00840"></a>00840 {
<a name="l00841"></a>00841     d-&gt;spin-&gt;setSuffix( suffix );
<a name="l00842"></a>00842 
<a name="l00843"></a>00843     <a class="codeRef" href="qwidget.html#layout">layout</a>(<span class="keyword">true</span>);
<a name="l00844"></a>00844 }
<a name="l00845"></a>00845 
<a name="l00846"></a><a class="code" href="classKDoubleNumInput.html#a65e213dab62d9f0b393bac8304042517">00846</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleNumInput.html#a65e213dab62d9f0b393bac8304042517" title="Sets the prefix to be displayed to prefix.">KDoubleNumInput::setPrefix</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp;prefix)
<a name="l00847"></a>00847 {
<a name="l00848"></a>00848     d-&gt;spin-&gt;setPrefix( prefix );
<a name="l00849"></a>00849 
<a name="l00850"></a>00850     <a class="codeRef" href="qwidget.html#layout">layout</a>(<span class="keyword">true</span>);
<a name="l00851"></a>00851 }
<a name="l00852"></a>00852 
<a name="l00853"></a><a class="code" href="classKDoubleNumInput.html#acb056e55880c710a90f340a261ab72bd">00853</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleNumInput.html#acb056e55880c710a90f340a261ab72bd" title="Specifies the number of digits to use.">KDoubleNumInput::setPrecision</a>(<span class="keywordtype">int</span> precision)
<a name="l00854"></a>00854 {
<a name="l00855"></a>00855     d-&gt;spin-&gt;setPrecision( precision );
<a name="l00856"></a>00856 
<a name="l00857"></a>00857     <a class="codeRef" href="qwidget.html#layout">layout</a>(<span class="keyword">true</span>);
<a name="l00858"></a>00858 }
<a name="l00859"></a>00859 
<a name="l00860"></a>00860 <span class="keywordtype">int</span> <a class="code" href="classKDoubleNumInput.html#a240c13fe9f2e35c20aa047dc6a4d177c">KDoubleNumInput::precision</a>()<span class="keyword"> const</span>
<a name="l00861"></a>00861 <span class="keyword"></span>{
<a name="l00862"></a>00862     <span class="keywordflow">return</span> d-&gt;spin-&gt;precision();
<a name="l00863"></a>00863 }
<a name="l00864"></a>00864 
<a name="l00865"></a><a class="code" href="classKDoubleNumInput.html#a8aaf5b5854f389db225095962980074e">00865</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleNumInput.html#a8aaf5b5854f389db225095962980074e" title="Sets the special value text.">KDoubleNumInput::setSpecialValueText</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>&amp; text)
<a name="l00866"></a>00866 {
<a name="l00867"></a>00867     d-&gt;spin-&gt;setSpecialValueText( text );
<a name="l00868"></a>00868 
<a name="l00869"></a>00869     <a class="codeRef" href="qwidget.html#layout">layout</a>(<span class="keyword">true</span>);
<a name="l00870"></a>00870     updateLegacyMembers();
<a name="l00871"></a>00871 }
<a name="l00872"></a>00872 
<a name="l00873"></a><a class="code" href="classKDoubleNumInput.html#a2d0a7c825a97be89b0d62ee7c4a6f386">00873</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleNumInput.html#a2d0a7c825a97be89b0d62ee7c4a6f386" title="Sets the text and alignment of the main description label.">KDoubleNumInput::setLabel</a>(<span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a> &amp; label, <span class="keywordtype">int</span> a)
<a name="l00874"></a>00874 {
<a name="l00875"></a>00875     <a class="code" href="classKDoubleNumInput.html#a2d0a7c825a97be89b0d62ee7c4a6f386" title="Sets the text and alignment of the main description label.">KNumInput::setLabel</a>(label, a);
<a name="l00876"></a>00876 
<a name="l00877"></a>00877     <span class="keywordflow">if</span>(m_label)
<a name="l00878"></a>00878         m_label-&gt;<a class="codeRef" href="qlabel.html#setBuddy">setBuddy</a>(d-&gt;spin);
<a name="l00879"></a>00879 
<a name="l00880"></a>00880 }
<a name="l00881"></a>00881 
<a name="l00882"></a>00882 <span class="comment">// ----------------------------------------------------------------------------</span>
<a name="l00883"></a>00883 
<a name="l00884"></a>00884 
<a name="l00885"></a>00885 <span class="keyword">class </span>KDoubleSpinBoxValidator : <span class="keyword">public</span> <a class="code" href="classKDoubleValidator.html" title="A locale-aware QDoubleValidator.">KDoubleValidator</a>
<a name="l00886"></a>00886 {
<a name="l00887"></a>00887 <span class="keyword">public</span>:
<a name="l00888"></a>00888     KDoubleSpinBoxValidator( <span class="keywordtype">double</span> bottom, <span class="keywordtype">double</span> top, <span class="keywordtype">int</span> decimals, <a class="code" href="classKDoubleSpinBox.html" title="A spin box for fractional numbers.">KDoubleSpinBox</a>* sb, <span class="keyword">const</span> <span class="keywordtype">char</span> *name )
<a name="l00889"></a>00889         : <a class="code" href="classKDoubleValidator.html" title="A locale-aware QDoubleValidator.">KDoubleValidator</a>( bottom, top, decimals, sb, name ), spinBox( sb ) { }
<a name="l00890"></a>00890 
<a name="l00891"></a>00891     <span class="keyword">virtual</span> State <a class="code" href="classKDoubleValidator.html#a27a800547778744a97bb2a80844ccf77" title="Overloaded for internal reasons.">validate</a>( <a class="codeRef" href="qstring.html">QString</a>&amp; str, <span class="keywordtype">int</span>&amp; pos ) <span class="keyword">const</span>;
<a name="l00892"></a>00892 
<a name="l00893"></a>00893 <span class="keyword">private</span>:
<a name="l00894"></a>00894     <a class="code" href="classKDoubleSpinBox.html" title="A spin box for fractional numbers.">KDoubleSpinBox</a> *spinBox;
<a name="l00895"></a>00895 };
<a name="l00896"></a>00896 
<a name="l00897"></a>00897 QValidator::State <a class="code" href="classKDoubleValidator.html#a27a800547778744a97bb2a80844ccf77" title="Overloaded for internal reasons.">KDoubleSpinBoxValidator::validate</a>( <a class="codeRef" href="qstring.html">QString</a>&amp; str, <span class="keywordtype">int</span>&amp; pos )<span class="keyword"> const</span>
<a name="l00898"></a>00898 <span class="keyword"></span>{
<a name="l00899"></a>00899     <a class="codeRef" href="qstring.html">QString</a> pref = spinBox-&gt;prefix();
<a name="l00900"></a>00900     <a class="codeRef" href="qstring.html">QString</a> suff = spinBox-&gt;suffix();
<a name="l00901"></a>00901     <a class="codeRef" href="qstring.html">QString</a> suffStriped = suff.<a class="codeRef" href="qstring.html#stripWhiteSpace">stripWhiteSpace</a>();
<a name="l00902"></a>00902     uint overhead = pref.<a class="codeRef" href="qstring.html#length">length</a>() + suff.<a class="codeRef" href="qstring.html#length">length</a>();
<a name="l00903"></a>00903     State state = Invalid;
<a name="l00904"></a>00904 
<a name="l00905"></a>00905     <span class="keywordflow">if</span> ( overhead == 0 ) {
<a name="l00906"></a>00906         state = <a class="code" href="classKDoubleValidator.html#a27a800547778744a97bb2a80844ccf77" title="Overloaded for internal reasons.">KDoubleValidator::validate</a>( str, pos );
<a name="l00907"></a>00907     } <span class="keywordflow">else</span> {
<a name="l00908"></a>00908         <span class="keywordtype">bool</span> stripedVersion = <span class="keyword">false</span>;
<a name="l00909"></a>00909         <span class="keywordflow">if</span> ( str.<a class="codeRef" href="qstring.html#length">length</a>() &gt;= overhead &amp;&amp; str.<a class="codeRef" href="qstring.html#startsWith">startsWith</a>(pref)
<a name="l00910"></a>00910              &amp;&amp; (str.<a class="codeRef" href="qstring.html#endsWith">endsWith</a>(suff)
<a name="l00911"></a>00911                  || (stripedVersion = str.<a class="codeRef" href="qstring.html#endsWith">endsWith</a>(suffStriped))) ) {
<a name="l00912"></a>00912             <span class="keywordflow">if</span> ( stripedVersion )
<a name="l00913"></a>00913                 overhead = pref.<a class="codeRef" href="qstring.html#length">length</a>() + suffStriped.<a class="codeRef" href="qstring.html#length">length</a>();
<a name="l00914"></a>00914             <a class="codeRef" href="qstring.html">QString</a> core = str.<a class="codeRef" href="qstring.html#mid">mid</a>( pref.<a class="codeRef" href="qstring.html#length">length</a>(), str.<a class="codeRef" href="qstring.html#length">length</a>() - overhead );
<a name="l00915"></a>00915             <span class="keywordtype">int</span> corePos = pos - pref.<a class="codeRef" href="qstring.html#length">length</a>();
<a name="l00916"></a>00916             state = <a class="code" href="classKDoubleValidator.html#a27a800547778744a97bb2a80844ccf77" title="Overloaded for internal reasons.">KDoubleValidator::validate</a>( core, corePos );
<a name="l00917"></a>00917             pos = corePos + pref.<a class="codeRef" href="qstring.html#length">length</a>();
<a name="l00918"></a>00918             str.<a class="codeRef" href="qstring.html#replace">replace</a>( pref.<a class="codeRef" href="qstring.html#length">length</a>(), str.<a class="codeRef" href="qstring.html#length">length</a>() - overhead, core );
<a name="l00919"></a>00919         } <span class="keywordflow">else</span> {
<a name="l00920"></a>00920             state = <a class="code" href="classKDoubleValidator.html#a27a800547778744a97bb2a80844ccf77" title="Overloaded for internal reasons.">KDoubleValidator::validate</a>( str, pos );
<a name="l00921"></a>00921             <span class="keywordflow">if</span> ( state == Invalid ) {
<a name="l00922"></a>00922                 <span class="comment">// stripWhiteSpace(), cf. QSpinBox::interpretText()</span>
<a name="l00923"></a>00923                 <a class="codeRef" href="qstring.html">QString</a> special = spinBox-&gt;specialValueText().<a class="codeRef" href="qstring.html#stripWhiteSpace">stripWhiteSpace</a>();
<a name="l00924"></a>00924                 <a class="codeRef" href="qstring.html">QString</a> candidate = str.<a class="codeRef" href="qstring.html#stripWhiteSpace">stripWhiteSpace</a>();
<a name="l00925"></a>00925 
<a name="l00926"></a>00926                 <span class="keywordflow">if</span> ( special.<a class="codeRef" href="qstring.html#startsWith">startsWith</a>(candidate) ) {
<a name="l00927"></a>00927                     <span class="keywordflow">if</span> ( candidate.<a class="codeRef" href="qstring.html#length">length</a>() == special.<a class="codeRef" href="qstring.html#length">length</a>() ) {
<a name="l00928"></a>00928                         state = Acceptable;
<a name="l00929"></a>00929                     } <span class="keywordflow">else</span> {
<a name="l00930"></a>00930                         state = Intermediate;
<a name="l00931"></a>00931                     }
<a name="l00932"></a>00932                 }
<a name="l00933"></a>00933             }
<a name="l00934"></a>00934         }
<a name="l00935"></a>00935     }
<a name="l00936"></a>00936     <span class="keywordflow">return</span> state;
<a name="l00937"></a>00937 }
<a name="l00938"></a>00938 
<a name="l00939"></a>00939 <span class="comment">// We use a kind of fixed-point arithmetic to represent the range of</span>
<a name="l00940"></a>00940 <span class="comment">// doubles [mLower,mUpper] in steps of 10^(-mPrecision). Thus, the</span>
<a name="l00941"></a>00941 <span class="comment">// following relations hold:</span>
<a name="l00942"></a>00942 <span class="comment">//</span>
<a name="l00943"></a>00943 <span class="comment">// 1. factor = 10^mPrecision</span>
<a name="l00944"></a>00944 <span class="comment">// 2. basicStep = 1/factor = 10^(-mPrecision);</span>
<a name="l00945"></a>00945 <span class="comment">// 3. lowerInt = lower * factor;</span>
<a name="l00946"></a>00946 <span class="comment">// 4. upperInt = upper * factor;</span>
<a name="l00947"></a>00947 <span class="comment">// 5. lower = lowerInt * basicStep;</span>
<a name="l00948"></a>00948 <span class="comment">// 6. upper = upperInt * basicStep;</span>
<a name="l00949"></a>00949 <span class="keyword">class </span>KDoubleSpinBox::Private {
<a name="l00950"></a>00950 <span class="keyword">public</span>:
<a name="l00951"></a>00951   Private( <span class="keywordtype">int</span> precision=1 )
<a name="l00952"></a>00952     : mPrecision( precision ),
<a name="l00953"></a>00953       mValidator( 0 )
<a name="l00954"></a>00954   {
<a name="l00955"></a>00955   }
<a name="l00956"></a>00956 
<a name="l00957"></a>00957   <span class="keywordtype">int</span> factor()<span class="keyword"> const </span>{
<a name="l00958"></a>00958     <span class="keywordtype">int</span> f = 1;
<a name="l00959"></a>00959     <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0 ; i &lt; mPrecision ; ++i ) f *= 10;
<a name="l00960"></a>00960     <span class="keywordflow">return</span> f;
<a name="l00961"></a>00961   }
<a name="l00962"></a>00962 
<a name="l00963"></a>00963   <span class="keywordtype">double</span> basicStep()<span class="keyword"> const </span>{
<a name="l00964"></a>00964     <span class="keywordflow">return</span> 1.0/double(factor());
<a name="l00965"></a>00965   }
<a name="l00966"></a>00966 
<a name="l00967"></a>00967   <span class="keywordtype">int</span> mapToInt( <span class="keywordtype">double</span> value, <span class="keywordtype">bool</span> * ok )<span class="keyword"> const </span>{
<a name="l00968"></a>00968     assert( ok );
<a name="l00969"></a>00969     <span class="keyword">const</span> <span class="keywordtype">double</span> f = factor();
<a name="l00970"></a>00970     <span class="keywordflow">if</span> ( value &gt; <span class="keywordtype">double</span>(INT_MAX) / f ) {
<a name="l00971"></a>00971       <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ga9acd682001598171edf8ecb104fdad2b">kdWarning</a>() &lt;&lt; <span class="stringliteral">&quot;KDoubleSpinBox: can&#39;t represent value &quot;</span> &lt;&lt; value
<a name="l00972"></a>00972           &lt;&lt; <span class="stringliteral">&quot;in terms of fixed-point numbers with precision &quot;</span>
<a name="l00973"></a>00973           &lt;&lt; mPrecision &lt;&lt; <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ga313d520ed8f8f6b46eeef22cfb3b082a">endl</a>;
<a name="l00974"></a>00974       *ok = <span class="keyword">false</span>;
<a name="l00975"></a>00975       <span class="keywordflow">return</span> INT_MAX;
<a name="l00976"></a>00976     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( value &lt; <span class="keywordtype">double</span>(INT_MIN) / f ) {
<a name="l00977"></a>00977       <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ga9acd682001598171edf8ecb104fdad2b">kdWarning</a>() &lt;&lt; <span class="stringliteral">&quot;KDoubleSpinBox: can&#39;t represent value &quot;</span> &lt;&lt; value
<a name="l00978"></a>00978           &lt;&lt; <span class="stringliteral">&quot;in terms of fixed-point numbers with precision &quot;</span>
<a name="l00979"></a>00979           &lt;&lt; mPrecision &lt;&lt; <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ga313d520ed8f8f6b46eeef22cfb3b082a">endl</a>;
<a name="l00980"></a>00980       *ok = <span class="keyword">false</span>;
<a name="l00981"></a>00981       <span class="keywordflow">return</span> INT_MIN;
<a name="l00982"></a>00982     } <span class="keywordflow">else</span> {
<a name="l00983"></a>00983       *ok = <span class="keyword">true</span>;
<a name="l00984"></a>00984       <span class="keywordflow">return</span> int( value * f + ( value &lt; 0 ? -0.5 : 0.5 ) );
<a name="l00985"></a>00985     }
<a name="l00986"></a>00986   }
<a name="l00987"></a>00987 
<a name="l00988"></a>00988   <span class="keywordtype">double</span> mapToDouble( <span class="keywordtype">int</span> value )<span class="keyword"> const </span>{
<a name="l00989"></a>00989     <span class="keywordflow">return</span> double(value) * basicStep();
<a name="l00990"></a>00990   }
<a name="l00991"></a>00991 
<a name="l00992"></a>00992   <span class="keywordtype">int</span> mPrecision;
<a name="l00993"></a>00993   KDoubleSpinBoxValidator * mValidator;
<a name="l00994"></a>00994 };
<a name="l00995"></a>00995 
<a name="l00996"></a><a class="code" href="classKDoubleSpinBox.html#ad4bed6db774d21c449d5158b48905103">00996</a> <a class="code" href="classKDoubleSpinBox.html#ad4bed6db774d21c449d5158b48905103" title="Constructs a KDoubleSpinBox with parent parent and default values for range and value (whatever QRang...">KDoubleSpinBox::KDoubleSpinBox</a>( <a class="codeRef" href="qwidget.html">QWidget</a> * parent, <span class="keyword">const</span> <span class="keywordtype">char</span> * name )
<a name="l00997"></a>00997   : <a class="codeRef" href="qspinbox.html">QSpinBox</a>( parent, name )
<a name="l00998"></a>00998 {
<a name="l00999"></a>00999   <a class="codeRef" href="qspinbox.html#editor">editor</a>()-&gt;setAlignment( Qt::AlignRight );
<a name="l01000"></a>01000   d = <span class="keyword">new</span> Private();
<a name="l01001"></a>01001   updateValidator();
<a name="l01002"></a>01002   connect( <span class="keyword">this</span>, SIGNAL(<a class="code" href="classKDoubleSpinBox.html#ab9bba11d0d94f29748ad187f646fb1cb" title="Emitted whenever QSpinBox::valueChanged( int ) is emitted.">valueChanged</a>(<span class="keywordtype">int</span>)), SLOT(slotValueChanged(<span class="keywordtype">int</span>)) );
<a name="l01003"></a>01003 }
<a name="l01004"></a>01004 
<a name="l01005"></a><a class="code" href="classKDoubleSpinBox.html#a3efae91041aeb2fa441b942a9e48767d">01005</a> <a class="code" href="classKDoubleSpinBox.html#ad4bed6db774d21c449d5158b48905103" title="Constructs a KDoubleSpinBox with parent parent and default values for range and value (whatever QRang...">KDoubleSpinBox::KDoubleSpinBox</a>( <span class="keywordtype">double</span> lower, <span class="keywordtype">double</span> upper, <span class="keywordtype">double</span> step,
<a name="l01006"></a>01006                 <span class="keywordtype">double</span> value, <span class="keywordtype">int</span> precision,
<a name="l01007"></a>01007                 <a class="codeRef" href="qwidget.html">QWidget</a> * parent, <span class="keyword">const</span> <span class="keywordtype">char</span> * name )
<a name="l01008"></a>01008   : <a class="codeRef" href="qspinbox.html">QSpinBox</a>( parent, name )
<a name="l01009"></a>01009 {
<a name="l01010"></a>01010   <a class="codeRef" href="qspinbox.html#editor">editor</a>()-&gt;setAlignment( Qt::AlignRight );
<a name="l01011"></a>01011   d = <span class="keyword">new</span> Private();
<a name="l01012"></a>01012   <a class="code" href="classKDoubleSpinBox.html#a3c167e18797662a09878725a2395d2c1" title="Sets a new range for the spin box values.">setRange</a>( lower, upper, step, precision );
<a name="l01013"></a>01013   <a class="code" href="classKDoubleSpinBox.html#a404fc43b66df8bbf642c3dcb0ec11347" title="Sets the current value to value, subject to the constraints that value is first rounded to the curren...">setValue</a>( value );
<a name="l01014"></a>01014   connect( <span class="keyword">this</span>, SIGNAL(<a class="code" href="classKDoubleSpinBox.html#ab9bba11d0d94f29748ad187f646fb1cb" title="Emitted whenever QSpinBox::valueChanged( int ) is emitted.">valueChanged</a>(<span class="keywordtype">int</span>)), SLOT(slotValueChanged(<span class="keywordtype">int</span>)) );
<a name="l01015"></a>01015 }
<a name="l01016"></a>01016 
<a name="l01017"></a>01017 KDoubleSpinBox::~KDoubleSpinBox() {
<a name="l01018"></a>01018   <span class="keyword">delete</span> d; d = 0;
<a name="l01019"></a>01019 }
<a name="l01020"></a>01020 
<a name="l01021"></a>01021 <span class="keywordtype">bool</span> <a class="code" href="classKDoubleSpinBox.html#a73edd1ee1a4668a87f80b35a532663cb">KDoubleSpinBox::acceptLocalizedNumbers</a>()<span class="keyword"> const </span>{
<a name="l01022"></a>01022   <span class="keywordflow">if</span> ( !d-&gt;mValidator ) <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// we&#39;ll set one that does;</span>
<a name="l01023"></a>01023                                      <span class="comment">// can&#39;t do it now, since we&#39;re const</span>
<a name="l01024"></a>01024   <span class="keywordflow">return</span> d-&gt;mValidator-&gt;acceptLocalizedNumbers();
<a name="l01025"></a>01025 }
<a name="l01026"></a>01026 
<a name="l01027"></a><a class="code" href="classKDoubleSpinBox.html#a8c67566837995df7a606f818878bd626">01027</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleSpinBox.html#a8c67566837995df7a606f818878bd626" title="Sets whether to use and accept localized numbers as returned by KLocale::formatNumber()">KDoubleSpinBox::setAcceptLocalizedNumbers</a>( <span class="keywordtype">bool</span> accept ) {
<a name="l01028"></a>01028   <span class="keywordflow">if</span> ( !d-&gt;mValidator ) updateValidator();
<a name="l01029"></a>01029   d-&gt;mValidator-&gt;setAcceptLocalizedNumbers( accept );
<a name="l01030"></a>01030 }
<a name="l01031"></a>01031 
<a name="l01032"></a><a class="code" href="classKDoubleSpinBox.html#a3c167e18797662a09878725a2395d2c1">01032</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleSpinBox.html#a3c167e18797662a09878725a2395d2c1" title="Sets a new range for the spin box values.">KDoubleSpinBox::setRange</a>( <span class="keywordtype">double</span> lower, <span class="keywordtype">double</span> upper, <span class="keywordtype">double</span> step,
<a name="l01033"></a>01033                    <span class="keywordtype">int</span> precision ) {
<a name="l01034"></a>01034   lower = kMin(upper, lower);
<a name="l01035"></a>01035   upper = kMax(upper, lower);
<a name="l01036"></a>01036   <a class="code" href="classKDoubleSpinBox.html#a22301d0541d7b02fd4bda6f99fa033cb" title="Equivalent to setPrecision( precision, false ); Needed since Qt&#39;s moc doesn&#39;t ignore trailing paramet...">setPrecision</a>( precision, <span class="keyword">true</span> ); <span class="comment">// disable bounds checking, since</span>
<a name="l01037"></a>01037   <a class="code" href="classKDoubleSpinBox.html#a7b63696ae3cc88d2db86087b698901ca" title="Sets the lower bound of the range to value, subject to the contraints that value is first rounded to ...">setMinValue</a>( lower );            <span class="comment">// it&#39;s done in set{Min,Max}Value</span>
<a name="l01038"></a>01038   <a class="code" href="classKDoubleSpinBox.html#a6ffa2c0a25a32c94f50546bf4db6c5da" title="Sets the upper bound of the range to value, subject to the contraints that value is first rounded to ...">setMaxValue</a>( upper );            <span class="comment">// anyway and we want lower, upper</span>
<a name="l01039"></a>01039   <a class="code" href="classKDoubleSpinBox.html#a89e10ec8da85a2b2a0cfe4bc5e7f685a" title="Sets the step size for clicking the up/down buttons to step, subject to the constraints that step is ...">setLineStep</a>( step );             <span class="comment">// and step to have the right precision</span>
<a name="l01040"></a>01040 }
<a name="l01041"></a>01041 
<a name="l01042"></a>01042 <span class="keywordtype">int</span> <a class="code" href="classKDoubleSpinBox.html#a335d82566a1a142f26641a15d8f93a98">KDoubleSpinBox::precision</a>()<span class="keyword"> const </span>{
<a name="l01043"></a>01043   <span class="keywordflow">return</span> d-&gt;mPrecision;
<a name="l01044"></a>01044 }
<a name="l01045"></a>01045 
<a name="l01046"></a><a class="code" href="classKDoubleSpinBox.html#a22301d0541d7b02fd4bda6f99fa033cb">01046</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleSpinBox.html#a22301d0541d7b02fd4bda6f99fa033cb" title="Equivalent to setPrecision( precision, false ); Needed since Qt&#39;s moc doesn&#39;t ignore trailing paramet...">KDoubleSpinBox::setPrecision</a>( <span class="keywordtype">int</span> precision ) {
<a name="l01047"></a>01047     <a class="code" href="classKDoubleSpinBox.html#a22301d0541d7b02fd4bda6f99fa033cb" title="Equivalent to setPrecision( precision, false ); Needed since Qt&#39;s moc doesn&#39;t ignore trailing paramet...">setPrecision</a>( precision, <span class="keyword">false</span> );
<a name="l01048"></a>01048 }
<a name="l01049"></a>01049 
<a name="l01050"></a><a class="code" href="classKDoubleSpinBox.html#a15d39c6d770f137d36edf021bc912cd9">01050</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleSpinBox.html#a22301d0541d7b02fd4bda6f99fa033cb" title="Equivalent to setPrecision( precision, false ); Needed since Qt&#39;s moc doesn&#39;t ignore trailing paramet...">KDoubleSpinBox::setPrecision</a>( <span class="keywordtype">int</span> precision, <span class="keywordtype">bool</span> force ) {
<a name="l01051"></a>01051   <span class="keywordflow">if</span> ( precision &lt; 1 ) <span class="keywordflow">return</span>;
<a name="l01052"></a>01052   <span class="keywordflow">if</span> ( !force ) {
<a name="l01053"></a>01053     <span class="keywordtype">int</span> maxPrec = maxPrecision();
<a name="l01054"></a>01054     <span class="keywordflow">if</span> ( precision &gt; maxPrec )
<a name="l01055"></a>01055       precision = maxPrec;
<a name="l01056"></a>01056   }
<a name="l01057"></a>01057   d-&gt;mPrecision = <a class="code" href="classKDoubleSpinBox.html#a335d82566a1a142f26641a15d8f93a98">precision</a>;
<a name="l01058"></a>01058   updateValidator();
<a name="l01059"></a>01059 }
<a name="l01060"></a>01060 
<a name="l01061"></a>01061 <span class="keywordtype">int</span> KDoubleSpinBox::maxPrecision()<span class="keyword"> const </span>{
<a name="l01062"></a>01062     <span class="comment">// INT_MAX must be &gt; maxAbsValue * 10^precision</span>
<a name="l01063"></a>01063     <span class="comment">// ==&gt; 10^precision &lt; INT_MAX / maxAbsValue</span>
<a name="l01064"></a>01064     <span class="comment">// ==&gt; precision &lt; log10 ( INT_MAX / maxAbsValue )</span>
<a name="l01065"></a>01065     <span class="comment">// ==&gt; maxPrecision = floor( log10 ( INT_MAX / maxAbsValue ) );</span>
<a name="l01066"></a>01066     <span class="keywordtype">double</span> maxAbsValue = kMax( fabs(<a class="code" href="classKDoubleSpinBox.html#afc3ca6fff31e52da68feb5f92945c490">minValue</a>()), fabs(<a class="code" href="classKDoubleSpinBox.html#a3e40371d0d30f2ad3693dd347a43d1ac">maxValue</a>()) );
<a name="l01067"></a>01067     <span class="keywordflow">if</span> ( maxAbsValue == 0 ) <span class="keywordflow">return</span> 6; <span class="comment">// return arbitrary value to avoid dbz...</span>
<a name="l01068"></a>01068 
<a name="l01069"></a>01069     <span class="keywordflow">return</span> int( floor( log10( <span class="keywordtype">double</span>(INT_MAX) / maxAbsValue ) ) );
<a name="l01070"></a>01070 }
<a name="l01071"></a>01071 
<a name="l01072"></a><a class="code" href="classKDoubleSpinBox.html#acbb923191f05ea8f3569df03408c934b">01072</a> <span class="keywordtype">double</span> <a class="code" href="classKDoubleSpinBox.html#acbb923191f05ea8f3569df03408c934b">KDoubleSpinBox::value</a>()<span class="keyword"> const </span>{
<a name="l01073"></a>01073   <span class="keywordflow">return</span> d-&gt;mapToDouble( <a class="codeRef" href="qspinbox.html#value">base::value</a>() );
<a name="l01074"></a>01074 }
<a name="l01075"></a>01075 
<a name="l01076"></a><a class="code" href="classKDoubleSpinBox.html#a404fc43b66df8bbf642c3dcb0ec11347">01076</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleSpinBox.html#a404fc43b66df8bbf642c3dcb0ec11347" title="Sets the current value to value, subject to the constraints that value is first rounded to the curren...">KDoubleSpinBox::setValue</a>( <span class="keywordtype">double</span> value ) {
<a name="l01077"></a>01077     <span class="keywordflow">if</span> ( value == this-&gt;<a class="code" href="classKDoubleSpinBox.html#acbb923191f05ea8f3569df03408c934b">value</a>() ) <span class="keywordflow">return</span>;
<a name="l01078"></a>01078     <span class="keywordflow">if</span> ( value &lt; <a class="code" href="classKDoubleSpinBox.html#afc3ca6fff31e52da68feb5f92945c490">minValue</a>() )
<a name="l01079"></a>01079     <a class="codeRef" href="qspinbox.html#setValue">base::setValue</a>( <a class="codeRef" href="qspinbox.html#minValue">base::minValue</a>() );
<a name="l01080"></a>01080     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( value &gt; <a class="code" href="classKDoubleSpinBox.html#a3e40371d0d30f2ad3693dd347a43d1ac">maxValue</a>() )
<a name="l01081"></a>01081     <a class="codeRef" href="qspinbox.html#setValue">base::setValue</a>( <a class="codeRef" href="qspinbox.html#maxValue">base::maxValue</a>() );
<a name="l01082"></a>01082     <span class="keywordflow">else</span> {
<a name="l01083"></a>01083     <span class="keywordtype">bool</span> ok = <span class="keyword">false</span>;
<a name="l01084"></a>01084     <a class="codeRef" href="qspinbox.html#setValue">base::setValue</a>( d-&gt;mapToInt( value, &amp;ok ) );
<a name="l01085"></a>01085     assert( ok );
<a name="l01086"></a>01086     }
<a name="l01087"></a>01087 }
<a name="l01088"></a>01088 
<a name="l01089"></a><a class="code" href="classKDoubleSpinBox.html#afc3ca6fff31e52da68feb5f92945c490">01089</a> <span class="keywordtype">double</span> <a class="code" href="classKDoubleSpinBox.html#afc3ca6fff31e52da68feb5f92945c490">KDoubleSpinBox::minValue</a>()<span class="keyword"> const </span>{
<a name="l01090"></a>01090   <span class="keywordflow">return</span> d-&gt;mapToDouble( <a class="codeRef" href="qspinbox.html#minValue">base::minValue</a>() );
<a name="l01091"></a>01091 }
<a name="l01092"></a>01092 
<a name="l01093"></a><a class="code" href="classKDoubleSpinBox.html#a7b63696ae3cc88d2db86087b698901ca">01093</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleSpinBox.html#a7b63696ae3cc88d2db86087b698901ca" title="Sets the lower bound of the range to value, subject to the contraints that value is first rounded to ...">KDoubleSpinBox::setMinValue</a>( <span class="keywordtype">double</span> value ) {
<a name="l01094"></a>01094   <span class="keywordtype">bool</span> ok = <span class="keyword">false</span>;
<a name="l01095"></a>01095   <span class="keywordtype">int</span> min = d-&gt;mapToInt( value, &amp;ok );
<a name="l01096"></a>01096   <span class="keywordflow">if</span> ( !ok ) <span class="keywordflow">return</span>;
<a name="l01097"></a>01097   <a class="codeRef" href="qspinbox.html#setMinValue">base::setMinValue</a>( min );
<a name="l01098"></a>01098   updateValidator();
<a name="l01099"></a>01099 }
<a name="l01100"></a>01100 
<a name="l01101"></a>01101 
<a name="l01102"></a><a class="code" href="classKDoubleSpinBox.html#a3e40371d0d30f2ad3693dd347a43d1ac">01102</a> <span class="keywordtype">double</span> <a class="code" href="classKDoubleSpinBox.html#a3e40371d0d30f2ad3693dd347a43d1ac">KDoubleSpinBox::maxValue</a>()<span class="keyword"> const </span>{
<a name="l01103"></a>01103   <span class="keywordflow">return</span> d-&gt;mapToDouble( <a class="codeRef" href="qspinbox.html#maxValue">base::maxValue</a>() );
<a name="l01104"></a>01104 }
<a name="l01105"></a>01105 
<a name="l01106"></a><a class="code" href="classKDoubleSpinBox.html#a6ffa2c0a25a32c94f50546bf4db6c5da">01106</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleSpinBox.html#a6ffa2c0a25a32c94f50546bf4db6c5da" title="Sets the upper bound of the range to value, subject to the contraints that value is first rounded to ...">KDoubleSpinBox::setMaxValue</a>( <span class="keywordtype">double</span> value ) {
<a name="l01107"></a>01107   <span class="keywordtype">bool</span> ok = <span class="keyword">false</span>;
<a name="l01108"></a>01108   <span class="keywordtype">int</span> max = d-&gt;mapToInt( value, &amp;ok );
<a name="l01109"></a>01109   <span class="keywordflow">if</span> ( !ok ) <span class="keywordflow">return</span>;
<a name="l01110"></a>01110   <a class="codeRef" href="qspinbox.html#setMaxValue">base::setMaxValue</a>( max );
<a name="l01111"></a>01111   updateValidator();
<a name="l01112"></a>01112 }
<a name="l01113"></a>01113 
<a name="l01114"></a><a class="code" href="classKDoubleSpinBox.html#a144cc440a5e1c871826868eda40e71d4">01114</a> <span class="keywordtype">double</span> <a class="code" href="classKDoubleSpinBox.html#a144cc440a5e1c871826868eda40e71d4">KDoubleSpinBox::lineStep</a>()<span class="keyword"> const </span>{
<a name="l01115"></a>01115   <span class="keywordflow">return</span> d-&gt;mapToDouble( <a class="codeRef" href="qspinbox.html#lineStep">base::lineStep</a>() );
<a name="l01116"></a>01116 }
<a name="l01117"></a>01117 
<a name="l01118"></a><a class="code" href="classKDoubleSpinBox.html#a89e10ec8da85a2b2a0cfe4bc5e7f685a">01118</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleSpinBox.html#a89e10ec8da85a2b2a0cfe4bc5e7f685a" title="Sets the step size for clicking the up/down buttons to step, subject to the constraints that step is ...">KDoubleSpinBox::setLineStep</a>( <span class="keywordtype">double</span> step ) {
<a name="l01119"></a>01119   <span class="keywordtype">bool</span> ok = <span class="keyword">false</span>;
<a name="l01120"></a>01120   <span class="keywordflow">if</span> ( step &gt; <a class="code" href="classKDoubleSpinBox.html#a3e40371d0d30f2ad3693dd347a43d1ac">maxValue</a>() - <a class="code" href="classKDoubleSpinBox.html#afc3ca6fff31e52da68feb5f92945c490">minValue</a>() )
<a name="l01121"></a>01121     <a class="codeRef" href="qspinbox.html#setLineStep">base::setLineStep</a>( 1 );
<a name="l01122"></a>01122   <span class="keywordflow">else</span>
<a name="l01123"></a>01123     <a class="codeRef" href="qspinbox.html#setLineStep">base::setLineStep</a>( kMax( d-&gt;mapToInt( step, &amp;ok ), 1 ) );
<a name="l01124"></a>01124 }
<a name="l01125"></a>01125 
<a name="l01126"></a>01126 <a class="codeRef" href="qstring.html">QString</a> KDoubleSpinBox::mapValueToText( <span class="keywordtype">int</span> value ) {
<a name="l01127"></a>01127   <span class="keywordflow">if</span> ( <a class="code" href="classKDoubleSpinBox.html#a73edd1ee1a4668a87f80b35a532663cb">acceptLocalizedNumbers</a>() )
<a name="l01128"></a>01128     <span class="keywordflow">return</span> <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKGlobal.html#a8c3e5ecff78f674b94eadfe0eae067e1">KGlobal::locale</a>()
<a name="l01129"></a>01129       -&gt;<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKLocale.html#a52b2ef4c19dafcc310d754cbd795531d">formatNumber</a>( d-&gt;mapToDouble( value ), d-&gt;mPrecision );
<a name="l01130"></a>01130   <span class="keywordflow">else</span>
<a name="l01131"></a>01131     <span class="keywordflow">return</span> <a class="codeRef" href="qstring.html">QString</a>().<a class="codeRef" href="qstring.html#setNum">setNum</a>( d-&gt;mapToDouble( value ), <span class="charliteral">&#39;f&#39;</span>, d-&gt;mPrecision );
<a name="l01132"></a>01132 }
<a name="l01133"></a>01133 
<a name="l01134"></a>01134 <span class="keywordtype">int</span> KDoubleSpinBox::mapTextToValue( <span class="keywordtype">bool</span> * ok ) {
<a name="l01135"></a>01135   <span class="keywordtype">double</span> <a class="code" href="classKDoubleSpinBox.html#acbb923191f05ea8f3569df03408c934b">value</a>;
<a name="l01136"></a>01136   <span class="keywordflow">if</span> ( <a class="code" href="classKDoubleSpinBox.html#a73edd1ee1a4668a87f80b35a532663cb">acceptLocalizedNumbers</a>() )
<a name="l01137"></a>01137     value = <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKGlobal.html#a8c3e5ecff78f674b94eadfe0eae067e1">KGlobal::locale</a>()-&gt;<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKLocale.html#a1a9ba53d06c09b1ad723e2c7514d501f">readNumber</a>( <a class="codeRef" href="qspinbox.html#cleanText">cleanText</a>(), ok );
<a name="l01138"></a>01138   <span class="keywordflow">else</span>
<a name="l01139"></a>01139     value = <a class="codeRef" href="qspinbox.html#cleanText">cleanText</a>().toDouble( ok );
<a name="l01140"></a>01140   <span class="keywordflow">if</span> ( !*ok ) <span class="keywordflow">return</span> 0;
<a name="l01141"></a>01141   <span class="keywordflow">if</span> ( value &gt; <a class="code" href="classKDoubleSpinBox.html#a3e40371d0d30f2ad3693dd347a43d1ac">maxValue</a>() )
<a name="l01142"></a>01142     value = <a class="code" href="classKDoubleSpinBox.html#a3e40371d0d30f2ad3693dd347a43d1ac">maxValue</a>();
<a name="l01143"></a>01143   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( value &lt; <a class="code" href="classKDoubleSpinBox.html#afc3ca6fff31e52da68feb5f92945c490">minValue</a>() )
<a name="l01144"></a>01144     value = <a class="code" href="classKDoubleSpinBox.html#afc3ca6fff31e52da68feb5f92945c490">minValue</a>();
<a name="l01145"></a>01145   <span class="keywordflow">return</span> d-&gt;mapToInt( value, ok );
<a name="l01146"></a>01146 }
<a name="l01147"></a>01147 
<a name="l01148"></a><a class="code" href="classKDoubleSpinBox.html#a2e230a708a3d24105b887e234bab6dec">01148</a> <span class="keywordtype">void</span> <a class="code" href="classKDoubleSpinBox.html#a2e230a708a3d24105b887e234bab6dec" title="Overridden to ignore any setValidator() calls.">KDoubleSpinBox::setValidator</a>( <span class="keyword">const</span> <a class="codeRef" href="qvalidator.html">QValidator</a> * ) {
<a name="l01149"></a>01149   <span class="comment">// silently discard the new validator. We don&#39;t want another one ;-)</span>
<a name="l01150"></a>01150 }
<a name="l01151"></a>01151 
<a name="l01152"></a>01152 <span class="keywordtype">void</span> KDoubleSpinBox::slotValueChanged( <span class="keywordtype">int</span> value ) {
<a name="l01153"></a>01153   emit <a class="code" href="classKDoubleSpinBox.html#ab9bba11d0d94f29748ad187f646fb1cb" title="Emitted whenever QSpinBox::valueChanged( int ) is emitted.">valueChanged</a>( d-&gt;mapToDouble( value ) );
<a name="l01154"></a>01154 }
<a name="l01155"></a>01155 
<a name="l01156"></a>01156 <span class="keywordtype">void</span> KDoubleSpinBox::updateValidator() {
<a name="l01157"></a>01157   <span class="keywordflow">if</span> ( !d-&gt;mValidator ) {
<a name="l01158"></a>01158     d-&gt;mValidator =  <span class="keyword">new</span> KDoubleSpinBoxValidator( <a class="code" href="classKDoubleSpinBox.html#afc3ca6fff31e52da68feb5f92945c490">minValue</a>(), <a class="code" href="classKDoubleSpinBox.html#a3e40371d0d30f2ad3693dd347a43d1ac">maxValue</a>(), <a class="code" href="classKDoubleSpinBox.html#a335d82566a1a142f26641a15d8f93a98">precision</a>(),
<a name="l01159"></a>01159                        <span class="keyword">this</span>, <span class="stringliteral">&quot;d-&gt;mValidator&quot;</span> );
<a name="l01160"></a>01160     <a class="codeRef" href="qspinbox.html#setValidator">base::setValidator</a>( d-&gt;mValidator );
<a name="l01161"></a>01161   } <span class="keywordflow">else</span>
<a name="l01162"></a>01162     d-&gt;mValidator-&gt;setRange( <a class="code" href="classKDoubleSpinBox.html#afc3ca6fff31e52da68feb5f92945c490">minValue</a>(), <a class="code" href="classKDoubleSpinBox.html#a3e40371d0d30f2ad3693dd347a43d1ac">maxValue</a>(), <a class="code" href="classKDoubleSpinBox.html#a335d82566a1a142f26641a15d8f93a98">precision</a>() );
<a name="l01163"></a>01163 }
<a name="l01164"></a>01164 
<a name="l01165"></a>01165 <span class="keywordtype">void</span> KNumInput::virtual_hook( <span class="keywordtype">int</span>, <span class="keywordtype">void</span>* )
<a name="l01166"></a>01166 { <span class="comment">/*BASE::virtual_hook( id, data );*/</span> }
<a name="l01167"></a>01167 
<a name="l01168"></a>01168 <span class="keywordtype">void</span> KIntNumInput::virtual_hook( <span class="keywordtype">int</span> <span class="keywordtype">id</span>, <span class="keywordtype">void</span>* data )
<a name="l01169"></a>01169 { KNumInput::virtual_hook( <span class="keywordtype">id</span>, data ); }
<a name="l01170"></a>01170 
<a name="l01171"></a>01171 <span class="keywordtype">void</span> KDoubleNumInput::virtual_hook( <span class="keywordtype">int</span> <span class="keywordtype">id</span>, <span class="keywordtype">void</span>* data )
<a name="l01172"></a>01172 { KNumInput::virtual_hook( <span class="keywordtype">id</span>, data ); }
<a name="l01173"></a>01173 
<a name="l01174"></a>01174 <span class="keywordtype">void</span> KIntSpinBox::virtual_hook( <span class="keywordtype">int</span>, <span class="keywordtype">void</span>* )
<a name="l01175"></a>01175 { <span class="comment">/*BASE::virtual_hook( id, data );*/</span> }
<a name="l01176"></a>01176 
<a name="l01177"></a>01177 <span class="keywordtype">void</span> KDoubleSpinBox::virtual_hook( <span class="keywordtype">int</span>, <span class="keywordtype">void</span>* )
<a name="l01178"></a>01178 { <span class="comment">/*BASE::virtual_hook( id, data );*/</span> }
<a name="l01179"></a>01179 
<a name="l01180"></a>01180 <span class="preprocessor">#include &quot;knuminput.moc&quot;</span>
</pre></div></div>
</div>
    </div></div>


      </td>
  </tr>
  <tr>
    <td valign="top" id="leftmenu" width="25%">
      <a name="navigation"></a>
      <div class="menu_box"><h2>kdeui</h2>
<div class="nav_list">
<ul><li><a href="index.html">Main Page</a></li><li><a href="namespaces.html">Namespace List</a></li><li><a href="hierarchy.html">Class Hierarchy</a></li><li><a href="classes.html">Alphabetical List</a></li><li><a href="annotated.html">Class List</a></li><li><a href="files.html">File List</a></li><li><a href="namespacemembers.html">Namespace Members</a></li><li><a href="functions.html">Class Members</a></li><li><a href="pages.html">Related Pages</a></li></ul>
<!--
<h2>Class Picker</h2>
<div style="text-align: center;">
<form name="guideform">
<select name="guidelinks" style="width:100%;" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value">
<option value="annotated.html">-- Choose --</option>
  <option value="classKAboutApplication.html">kaboutapplication</option>,  <option value="classKAboutContainer.html">kaboutcontainer</option>,  <option value="classKAboutContainerBase.html">kaboutcontainerbase</option>,  <option value="classKAboutContributor.html">kaboutcontributor</option>,  <option value="classKAboutDialog.html">kaboutdialog</option>,  <option value="classKAboutKDE.html">kaboutkde</option>,  <option value="classKAboutWidget.html">kaboutwidget</option>,  <option value="classKAccelGen_1_1Deref.html">kaccelgen::deref</option>,  <option value="classKAccelGen_1_1Deref__Key.html">kaccelgen::deref__key</option>,  <option value="classKAction.html">kaction</option>,  <option value="classKActionCollection.html">kactioncollection</option>,  <option value="classKActionMenu.html">kactionmenu</option>,  <option value="classKActionSelector.html">kactionselector</option>,  <option value="classKActiveLabel.html">kactivelabel</option>,  <option value="classKAnimWidget.html">kanimwidget</option>,  <option value="classKArrowButton.html">karrowbutton</option>,  <option value="classKAuthIcon.html">kauthicon</option>,  <option value="classKBugReport.html">kbugreport</option>,  <option value="classKButtonBox.html">kbuttonbox</option>,  <option value="classKCharSelect.html">kcharselect</option>,  <option value="classKCharSelectTable.html">kcharselecttable</option>,  <option value="classKCModule.html">kcmodule</option>,  <option value="classKColor.html">kcolor</option>,  <option value="classKColorButton.html">kcolorbutton</option>,  <option value="classKColorCells.html">kcolorcells</option>,  <option value="classKColorCombo.html">kcolorcombo</option>,  <option value="classKColorDialog.html">kcolordialog</option>,  <option value="classKColorDrag.html">kcolordrag</option>,  <option value="classKColorPatch.html">kcolorpatch</option>,  <option value="classKComboBox.html">kcombobox</option>,  <option value="classKCommand.html">kcommand</option>,  <option value="classKCommandHistory.html">kcommandhistory</option>,  <option value="classKCompletionBox.html">kcompletionbox</option>,  <option value="classKConfigDialog.html">kconfigdialog</option>,  <option value="classKContextMenuManager.html">kcontextmenumanager</option>,  <option value="classKCursor.html">kcursor</option>,  <option value="classKCursorPrivate.html">kcursorprivate</option>,  <option value="classKCursorPrivateAutoHideEventFilter.html">kcursorprivateautohideeventfilter</option>,  <option value="classKDateInternalMonthPicker.html">kdateinternalmonthpicker</option>,  <option value="classKDateInternalWeekSelector.html">kdateinternalweekselector</option>,  <option value="classKDateInternalYearSelector.html">kdateinternalyearselector</option>,  <option value="classKDatePicker.html">kdatepicker</option>,  <option value="classKDateTable.html">kdatetable</option>,  <option value="classKDateTimeWidget.html">kdatetimewidget</option>,  <option value="classKDateValidator.html">kdatevalidator</option>,  <option value="classKDateWidget.html">kdatewidget</option>,  <option value="classKDCOPActionProxy.html">kdcopactionproxy</option>,  <option value="classKDEPrivate_1_1ToolBarHandler.html">kdeprivate::toolbarhandler</option>,  <option value="classKDialog.html">kdialog</option>,  <option value="classKDialogBase.html">kdialogbase</option>,  <option value="classKDialogBaseButton.html">kdialogbasebutton</option>,  <option value="classKDialogBaseTile.html">kdialogbasetile</option>,  <option value="classKDictSpellingHighlighter.html">kdictspellinghighlighter</option>,  <option value="classKDockButton__Private.html">kdockbutton__private</option>,  <option value="classKDockMainWindow.html">kdockmainwindow</option>,  <option value="classKDockManager.html">kdockmanager</option>,  <option value="classKDockSplitter.html">kdocksplitter</option>,  <option value="classKDockTabGroup.html">kdocktabgroup</option>,  <option value="classKDockWidget.html">kdockwidget</option>,  <option value="classKDockWidgetAbstractHeader.html">kdockwidgetabstractheader</option>,  <option value="classKDockWidgetAbstractHeaderDrag.html">kdockwidgetabstractheaderdrag</option>,  <option value="classKDockWidgetHeader.html">kdockwidgetheader</option>,  <option value="classKDockWidgetHeaderDrag.html">kdockwidgetheaderdrag</option>,  <option value="classKDockWidgetPrivate.html">kdockwidgetprivate</option>,  <option value="classKDockWindow.html">kdockwindow</option>,  <option value="classKDoubleNumInput.html">kdoublenuminput</option>,  <option value="classKDoubleSpinBox.html">kdoublespinbox</option>,  <option value="classKDoubleValidator.html">kdoublevalidator</option>,  <option value="classKDualColorButton.html">kdualcolorbutton</option>,  <option value="classKEdit.html">kedit</option>,  <option value="classKEditListBox.html">keditlistbox</option>,  <option value="classKEditListBox_1_1CustomEditor.html">keditlistbox::customeditor</option>,  <option value="classKEditToolbar.html">kedittoolbar</option>,  <option value="classKEditToolbarWidget.html">kedittoolbarwidget</option>,  <option value="classKFloatValidator.html">kfloatvalidator</option>,  <option value="classKFontChooser.html">kfontchooser</option>,  <option value="classKFontCombo.html">kfontcombo</option>,  <option value="classKFontDialog.html">kfontdialog</option>,  <option value="classKFontRequester.html">kfontrequester</option>,  <option value="classKGradientSelector.html">kgradientselector</option>,  <option value="classKGuiItem.html">kguiitem</option>,  <option value="classKHelpMenu.html">khelpmenu</option>,  <option value="classKHistoryCombo.html">khistorycombo</option>,  <option value="classKHSSelector.html">khsselector</option>,  <option value="classKIconView.html">kiconview</option>,  <option value="classKIconViewItem.html">kiconviewitem</option>,  <option value="classKIconViewSearchLine.html">kiconviewsearchline</option>,  <option value="classKImageTrackLabel.html">kimagetracklabel</option>,  <option value="classKInputDialog.html">kinputdialog</option>,  <option value="classKIntNumInput.html">kintnuminput</option>,  <option value="classKIntSpinBox.html">kintspinbox</option>,  <option value="classKIntValidator.html">kintvalidator</option>,  <option value="classKJanusWidget.html">kjanuswidget</option>,  <option value="classKKeyButton.html">kkeybutton</option>,  <option value="classKKeyChooser.html">kkeychooser</option>,  <option value="classKKeyDialog.html">kkeydialog</option>,  <option value="classKLanguageButton.html">klanguagebutton</option>,  <option value="classKLed.html">kled</option>,  <option value="classKLineEdit.html">klineedit</option>,  <option value="classKLineEditDlg.html">klineeditdlg</option>,  <option value="classKListAction.html">klistaction</option>,  <option value="classKListBox.html">klistbox</option>,  <option value="classKListView.html">klistview</option>,  <option value="classKListViewItem.html">klistviewitem</option>,  <option value="classKListViewLineEdit.html">klistviewlineedit</option>,  <option value="classKListViewSearchLine.html">klistviewsearchline</option>,  <option value="classKListViewSearchLineWidget.html">klistviewsearchlinewidget</option>,  <option value="classKMacroCommand.html">kmacrocommand</option>,  <option value="classKMainWindow.html">kmainwindow</option>,  <option value="classKMainWindowInterface.html">kmainwindowinterface</option>,  <option value="classKMenuBar.html">kmenubar</option>,  <option value="classKMessageBox.html">kmessagebox</option>,  <option value="classKMimeTypeValidator.html">kmimetypevalidator</option>,  <option value="classKNamedCommand.html">knamedcommand</option>,  <option value="classKNumInput.html">knuminput</option>,  <option value="classKPaletteTable.html">kpalettetable</option>,  <option value="classKPanelApplet.html">kpanelapplet</option>,  <option value="classKPanelAppMenu.html">kpanelappmenu</option>,  <option value="classKPanelExtension.html">kpanelextension</option>,  <option value="classKPanelMenu.html">kpanelmenu</option>,  <option value="classKPassivePopup.html">kpassivepopup</option>,  <option value="classKPasswordDialog.html">kpassworddialog</option>,  <option value="classKPasswordEdit.html">kpasswordedit</option>,  <option value="classKPasteTextAction.html">kpastetextaction</option>,  <option value="classKPixmapIO.html">kpixmapio</option>,  <option value="classKPixmapRegionSelectorDialog.html">kpixmapregionselectordialog</option>,  <option value="classKPixmapRegionSelectorWidget.html">kpixmapregionselectorwidget</option>,  <option value="classKPopupFrame.html">kpopupframe</option>,  <option value="classKPopupMenu.html">kpopupmenu</option>,  <option value="classKPopupTitle.html">kpopuptitle</option>,  <option value="classKProgress.html">kprogress</option>,  <option value="classKProgressDialog.html">kprogressdialog</option>,  <option value="classKPushButton.html">kpushbutton</option>,  <option value="classKRadioAction.html">kradioaction</option>,  <option value="classKRecentFilesAction.html">krecentfilesaction</option>,  <option value="classKRestrictedLine.html">krestrictedline</option>,  <option value="classKRootPermsIcon.html">krootpermsicon</option>,  <option value="classKRootPixmap.html">krootpixmap</option>,  <option value="classKRuler.html">kruler</option>,  <option value="classKScrollView.html">kscrollview</option>,  <option value="classKSelectAction.html">kselectaction</option>,  <option value="classKSelector.html">kselector</option>,  <option value="classKSeparator.html">kseparator</option>,  <option value="classKShortcutDialog.html">kshortcutdialog</option>,  <option value="classKSpell.html">kspell</option>,  <option value="classKSpellConfig.html">kspellconfig</option>,  <option value="classKSplashScreen.html">ksplashscreen</option>,  <option value="classKSqueezedTextLabel.html">ksqueezedtextlabel</option>,  <option value="classKStatusBar.html">kstatusbar</option>,  <option value="classKStatusBarLabel.html">kstatusbarlabel</option>,  <option value="classKStdGuiItem.html">kstdguiitem</option>,  <option value="classKStringListValidator.html">kstringlistvalidator</option>,  <option value="classKSwitchLanguageDialog.html">kswitchlanguagedialog</option>,  <option value="classKSyntaxHighlighter.html">ksyntaxhighlighter</option>,  <option value="classKSystemTray.html">ksystemtray</option>,  <option value="classKTabBar.html">ktabbar</option>,  <option value="classKTabCtl.html">ktabctl</option>,  <option value="classKTabWidget.html">ktabwidget</option>,  <option value="classKTextBrowser.html">ktextbrowser</option>,  <option value="classKTextEdit.html">ktextedit</option>,  <option value="classKTimeWidget.html">ktimewidget</option>,  <option value="classKTimezoneWidget.html">ktimezonewidget</option>,  <option value="classKTipDatabase.html">ktipdatabase</option>,  <option value="classKTipDialog.html">ktipdialog</option>,  <option value="classKToggleAction.html">ktoggleaction</option>,  <option value="classKToggleFullScreenAction.html">ktogglefullscreenaction</option>,  <option value="classKToggleToolBarAction.html">ktoggletoolbaraction</option>,  <option value="classKToolBar.html">ktoolbar</option>,  <option value="classKToolBarButton.html">ktoolbarbutton</option>,  <option value="classKToolBarButtonList.html">ktoolbarbuttonlist</option>,  <option value="classKToolBarLabelAction.html">ktoolbarlabelaction</option>,  <option value="classKToolBarPopupAction.html">ktoolbarpopupaction</option>,  <option value="classKToolBarRadioGroup.html">ktoolbarradiogroup</option>,  <option value="classKURLLabel.html">kurllabel</option>,  <option value="classKValueSelector.html">kvalueselector</option>,  <option value="classKWidgetAction.html">kwidgetaction</option>,  <option value="classKWindowInfo.html">kwindowinfo</option>,  <option value="classKWizard.html">kwizard</option>,  <option value="classKWordWrap.html">kwordwrap</option>,  <option value="classKWritePermsIcon.html">kwritepermsicon</option>,  <option value="classKXMLGUIBuilder.html">kxmlguibuilder</option>,  <option value="classKXMLGUIClient.html">kxmlguiclient</option>,  <option value="classKXMLGUIFactory.html">kxmlguifactory</option>,  <option value="classKXYSelector.html">kxyselector</option>,
</select>
</form>
</div>
-->
</div></div>
<div class="menu_box"><h2>API Dox</h2>
<div class="nav_list">
<ul>
<li><a href="../../arts/html/index.html">arts</a></li><li><a href="../../dcop/html/index.html">dcop</a></li><li><a href="../../dnssd/html/index.html">dnssd</a></li><li><a href="../../interfaces/html/index.html">interfaces</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<a href="../../interfaces/kimproxy/interface/html/index.html">interface</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<a href="../../interfaces/kimproxy/library/html/index.html">library</a></li><li>&nbsp;&nbsp;<a href="../../interfaces/kspeech/html/index.html">kspeech</a></li><li>&nbsp;&nbsp;<a href="../../interfaces/ktexteditor/html/index.html">ktexteditor</a></li><li><a href="../../kabc/html/index.html">kabc</a></li><li><a href="../../kate/html/index.html">kate</a></li><li><a href="../../kcmshell/html/index.html">kcmshell</a></li><li><a href="../../kdecore/html/index.html">kdecore</a></li><li><a href="../../kded/html/index.html">kded</a></li><li><a href="../../kdefx/html/index.html">kdefx</a></li><li><a href="../../kdeprint/html/index.html">kdeprint</a></li><li><a href="../../kdesu/html/index.html">kdesu</a></li><li><a href="../../kdeui/html/index.html">kdeui</a></li><li><a href="../../kdoctools/html/index.html">kdoctools</a></li><li><a href="../../khtml/html/index.html">khtml</a></li><li><a href="../../kimgio/html/index.html">kimgio</a></li><li><a href="../../kinit/html/index.html">kinit</a></li><li><a href="../../kio/html/index.html">kio</a></li><li>&nbsp;&nbsp;<a href="../../kio/bookmarks/html/index.html">bookmarks</a></li><li>&nbsp;&nbsp;<a href="../../kio/httpfilter/html/index.html">httpfilter</a></li><li>&nbsp;&nbsp;<a href="../../kio/kfile/html/index.html">kfile</a></li><li>&nbsp;&nbsp;<a href="../../kio/kio/html/index.html">kio</a></li><li>&nbsp;&nbsp;<a href="../../kio/kioexec/html/index.html">kioexec</a></li><li>&nbsp;&nbsp;<a href="../../kio/kpasswdserver/html/index.html">kpasswdserver</a></li><li>&nbsp;&nbsp;<a href="../../kio/kssl/html/index.html">kssl</a></li><li><a href="../../kioslave/html/index.html">kioslave</a></li><li>&nbsp;&nbsp;<a href="../../kioslave/http/html/index.html">http</a></li><li><a href="../../kjs/html/index.html">kjs</a></li><li><a href="../../kmdi/html/index.html">kmdi</a></li><li>&nbsp;&nbsp;<a href="../../kmdi/kmdi/html/index.html">kmdi</a></li><li><a href="../../knewstuff/html/index.html">knewstuff</a></li><li><a href="../../kparts/html/index.html">kparts</a></li><li><a href="../../kresources/html/index.html">kresources</a></li><li><a href="../../kspell2/html/index.html">kspell2</a></li><li><a href="../../kunittest/html/index.html">kunittest</a></li><li><a href="../../kutils/html/index.html">kutils</a></li><li><a href="../../kwallet/html/index.html">kwallet</a></li><li><a href="../../libkmid/html/index.html">libkmid</a></li><li><a href="../../libkscreensaver/html/index.html">libkscreensaver</a></li>
</ul></div></div>


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

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


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

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

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

</body>
</html>