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.
koffice/kchart/kchartWizardSelectChartSubT...

196 lines
7.5 KiB

#include "kchartWizardSelectChartSubTypePage.h"
#include "kchart_view.h"
#include "kchart_part.h"
#include <qbuttongroup.h>
#include <qpushbutton.h>
#include <qradiobutton.h>
#include <qspinbox.h>
#include <qlabel.h>
#include <qptrcollection.h>
#include <qobjectlist.h>
#include <qlayout.h>
#include <qhbox.h>
#include <kdebug.h>
#include <kiconloader.h>
#include <kglobal.h>
#include <klocale.h>
#include <kdialog.h>
#include "kchart_params.h"
namespace KChart
{
KChartWizardSelectChartSubTypePage::KChartWizardSelectChartSubTypePage( QWidget* parent,
KChartPart* chart ) :
QWidget( parent ),
m_chart( chart )
{
// FIXME: Use KChartPart::chartType() instead, when implemented.
m_charttype = (KChartParams::ChartType) m_chart->params()->chartType();
chartSubType = true;
QGridLayout *grid1 = new QGridLayout(this, 3, 2, KDialog::marginHint(),
KDialog::spacingHint());
QVBoxLayout *lay1 = new QVBoxLayout( );
lay1->setMargin( KDialog::marginHint() );
lay1->setSpacing( KDialog::spacingHint() );
QButtonGroup *grp = new QButtonGroup( 1, QGroupBox::Horizontal,
i18n( "Chart Sub Type" ), this );
grp->setRadioButtonExclusive( true );
grp->layout();
lay1->addWidget(grp);
m_normal = new QRadioButton( i18n( "Normal" ), grp );
m_stacked = new QRadioButton( i18n( "Stacked" ), grp );
m_percent = new QRadioButton( i18n( "Percent" ), grp );
QHBox *hbox = new QHBox( this );
/*QLabel *lbl =*/ new QLabel( i18n( "Number of lines: "), hbox );
m_numLines = new QSpinBox( hbox );
if( ( m_chart->chartType() == KChartParams::Bar &&
m_chart->params()->barChartSubType() == KDChartParams::BarNormal )
|| ( m_chart->chartType() == KChartParams::Line &&
m_chart->params()->lineChartSubType() == KDChartParams::LineNormal )
|| ( m_chart->chartType() == KChartParams::Polar &&
m_chart->params()->polarChartSubType() == KDChartParams::PolarNormal )
|| ( m_chart->chartType() == KChartParams::Area &&
m_chart->params()->areaChartSubType() == KDChartParams::AreaNormal ) )
m_normal->setChecked( true );
else if( ( m_chart->params()->chartType() == KChartParams::Bar &&
m_chart->params()->barChartSubType() == KDChartParams::BarStacked ) ||
( m_chart->params()->chartType() == KChartParams::Line &&
m_chart->params()->lineChartSubType() == KDChartParams::LineStacked ) ||
( m_chart->params()->chartType() == KChartParams::Polar &&
m_chart->params()->polarChartSubType() == KDChartParams::PolarStacked ) ||
( m_chart->params()->chartType() == KChartParams::Area &&
m_chart->params()->areaChartSubType() == KDChartParams::AreaStacked ) )
m_stacked->setChecked( true );
else if( ( m_chart->params()->chartType() == KChartParams::Bar &&
m_chart->params()->barChartSubType() == KDChartParams::BarPercent ) ||
( m_chart->params()->chartType() == KChartParams::Line &&
m_chart->params()->lineChartSubType() == KDChartParams::LinePercent ) ||
( m_chart->params()->chartType() == KChartParams::Polar &&
m_chart->params()->polarChartSubType() == KDChartParams::PolarPercent ) ||
( m_chart->params()->chartType() == KChartParams::Area &&
m_chart->params()->areaChartSubType() == KDChartParams::AreaPercent ) )
m_percent->setChecked( true );
else {
kdDebug(35001)<<"Error in chart_type\n";
}
m_numLines->setValue( m_chart->params()->barNumLines() );
if( m_chart->params()->chartType() == KChartParams::HiLo)
{
if( m_chart->params()->hiLoChartSubType()==KDChartParams::HiLoNormal)
m_normal->setChecked( true );
else if(m_chart->params()->hiLoChartSubType()==KDChartParams::HiLoClose)
m_stacked->setChecked(true);
else if(m_chart->params()->hiLoChartSubType()==KDChartParams::HiLoOpenClose)
m_percent->setChecked(true);
}
changeSubTypeName( m_chart->chartType());
if(!chartSubType)
grp->setEnabled(false);
grid1->addWidget(grp, 0, 0);
grid1->addWidget(hbox, 1, 0);
}
void KChartWizardSelectChartSubTypePage::apply()
{
if (chartSubType) {
if( m_normal->isChecked() )
switch( m_chart->params()->chartType() ) {
case KChartParams::Bar:
m_chart->params()->setBarChartSubType( KDChartParams::BarNormal );
// FIXME: Error controls.
m_chart->params()->setBarNumLines( m_numLines->value() );
break;
case KChartParams::Line:
m_chart->params()->setLineChartSubType( KDChartParams::LineNormal );
break;
case KChartParams::Area:
m_chart->params()->setAreaChartSubType( KDChartParams::AreaNormal );
break;
case KChartParams::HiLo:
m_chart->params()->setHiLoChartSubType(KDChartParams::HiLoNormal);
break;
case KChartParams::Polar:
m_chart->params()->setPolarChartSubType( KDChartParams::PolarNormal );
default:
kdDebug( 35001 ) << "Error in group button\n";
}
else if ( m_stacked->isChecked() )
switch( m_chart->params()->chartType() ) {
case KChartParams::Bar:
m_chart->params()->setBarChartSubType( KDChartParams::BarStacked );
break;
case KChartParams::Line:
m_chart->params()->setLineChartSubType( KDChartParams::LineStacked );
break;
case KChartParams::Area:
m_chart->params()->setAreaChartSubType( KDChartParams::AreaStacked );
break;
case KChartParams::HiLo:
m_chart->params()->setHiLoChartSubType( KDChartParams::HiLoClose);
break;
case KChartParams::Polar:
m_chart->params()->setPolarChartSubType( KDChartParams::PolarStacked );
break;
default:
kdDebug( 35001 ) << "Error in group button\n";
}
else if( m_percent->isChecked() )
switch( m_chart->params()->chartType() ) {
case KChartParams::Bar:
m_chart->params()->setBarChartSubType( KDChartParams::BarPercent );
break;
case KChartParams::Line:
m_chart->params()->setLineChartSubType( KDChartParams::LinePercent );
break;
case KChartParams::Area:
m_chart->params()->setAreaChartSubType( KDChartParams::AreaPercent );
break;
case KChartParams::HiLo:
m_chart->params()->setHiLoChartSubType( KDChartParams::HiLoOpenClose);
break;
case KChartParams::Polar:
m_chart->params()->setPolarChartSubType( KDChartParams::PolarPercent );
break;
default:
kdDebug( 35001 ) << "Error in group button\n";
}
else
kdDebug(35001)<<"Error in groupbutton\n";
}
}
void KChartWizardSelectChartSubTypePage::changeSubTypeName( KChartParams::ChartType _type)
{
if (_type==KChartParams::HiLo)
{
m_stacked->setText( i18n("HiLoClose") );
m_percent->setText( i18n("HiLoOpenClose") );
}
else
{
m_stacked->setText( i18n( "Stacked" ) );
m_percent->setText( i18n( "Percent" ) );
}
}
} //KChart namespace
#include "kchartWizardSelectChartSubTypePage.moc"