test_sdk/gui/gtl_gui_chart_markers.h

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