File indexing completed on 2024-05-05 05:48:57

0001 /*
0002     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QStandardItem>
0010 #include <QWidget>
0011 
0012 #include <KTreeWidgetSearchLine>
0013 
0014 #include "globals.h"
0015 #include "logViewColumns.h"
0016 
0017 class LogViewWidget;
0018 class LogViewWidgetSearchLine;
0019 class QComboBox;
0020 
0021 class LogViewFilterWidget : public QWidget
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     explicit LogViewFilterWidget(QWidget *parent = nullptr);
0027 
0028     ~LogViewFilterWidget() override;
0029 
0030     QComboBox *filterList() const;
0031     LogViewWidgetSearchLine *filterLine() const;
0032 
0033 public Q_SLOTS:
0034     void updateFilterColumns(const LogViewColumns &list);
0035 
0036 private Q_SLOTS:
0037     void changeColumnFilter(int column);
0038     void prioritiesChanged(QStandardItem *item);
0039 
0040 Q_SIGNALS:
0041     void treeWidgetUpdated();
0042 
0043 private:
0044     void initSearchListFilter();
0045     LogViewWidgetSearchLine *mFilterLine = nullptr;
0046 
0047     /**
0048      * Filter of the column list
0049      */
0050     QComboBox *mFilterList = nullptr;
0051 
0052     QComboBox *mPrioritiesComboBox = nullptr;
0053 
0054     QStandardItemModel *mPrioritiesModel = nullptr;
0055 };
0056 
0057 class LogViewWidgetSearchLine : public KTreeWidgetSearchLine
0058 {
0059     Q_OBJECT
0060 
0061 public:
0062     explicit LogViewWidgetSearchLine(QWidget *parent = nullptr);
0063 
0064     ~LogViewWidgetSearchLine() override;
0065 
0066     // Silence compiler warning
0067     using KTreeWidgetSearchLine::updateSearch;
0068 
0069     // Reimplemented just to send a signal _AFTER_ the tree updating
0070     void updateSearch(const QString &pattern = QString()) override;
0071 
0072     void setPriorityEnabled(int priority, bool enabled);
0073 
0074 protected:
0075     bool itemMatches(const QTreeWidgetItem *item, const QString &pattern) const override;
0076 
0077 Q_SIGNALS:
0078     void treeWidgetUpdated();
0079 
0080 private:
0081     bool mPriorities[Globals::LOG_LEVEL_NUM];
0082 };