1 /* coloring_rules_model.h 2 * Data model for coloring rules. 3 * 4 * Wireshark - Network traffic analyzer 5 * By Gerald Combs <gerald@wireshark.org> 6 * Copyright 1998 Gerald Combs 7 * 8 * SPDX-License-Identifier: GPL-2.0-or-later 9 */ 10 11 #ifndef COLORING_RULES_MODEL_H 12 #define COLORING_RULES_MODEL_H 13 14 #include <config.h> 15 16 #include <glib.h> 17 #include <epan/color_filters.h> 18 19 #include <ui/qt/models/tree_model_helpers.h> 20 21 #include <QList> 22 #include <QColor> 23 #include <QAbstractTableModel> 24 #include <QSortFilterProxyModel> 25 26 class ColoringRuleItem : public ModelHelperTreeItem<ColoringRuleItem> 27 { 28 public: 29 ColoringRuleItem(bool disabled, QString name, QString filter, QColor foreground, QColor background, ColoringRuleItem* parent); 30 virtual ~ColoringRuleItem(); 31 32 ColoringRuleItem(color_filter_t *colorf, ColoringRuleItem* parent); 33 ColoringRuleItem(const ColoringRuleItem& item); 34 35 bool disabled_; 36 QString name_; 37 QString filter_; 38 QColor foreground_; 39 QColor background_; 40 41 ColoringRuleItem& operator=(ColoringRuleItem& rhs); 42 43 }; 44 45 class ColoringRulesModel : public QAbstractItemModel 46 { 47 Q_OBJECT 48 49 public: 50 ColoringRulesModel(QColor defaultForeground, QColor defaultBackground, QObject *parent); 51 virtual ~ColoringRulesModel(); 52 53 enum ColoringRulesColumn { 54 colName = 0, 55 colFilter, 56 colColoringRulesMax 57 }; 58 59 void addColor(color_filter_t* colorf); 60 void addColor(bool disabled, QString filter, QColor foreground, QColor background); 61 bool importColors(QString filename, QString& err); 62 bool exportColors(QString filename, QString& err); 63 bool writeColors(QString& err); 64 65 Qt::ItemFlags flags(const QModelIndex &index) const; 66 QVariant data(const QModelIndex &index, int role) const; 67 bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); 68 QVariant headerData(int section, Qt::Orientation orientation, 69 int role = Qt::DisplayRole) const; 70 QModelIndex index(int row, int column, 71 const QModelIndex & = QModelIndex()) const; 72 QModelIndex parent(const QModelIndex &) const; 73 74 //Drag & drop functionality 75 Qt::DropActions supportedDropActions() const; 76 QStringList mimeTypes() const; 77 QMimeData* mimeData(const QModelIndexList &indexes) const; 78 bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); 79 80 int rowCount(const QModelIndex &parent = QModelIndex()) const; 81 int columnCount(const QModelIndex &parent = QModelIndex()) const; 82 83 bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); 84 bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); 85 bool copyRow(int dst_row, int src_row); 86 87 private: 88 void populate(); 89 struct _GSList *createColorFilterList(); 90 91 ColoringRuleItem* root_; 92 //Save off the conversation colors, do not include in dialog 93 struct _GSList *conversation_colors_; 94 95 QColor defaultForeground_; 96 QColor defaultBackground_; 97 98 QList<int> dragDropRows_; 99 }; 100 101 #endif // COLORING_RULES_MODEL_H 102