File indexing completed on 2024-05-19 04:21:56
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 "framewidget.h" 0010 0011 #include <KChartChart> 0012 0013 #include <QDebug> 0014 #include <QPainter> 0015 0016 FrameWidget::FrameWidget( QWidget* parent, Qt::WindowFlags f ) 0017 : QWidget( parent, f ) 0018 , mChart( nullptr ) 0019 { 0020 // this block left empty intentionally 0021 } 0022 0023 void FrameWidget::setChart( KChart::Chart* chart ) 0024 { 0025 mChart = chart; 0026 // This is necessary because Chart can't automatically schedule somebody else (this object) to 0027 // call its custom paint method. 0028 connect( mChart, SIGNAL(propertiesChanged()), SLOT(update()) ); 0029 } 0030 0031 void FrameWidget::paintEvent( QPaintEvent* e ) 0032 { 0033 if ( !mChart ) { 0034 QWidget::paintEvent( e ); 0035 } else { 0036 QPainter painter( this ); 0037 0038 const int wid = 64; 0039 const QRect r( rect() ); 0040 const QPen oldPen( painter.pen() ); 0041 const QBrush oldBrush( painter.brush() ); 0042 // paint below the chart 0043 painter.setPen( QPen(Qt::NoPen) ); 0044 painter.setBrush( QBrush(QColor(0xd0,0xd0,0xff)) ); 0045 painter.drawEllipse(r.left(), r.top(), wid,wid); 0046 painter.drawEllipse(r.left()+r.width()-wid-1, r.top(), wid,wid); 0047 painter.drawEllipse(r.left(), r.top()+r.height()-wid-1, wid,wid); 0048 painter.drawEllipse(r.left()+r.width()-wid-1, r.top()+r.height()-wid-1, wid,wid); 0049 painter.setBrush( oldBrush ); 0050 painter.setPen( oldPen ); 0051 // paint the chart 0052 mChart->paint( &painter, QRect( r.left()+wid/2, r.top()+wid/2, 0053 r.width()-wid, r.height()-wid ) ); 0054 // paint over the chart 0055 painter.setPen( QPen(Qt::NoPen) ); 0056 painter.setBrush( QBrush(QColor(0xd0,0xff,0xff)) ); 0057 const int wid2=40; 0058 const int gap=(wid-wid2)/2; 0059 painter.drawEllipse(r.left()+gap, r.top()+gap, wid2,wid2); 0060 painter.drawEllipse(r.left()+r.width()-wid+gap-1, r.top()+gap, wid2,wid2); 0061 painter.drawEllipse(r.left()+gap, r.top()+r.height()-wid+gap-1, wid2,wid2); 0062 painter.drawEllipse(r.left()+r.width()-wid+gap-1, r.top()+r.height()-wid+gap-1, wid2,wid2); 0063 painter.setBrush( oldBrush ); 0064 painter.setPen( oldPen ); 0065 } 0066 }