File indexing completed on 2024-05-26 04:23:44

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 "mainwindow.h"
0010 
0011 #include <KChartChart>
0012 #include <KChartAbstractCoordinatePlane>
0013 #include <KChartLineDiagram>
0014 #include <KChartGridAttributes>
0015 
0016 #include <QDebug>
0017 #include <QPainter>
0018 
0019 using namespace KChart;
0020 
0021 MainWindow::MainWindow( QWidget* parent ) :
0022     QWidget( parent )
0023 {
0024     setupUi( this );
0025 
0026     QHBoxLayout* chartLayout = new QHBoxLayout( chartFrame );
0027     m_chart = new Chart();
0028     chartLayout->addWidget( m_chart );
0029 
0030     // Use the new Layout-system.
0031     m_chart->setUseNewLayoutSystem(true);
0032 
0033     m_model.loadFromCSV( ":/data" );
0034     m_model2.loadFromCSV( ":/data2" );
0035 
0036     // Set up the diagram
0037     m_lines = new LineDiagram();
0038     m_lines->setModel( &m_model );
0039 
0040     m_lines2 = new LineDiagram();
0041     m_lines2->setModel( &m_model2 );
0042 
0043     // The by default built-in plane.
0044     KChart::CartesianCoordinatePlane* plane1 = static_cast< KChart::CartesianCoordinatePlane* >( m_chart->coordinatePlane() );
0045 
0046     // We call this "plane2" just for remembering, that we use it
0047     // in addition to the plane, that's built-in by default.
0048     plane2 = new CartesianCoordinatePlane( m_chart );
0049 
0050     CartesianAxis *xAxis = new CartesianAxis( m_lines );
0051     CartesianAxis *yAxis = new CartesianAxis( m_lines );
0052     CartesianAxis *yAxis2 = new CartesianAxis( m_lines2 );
0053 
0054     QList<qreal> ticks;
0055     ticks.append( 5 );
0056     ticks.append( 10 );
0057     ticks.append( 15 );
0058     xAxis->setCustomTicks(ticks);
0059 
0060     QMap< qreal, QString > annotations;
0061     annotations[ 5 ] = "Five";
0062     annotations[ 10 ] = "Ten";
0063     annotations[ 15 ] = "Fifteen";
0064     xAxis->setAnnotations( annotations );
0065 
0066     xAxis->setPosition( KChart::CartesianAxis::Top );
0067     yAxis->setPosition( KChart::CartesianAxis::Left );
0068     yAxis2->setPosition( KChart::CartesianAxis::Right );
0069 
0070     m_lines->addAxis( xAxis ); // shared axis, add to m_lines
0071     m_lines->addAxis( yAxis );
0072     m_lines2->addAxis( xAxis ); // and add to m_lines2
0073     m_lines2->addAxis( yAxis2 );
0074 
0075     m_chart->coordinatePlane()->replaceDiagram( m_lines );
0076     m_chart->setGlobalLeading( 20, 20, 20, 20 );
0077     plane2->replaceDiagram( m_lines2 );
0078     m_chart->addCoordinatePlane( plane2 );
0079 
0080     // Enable the annotations in both planes.
0081     KChart::GridAttributes grid1 = plane1->gridAttributes( Qt::Horizontal );
0082     grid1.setLinesOnAnnotations( true );
0083     plane1->setGridAttributes( Qt::Horizontal, grid1 );
0084     KChart::GridAttributes grid2 = plane2->gridAttributes( Qt::Horizontal );
0085     grid2.setLinesOnAnnotations( true );
0086     plane2->setGridAttributes( Qt::Horizontal, grid2 );
0087     m_chart->update();
0088 }