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

0001 /*
0002     SPDX-FileCopyrightText: 2003 Shie Erlich <krusader@users.sourceforge.net>
0003     SPDX-FileCopyrightText: 2003 Rafi Yanai <krusader@users.sourceforge.net>
0004     SPDX-FileCopyrightText: 2003 Csaba Karai <krusader@users.sourceforge.net>
0005     SPDX-FileCopyrightText: 2004-2022 Krusader Krew <https://krusader.org>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #ifndef ADVANCEDFILTER_H
0011 #define ADVANCEDFILTER_H
0012 
0013 #include "filterbase.h"
0014 
0015 // QtWidgets
0016 #include <QCheckBox>
0017 #include <QRadioButton>
0018 #include <QToolButton>
0019 #include <QWidget>
0020 
0021 #include <KCompletion/KComboBox>
0022 #include <KCompletion/KLineEdit>
0023 
0024 class QSpinBox;
0025 
0026 class AdvancedFilter : public QWidget, public FilterBase
0027 {
0028     Q_OBJECT
0029 
0030 public:
0031     explicit AdvancedFilter(FilterTabs *tabs, QWidget *parent = nullptr);
0032 
0033     void queryAccepted() override
0034     {
0035     }
0036     QString name() override
0037     {
0038         return "AdvancedFilter";
0039     }
0040     FilterTabs *filterTabs() override
0041     {
0042         return fltTabs;
0043     }
0044     bool getSettings(FilterSettings &) override;
0045     void applySettings(const FilterSettings &) override;
0046 
0047 public slots:
0048     void modifiedBetweenSetDate1();
0049     void modifiedBetweenSetDate2();
0050     void notModifiedAfterSetDate();
0051 
0052 public:
0053     QCheckBox *minSizeEnabled;
0054     QSpinBox *minSizeAmount;
0055     KComboBox *minSizeType;
0056 
0057     QCheckBox *maxSizeEnabled;
0058     QSpinBox *maxSizeAmount;
0059     KComboBox *maxSizeType;
0060 
0061     QRadioButton *anyDateEnabled;
0062     QRadioButton *modifiedBetweenEnabled;
0063     QRadioButton *notModifiedAfterEnabled;
0064     QRadioButton *modifiedInTheLastEnabled;
0065 
0066     KLineEdit *modifiedBetweenData1;
0067     KLineEdit *modifiedBetweenData2;
0068 
0069     QToolButton *modifiedBetweenBtn1;
0070     QToolButton *modifiedBetweenBtn2;
0071     QToolButton *notModifiedAfterBtn;
0072 
0073     KLineEdit *notModifiedAfterData;
0074     QSpinBox *modifiedInTheLastData;
0075     QSpinBox *notModifiedInTheLastData;
0076     KComboBox *modifiedInTheLastType;
0077     KComboBox *notModifiedInTheLastType;
0078 
0079     QCheckBox *belongsToUserEnabled;
0080     KComboBox *belongsToUserData;
0081     QCheckBox *belongsToGroupEnabled;
0082     KComboBox *belongsToGroupData;
0083 
0084     QCheckBox *permissionsEnabled;
0085 
0086     KComboBox *ownerW;
0087     KComboBox *ownerR;
0088     KComboBox *ownerX;
0089     KComboBox *groupW;
0090     KComboBox *groupR;
0091     KComboBox *groupX;
0092     KComboBox *allW;
0093     KComboBox *allX;
0094     KComboBox *allR;
0095 
0096     FilterTabs *fltTabs;
0097 
0098 private:
0099     void changeDate(KLineEdit *p);
0100     void fillList(KComboBox *list, const QString &filename);
0101     void invalidDateMessage(KLineEdit *p);
0102     static QDate stringToDate(const QString &text)
0103     {
0104         // 30.12.16 is interpreted as 1916-12-30
0105         return QLocale().toDate(text, QLocale::ShortFormat).addYears(100);
0106     }
0107     static QString dateToString(const QDate &date)
0108     {
0109         return QLocale().toString(date, QLocale::ShortFormat);
0110     }
0111 };
0112 
0113 #endif /* ADVANCEDFILTER_H */