File indexing completed on 2025-01-05 04:55:46
0001 /* models/keyrearangecolumnsproxymodel.cpp 0002 0003 This file is part of Kleopatra, the KDE keymanager 0004 SPDX-FileCopyrightText: 2016 Bundesamt für Sicherheit in der Informationstechnik 0005 SPDX-FileContributor: Intevation GmbH 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #include <config-libkleo.h> 0011 0012 #include "keyrearrangecolumnsproxymodel.h" 0013 0014 #include <libkleo/keygroup.h> 0015 0016 #include <gpgme++/key.h> 0017 0018 using namespace Kleo; 0019 using namespace GpgME; 0020 0021 KeyRearrangeColumnsProxyModel::KeyRearrangeColumnsProxyModel(QObject *parent) 0022 : KRearrangeColumnsProxyModel(parent) 0023 , KeyListModelInterface() 0024 { 0025 } 0026 0027 KeyListModelInterface *KeyRearrangeColumnsProxyModel::klm() const 0028 { 0029 auto *ret = dynamic_cast<KeyListModelInterface *>(sourceModel()); 0030 Q_ASSERT(ret); 0031 return ret; 0032 } 0033 0034 Key KeyRearrangeColumnsProxyModel::key(const QModelIndex &idx) const 0035 { 0036 return klm()->key(mapToSource(idx)); 0037 } 0038 0039 std::vector<GpgME::Key> KeyRearrangeColumnsProxyModel::keys(const QList<QModelIndex> &idxs) const 0040 { 0041 QList<QModelIndex> srcIdxs; 0042 srcIdxs.reserve(idxs.count()); 0043 for (const QModelIndex &idx : idxs) { 0044 srcIdxs << mapToSource(idx); 0045 } 0046 return klm()->keys(srcIdxs); 0047 } 0048 0049 KeyGroup KeyRearrangeColumnsProxyModel::group(const QModelIndex &idx) const 0050 { 0051 return klm()->group(mapToSource(idx)); 0052 } 0053 0054 QModelIndex KeyRearrangeColumnsProxyModel::index(const GpgME::Key &key) const 0055 { 0056 return mapFromSource(klm()->index(key)); 0057 } 0058 0059 QList<QModelIndex> KeyRearrangeColumnsProxyModel::indexes(const std::vector<GpgME::Key> &keys) const 0060 { 0061 QList<QModelIndex> myIdxs; 0062 const QList<QModelIndex> srcIdxs = klm()->indexes(keys); 0063 myIdxs.reserve(srcIdxs.count()); 0064 for (const QModelIndex &idx : srcIdxs) { 0065 myIdxs << mapFromSource(idx); 0066 } 0067 return myIdxs; 0068 } 0069 0070 QModelIndex KeyRearrangeColumnsProxyModel::index(const KeyGroup &group) const 0071 { 0072 return mapFromSource(klm()->index(group)); 0073 } 0074 0075 void KeyRearrangeColumnsProxyModel::sort(int column, Qt::SortOrder order) 0076 { 0077 const auto fakeIdx = createIndex(0, column); 0078 if (!fakeIdx.isValid()) { 0079 // Empty model? 0080 KRearrangeColumnsProxyModel::sort(column, order); 0081 return; 0082 } 0083 const auto remappedIdx = mapToSource(fakeIdx); 0084 KRearrangeColumnsProxyModel::sort(remappedIdx.column(), order); 0085 }