File indexing completed on 2024-04-28 17:06:03

0001 /*
0002     SPDX-FileCopyrightText: 2003 Csaba Karai <krusader@users.sourceforge.net>
0003     SPDX-FileCopyrightText: 2004-2022 Krusader Krew <https://krusader.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef GENERALFILTER_H
0009 #define GENERALFILTER_H
0010 
0011 // QtWidgets
0012 #include <QCheckBox>
0013 #include <QGroupBox>
0014 #include <QHBoxLayout>
0015 #include <QLabel>
0016 #include <QLayout>
0017 #include <QWidget>
0018 
0019 #include <KCompletion/KComboBox>
0020 #include <KShellCompletion>
0021 
0022 #include "../Dialogs/kurllistrequester.h"
0023 #include "../GUI/krhistorycombobox.h"
0024 #include "../GUI/krlistwidget.h"
0025 #include "../GUI/profilemanager.h"
0026 #include "filterbase.h"
0027 
0028 class GeneralFilter : public QWidget, public FilterBase
0029 {
0030     Q_OBJECT
0031 
0032 public:
0033     GeneralFilter(FilterTabs *tabs, int properties, QWidget *parent = nullptr, QStringList extraOptions = QStringList());
0034     ~GeneralFilter() override;
0035 
0036     void queryAccepted() override;
0037     QString name() override
0038     {
0039         return "GeneralFilter";
0040     }
0041     FilterTabs *filterTabs() override
0042     {
0043         return fltTabs;
0044     }
0045     bool getSettings(FilterSettings &) override;
0046     void applySettings(const FilterSettings &) override;
0047 
0048     bool isExtraOptionChecked(const QString &name);
0049     void checkExtraOption(const QString &name, bool check);
0050 
0051 public slots:
0052     void slotAddBtnClicked();
0053     void slotLoadBtnClicked();
0054     void slotOverwriteBtnClicked();
0055     void slotRemoveBtnClicked();
0056     void slotDisable();
0057     void slotRegExpTriggered(QAction *act);
0058     void slotProfileDoubleClicked(QListWidgetItem *);
0059     void refreshProfileListBox();
0060 
0061 public:
0062     KComboBox *contentEncoding;
0063     QCheckBox *searchForCase;
0064     QCheckBox *containsTextCase;
0065     QCheckBox *containsWholeWord;
0066     QCheckBox *useExcludeFolderNames;
0067     QCheckBox *searchInDirs;
0068     QCheckBox *searchInArchives;
0069     QCheckBox *followLinks;
0070     QHash<QString, QCheckBox *> extraOptions;
0071 
0072     KURLListRequester *searchIn;
0073     KURLListRequester *dontSearchIn;
0074     QLayout *middleLayout;
0075 
0076     KrHistoryComboBox *searchFor;
0077     KrHistoryComboBox *containsText;
0078     KrHistoryComboBox *excludeFolderNames;
0079     QToolButton *containsRegExp;
0080 
0081     KComboBox *ofType;
0082 
0083     QLabel *encLabel;
0084     QLabel *containsLabel;
0085 
0086     KShellCompletion completion;
0087 
0088     KrListWidget *profileListBox;
0089 
0090     QPushButton *profileAddBtn;
0091     QPushButton *profileLoadBtn;
0092     QPushButton *profileOverwriteBtn;
0093     QPushButton *profileRemoveBtn;
0094 
0095     ProfileManager *profileManager;
0096 
0097     int properties;
0098 
0099     FilterTabs *fltTabs;
0100 
0101 private:
0102     QCheckBox *createExcludeCheckBox(const KConfigGroup &group);
0103     KrHistoryComboBox *createExcludeComboBox(const KConfigGroup &group);
0104 };
0105 
0106 #endif /* GENERALFILTER_H */