GnuPG: adding missing files
[trojita:paalsteeks-trojita.git] / src / Gui / KeyListModel.cpp
1 /* Copyright (C) 2013 Stephan Platz <trojita@paalsteek.de>
2
3    This file is part of the Trojita Qt IMAP e-mail client,
4    http://trojita.flaska.net/
5
6    This program is free software; you can redistribute it and/or
7    modify it under the terms of the GNU General Public License as
8    published by the Free Software Foundation; either version 2 of
9    the License or (at your option) version 3 or any later version
10    accepted by the membership of KDE e.V. (or its successor approved
11    by the membership of KDE e.V.), which shall act as a proxy
12    defined in Section 14 of version 3 of the license.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.
21 */
22 #include "KeyListModel.h"
23
24 //#include <QtConcurrent/QtConcurrentMap>
25
26 QCA::PGPKey pgpPublicKey(const QCA::KeyStoreEntry &e)
27 {
28     return e.pgpPublicKey();
29 }
30
31 KeyListModel::KeyListModel(QObject *parent) :
32     QAbstractListModel(parent), m_list()
33 {
34     m_manager.start();
35     m_manager.waitForBusyFinished(); //TODO: synchronous wait?
36     m_store = new QCA::KeyStore("qca-gnupg", &m_manager);
37
38     //m_list = QtConcurrent::blockingMapped(m_store->entryList(), pgpPublicKey);
39     Q_FOREACH(QCA::KeyStoreEntry e, m_store->entryList())
40     {
41         if (!e.pgpSecretKey().isNull())
42             m_list.append(e.pgpSecretKey());
43     }
44 }
45
46 int KeyListModel::rowCount(const QModelIndex &parent) const
47 {
48     return m_list.size();
49 }
50
51 QVariant KeyListModel::data(const QModelIndex &index, int role) const
52 {
53     switch(role)
54     {
55     case Qt::DisplayRole:
56         return QVariant(QString("%1 (%2)").arg(m_list[index.row()].primaryUserId(), m_list[index.row()].keyId()));
57     }
58     return QVariant();
59 }