]> sigrok.org Git - pulseview.git/blobdiff - pv/views/tabular_decoder/view.hpp
TabularDecView: Fix invalid assert()
[pulseview.git] / pv / views / tabular_decoder / view.hpp
index a6bd9ea3c613d353b33afd1a93061a2008fbd57d..290e42a14b8f06d57bf079dd9e4aec351a3e832a 100644 (file)
@@ -21,6 +21,7 @@
 #define PULSEVIEW_PV_VIEWS_TABULARDECODER_VIEW_HPP
 
 #include <QAction>
+#include <QCheckBox>
 #include <QComboBox>
 #include <QTableView>
 #include <QToolButton>
@@ -36,6 +37,25 @@ namespace views {
 
 namespace tabular_decoder {
 
+// When adding an entry here, don't forget to update SaveTypeNames as well
+enum SaveType {
+       SaveTypeCSVEscaped,
+       SaveTypeCSVQuoted,
+       SaveTypeCount  // Indicates how many save types there are, must always be last
+};
+
+// When adding an entry here, don't forget to update ViewModeNames as well
+enum ViewModeType {
+       ViewModeAll,
+       ViewModeLatest,
+//     ViewModeVisible,
+       ViewModeCount // Indicates how many view mode types there are, must always be last
+};
+
+extern const char* SaveTypeNames[SaveTypeCount];
+extern const char* ViewModeNames[ViewModeCount];
+
+
 class AnnotationCollectionModel : public QAbstractTableModel, public GlobalSettingsInterface
 {
        Q_OBJECT
@@ -43,6 +63,7 @@ class AnnotationCollectionModel : public QAbstractTableModel, public GlobalSetti
 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;
 
@@ -57,14 +78,21 @@ public:
        int columnCount(const QModelIndex& parent_idx = QModelIndex()) const override;
 
        void set_signal_and_segment(data::DecodeSignal* signal, uint32_t current_segment);
+       void set_hide_hidden(bool hide_hidden);
+
+       void update_annotations_without_hidden();
 
        void on_setting_changed(const QString &key, const QVariant &value) override;
 
 private:
        vector<QVariant> header_data_;
        const deque<const Annotation*>* all_annotations_;
+       deque<const Annotation*> all_annotations_without_hidden_;
+       const deque<const Annotation*>* dataset_;
+       data::DecodeSignal* signal_;
        uint32_t prev_segment_;
        uint64_t prev_last_row_;
+       bool hide_hidden_;
        bool theme_is_dark_;
 };
 
@@ -105,10 +133,13 @@ private:
        void reset_data();
        void update_data();
 
-       void save_data() const;
+       void save_data_as_csv(unsigned int save_type) const;
 
 private Q_SLOTS:
        void on_selected_decoder_changed(int index);
+       void on_hide_hidden_changed(bool checked);
+       void on_view_mode_changed(int index);
+
        void on_signal_name_changed(const QString &name);
        void on_signal_color_changed(const QColor &color);
        void on_new_annotations();
@@ -119,12 +150,19 @@ private Q_SLOTS:
 
        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_;
+       QCheckBox* hide_hidden_cb_;
+       QComboBox* view_mode_selector_;
 
        QToolButton* save_button_;
        QAction* save_action_;
@@ -135,7 +173,6 @@ private:
 
        data::DecodeSignal* signal_;
        const data::decode::Decoder* decoder_;
-       bool updating_data_;
 };
 
 } // namespace tabular_decoder