summaryrefslogtreecommitdiff
path: root/noncore/tools/calculator/calculatorimpl.cpp
Unidiff
Diffstat (limited to 'noncore/tools/calculator/calculatorimpl.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/tools/calculator/calculatorimpl.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/noncore/tools/calculator/calculatorimpl.cpp b/noncore/tools/calculator/calculatorimpl.cpp
index 2f7d7ce..1b93c7f 100644
--- a/noncore/tools/calculator/calculatorimpl.cpp
+++ b/noncore/tools/calculator/calculatorimpl.cpp
@@ -9,24 +9,29 @@
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21/*
22 * 01/14/2002 Charles-Edouard Ruault <ce@ruault.com>
23 * Added support for Temperature conversions.
24 */
25
21#include "calculatorimpl.h" 26#include "calculatorimpl.h"
22 27
23#include <qpe/resource.h> 28#include <qpe/resource.h>
24#include <qpe/qmath.h> 29#include <qpe/qmath.h>
25#include <qpe/qpeapplication.h> 30#include <qpe/qpeapplication.h>
26 31
27#include <qpushbutton.h> 32#include <qpushbutton.h>
28#include <qcombobox.h> 33#include <qcombobox.h>
29#include <qlabel.h> 34#include <qlabel.h>
30#include <qfont.h> 35#include <qfont.h>
31#include <qlayout.h> 36#include <qlayout.h>
32#include <qstringlist.h> 37#include <qstringlist.h>
@@ -125,43 +130,50 @@ CalculatorImpl::CalculatorImpl( QWidget * parent, const char * name,
125 else { 130 else {
126 QString line, line2; 131 QString line, line2;
127 QTextStream ts(&myfile); 132 QTextStream ts(&myfile);
128 133
129 // first pass, see how many conversion types there are in order to allocate for them 134 // first pass, see how many conversion types there are in order to allocate for them
130 while ( ! ts.eof() ) { 135 while ( ! ts.eof() ) {
131 line = ts.readLine(); 136 line = ts.readLine();
132 if ( line.contains ("STARTTYPE" ) ) 137 if ( line.contains ("STARTTYPE" ) )
133 conversion_mode_count++; 138 conversion_mode_count++;
134 } 139 }
135 140
136 entry_list = new double[conversion_mode_count*func_button_count]; 141 entry_list = new double[conversion_mode_count*func_button_count];
137 142 preoffset_list = new double[conversion_mode_count*func_button_count];
143 postoffset_list = new double[conversion_mode_count*func_button_count];
138 myfile.close(); 144 myfile.close();
139 myfile.open( IO_Translate | IO_ReadOnly ); 145 myfile.open( IO_Translate | IO_ReadOnly );
140 QTextStream ts2(&myfile); 146 QTextStream ts2(&myfile);
141 147
142 // second pass, read in values 148 // second pass, read in values
143 int x = 0; 149 int x = 0;
144 while ( ! ts2.eof() ) { 150 while ( ! ts2.eof() ) {
145 line = ts2.readLine(); 151 line = ts2.readLine();
146 if ( line.contains("STARTTYPE") ) { 152 if ( line.contains("STARTTYPE") ) {
147 captions << line.remove(0,10); 153 captions << line.remove(0,10);
148 ComboBoxFunction->insertItem(captions.last()); 154 ComboBoxFunction->insertItem(captions.last());
149 while ( !line.contains("ENDTYPE") ) { 155 while ( !line.contains("ENDTYPE") ) {
150 line = ts2.readLine(); 156 line = ts2.readLine();
151 if ( line.contains("NAME") ) { 157 if ( line.contains("NAME") ) {
152 faces << line.remove(0,5); 158 faces << line.remove(0,5);
153 line2 = ts2.readLine(); 159 line2 = ts2.readLine();
154 line2.remove(0,6); 160 line2.remove(0,6);
155 entry_list[x] = line2.toDouble(); 161 entry_list[x] = line2.toDouble();
162 line2 = ts2.readLine();
163 line2.remove(0,7);
164 preoffset_list[x] = line2.toDouble();
165 line2 = ts2.readLine();
166 line2.remove(0,8);
167 postoffset_list[x] = line2.toDouble();
156 x++; 168 x++;
157 } 169 }
158 } 170 }
159 } 171 }
160 } 172 }
161 } 173 }
162 myfile.close(); 174 myfile.close();
163 clear(); 175 clear();
164 max_mode = pre_conv_modes_count + conversion_mode_count + post_conv_modes_count - 1; 176 max_mode = pre_conv_modes_count + conversion_mode_count + post_conv_modes_count - 1;
165 display_pixmap_faces(); 177 display_pixmap_faces();
166 178
167 qApp->installEventFilter( this ); 179 qApp->installEventFilter( this );
@@ -211,34 +223,36 @@ bool CalculatorImpl::eventFilter( QObject *o, QEvent *e )
211 } 223 }
212 } 224 }
213 return Calculator::eventFilter( o, e ); 225 return Calculator::eventFilter( o, e );
214} 226}
215 227
216void CalculatorImpl::do_convert(int button) { 228void CalculatorImpl::do_convert(int button) {
217 if ( state == sError ) 229 if ( state == sError )
218 return; 230 return;
219 if ( current_mode >= pre_conv_modes_count && current_mode <= (max_mode - post_conv_modes_count) && 231 if ( current_mode >= pre_conv_modes_count && current_mode <= (max_mode - post_conv_modes_count) &&
220 button < changeable_func_button_count ) { 232 button < changeable_func_button_count ) {
221 if ( last_conversion > -1 ) { 233 if ( last_conversion > -1 ) {
222 if( state == sNewNumber ){ 234 if( state == sNewNumber ){
223 acc = num 235 acc = (num+ preoffset_list[(current_mode - pre_conv_modes_count) * func_button_count + last_conversion])
224 / (entry_list[(current_mode - pre_conv_modes_count) * func_button_count + last_conversion]) 236 / (entry_list[(current_mode - pre_conv_modes_count) * func_button_count + last_conversion])
225 * (entry_list[(current_mode - pre_conv_modes_count) * func_button_count + button]) ; 237 * (entry_list[(current_mode - pre_conv_modes_count) * func_button_count + button])
238 +postoffset_list[(current_mode - pre_conv_modes_count) * func_button_count + button];
226 num = acc; 239 num = acc;
227 LCD->display( acc ); 240 LCD->display( acc );
228 } else { 241 } else {
229 state = sNewNumber; 242 state = sNewNumber;
230 num = num 243 num = (num+ preoffset_list[(current_mode - pre_conv_modes_count) * func_button_count + last_conversion])
231 / (entry_list[(current_mode - pre_conv_modes_count) * func_button_count + last_conversion]) 244 / (entry_list[(current_mode - pre_conv_modes_count) * func_button_count + last_conversion])
232 * (entry_list[(current_mode - pre_conv_modes_count) * func_button_count + button]) ; 245 * (entry_list[(current_mode - pre_conv_modes_count) * func_button_count + button])
246 + postoffset_list[(current_mode - pre_conv_modes_count) * func_button_count + button];;
233 LCD->display( num ); 247 LCD->display( num );
234 acc = num; 248 acc = num;
235 } 249 }
236 } 250 }
237 last_conversion = button; 251 last_conversion = button;
238 } 252 }
239} 253}
240 254
241 255
242void CalculatorImpl::function_button(int mode){ 256void CalculatorImpl::function_button(int mode){
243 if ( state == sError ) 257 if ( state == sError )
244 clear(); 258 clear();