/** * @RDE_HEADER@ * * TableView for dynamic topics * * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include #include #include #include "logger.h" #include "samplemodel.h" class SampleSortModel; class DetailViewDlg; class TopicSelector; class SampleView : public QTableView { Q_OBJECT public: explicit SampleView(QWidget *parent = nullptr); ~SampleView(); SampleModel *sampleModel() {return m_model;} void setConnected(bool bConnected) { m_bConnected = bConnected; } int currentRow() const; void setCurrentRow(int row); public slots: void onPlayChecked(bool down); void onSetRepeat(bool repeat) { m_repeat = repeat; } void onSaveSampleList(); void onLoadSampleList(); private: void init(); SampleSortModel *m_proxyModel; SampleModel *m_model; TopicSelector *m_topicSelector; QTimer m_playTimer; bool m_repeat; bool m_bConnected; SampleModel::SampleData m_copiedSampleData; NGL::INGLLogger &m_logger; private slots: void onSendSample(const QModelIndex &mi); void onTableDoubleClicked(const QModelIndex &mi); void onCustomContextMenuRequested(const QPoint &p); void onNewTopicRequested(); void onAdd(const dds::core::xtypes::DynamicData &data, const QString &topicName); void onCopyTelegram(); void onPasteTelegram(); void onDeleteIndex(); void onSendIndex(); void onUpdateData(const QSharedPointer &data, const QString &topicName); void onSetCurrent(); void onPlayTimerTimeout(bool moveOn = true); signals: void dataClicked(const dds::core::xtypes::DynamicData &data); void send(const QSharedPointer &data, const QString &topicName); void playerActive(bool active); };