digiKam
Loading...
Searching...
No Matches
searchview.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2008-01-20
7 * Description : User interface for searches
8 *
9 * SPDX-FileCopyrightText: 2008-2012 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QCache>
20#include <QList>
21#include <QRect>
22#include <QWidget>
23
24class QHBoxLayout;
25class QDialogButtonBox;
26class QPushButton;
27
28namespace Digikam
29{
30
31class SearchGroup;
32class SearchViewBottomBar;
33class SearchXmlCachingReader;
34class SearchXmlWriter;
35
37{
38public:
39
41 virtual ~SearchViewThemedPartsCache() = default;
42
43 virtual QPixmap groupLabelPixmap(int w, int h) = 0;
44 virtual QPixmap bottomBarPixmap(int w, int h) = 0;
45
46private:
47
48 Q_DISABLE_COPY(SearchViewThemedPartsCache)
49};
50
51class AbstractSearchGroupContainer : public QWidget
52{
53 Q_OBJECT
54
55public:
56
62 explicit AbstractSearchGroupContainer(QWidget* const parent = nullptr);
63
64public Q_SLOTS:
65
67 void removeSearchGroup(SearchGroup* group);
68
69protected:
70
73
76
79
81 void writeGroups(SearchXmlWriter& writer) const;
82
84 QList<QRect> startupAnimationAreaOfGroups() const;
85
88
90 virtual void addGroupToLayout(SearchGroup* group) = 0;
91
92protected Q_SLOTS:
93
95
96protected:
97
98 int m_groupIndex = 0;
99 QList<SearchGroup*> m_groups;
100};
101
102// -------------------------------------------------------------------------
103
106{
107 Q_OBJECT
108
109public:
110
111 SearchView();
112 ~SearchView() override;
113
114 void setup();
115 void setBottomBar(SearchViewBottomBar* const bar);
116
117 void read(const QString& search);
118 QString write() const;
119
120 QPixmap groupLabelPixmap(int w, int h) override;
121 QPixmap bottomBarPixmap(int w, int h) override;
122
123Q_SIGNALS:
124
125 void searchOk();
128
129protected Q_SLOTS:
130
131 void setTheme();
132 void slotAddGroupButton();
133 void slotResetButton();
134 void startAnimation();
135 void animationFrame(int);
136 void timeLineFinished();
137
138protected:
139
140 QPixmap cachedBannerPixmap(int w, int h) const;
141
142 void paintEvent(QPaintEvent* e) override;
143 void showEvent(QShowEvent* event) override;
144
145 SearchGroup* createSearchGroup() override;
146 void addGroupToLayout(SearchGroup* group) override;
147
148private:
149
150 // Disable.
151 SearchView(QWidget*) = delete;
152 SearchView(const SearchView&) = delete;
153 SearchView& operator=(const SearchView&) = delete;
154
155private:
156
157 class Private;
158 Private* const d = nullptr;
159};
160
161// -------------------------------------------------------------------------
162
163class SearchViewBottomBar : public QWidget
164{
165 Q_OBJECT
166
167public:
168
170 QWidget* const parent = nullptr);
171
172Q_SIGNALS:
173
174 void okPressed();
179
180protected:
181
182 void paintEvent(QPaintEvent*) override;
183
184protected:
185
186 QHBoxLayout* m_mainLayout = nullptr;
187
188 QDialogButtonBox* m_buttonBox = nullptr;
189 QPushButton* m_addGroupsButton = nullptr;
190 QPushButton* m_resetButton = nullptr;
191
193
194private Q_SLOTS:
195
196 void slotHelp();
197};
198
199} // namespace Digikam
Definition searchview.h:52
virtual SearchGroup * createSearchGroup()=0
Re-implement: create and setup a search group.
void removeSearchGroup(SearchGroup *group)
Definition searchview.cpp:64
int m_groupIndex
Definition searchview.h:98
void startReadingGroups(SearchXmlCachingReader &reader)
Call before reading the XML part that could contain group elements.
Definition searchview.cpp:79
QList< QRect > startupAnimationAreaOfGroups() const
Collects the data from the same method of all contained groups (position relative to this widget)
Definition searchview.cpp:132
QList< SearchGroup * > m_groups
Definition searchview.h:99
void removeSendingSearchGroup()
Definition searchview.cpp:127
void finishReadingGroups()
Call when the XML part is finished.
Definition searchview.cpp:102
void readGroup(SearchXmlCachingReader &reader)
Call when a group element is the current element.
Definition searchview.cpp:84
void writeGroups(SearchXmlWriter &writer) const
Write contained groups to writer.
Definition searchview.cpp:119
SearchGroup * addSearchGroup()
Definition searchview.cpp:52
virtual void addGroupToLayout(SearchGroup *group)=0
Re-implement: Adds a newly created group to the layout structures.
Definition searchgroup.h:39
Definition searchview.h:164
void paintEvent(QPaintEvent *) override
Definition searchview.cpp:539
QDialogButtonBox * m_buttonBox
Definition searchview.h:188
QPushButton * m_resetButton
Definition searchview.h:190
QHBoxLayout * m_mainLayout
Definition searchview.h:186
QPushButton * m_addGroupsButton
Definition searchview.h:189
SearchViewThemedPartsCache * m_themeCache
Definition searchview.h:192
Definition searchview.h:37
virtual QPixmap groupLabelPixmap(int w, int h)=0
virtual QPixmap bottomBarPixmap(int w, int h)=0
virtual ~SearchViewThemedPartsCache()=default
Definition searchview.h:106
void setTheme()
Definition searchview.cpp:372
void setBottomBar(SearchViewBottomBar *const bar)
Definition searchview.cpp:206
SearchView()
Definition searchview.cpp:162
~SearchView() override
Definition searchview.cpp:168
QPixmap groupLabelPixmap(int w, int h) override
Definition searchview.cpp:477
QPixmap cachedBannerPixmap(int w, int h) const
Definition searchview.cpp:458
void read(const QString &search)
Definition searchview.cpp:226
void timeLineFinished()
Definition searchview.cpp:314
void slotAddGroupButton()
Definition searchview.cpp:270
QString write() const
Definition searchview.cpp:291
void setup()
Definition searchview.cpp:173
SearchGroup * createSearchGroup() override
Re-implement: create and setup a search group.
Definition searchview.cpp:262
void slotResetButton()
Definition searchview.cpp:275
void addGroupToLayout(SearchGroup *group) override
Re-implement: Adds a newly created group to the layout structures.
Definition searchview.cpp:255
QPixmap bottomBarPixmap(int w, int h) override
Definition searchview.cpp:482
void startAnimation()
Definition searchview.cpp:301
void animationFrame(int)
Definition searchview.cpp:309
void paintEvent(QPaintEvent *e) override
Definition searchview.cpp:336
void showEvent(QShowEvent *event) override
Definition searchview.cpp:327
Definition coredbsearchxml.h:366
Definition coredbsearchxml.h:214
Definition datefolderview.cpp:34