File indexing completed on 2024-06-02 04:19:29
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2008-01-20 0007 * Description : User interface for searches 0008 * 0009 * SPDX-FileCopyrightText: 2008-2012 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de> 0010 * SPDX-FileCopyrightText: 2012-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0011 * 0012 * SPDX-License-Identifier: GPL-2.0-or-later 0013 * 0014 * ============================================================ */ 0015 0016 #ifndef DIGIKAM_SEARCH_FIELD_GROUP_H 0017 #define DIGIKAM_SEARCH_FIELD_GROUP_H 0018 0019 // Qt includes 0020 0021 #include <QList> 0022 #include <QSet> 0023 #include <QWidget> 0024 0025 // Local includes 0026 0027 #include "dexpanderbox.h" 0028 #include "coredbsearchxml.h" 0029 0030 class QGridLayout; 0031 class QLabel; 0032 class QVBoxLayout; 0033 0034 namespace Digikam 0035 { 0036 0037 class SearchFieldGroupLabel; 0038 class SearchGroup; 0039 class SearchField; 0040 class VisibilityController; 0041 0042 class SearchFieldGroup : public QWidget 0043 { 0044 Q_OBJECT 0045 0046 public: 0047 0048 explicit SearchFieldGroup(SearchGroup* const parent); 0049 0050 void addField(SearchField* const field); 0051 void setLabel(SearchFieldGroupLabel* const label); 0052 0053 SearchField* fieldForName(const QString& fieldName) const; 0054 void write(SearchXmlWriter& writer); 0055 0056 void reset(); 0057 0058 void markField(SearchField* const field); 0059 void clearMarkedFields(); 0060 QList<QRect> areaOfMarkedFields() const; 0061 0062 public Q_SLOTS: 0063 0064 void setFieldsVisible(bool visible); 0065 0066 protected Q_SLOTS: 0067 0068 void slotLabelClicked(); 0069 0070 protected: 0071 0072 QList<SearchField*> m_fields; 0073 QGridLayout* m_layout; 0074 SearchFieldGroupLabel* m_label; 0075 VisibilityController* m_controller; 0076 QSet<SearchField*> m_markedFields; 0077 0078 private: 0079 0080 // Disable 0081 SearchFieldGroup(QWidget*) = delete; 0082 }; 0083 0084 // ----------------------------------------------------------------------- 0085 0086 class SearchFieldGroupLabel : public QWidget 0087 { 0088 Q_OBJECT 0089 0090 public: 0091 0092 explicit SearchFieldGroupLabel(QWidget* const parent); 0093 0094 void setTitle(const QString& title); 0095 0096 public Q_SLOTS: 0097 0098 void displayExpanded(); 0099 void displayFolded(); 0100 0101 Q_SIGNALS: 0102 0103 void clicked(); 0104 0105 protected: 0106 0107 QString m_title; 0108 DClickLabel* m_titleLabel; 0109 QLabel* m_expandLabel; 0110 }; 0111 0112 } // namespace Digikam 0113 0114 #endif // DIGIKAM_SEARCH_FIELD_GROUP_H