#include <QTableView>
#include <QToolButton>
+#include "pv/globalsettings.hpp"
#include "pv/views/viewbase.hpp"
#include "pv/data/decodesignal.hpp"
namespace tabular_decoder {
-class AnnotationCollectionItem
-{
-public:
- AnnotationCollectionItem(const vector<QVariant>& data,
- shared_ptr<AnnotationCollectionItem> parent = nullptr);
-
- void appendSubItem(shared_ptr<AnnotationCollectionItem> item);
-
- shared_ptr<AnnotationCollectionItem> subItem(int row) const;
- shared_ptr<AnnotationCollectionItem> parent() const;
- shared_ptr<AnnotationCollectionItem> findSubItem(const QVariant& value, int column);
-
- int subItemCount() const;
- int columnCount() const;
- int row() const;
- QVariant data(int column) const;
-
-private:
- vector< shared_ptr<AnnotationCollectionItem> > subItems_;
- vector<QVariant> data_;
- shared_ptr<AnnotationCollectionItem> parent_;
-};
-
-
-class AnnotationCollectionModel : public QAbstractItemModel
+class AnnotationCollectionModel : public QAbstractTableModel, public GlobalSettingsInterface
{
Q_OBJECT
public:
AnnotationCollectionModel(QObject* parent = nullptr);
+ QVariant data_from_ann(const Annotation* ann, int index) const;
QVariant data(const QModelIndex& index, int role) const override;
Qt::ItemFlags flags(const QModelIndex& index) const override;
int rowCount(const QModelIndex& parent_idx = QModelIndex()) const override;
int columnCount(const QModelIndex& parent_idx = QModelIndex()) const override;
+ void set_signal_and_segment(data::DecodeSignal* signal, uint32_t current_segment);
+
+ void on_setting_changed(const QString &key, const QVariant &value) override;
+
private:
- shared_ptr<AnnotationCollectionItem> root_;
+ vector<QVariant> header_data_;
+ const deque<const Annotation*>* all_annotations_;
+ data::DecodeSignal* signal_;
+ uint32_t prev_segment_;
+ uint64_t prev_last_row_;
+ bool theme_is_dark_;
+};
+
+
+class QCustomTableView : public QTableView
+{
+ Q_OBJECT
+
+public:
+ QSize minimumSizeHint() const;
+ QSize sizeHint() const;
};
private Q_SLOTS:
void on_selected_decoder_changed(int index);
void on_signal_name_changed(const QString &name);
+ void on_signal_color_changed(const QColor &color);
void on_new_annotations();
+ void on_decoder_reset();
void on_decoder_stacked(void* decoder);
void on_decoder_removed(void* decoder);
void on_actionSave_triggered(QAction* action = nullptr);
+ void on_table_item_clicked(const QModelIndex& index);
+ void on_table_item_double_clicked(const QModelIndex& index);
+ void on_table_header_requested(const QPoint& pos);
+ void on_table_header_toggled(bool checked);
+
virtual void perform_delayed_view_update();
private:
QWidget* parent_;
- QComboBox *decoder_selector_;
+ QComboBox* decoder_selector_;
QToolButton* save_button_;
QAction* save_action_;
- QTableView* table_view_;
+ QCustomTableView* table_view_;
AnnotationCollectionModel* model_;
- data::DecodeSignal *signal_;
- const data::decode::Decoder *decoder_;
+ data::DecodeSignal* signal_;
+ const data::decode::Decoder* decoder_;
+ bool updating_data_;
};
} // namespace tabular_decoder