71 lines
1.9 KiB
C++
71 lines
1.9 KiB
C++
#ifndef CHART_MARKERS_H
|
|
#define CHART_MARKERS_H
|
|
|
|
#include <QAbstractTableModel>
|
|
|
|
#include "gtl_gui_chart_marker.h"
|
|
#include "gtl_gui_chart_series.h"
|
|
|
|
#include "gui_global.h"
|
|
|
|
namespace gtl
|
|
{
|
|
namespace gui
|
|
{
|
|
class GTL_GUI_EXPORT chart_markers : public QAbstractTableModel
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit chart_markers(QObject *parent = nullptr);
|
|
|
|
// Header:
|
|
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
|
|
|
|
// Basic functionality:
|
|
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
|
|
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
|
|
|
|
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
|
|
|
void add_marker(chart_marker *marker);
|
|
void remove_marker(chart_marker* marker);
|
|
void add_series(chart_series *series);
|
|
void remove_series(chart_series *series);
|
|
|
|
chart_marker* marker_at(const QPointF &point) const;
|
|
|
|
int count_markers() const;
|
|
|
|
chart_marker* marker(int idx) const;
|
|
|
|
|
|
void set_color(QColor color);
|
|
QColor color() const;
|
|
void set_bgnd_color(QColor color);
|
|
QColor bgnd_color() const;
|
|
|
|
private:
|
|
std::vector<chart_marker*> _markers;
|
|
std::vector<chart_series*> _series;
|
|
QColor _color;
|
|
QColor _bgnd_color;
|
|
|
|
private:
|
|
QVariant get_marker_value(int idx_marker, int idx_series) const;
|
|
int index_of(chart_marker* marker) const;
|
|
int index_of(chart_series* series) const;
|
|
void sort_markers();
|
|
|
|
signals:
|
|
void color_changed();
|
|
|
|
private slots:
|
|
void marker_position_changed();
|
|
void series_data_changed();
|
|
};
|
|
}
|
|
}
|
|
|
|
#endif // CHART_MARKERS_H
|