author | mickeyl <mickeyl> | 2003-10-29 16:45:13 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-10-29 16:45:13 (UTC) |
commit | e8697a4281f7a265b69e6bf5253383c73a38626b (patch) (side-by-side diff) | |
tree | 040470f8f5c90c0d72ff5f01a272143571842078 /noncore/tools/calculator/calculatorimpl.cpp | |
parent | d5d9b307e950d9038215e4d63e64bc9cd5d85352 (diff) | |
download | opie-e8697a4281f7a265b69e6bf5253383c73a38626b.zip opie-e8697a4281f7a265b69e6bf5253383c73a38626b.tar.gz opie-e8697a4281f7a265b69e6bf5253383c73a38626b.tar.bz2 |
merge noncore/tools/*
Diffstat (limited to 'noncore/tools/calculator/calculatorimpl.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/tools/calculator/calculatorimpl.cpp | 56 |
1 files changed, 54 insertions, 2 deletions
diff --git a/noncore/tools/calculator/calculatorimpl.cpp b/noncore/tools/calculator/calculatorimpl.cpp index 8d11132..163b4da 100644 --- a/noncore/tools/calculator/calculatorimpl.cpp +++ b/noncore/tools/calculator/calculatorimpl.cpp @@ -25,288 +25,340 @@ // Sat 03-09-2002 L.J. Potter added the inlined pixmaps here #include "calculatorimpl.h" #include <qpe/resource.h> #include <qpe/qmath.h> #include <qpe/qpeapplication.h> #include <qpushbutton.h> #include <qcombobox.h> #include <qlabel.h> #include <qfont.h> #include <qlayout.h> #include <qstringlist.h> #include <qfile.h> #include <qtextstream.h> #include <qmessagebox.h> #include <math.h> /* XPM */ static char *oneoverx_xpm[] = { /* width height num_colors chars_per_pixel */ " 13 11 2 1", /* colors */ ". c None", "# c #000000", /* pixels */ "......#......", ".....##......", "......#......" ".....###.....", ".............", "..#########..", ".............", "....##.##....", "......#......", "......#......", "....##.##....", }; /* XPM */ static char *ythrootofx_xpm[] = { /* width height num_colors chars_per_pixel */ " 13 11 2 1", /* colors */ ". c None", "# c #000000", /* pixels */ "#.#..........", "#.#..........", "###...#######", "..#..#.......", "###..#.......", ".....#.#...#.", ".#..#...#.#..", "#.#.#....#...", "..#.#...#.#..", "...#...#...#.", "...#........." }; /* XPM */ static char *xtopowerofy_xpm[] = { /* width height num_colors chars_per_pixel */ " 9 8 2 1", /* colors */ ". c None", "# c #000000", /* pixels */ "......#.#", "......#.#", "......###", "#...#...#", ".#.#..###", "..#......", ".#.#.....", "#...#...." }; CalculatorImpl::CalculatorImpl( QWidget * parent, const char * name, WFlags f ) : Calculator( parent, name, f ) { // xtopowerofy = Resource::loadPixmap("xtopowerofy"); // ythrootofx = Resource::loadPixmap("ythrootofx"); // oneoverx = Resource::loadPixmap("oneoverx"); memMark = new QLabel( "m", LCD ); memMark->setFont( QFont( "helvetica", 12, QFont::Bold, TRUE ) ); memMark->resize( 12, 12 ); memMark->move( 4, 2 ); memMark->hide(); mem = 0; PushButtonMR->setEnabled( FALSE ); current_mode = max_mode = conversion_mode_count = 0; last_conversion = -1; + // translation trick mode - with this stuff parsed in from a file is translatable + QObject::tr("Standard"); + QObject::tr("Weight"); + QObject::tr("Distance"); + QObject::tr("Area"); + QObject::tr("Temperatures"); + QObject::tr("Volume"); + QObject::tr("acres"); + QObject::tr("°C"); + QObject::tr("carats"); + QObject::tr("cm"); + QObject::tr("cu cm"); + QObject::tr("cu ft"); + QObject::tr("cu in"); + QObject::tr("°F"); + QObject::tr("fl oz (US)"); + QObject::tr("ft"); + QObject::tr("g"); + QObject::tr("gal (US)"); + QObject::tr("hectares"); + QObject::tr("in"); + QObject::tr("kg"); + QObject::tr("km"); + QObject::tr("l"); + QObject::tr("lb"); + QObject::tr("Lg tons"); + QObject::tr("m"); + QObject::tr("mg"); + QObject::tr("mi"); + QObject::tr("ml"); + QObject::tr("mm"); + QObject::tr("naut. mi"); + QObject::tr("oz"); + QObject::tr("points"); + QObject::tr("pt"); + QObject::tr("qt"); + QObject::tr("sq cm"); + QObject::tr("sq ft"); + QObject::tr("sq in"); + QObject::tr("sq km"); + QObject::tr("sq m"); + QObject::tr("sq mi"); + QObject::tr("sq mm"); + QObject::tr("sq yd"); + QObject::tr("st"); + QObject::tr("St tons"); + QObject::tr("tblspoon"); + QObject::tr("teaspoons"); + QObject::tr("tonnes"); + QObject::tr("yd"); + + //bgr_command.insert( PushButtonFunction); bgr_command.insert( PushButtonMPlus); bgr_command.insert( PushButtonMR); bgr_command.insert( PushButtonMC); bgr_command.insert( PushButtonCE); connect( &bgr_command, SIGNAL(clicked(int) ), this, SLOT(command_buttons(int))); bgr_digits.insert(PushButton0); bgr_digits.insert(PushButton1); bgr_digits.insert(PushButton2); bgr_digits.insert(PushButton3); bgr_digits.insert(PushButton4); bgr_digits.insert(PushButton5); bgr_digits.insert(PushButton6); bgr_digits.insert(PushButton7); bgr_digits.insert(PushButton8); bgr_digits.insert(PushButton9); connect( &bgr_digits, SIGNAL(clicked(int) ), this, SLOT(enterNumber(int))); bgr_std.insert(PushButtonEquals); bgr_std.insert(PushButtonDecimal); bgr_std.insert(PushButtonAdd); bgr_std.insert(PushButtonMinus); bgr_std.insert(PushButtonDivide); bgr_std.insert(PushButtonTimes); connect( &bgr_std, SIGNAL(clicked(int) ), this, SLOT(std_buttons(int))); // change the / to a proper division signal PushButtonDivide->setText(QChar(0xF7)); func_buttons[0] = PushButtonF1; func_buttons[1] = PushButtonF2; func_buttons[2] = PushButtonF3; func_buttons[3] = PushButtonF4; func_buttons[4] = PushButtonF5; func_buttons[5] = PushButtonF6; func_buttons[6] = PushButtonF7; func_buttons[7] = PushButtonF8; func_buttons[8] = PushButtonF9; func_buttons[9] = PushButtonF10; func_buttons[10] = PushButtonF11; func_buttons[11] = PushButtonF12; for ( int x = 0 ; x < func_button_count ; x++ ) { QPushButton* tmpbutton = func_buttons[x]; faces << tmpbutton->text(); bgr_function.insert(tmpbutton); } connect( &bgr_function, SIGNAL(clicked(int) ) , this, SLOT(do_convert(int) ) ); connect( &bgr_function, SIGNAL(clicked(int) ) , this, SLOT(std_funcs (int) ) ); connect(ComboBoxFunction, SIGNAL(activated(int) ), this, SLOT(function_button(int) ) ); captions.append(tr("Standard")); ComboBoxFunction->insertItem(captions.last()); // now add in the conversion modes // when the menu gets done, these should be in a submenu QString tmp = QPEApplication::qpeDir(); tmp += "etc/unit_conversion.dat"; QFile myfile(tmp); if ( !myfile.open( IO_Translate | IO_ReadOnly ) ) { qDebug("Data file unit_conversion.dat not found\nNo conversion features will be available\n"+tmp); // disable the f button if no conv file available ComboBoxFunction->setEnabled(FALSE); } else { QString line, line2; QTextStream ts(&myfile); // first pass, see how many conversion types there are in order to allocate for them while ( ! ts.eof() ) { line = ts.readLine(); if ( line.contains ("STARTTYPE" ) ) conversion_mode_count++; } entry_list = new double[conversion_mode_count*func_button_count]; preoffset_list = new double[conversion_mode_count*func_button_count]; postoffset_list = new double[conversion_mode_count*func_button_count]; myfile.close(); myfile.open( IO_Translate | IO_ReadOnly ); QTextStream ts2(&myfile); // second pass, read in values int x = 0; while ( ! ts2.eof() ) { line = ts2.readLine(); if ( line.contains("STARTTYPE") ) { - captions << line.remove(0,10); + captions << tr( line.remove(0,10) ); ComboBoxFunction->insertItem(captions.last()); while ( !line.contains("ENDTYPE") ) { line = ts2.readLine(); if ( line.contains("NAME") ) { - faces << line.remove(0,5); + faces << tr( line.remove(0,5) ); line2 = ts2.readLine(); line2.remove(0,6); entry_list[x] = line2.toDouble(); line2 = ts2.readLine(); line2.remove(0,7); preoffset_list[x] = line2.toDouble(); line2 = ts2.readLine(); line2.remove(0,8); postoffset_list[x] = line2.toDouble(); x++; } } } } } myfile.close(); clear(); max_mode = pre_conv_modes_count + conversion_mode_count + post_conv_modes_count - 1; display_pixmap_faces(); qApp->installEventFilter( this ); } bool CalculatorImpl::eventFilter( QObject *o, QEvent *e ) { if ( e->type() == QEvent::KeyPress && state != sError ) { QKeyEvent *k = (QKeyEvent*)e; if ( k->key() >= Key_0 && k->key() <= Key_9 ) { enterNumber( k->key() - Key_0 ); return true; } else { switch ( k->key() ) { case Key_Equal: std_buttons(0); return true; case Key_Period: std_buttons(1); return true; case Key_Plus: std_buttons(2); return true; case Key_Minus: std_buttons(3); return true; case Key_Slash: std_buttons(4); return true; case Key_Asterisk: std_buttons(5); return true; case Key_Percent: execOp( oPercent ); return true; case Key_ParenLeft: if ( current_mode < pre_conv_modes_count ) execOp( oOpenBrace ); return true; case Key_ParenRight: if ( current_mode < pre_conv_modes_count ) execOp( oCloseBrace ); return true; default: break; } } } return Calculator::eventFilter( o, e ); } void CalculatorImpl::do_convert(int button) { if ( state == sError ) return; if ( current_mode >= pre_conv_modes_count && current_mode <= (max_mode - post_conv_modes_count) && button < changeable_func_button_count ) { if ( last_conversion > -1 ) { if( state == sNewNumber ){ acc = (num+ preoffset_list[(current_mode - pre_conv_modes_count) * func_button_count + last_conversion]) / (entry_list[(current_mode - pre_conv_modes_count) * func_button_count + last_conversion]) * (entry_list[(current_mode - pre_conv_modes_count) * func_button_count + button]) +postoffset_list[(current_mode - pre_conv_modes_count) * func_button_count + button]; num = acc; LCD->display( acc ); } else { state = sNewNumber; num = (num+ preoffset_list[(current_mode - pre_conv_modes_count) * func_button_count + last_conversion]) / (entry_list[(current_mode - pre_conv_modes_count) * func_button_count + last_conversion]) * (entry_list[(current_mode - pre_conv_modes_count) * func_button_count + button]) + postoffset_list[(current_mode - pre_conv_modes_count) * func_button_count + button];; LCD->display( num ); acc = num; } } last_conversion = button; } } |