You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeedu/kpercentage/kpercentage/kpercentage.cpp

232 lines
9.0 KiB

/***************************************************************************
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>
// TQt includes
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqtooltip.h>
#include <tqwhatsthis.h>
// KDE includes
#include <khelpmenu.h>
#include <kiconloader.h>
#include <tdelocale.h>
#include <tdemessagebox.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
TDEIconLoader icon_loader;
// let's set a suitable, not too small font size
TQFont 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( TQSize( 548, 248 ) );
/** load and set background pixmap */
TQPixmap bgp( locate( "data", TQApplication::reverseLayout() ? "kpercentage/pics/kpercentage_bg_rtl.png" : "kpercentage/pics/kpercentage_bg.png" ) );
setBackgroundPixmap( bgp );
TQLabel *label_number = new TQLabel( i18n( "Number of tasks:" ), this );
TQLabel *label_level = new TQLabel( i18n( "Level:" ), this );
TQLabel *label_choose = new TQLabel( i18n( "Choose an exercise type:" ), this );
/** make labels transparent */
label_number->setBackgroundPixmap( bgp );
label_number->setBackgroundOrigin( TQLabel::ParentOrigin );
label_level->setBackgroundPixmap( bgp );
label_level->setBackgroundOrigin( TQLabel::ParentOrigin );
label_choose->setBackgroundPixmap( bgp );
label_choose->setBackgroundOrigin( TQLabel::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( TQIconSet( icon_loader.loadIcon( "help", TDEIcon::NoGroup, 32 ) ) );
KHelpMenu *help_menu = new KHelpMenu( this, TDEGlobal::instance()->aboutData(), true );
button_help->setPopup( ( TQPopupMenu* ) ( help_menu->menu() ) );
KPushButton *button_close = new KPushButton( i18n( "E&xit" ), this );
button_close->setIconSet( TQIconSet( icon_loader.loadIcon( "exit", TDEIcon::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 TQSpinBox( 1, 10, 1, this );
spin_box_number->setValue( 5 );
// connecting all the slots
connect( button_basevalue, TQT_SIGNAL( clicked() ), this, TQT_SLOT( selBasevalue() ) );
connect( button_percentvalue, TQT_SIGNAL( clicked() ), this, TQT_SLOT( selPercentvalue() ) );
connect( button_percentage, TQT_SIGNAL( clicked() ), this, TQT_SLOT( selPercentage() ) );
connect( button_random, TQT_SIGNAL( clicked() ), this, TQT_SLOT( selRandom() ) );
connect( button_help, TQT_SIGNAL( clicked() ), this, TQT_SLOT( needHelp() ) );
connect( button_close, TQT_SIGNAL( clicked() ), this, TQT_SLOT( accept() ) );
////////
// begin layouting
////////
TQVBoxLayout *main_layout = new TQVBoxLayout( this, 20, 20, "main_layout" );
main_layout->setResizeMode( TQLayout::FreeResize );
TQHBoxLayout *top_layout = new TQHBoxLayout( 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();
TQHBoxLayout *bottom_layout = new TQHBoxLayout( main_layout, -1, "bottom_layout" );
TQVBoxLayout *bLeftLayout = new TQVBoxLayout( bottom_layout );
bLeftLayout->addWidget( label_choose );
bLeftLayout->addSpacing( 10 );
TQGridLayout *grid_layout = new TQGridLayout( 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();
TQVBoxLayout *b_right_layout = new TQVBoxLayout( 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
TQToolTip::add( button_basevalue, i18n( "Exercises with base value omitted" ) );
TQToolTip::add( button_percentvalue, i18n( "Exercises with percent value omitted" ) );
TQToolTip::add( button_percentage, i18n( "Exercises with percentage omitted" ) );
TQToolTip::add( button_random, i18n( "Several exercise types in random" ) );
TQToolTip::add( spin_box_number, i18n( "Choose the number of exercises from 1 to 10." ) );
TQToolTip::add( combo_box_level, i18n( "Choose the level of difficulty." ) );
TQToolTip::add( button_close, i18n( "Close KPercentage." ) );
TQToolTip::add( button_help, i18n( "Get some help." ) );
////////
// WhatsThis
TQWhatsThis::add( button_basevalue, i18n( "Click here to start a sequence of exercises where the base value is omitted.") );
TQWhatsThis::add( button_percentvalue, i18n( "Click here to start a sequence of exercises where the percent value is omitted." ) );
TQWhatsThis::add( button_percentage, i18n( "Click here to start a sequence of exercises where the percentage is omitted." ) );
TQWhatsThis::add( button_random, i18n( "Click here to start a sequence of exercises where one value is omitted at random." ) );
TQWhatsThis::add( spin_box_number, i18n( "Here you can adjust the number of exercises from 1 to 10." ) );
TQWhatsThis::add( combo_box_level, i18n( "Choose one of the levels <i>easy</i>, <i>medium</i>, and <i>crazy</i>." ) );
TQWhatsThis::add( button_close, i18n( "Close KPercentage." ) );
TQWhatsThis::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();
TQPoint p = pos();
hide();
percent_main->move( p );
percent_main->exec();
move( p );
show();
}
void KPercentage::needHelp()
{
kapp->invokeHelp( "", "kpercentage" );
}
void KPercentage::closeEvent( TQCloseEvent * )
{
exit( 0 );
}
#include "kpercentage.moc"