<?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 <dowler@morgul.fsh.uvic.ca></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 <mueller@kde.org></span> <a name="l00009"></a>00009 <span class="comment"> * KDoubleSpinBox:</span> <a name="l00010"></a>00010 <span class="comment"> * Copyright (c) 2002 Marc Mutz <mutz@kde.org></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 <config.h></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 <limits.h></span> <a name="l00034"></a>00034 <span class="preprocessor">#endif</span> <a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include <assert.h></span> <a name="l00036"></a>00036 <span class="preprocessor">#include <math.h></span> <a name="l00037"></a>00037 <span class="preprocessor">#include <algorithm></span> <a name="l00038"></a>00038 <a name="l00039"></a>00039 <span class="preprocessor">#include <qapplication.h></span> <a name="l00040"></a>00040 <span class="preprocessor">#include <qlabel.h></span> <a name="l00041"></a>00041 <span class="preprocessor">#include <qlineedit.h></span> <a name="l00042"></a>00042 <span class="preprocessor">#include <qsize.h></span> <a name="l00043"></a>00043 <span class="preprocessor">#include <qslider.h></span> <a name="l00044"></a>00044 <span class="preprocessor">#include <qspinbox.h></span> <a name="l00045"></a>00045 <span class="preprocessor">#include <qstyle.h></span> <a name="l00046"></a>00046 <a name="l00047"></a>00047 <span class="preprocessor">#include <kglobal.h></span> <a name="l00048"></a>00048 <span class="preprocessor">#include <<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/klocale_8h.html">klocale.h</a>></span> <a name="l00049"></a>00049 <span class="preprocessor">#include <kdebug.h></span> <a name="l00050"></a>00050 <a name="l00051"></a>00051 <span class="preprocessor">#include "kdialog.h"</span> <a name="l00052"></a>00052 <span class="preprocessor">#include "knumvalidator.h"</span> <a name="l00053"></a>00053 <span class="preprocessor">#include "knuminput.h"</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->m_next; <a name="l00075"></a>00075 m_prev = below; <a name="l00076"></a>00076 below->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->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->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->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> & 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-><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">"KNumInput::QLabel"</span>); <a name="l00111"></a>00111 m_label-><a class="codeRef" href="qlabel.html#setAlignment">setAlignment</a>((a & (~(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 & (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-><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->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 && (m_alignment & 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->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-><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->m_colw1); <a name="l00156"></a>00156 w2 = QMAX(w2, p->m_colw2); <a name="l00157"></a>00157 p = p->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-><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->m_colw1); <a name="l00164"></a>00164 w2 = QMAX(w2, p->m_colw2); <a name="l00165"></a>00165 p = p->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->m_colw1 = w1; <a name="l00171"></a>00171 p->m_colw2 = w2; <a name="l00172"></a>00172 p = p->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->m_colw1 = w1; <a name="l00178"></a>00178 p->m_colw2 = w2; <a name="l00179"></a>00179 p = p->m_next; <a name="l00180"></a>00180 } <a name="l00181"></a>00181 <a name="l00182"></a>00182 <span class="comment">// kdDebug() << "w1 " << w1 << " w2 " << w2 << 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->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>()->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>()->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>()->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>()->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">"KIntNumInput::KIntSpinBox"</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'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-><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">"KNumInput::KIntValidtr"</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->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->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-><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->blockRelative || !d->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->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-><a class="codeRef" href="qspinbox.html#setMinValue">setMinValue</a>(lower); <a name="l00332"></a>00332 m_spin-><a class="codeRef" href="qspinbox.html#setMaxValue">setMaxValue</a>(upper); <a name="l00333"></a>00333 m_spin-><a class="codeRef" href="qspinbox.html#setLineStep">setLineStep</a>(step); <a name="l00334"></a>00334 <a name="l00335"></a>00335 step = m_spin-><a class="codeRef" href="qspinbox.html#lineStep">lineStep</a>(); <span class="comment">// maybe QRangeControl didn'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-><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-><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-><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'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->setSteps(step, major); <a name="l00353"></a>00353 m_slider-><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-><a class="codeRef" href="qspinbox.html#maxValue">maxValue</a>(), m_spin-><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-><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-><a class="codeRef" href="qspinbox.html#minValue">minValue</a>(), max, m_spin-><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-><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> &suffix) <a name="l00387"></a>00387 { <a name="l00388"></a>00388 m_spin-><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-><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> &prefix) <a name="l00399"></a>00399 { <a name="l00400"></a>00400 m_spin-><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-><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-><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 && (m_alignment & (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->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 & (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->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-><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 && (m_alignment & AlignTop)) { <a name="l00455"></a>00455 m_label->setGeometry(0, 0, e-><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 && (m_alignment & AlignVCenter)) <a name="l00460"></a>00460 m_label->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->reverseLayout()) <a name="l00463"></a>00463 { <a name="l00464"></a>00464 m_spin->setGeometry(w, h, m_slider ? m_colw2 : QMAX(m_colw2, e-><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->setGeometry(w, h, e-><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->setGeometry(w, h, e-><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->setGeometry(w + m_slider->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->setGeometry(w, h, QMAX(m_colw2, e-><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 && (m_alignment & AlignBottom)) <a name="l00481"></a>00481 m_label->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-><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->referencePoint ) <span class="keywordflow">return</span>; <a name="l00497"></a>00497 ++d->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->referencePoint * r + 0.5 ) ); <a name="l00499"></a>00499 --d->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->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->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-><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>& text) <a name="l00513"></a>00513 { <a name="l00514"></a>00514 m_spin-><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-><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> & 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-><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->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">"KDoubleNumInput::d->spin"</span> ); <a name="l00613"></a>00613 <a class="codeRef" href="qwidget.html#setFocusProxy">setFocusProxy</a>(d->spin); <a name="l00614"></a>00614 connect( d->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->spin->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->spin->minValue(); <a name="l00638"></a>00638 <span class="keywordtype">double</span> spinmax = d->spin->maxValue(); <a name="l00639"></a>00639 <span class="keywordtype">double</span> slidemin = m_slider-><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-><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->spin->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->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->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 && (m_alignment & (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->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 & (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 && (m_alignment & AlignTop)) { <a name="l00687"></a>00687 m_label->setGeometry(0, 0, e-><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 && (m_alignment & AlignVCenter)) <a name="l00692"></a>00692 m_label->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->reverseLayout()) <a name="l00695"></a>00695 { <a name="l00696"></a>00696 d->spin->setGeometry(w, h, m_slider ? m_colw2 <a name="l00697"></a>00697 : e-><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->setGeometry(w, h, e-><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->setGeometry(w, h, e-><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->spin->setGeometry(w + m_slider->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->spin->setGeometry(w, h, e-><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 && (m_alignment & AlignBottom)) <a name="l00717"></a>00717 m_label->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->spin->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->spin->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->referencePoint ) <span class="keywordflow">return</span>; <a name="l00734"></a>00734 ++d->blockRelative; <a name="l00735"></a>00735 <a class="code" href="classKDoubleNumInput.html#a6391924d696c842b549fdd86e0e30ed6" title="Sets the value of the control.">setValue</a>( r * d->referencePoint ); <a name="l00736"></a>00736 --d->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->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'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->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->spin->setRange( lower, upper, step, d->spin->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->spin; <a name="l00760"></a>00760 <span class="keywordtype">int</span> slmax = spin-><a class="codeRef" href="qspinbox.html#maxValue">maxValue</a>(); <a name="l00761"></a>00761 <span class="keywordtype">int</span> slmin = spin-><a class="codeRef" href="qspinbox.html#minValue">minValue</a>(); <a name="l00762"></a>00762 <span class="keywordtype">int</span> slvalue = spin-><a class="codeRef" href="qspinbox.html#value">value</a>(); <a name="l00763"></a>00763 <span class="keywordtype">int</span> slstep = spin-><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-><a class="codeRef" href="qslider.html#setRange">setRange</a>(slmin, slmax); <a name="l00766"></a>00766 m_slider-><a class="codeRef" href="qslider.html#setLineStep">setLineStep</a>(slstep); <a name="l00767"></a>00767 m_slider-><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-><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-><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->spin->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->spin->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->spin->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->spin->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->spin->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->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->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->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->spin->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->spin->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> &suffix) <a name="l00840"></a>00840 { <a name="l00841"></a>00841 d->spin->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> &prefix) <a name="l00847"></a>00847 { <a name="l00848"></a>00848 d->spin->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->spin->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->spin->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>& text) <a name="l00866"></a>00866 { <a name="l00867"></a>00867 d->spin->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> & 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-><a class="codeRef" href="qlabel.html#setBuddy">setBuddy</a>(d->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>& str, <span class="keywordtype">int</span>& 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>& str, <span class="keywordtype">int</span>& 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->prefix(); <a name="l00900"></a>00900 <a class="codeRef" href="qstring.html">QString</a> suff = spinBox->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>() >= overhead && str.<a class="codeRef" href="qstring.html#startsWith">startsWith</a>(pref) <a name="l00910"></a>00910 && (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->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 < 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 > <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>() << <span class="stringliteral">"KDoubleSpinBox: can't represent value "</span> << value <a name="l00972"></a>00972 << <span class="stringliteral">"in terms of fixed-point numbers with precision "</span> <a name="l00973"></a>00973 << mPrecision << <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 < <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>() << <span class="stringliteral">"KDoubleSpinBox: can't represent value "</span> << value <a name="l00978"></a>00978 << <span class="stringliteral">"in terms of fixed-point numbers with precision "</span> <a name="l00979"></a>00979 << mPrecision << <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 < 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>()->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>()->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->mValidator ) <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// we'll set one that does;</span> <a name="l01023"></a>01023 <span class="comment">// can't do it now, since we're const</span> <a name="l01024"></a>01024 <span class="keywordflow">return</span> d->mValidator->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->mValidator ) updateValidator(); <a name="l01029"></a>01029 d->mValidator->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's moc doesn'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'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->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's moc doesn'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's moc doesn'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's moc doesn'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 < 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 > maxPrec ) <a name="l01055"></a>01055 precision = maxPrec; <a name="l01056"></a>01056 } <a name="l01057"></a>01057 d->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 > maxAbsValue * 10^precision</span> <a name="l01063"></a>01063 <span class="comment">// ==> 10^precision < INT_MAX / maxAbsValue</span> <a name="l01064"></a>01064 <span class="comment">// ==> precision < log10 ( INT_MAX / maxAbsValue )</span> <a name="l01065"></a>01065 <span class="comment">// ==> 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->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-><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 < <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 > <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->mapToInt( value, &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->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->mapToInt( value, &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->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->mapToInt( value, &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->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 > <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->mapToInt( step, &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 -><a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKLocale.html#a52b2ef4c19dafcc310d754cbd795531d">formatNumber</a>( d->mapToDouble( value ), d->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->mapToDouble( value ), <span class="charliteral">'f'</span>, d->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>()-><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 > <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 < <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->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'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->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->mValidator ) { <a name="l01158"></a>01158 d->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">"d->mValidator"</span> ); <a name="l01160"></a>01160 <a class="codeRef" href="qspinbox.html#setValidator">base::setValidator</a>( d->mValidator ); <a name="l01161"></a>01161 } <span class="keywordflow">else</span> <a name="l01162"></a>01162 d->mValidator->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 "knuminput.moc"</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> <a href="../../interfaces/kimproxy/interface/html/index.html">interface</a></li><li> <a href="../../interfaces/kimproxy/library/html/index.html">library</a></li><li> <a href="../../interfaces/kspeech/html/index.html">kspeech</a></li><li> <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> <a href="../../kio/bookmarks/html/index.html">bookmarks</a></li><li> <a href="../../kio/httpfilter/html/index.html">httpfilter</a></li><li> <a href="../../kio/kfile/html/index.html">kfile</a></li><li> <a href="../../kio/kio/html/index.html">kio</a></li><li> <a href="../../kio/kioexec/html/index.html">kioexec</a></li><li> <a href="../../kio/kpasswdserver/html/index.html">kpasswdserver</a></li><li> <a href="../../kio/kssl/html/index.html">kssl</a></li><li><a href="../../kioslave/html/index.html">kioslave</a></li><li> <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> <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="mailto:groot@kde.org">Adriaan de Groot</a> and <a href="mailto:winter@kde.org">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>