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

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 <QTreeWidgetItemIterator>
0010 #include <QWidget>
0011 
0012 #include "ui_logViewSearchWidgetBase.h"
0013 
0014 class LogViewWidget;
0015 class LogViewWidgetItem;
0016 
0017 class LogViewSearchWidget : public QWidget, public Ui::LogViewSearchWidgetBase
0018 {
0019     Q_OBJECT
0020 
0021 public:
0022     explicit LogViewSearchWidget(QWidget *parent = nullptr);
0023 
0024     ~LogViewSearchWidget() override;
0025 
0026     void setTreeWidget(LogViewWidget *logViewWidget);
0027 
0028 public Q_SLOTS:
0029     void displaySearch();
0030 
0031     void findFirst();
0032 
0033     void findFirst(const QString &);
0034     void findNext();
0035     void findPrevious();
0036 
0037 private Q_SLOTS:
0038     void hideMessage();
0039 
0040     void highlightAll();
0041 
0042 private:
0043     enum Direction { Next, Previous };
0044     Q_DECLARE_FLAGS(Directions, Direction)
0045 
0046     void showMessage(const QString &text, const QString &iconText);
0047 
0048     void internalFind(LogViewWidgetItem *fromItem, Direction direction);
0049 
0050     void setSearchLineNotFound(bool notFound);
0051     void unselectAll();
0052     bool findItem(LogViewWidgetItem *item);
0053 
0054     bool compareItem(LogViewWidgetItem *item);
0055 
0056     void unlightAll();
0057 
0058     inline void initIterator(QTreeWidgetItemIterator &it, Direction direction);
0059     inline void iteratorJump(QTreeWidgetItemIterator &it, Direction direction);
0060     LogViewWidget *mLogViewWidget = nullptr;
0061 
0062     QColor mSearchLineBaseColor;
0063     QColor mSearchLineTextColor;
0064 
0065     QTimer *mMessageHidingTimer = nullptr;
0066 };