digiKam
Loading...
Searching...
No Matches
camitemsortsettings.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 : 2012-23-06
7 * Description : Sort settings for camera item infos
8 *
9 * SPDX-FileCopyrightText: 2012 by Islam Wazery <wazery at ubuntu 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 <QString>
20#include <QVariant>
21
22// Local includes
23
24#include "itemsortcollator.h"
25
26namespace Digikam
27{
28
29class CamItemInfo;
30
32{
33public:
34
36 {
37 AscendingOrder = Qt::AscendingOrder,
38 DescendingOrder = Qt::DescendingOrder,
40 };
41
49
59
60public:
61
64
65 bool operator==(const CamItemSortSettings& other) const;
66
73 int compareCategories(const CamItemInfo& left, const CamItemInfo& right) const;
74
79 bool lessThan(const CamItemInfo& left, const CamItemInfo& right) const;
80
85 bool lessThan(const QVariant& left, const QVariant& right) const;
86
93 int compare(const CamItemInfo& left, const CamItemInfo& right) const;
94
97
98 bool isCategorized() const
99 {
101 }
102
103 void setSortRole(SortRole role);
104 void setSortOrder(SortOrder order);
105 void setStringTypeNatural(bool natural);
106
107 int compare(const CamItemInfo& left, const CamItemInfo& right, SortRole sortRole) const;
108
110 static Qt::SortOrder defaultSortOrderForSortRole(SortRole role);
111
115 template <typename T>
116 static inline bool lessThanByOrder(const T& a, const T& b, Qt::SortOrder sortOrder)
117 {
118 if (sortOrder == Qt::AscendingOrder)
119 {
120 return (a < b);
121 }
122
123 return (b < a);
124 }
125
129 template <typename T>
130 static inline int compareValue(const T& a, const T &b)
131 {
132 if (a == b)
133 {
134 return 0;
135 }
136
137 if (a > b)
138 {
139 return 1;
140 }
141
142 return (-1);
143 }
144
149 static inline int compareByOrder(int compareResult, Qt::SortOrder sortOrder)
150 {
151 if (sortOrder == Qt::AscendingOrder)
152 {
153 return compareResult;
154 }
155
156 return (- compareResult);
157 }
158
159 template <typename T>
160 static inline int compareByOrder(const T& a, const T& b, Qt::SortOrder sortOrder)
161 {
163 }
164
168 static inline int naturalCompare(const QString& a,
169 const QString& b,
170 Qt::SortOrder sortOrder,
171 Qt::CaseSensitivity caseSensitive = Qt::CaseSensitive,
172 bool natural = true)
173 {
175
176 return compareByOrder(sorter->itemCompare(a, b, caseSensitive, natural), sortOrder);
177 }
178
179public:
180
183
185 Qt::SortOrder currentCategorizationSortOrder = Qt::AscendingOrder;
186 Qt::CaseSensitivity categorizationCaseSensitivity = Qt::CaseSensitive;
187
191 bool strTypeNatural = true;
192
193 Qt::SortOrder currentSortOrder = Qt::AscendingOrder;
194 Qt::CaseSensitivity sortCaseSensitivity = Qt::CaseSensitive;
195};
196
197} // namespace Digikam
Definition camiteminfo.h:39
Definition camitemsortsettings.h:32
static int compareByOrder(const T &a, const T &b, Qt::SortOrder sortOrder)
Definition camitemsortsettings.h:160
Qt::SortOrder currentSortOrder
Definition camitemsortsettings.h:193
void setSortRole(SortRole role)
Definition camitemsortsettings.cpp:64
bool lessThan(const CamItemInfo &left, const CamItemInfo &right) const
Definition camitemsortsettings.cpp:178
int compareCategories(const CamItemInfo &left, const CamItemInfo &right) const
Definition camitemsortsettings.cpp:146
static Qt::SortOrder defaultSortOrderForSortRole(SortRole role)
Definition camitemsortsettings.cpp:109
static int compareByOrder(int compareResult, Qt::SortOrder sortOrder)
Definition camitemsortsettings.h:149
void setStringTypeNatural(bool natural)
Definition camitemsortsettings.cpp:89
static Qt::SortOrder defaultSortOrderForCategorizationMode(CategorizationMode mode)
Definition camitemsortsettings.cpp:94
void setCategorizationMode(CategorizationMode mode)
Definition camitemsortsettings.cpp:40
SortOrder sortOrder
Camera Items Sorting.
Definition camitemsortsettings.h:189
bool isCategorized() const
Definition camitemsortsettings.h:98
void setSortOrder(SortOrder order)
Definition camitemsortsettings.cpp:74
CategorizationMode
Definition camitemsortsettings.h:43
@ NoCategories
Definition camitemsortsettings.h:44
@ CategoryByFormat
Definition camitemsortsettings.h:46
@ CategoryByDate
Definition camitemsortsettings.h:47
@ CategoryByFolder
Definition camitemsortsettings.h:45
static int naturalCompare(const QString &a, const QString &b, Qt::SortOrder sortOrder, Qt::CaseSensitivity caseSensitive=Qt::CaseSensitive, bool natural=true)
Definition camitemsortsettings.h:168
CategorizationMode categorizationMode
Definition camitemsortsettings.h:181
SortRole sortRole
Definition camitemsortsettings.h:190
Qt::CaseSensitivity categorizationCaseSensitivity
Definition camitemsortsettings.h:186
bool operator==(const CamItemSortSettings &other) const
Definition camitemsortsettings.cpp:28
int compare(const CamItemInfo &left, const CamItemInfo &right) const
Definition camitemsortsettings.cpp:225
void setCategorizationSortOrder(SortOrder order)
Definition camitemsortsettings.cpp:50
SortOrder
Definition camitemsortsettings.h:36
@ DescendingOrder
Definition camitemsortsettings.h:38
@ AscendingOrder
Definition camitemsortsettings.h:37
@ DefaultOrder
sort order depends on the chosen sort role
Definition camitemsortsettings.h:39
Qt::CaseSensitivity sortCaseSensitivity
Definition camitemsortsettings.h:194
static int compareValue(const T &a, const T &b)
Definition camitemsortsettings.h:130
SortRole
Definition camitemsortsettings.h:51
@ SortByDownloadState
Definition camitemsortsettings.h:56
@ SortByRating
Definition camitemsortsettings.h:57
@ SortByFileSize
Definition camitemsortsettings.h:55
@ SortByFilePath
Definition camitemsortsettings.h:53
@ SortByFileName
Definition camitemsortsettings.h:52
@ SortByCreationDate
Definition camitemsortsettings.h:54
Qt::SortOrder currentCategorizationSortOrder
Only Ascending or Descending, never be DefaultOrder.
Definition camitemsortsettings.h:185
SortOrder categorizationSortOrder
Definition camitemsortsettings.h:182
static bool lessThanByOrder(const T &a, const T &b, Qt::SortOrder sortOrder)
Definition camitemsortsettings.h:116
bool strTypeNatural
Definition camitemsortsettings.h:191
Definition itemsortcollator.h:30
static ItemSortCollator * instance()
Definition itemsortcollator.cpp:71
int itemCompare(const QString &a, const QString &b, Qt::CaseSensitivity caseSensitive, bool natural) const
Definition itemsortcollator.cpp:76
#define T
Definition datefolderview.cpp:34