digiKam
Loading...
Searching...
No Matches
showfotoitemsortsettings.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 : 29-07-2013
7 * Description : Sort settings for showfoto item infos
8 *
9 * SPDX-FileCopyrightText: 2013 by Mohamed_Anwer <m_dot_anwer at gmx dot com>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QCollator>
20
21// Local includes
22
23#include "showfotoiteminfo.h"
24
25namespace ShowFoto
26{
27
29{
30public:
31
33 {
34 AscendingOrder = Qt::AscendingOrder,
35 DescendingOrder = Qt::DescendingOrder,
37 };
38
45
52
53public:
54
57
58 bool operator==(const ShowfotoItemSortSettings& other) const;
59
66 int compareCategories(const ShowfotoItemInfo& left, const ShowfotoItemInfo& right) const;
67
68
73 bool lessThan(const ShowfotoItemInfo& left, const ShowfotoItemInfo& right) const;
74
79 bool lessThan(const QVariant& left, const QVariant& right) const;
80
87 int compare(const ShowfotoItemInfo& left, const ShowfotoItemInfo& right) const;
88
90
93
94 bool isCategorized() const
95 {
97 }
98
100
101 void setSortRole(SortRole role);
102 void setSortOrder(SortOrder order);
103
104 int compare(const ShowfotoItemInfo& left, const ShowfotoItemInfo& right, SortRole sortRole) const;
105
107 static Qt::SortOrder defaultSortOrderForSortRole(SortRole role);
108
112 template <typename T>
113 static inline bool lessThanByOrder(const T& a, const T& b, Qt::SortOrder sortOrder)
114 {
115 if (sortOrder == Qt::AscendingOrder)
116 {
117 return (a < b);
118 }
119 else
120 {
121 return (b < a);
122 }
123 }
124
128 template <typename T>
129 static inline int compareValue(const T& a, const T &b)
130 {
131 if (a == b)
132 {
133 return 0;
134 }
135
136 if (a > b)
137 {
138 return 1;
139 }
140
141 return (-1);
142 }
143
148 static inline int compareByOrder(int compareResult, Qt::SortOrder sortOrder)
149 {
150 if (sortOrder == Qt::AscendingOrder)
151 {
152 return compareResult;
153 }
154
155 return (- compareResult);
156 }
157
158 template <typename T>
159 static inline int compareByOrder(const T& a, const T& b, Qt::SortOrder sortOrder)
160 {
162 }
163
167 static inline int naturalCompare(const QString& a,
168 const QString& b,
169 Qt::SortOrder sortOrder,
170 Qt::CaseSensitivity caseSensitive = Qt::CaseSensitive)
171 {
172 QCollator collator;
173 collator.setNumericMode(true);
174 collator.setIgnorePunctuation(false);
175 collator.setCaseSensitivity(caseSensitive);
176
177 return (compareByOrder(collator.compare(a, b), sortOrder));
178 }
179
180public:
181
184
188 Qt::SortOrder currentCategorizationSortOrder = Qt::AscendingOrder;
189 Qt::CaseSensitivity categorizationCaseSensitivity = Qt::CaseSensitive;
190
193
194 Qt::SortOrder currentSortOrder = Qt::AscendingOrder;
195 Qt::CaseSensitivity sortCaseSensitivity = Qt::CaseSensitive;
196};
197
198} // namespace ShowFoto
Definition showfotoiteminfo.h:38
Definition showfotoitemsortsettings.h:29
Qt::CaseSensitivity sortCaseSensitivity
Definition showfotoitemsortsettings.h:195
void setCategorizationSortOrder(SortOrder order)
Definition showfotoitemsortsettings.cpp:46
CategorizationMode categorizationMode
Definition showfotoitemsortsettings.h:182
SortOrder categorizationSortOrder
Definition showfotoitemsortsettings.h:183
static int compareValue(const T &a, const T &b)
Definition showfotoitemsortsettings.h:129
static bool lessThanByOrder(const T &a, const T &b, Qt::SortOrder sortOrder)
Definition showfotoitemsortsettings.h:113
SortRole sortRole
Definition showfotoitemsortsettings.h:192
void setSortOrder(SortOrder order)
Definition showfotoitemsortsettings.cpp:70
static int compareByOrder(const T &a, const T &b, Qt::SortOrder sortOrder)
Definition showfotoitemsortsettings.h:159
Qt::SortOrder currentCategorizationSortOrder
Definition showfotoitemsortsettings.h:188
bool isCategorized() const
Definition showfotoitemsortsettings.h:94
int compareCategories(const ShowfotoItemInfo &left, const ShowfotoItemInfo &right) const
Definition showfotoitemsortsettings.cpp:120
SortOrder
Definition showfotoitemsortsettings.h:33
@ DefaultOrder
sort order depends on the chosen sort role
Definition showfotoitemsortsettings.h:36
@ AscendingOrder
Definition showfotoitemsortsettings.h:34
@ DescendingOrder
Definition showfotoitemsortsettings.h:35
void setSortRole(SortRole role)
— Showfoto Items Sorting ------------—
Definition showfotoitemsortsettings.cpp:60
SortRole
Definition showfotoitemsortsettings.h:47
@ SortByFileName
Definition showfotoitemsortsettings.h:49
@ SortByFileSize
Definition showfotoitemsortsettings.h:50
@ SortByCreationDate
Definition showfotoitemsortsettings.h:48
Qt::SortOrder currentSortOrder
Definition showfotoitemsortsettings.h:194
bool lessThan(const ShowfotoItemInfo &left, const ShowfotoItemInfo &right) const
Definition showfotoitemsortsettings.cpp:142
Qt::CaseSensitivity categorizationCaseSensitivity
Definition showfotoitemsortsettings.h:189
CategorizationMode
Definition showfotoitemsortsettings.h:40
@ CategoryByFolder
Definition showfotoitemsortsettings.h:42
@ CategoryByFormat
Definition showfotoitemsortsettings.h:43
@ NoCategories
Definition showfotoitemsortsettings.h:41
static int naturalCompare(const QString &a, const QString &b, Qt::SortOrder sortOrder, Qt::CaseSensitivity caseSensitive=Qt::CaseSensitive)
Definition showfotoitemsortsettings.h:167
SortOrder sortOrder
Definition showfotoitemsortsettings.h:191
bool operator==(const ShowfotoItemSortSettings &other) const
Definition showfotoitemsortsettings.cpp:24
int compare(const ShowfotoItemInfo &left, const ShowfotoItemInfo &right) const
Definition showfotoitemsortsettings.cpp:169
static Qt::SortOrder defaultSortOrderForSortRole(SortRole role)
Definition showfotoitemsortsettings.cpp:98
void setCategorizationMode(CategorizationMode mode)
— Categories ------------—
Definition showfotoitemsortsettings.cpp:36
static Qt::SortOrder defaultSortOrderForCategorizationMode(CategorizationMode mode)
Definition showfotoitemsortsettings.cpp:84
static int compareByOrder(int compareResult, Qt::SortOrder sortOrder)
Definition showfotoitemsortsettings.h:148
#define T
Definition showfotofolderviewbar.cpp:43