File indexing completed on 2024-05-19 05:44:23
0001 /* 0002 SPDX-FileCopyrightText: 2015-2017 Milian Wolff <mail@milianw.de> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #ifndef CHARTWIDGET_H 0008 #define CHARTWIDGET_H 0009 0010 #include <QWidget> 0011 0012 #include "summarydata.h" 0013 0014 class QRubberBand; 0015 class QAbstractItemModel; 0016 class QSpinBox; 0017 0018 class ChartModel; 0019 0020 namespace KChart { 0021 class Chart; 0022 class CartesianAxis; 0023 class Legend; 0024 class Plotter; 0025 } 0026 0027 class ChartWidget : public QWidget 0028 { 0029 Q_OBJECT 0030 public: 0031 explicit ChartWidget(QWidget* parent = nullptr); 0032 virtual ~ChartWidget(); 0033 0034 void setModel(ChartModel* model, bool minimalMode = false); 0035 0036 QSize sizeHint() const override; 0037 0038 struct Range 0039 { 0040 float start = -1; 0041 float end = -1; 0042 0043 bool operator==(const Range& rhs) const 0044 { 0045 return start == rhs.start && end == rhs.end; 0046 } 0047 0048 explicit operator bool() const 0049 { 0050 return start != end; 0051 } 0052 }; 0053 void setSelection(const Range& range); 0054 Range selection() const 0055 { 0056 return m_selection; 0057 } 0058 0059 void setSummaryData(const SummaryData& summaryData); 0060 0061 signals: 0062 void selectionChanged(const Range& range); 0063 void filterRequested(int64_t minTime, int64_t maxTime); 0064 0065 public slots: 0066 void saveAs(); 0067 0068 private: 0069 void updateToolTip(); 0070 void updateStatusTip(qint64 time); 0071 void updateAxesTitle(); 0072 void updateRubberBand(); 0073 bool eventFilter(QObject* watched, QEvent* event) override; 0074 0075 KChart::Plotter* m_totalPlotter = nullptr; 0076 KChart::Plotter* m_detailedPlotter = nullptr; 0077 QSpinBox* m_stackedDiagrams = nullptr; 0078 KChart::Chart* m_chart = nullptr; 0079 KChart::Legend* m_legend = nullptr; 0080 KChart::CartesianAxis* m_bottomAxis = nullptr; 0081 KChart::CartesianAxis* m_rightAxis = nullptr; 0082 ChartModel* m_model = nullptr; 0083 QRubberBand* m_rubberBand = nullptr; 0084 Range m_selection; 0085 SummaryData m_summaryData; 0086 QPixmap m_cachedChart; 0087 }; 0088 0089 #endif // CHARTWIDGET_H