File indexing completed on 2024-05-19 04:21:48
0001 /** 0002 * SPDX-FileCopyrightText: 2001-2015 Klaralvdalens Datakonsult AB. All rights reserved. 0003 * 0004 * This file is part of the KD Chart library. 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #include "datasetsettings.h" 0010 #include "ui_datasetsettings.h" 0011 0012 #include <KChartAbstractCoordinatePlane> 0013 #include <KChartChart> 0014 0015 #include <QColorDialog> 0016 #include <QFileDialog> 0017 0018 #include <QStyleFactory> 0019 0020 #include <QImage> 0021 0022 #include <QObject> 0023 0024 #include <QDebug> 0025 0026 #include "gradientdialog.h" 0027 0028 using namespace KChart; 0029 0030 class DatasetSettings::Private : public QObject 0031 { 0032 Q_OBJECT 0033 public: 0034 Private( Chart *chart, DatasetSettings *q, QObject *parent ); 0035 ~Private() override; 0036 0037 Ui::DatasetSettings *ui; 0038 int m_dataset; 0039 int m_datasetCount; 0040 KChart::Chart *m_chart; 0041 DatasetSettings *qq; 0042 public Q_SLOTS: 0043 void changeColor(); 0044 void changeOutline(); 0045 }; 0046 0047 DatasetSettings::Private::Private( Chart *chart, DatasetSettings *q, QObject *parent ) 0048 : QObject( parent ) 0049 , ui( new Ui::DatasetSettings ) 0050 , m_dataset( 0 ) 0051 , m_datasetCount( 0 ) 0052 , m_chart( chart ) 0053 , qq( q ) 0054 { 0055 0056 } 0057 0058 DatasetSettings::Private::~Private() 0059 { 0060 delete ui; 0061 } 0062 0063 void DatasetSettings::Private::changeColor() 0064 { 0065 const int index = ui->datasetSelector->currentIndex(); 0066 if ( ui->Color->isChecked() ) 0067 { 0068 QBrush setBrush = m_chart->coordinatePlane()->diagram()->brush( index ); 0069 const QColor color = QColorDialog::getColor( setBrush.color(), qq, tr( "Choose new color" ) ); 0070 if ( !color.isValid() ) 0071 return; 0072 m_chart->coordinatePlane()->diagram()->setBrush( index, color ); 0073 QPalette palette = ui->colorDisplay->palette(); 0074 palette.setBrush( QPalette::Button, color ); 0075 ui->colorDisplay->setPalette( palette ); 0076 } 0077 else if ( ui->textureBtn->isChecked() ) 0078 { 0079 //QBrush setBrush = m_chart->coordinatePlane()->diagram()->brush( index ); 0080 QImage texture; 0081 0082 const QString filename = QFileDialog::getOpenFileName( qq, tr( "Choose Texture" ), QString(), tr( "Images (*.png *.xpm *.jpg)" ) ); 0083 if ( filename.isEmpty() ) 0084 return; 0085 texture = QImage( filename ); 0086 m_chart->coordinatePlane()->diagram()->setBrush( index, texture ); 0087 QPalette palette = ui->colorDisplay->palette(); 0088 palette.setBrush( QPalette::Button, QBrush( texture ) ); 0089 ui->colorDisplay->setPalette( palette ); 0090 } 0091 else 0092 { 0093 QBrush setBrush = m_chart->coordinatePlane()->diagram()->brush( index ); 0094 QGradient grad; 0095 QLinearGradient lGrad; 0096 lGrad.setColorAt( 0, Qt::black ); 0097 lGrad.setColorAt( 1, setBrush.color() ); 0098 grad = lGrad; 0099 0100 if ( setBrush.gradient() ) 0101 grad = *setBrush.gradient(); 0102 const QGradient &color = GradientDialog::getGradient( grad, qq, tr( "Choose new color" ) ); 0103 m_chart->coordinatePlane()->diagram()->setBrush( index, color ); 0104 QPalette palette = ui->colorDisplay->palette(); 0105 palette.setBrush( QPalette::Button, QBrush( color ) ); 0106 ui->colorDisplay->setPalette( palette ); 0107 } 0108 } 0109 0110 void DatasetSettings::Private::changeOutline() 0111 { 0112 const int index = ui->datasetSelector->currentIndex(); 0113 if ( ui->Color->isChecked() ) 0114 { 0115 QPen pen = m_chart->coordinatePlane()->diagram()->pen( index ); 0116 const QColor color = QColorDialog::getColor( pen.color(), qq, tr( "Choose new color" ) ); 0117 if ( !color.isValid() ) 0118 return; 0119 pen.setColor( color ); 0120 m_chart->coordinatePlane()->diagram()->setPen( index, pen ); 0121 QPalette palette = ui->outlineBtn->palette(); 0122 palette.setBrush( QPalette::Button, color ); 0123 ui->outlineBtn->setPalette( palette ); 0124 } 0125 } 0126 0127 DatasetSettings::DatasetSettings( Chart *chart, QWidget *parent ) 0128 : QWidget( parent ) 0129 , d( new Private( chart, this, this ) ) 0130 { 0131 d->ui->setupUi(this); 0132 #ifdef Q_OS_LINUX 0133 d->ui->colorDisplay->setStyle( QStyleFactory::create( QStringLiteral( "cleanlooks" ) ) ); 0134 d->ui->outlineBtn->setStyle( QStyleFactory::create( QStringLiteral( "cleanlooks" ) ) ); 0135 #endif 0136 connect( d->ui->datasetSelector, SIGNAL(currentIndexChanged(int)), this, SLOT(indexChanged(int)) ); 0137 connect( d->ui->colorDisplay, SIGNAL(clicked()), d, SLOT(changeColor()) ); 0138 connect( d->ui->outlineBtn, SIGNAL(clicked()), d, SLOT(changeOutline()) ); 0139 } 0140 0141 DatasetSettings::~DatasetSettings() 0142 { 0143 delete d; 0144 } 0145 0146 int DatasetSettings::datasetCount() const 0147 { 0148 return d->m_datasetCount; 0149 } 0150 void DatasetSettings::setDatasetCount( int value ) 0151 { 0152 if ( d->m_datasetCount != value ) 0153 { 0154 d->m_datasetCount = value; 0155 QStringList list; 0156 for ( int i = 0; i < value; ++i ) 0157 { 0158 list << tr( "Dataset %1" ).arg( i ); 0159 } 0160 d->ui->datasetSelector->clear(); 0161 d->ui->datasetSelector->addItems( list ); 0162 Q_EMIT datasetCountChanged(); 0163 } 0164 } 0165 0166 void DatasetSettings::indexChanged( int index ) 0167 { 0168 if ( d->m_chart && index >= 0 ) 0169 { 0170 const QBrush setBrush = d->m_chart->coordinatePlane()->diagram()->brush( index ); 0171 QPalette palette = d->ui->colorDisplay->palette(); 0172 if ( setBrush.gradient() ) 0173 d->ui->radioButton_2->setChecked( true ); 0174 else if ( !setBrush.textureImage().isNull() ) 0175 d->ui->textureBtn->setChecked( true ); 0176 else 0177 d->ui->Color->setChecked( true ); 0178 palette.setBrush( QPalette::Button, setBrush ); 0179 d->ui->colorDisplay->setPalette( palette ); 0180 const QPen pen = d->m_chart->coordinatePlane()->diagram()->pen( index ); 0181 QPalette penPalette = d->ui->outlineBtn->palette(); 0182 penPalette.setBrush( QPalette::Button, pen.color() ); 0183 d->ui->outlineBtn->setPalette( penPalette ); 0184 } 0185 } 0186 0187 void DatasetSettings::diagramTypeChanged() 0188 { 0189 0190 } 0191 0192 #include "datasetsettings.moc"