summaryrefslogtreecommitdiffstats
path: root/kpercentage/kpercentage/kpercentage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kpercentage/kpercentage/kpercentage.cpp')
-rw-r--r--kpercentage/kpercentage/kpercentage.cpp231
1 files changed, 231 insertions, 0 deletions
diff --git a/kpercentage/kpercentage/kpercentage.cpp b/kpercentage/kpercentage/kpercentage.cpp
new file mode 100644
index 00000000..d8ff8e34
--- /dev/null
+++ b/kpercentage/kpercentage/kpercentage.cpp
@@ -0,0 +1,231 @@
+/***************************************************************************
+ kpercentage.cpp - description
+ -------------------
+ begin : Fre Nov 16 14:52:33 CET 2001
+ copyright : (C) 2001 by Matthias Messmer &
+ Carsten Niehaus &
+ Robert Gogolok
+ email : bmlmessmer@web.de &
+ cniehaus@gmx.de &
+ mail@robert-gogolok.de
+***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+// C/C++ includes
+#include <stdlib.h>
+
+// Qt includes
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+// KDE includes
+#include <khelpmenu.h>
+#include <kiconloader.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+#include <kpushbutton.h>
+#include <kstandarddirs.h>
+
+//local includes
+#include "kpercentage.h"
+#include "ksplashscreen.h"
+
+KPercentage::KPercentage( const char *name ) :
+ KDialog ( 0, name )
+{
+ // show splash screen
+ KSplashScreen * splash_screen = new KSplashScreen( this, "splashscreen" );
+ splash_screen->show();
+ splash_screen->raise();
+
+ // Icon loader for the button's icons
+ KIconLoader icon_loader;
+
+ // let's set a suitable, not too small font size
+ QFont the_font( font() );
+ the_font.setPointSize( 14 );
+ //the_font.setBold(true);
+ setFont( the_font );
+
+ // prepare exercise window, that will use the fontsize above!
+ percent_main = new KPercentMain( this, "KPercentage" );
+
+ // fixed geometry bacause of background pixmap
+ setFixedSize( QSize( 548, 248 ) );
+
+ /** load and set background pixmap */
+ QPixmap bgp( locate( "data", QApplication::reverseLayout() ? "kpercentage/pics/kpercentage_bg_rtl.png" : "kpercentage/pics/kpercentage_bg.png" ) );
+ setBackgroundPixmap( bgp );
+
+
+ QLabel *label_number = new QLabel( i18n( "Number of tasks:" ), this );
+ QLabel *label_level = new QLabel( i18n( "Level:" ), this );
+ QLabel *label_choose = new QLabel( i18n( "Choose an exercise type:" ), this );
+
+ /** make labels transparent */
+ label_number->setBackgroundPixmap( bgp );
+ label_number->setBackgroundOrigin( QLabel::ParentOrigin );
+ label_level->setBackgroundPixmap( bgp );
+ label_level->setBackgroundOrigin( QLabel::ParentOrigin );
+ label_choose->setBackgroundPixmap( bgp );
+ label_choose->setBackgroundOrigin( QLabel::ParentOrigin );
+
+ KPushButton *button_basevalue = new KPushButton( i18n( "x% &of ?? = y" ), this );
+ KPushButton *button_percentvalue = new KPushButton( i18n( "x% of &y = ??" ), this );
+ KPushButton *button_percentage = new KPushButton( i18n( "??% o&f x = y" ), this );
+ KPushButton *button_random = new KPushButton( i18n( "??" ), this );
+ KPushButton *button_help = new KPushButton( KStdGuiItem::help().text(), this );
+ button_help->setIconSet( QIconSet( icon_loader.loadIcon( "help", KIcon::NoGroup, 32 ) ) );
+ KHelpMenu *help_menu = new KHelpMenu( this, KGlobal::instance()->aboutData(), true );
+ button_help->setPopup( ( QPopupMenu* ) ( help_menu->menu() ) );
+ KPushButton *button_close = new KPushButton( i18n( "E&xit" ), this );
+ button_close->setIconSet( QIconSet( icon_loader.loadIcon( "exit", KIcon::NoGroup, 32 ) ) );
+
+ combo_box_level = new KComboBox( this );
+ combo_box_level->insertItem( i18n( "Easy" ) );
+ combo_box_level->insertItem( i18n( "Medium" ) );
+ combo_box_level->insertItem( i18n( "Crazy" ) );
+
+ spin_box_number = new QSpinBox( 1, 10, 1, this );
+ spin_box_number->setValue( 5 );
+
+ // connecting all the slots
+ connect( button_basevalue, SIGNAL( clicked() ), this, SLOT( selBasevalue() ) );
+ connect( button_percentvalue, SIGNAL( clicked() ), this, SLOT( selPercentvalue() ) );
+ connect( button_percentage, SIGNAL( clicked() ), this, SLOT( selPercentage() ) );
+ connect( button_random, SIGNAL( clicked() ), this, SLOT( selRandom() ) );
+ connect( button_help, SIGNAL( clicked() ), this, SLOT( needHelp() ) );
+ connect( button_close, SIGNAL( clicked() ), this, SLOT( accept() ) );
+
+ ////////
+ // begin layouting
+ ////////
+ QVBoxLayout *main_layout = new QVBoxLayout( this, 20, 20, "main_layout" );
+ main_layout->setResizeMode( QLayout::FreeResize );
+
+ QHBoxLayout *top_layout = new QHBoxLayout( main_layout, -1, "top_layout" );
+ top_layout->addWidget( label_number );
+ top_layout->addWidget( spin_box_number );
+ top_layout->addSpacing( 20 );
+ top_layout->addStretch();
+ top_layout->addWidget( label_level );
+ top_layout->addWidget( combo_box_level );
+
+ main_layout->addSpacing( 40 );
+ main_layout->addStretch();
+
+ QHBoxLayout *bottom_layout = new QHBoxLayout( main_layout, -1, "bottom_layout" );
+ QVBoxLayout *bLeftLayout = new QVBoxLayout( bottom_layout );
+ bLeftLayout->addWidget( label_choose );
+ bLeftLayout->addSpacing( 10 );
+
+ QGridLayout *grid_layout = new QGridLayout( bLeftLayout, 2, 2, 10 );
+ grid_layout->addWidget( button_basevalue, 0, 0 );
+ grid_layout->addWidget( button_percentvalue, 1, 0 );
+ grid_layout->addWidget( button_percentage, 0, 1 );
+ grid_layout->addWidget( button_random, 1, 1 );
+
+ bottom_layout->addStretch();
+
+ QVBoxLayout *b_right_layout = new QVBoxLayout( bottom_layout );
+ b_right_layout->addStretch();
+ b_right_layout->addWidget( button_help );
+ b_right_layout->addSpacing( 10 );
+ b_right_layout->addWidget( button_close );
+
+ main_layout->addStretch();
+ ////////
+ // end layouting
+ ////////
+
+ ////////
+ // Tooltips
+ QToolTip::add( button_basevalue, i18n( "Exercises with base value omitted" ) );
+ QToolTip::add( button_percentvalue, i18n( "Exercises with percent value omitted" ) );
+ QToolTip::add( button_percentage, i18n( "Exercises with percentage omitted" ) );
+ QToolTip::add( button_random, i18n( "Several exercise types in random" ) );
+ QToolTip::add( spin_box_number, i18n( "Choose the number of exercises from 1 to 10." ) );
+ QToolTip::add( combo_box_level, i18n( "Choose the level of difficulty." ) );
+ QToolTip::add( button_close, i18n( "Close KPercentage." ) );
+ QToolTip::add( button_help, i18n( "Get some help." ) );
+
+ ////////
+ // WhatsThis
+ QWhatsThis::add( button_basevalue, i18n( "Click here to start a sequence of exercises where the base value is omitted.") );
+ QWhatsThis::add( button_percentvalue, i18n( "Click here to start a sequence of exercises where the percent value is omitted." ) );
+ QWhatsThis::add( button_percentage, i18n( "Click here to start a sequence of exercises where the percentage is omitted." ) );
+ QWhatsThis::add( button_random, i18n( "Click here to start a sequence of exercises where one value is omitted at random." ) );
+ QWhatsThis::add( spin_box_number, i18n( "Here you can adjust the number of exercises from 1 to 10." ) );
+ QWhatsThis::add( combo_box_level, i18n( "Choose one of the levels <i>easy</i>, <i>medium</i>, and <i>crazy</i>." ) );
+ QWhatsThis::add( button_close, i18n( "Close KPercentage." ) );
+ QWhatsThis::add( button_help, i18n( "Get some help." ) );
+}
+
+void KPercentage::selPercentage()
+{
+ // set the proper value for KPercentMain::selected_type
+ percent_main->selected_type = SEL_PERCENTAGE;
+ // and lets go!
+ startExercise();
+}
+
+void KPercentage::selBasevalue()
+{
+ // set the proper value for KPercentMain::selected_type
+ percent_main->selected_type = SEL_BASEVALUE;
+ // and lets go!
+ startExercise();
+}
+
+void KPercentage::selPercentvalue()
+{
+ // set the proper value for KPercentMain::selected_type
+ percent_main->selected_type = SEL_PERCENTVALUE;
+ // and lets go!
+ startExercise();
+}
+
+void KPercentage::selRandom()
+{
+ // set the proper value for KPercentMain::selected_type
+ percent_main->selected_type = SEL_RANDOM;
+ // and lets go!
+ startExercise();
+}
+
+/** No descriptions */
+void KPercentage::startExercise()
+{
+ // copy the actual settings to the KPercentMain instance
+ percent_main->setNumber( spin_box_number->value() );
+ percent_main->selected_level = combo_box_level->currentItem();
+ percent_main->initExercise();
+ QPoint p = pos();
+ hide();
+ percent_main->move( p );
+ percent_main->exec();
+ move( p );
+ show();
+}
+
+void KPercentage::needHelp()
+{
+ kapp->invokeHelp( "", "kpercentage" );
+}
+
+void KPercentage::closeEvent( QCloseEvent * )
+{
+ exit( 0 );
+}
+
+#include "kpercentage.moc"