Make a branch to make krunner Good Enough For Aaron™.
[kdebase/uwolfer.git] / workspace / kcontrol / input / xcursor / sortproxymodel.cpp
blobb9d6309278f48a15d0f04936bccf97c56114b31c
1 /*
2 * Copyright © 2006-2007 Fredrik Höglund <fredrik@kde.org>
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public
6 * License version 2 or at your option version 3 as published
7 * by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; see the file COPYING. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
20 #include <QString>
21 #include "sortproxymodel.h"
22 #include "cursortheme.h"
25 int SortProxyModel::compare(const QModelIndex &left, const QModelIndex &right, int role) const
27 const QAbstractItemModel *model = sourceModel();
29 QString first = model->data(left, role).toString();
30 QString second = model->data(right, role).toString();
32 if (filterCaseSensitivity() == Qt::CaseSensitive)
34 first = first.toLower();
35 second = second.toLower();
38 return QString::localeAwareCompare(first, second);
42 bool SortProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const
44 const int result = compare(left, right, Qt::DisplayRole);
46 if (result != 0)
47 return (result < 0);
48 else
49 return compare(left, right, CursorTheme::DisplayDetailRole) < 0;