Diffstat (limited to 'noncore/tools/calculator/calculatorimpl.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/tools/calculator/calculatorimpl.cpp | 24 |
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 | ||
216 | void CalculatorImpl::do_convert(int button) { | 228 | void 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 | ||
242 | void CalculatorImpl::function_button(int mode){ | 256 | void CalculatorImpl::function_button(int mode){ |
243 | if ( state == sError ) | 257 | if ( state == sError ) |
244 | clear(); | 258 | clear(); |