[Digikam-devel] [digikam] [Bug 331597] Tags are not sorted in UI [patch]
Gilles Caulier
caulier.gilles at gmail.com
Wed May 7 18:26:25 BST 2014
https://bugs.kde.org/show_bug.cgi?id=331597
--- Comment #14 from Gilles Caulier <caulier.gilles at gmail.com> ---
Git commit a4320cbf03ce1f2df89649739db6c641d259adcc by Mohamed Anwer.
Committed on 07/05/2014 at 17:08.
Pushed by mohamedanwer into branch 'master'.
Fixing Bug #331597
M +33 -15 libs/models/albumfiltermodel.cpp
http://commits.kde.org/digikam/a4320cbf03ce1f2df89649739db6c641d259adcc
diff --git a/libs/models/albumfiltermodel.cpp
b/libs/models/albumfiltermodel.cpp
index 66dbfbf..d095a90 100644
--- a/libs/models/albumfiltermodel.cpp
+++ b/libs/models/albumfiltermodel.cpp
@@ -336,34 +336,52 @@ bool AlbumFilterModel::filterAcceptsRow(int source_row,
const QModelIndex& sourc
bool AlbumFilterModel::lessThan(const QModelIndex& left, const QModelIndex&
right) const
{
- PAlbum* leftAlbum =
AlbumManager::instance()->findPAlbum(albumForIndex(left)->id());
- PAlbum* rightAlbum =
AlbumManager::instance()->findPAlbum(albumForIndex(right)->id());
+ Album* leftAlbum = albumForIndex(left);
+ Album* rightAlbum = albumForIndex(right);
+ QVariant valLeft = left.data(sortRole());
+ QVariant valRight = right.data(sortRole());
+
AlbumSettings::AlbumSortOrder sortRole =
AlbumSettings::instance()->getAlbumSortOrder();
if (leftAlbum && rightAlbum)
{
- switch (sortRole)
+ if(leftAlbum->type() == 0 && rightAlbum->type()== 0)//checking for
PAlbums
+ {
+ switch (sortRole)
+ {
+ case AlbumSettings::ByFolder:
+ switch
(AlbumSettings::instance()->getStringComparisonType())
+ {
+ case AlbumSettings::Natural:
+ return
KStringHandler::naturalCompare(leftAlbum->title(), rightAlbum->title(),
sortCaseSensitivity()) < 0;
+
+ case AlbumSettings::Normal:
+ default:
+ return QString::compare(leftAlbum->title(),
rightAlbum->title(), sortCaseSensitivity()) < 0;
+ }
+ case AlbumSettings::ByDate:
+ return
compareByOrder(static_cast<PAlbum*>(leftAlbum)->date(),static_cast<PAlbum*>(rightAlbum)->date(),Qt::AscendingOrder)
< 0;
+ default:
+ return
KStringHandler::naturalCompare(static_cast<PAlbum*>(leftAlbum)->category(),static_cast<PAlbum*>(rightAlbum)->category())
< 0;
+ }
+ }
+ else
{
- case AlbumSettings::ByFolder:
+ if((valLeft.type() == QVariant::String) && (valRight.type() ==
QVariant::String))
+ {
switch (AlbumSettings::instance()->getStringComparisonType())
{
case AlbumSettings::Natural:
- return
KStringHandler::naturalCompare(leftAlbum->title(), rightAlbum->title(),
sortCaseSensitivity()) < 0;
-
+ return
KStringHandler::naturalCompare(valLeft.toString(), valRight.toString(),
sortCaseSensitivity()) < 0;
case AlbumSettings::Normal:
default:
- return QString::compare(leftAlbum->title(),
rightAlbum->title(), sortCaseSensitivity()) < 0;
+ return QString::compare(valLeft.toString(),
valRight.toString(), sortCaseSensitivity()) < 0;
}
- case AlbumSettings::ByDate:
- return
compareByOrder(leftAlbum->date(),rightAlbum->date(),Qt::AscendingOrder) < 0;
- default:
- return
KStringHandler::naturalCompare(leftAlbum->category(),rightAlbum->category()) <
0;
+ }
}
}
- else
- {
- return QSortFilterProxyModel::lessThan(left, right);
- }
+
+ return QSortFilterProxyModel::lessThan(left, right);
}
void AlbumFilterModel::slotAlbumRenamed(Album* album)
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the Digikam-devel
mailing list