• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeutils API Reference
  • KDE Home
  • Contact Us
 

kgpg

  • sources
  • kde-4.14
  • kdeutils
  • kgpg
groupedit.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2002 Jean-Baptiste Mardelle <bj@altern.org>
3  * Copyright (C) 2007,2008,2012,2013 Rolf Eike Beer <kde@opensource.sf-tec.de>
4  */
5 
6 /***************************************************************************
7  * *
8  * This program is free software; you can redistribute it and/or modify *
9  * it under the terms of the GNU General Public License as published by *
10  * the Free Software Foundation; either version 2 of the License, or *
11  * (at your option) any later version. *
12  * *
13  ***************************************************************************/
14 
15 #include "groupedit.h"
16 
17 #include "kgpgsettings.h"
18 #include "core/kgpgkey.h"
19 #include "model/groupeditproxymodel.h"
20 #include "model/kgpgitemmodel.h"
21 
22 #include <KAction>
23 #include <KActionCollection>
24 #include <QHeaderView>
25 #include <QSortFilterProxyModel>
26 
27 groupEdit::groupEdit(QWidget *parent, QList<KGpgNode *> *ids, KGpgItemModel *md)
28  : QWidget(parent),
29  m_outFilter(new QSortFilterProxyModel(this)),
30  members(ids)
31 {
32  Q_ASSERT(ids != NULL);
33  Q_ASSERT(md != NULL);
34 
35  setupUi( this );
36  KgpgCore::KgpgKeyTrust mintrust;
37  if (KGpgSettings::allowUntrustedGroupMembers()) {
38  mintrust = KgpgCore::TRUST_UNDEFINED;
39  textLabelAvailable->setText(i18n("Available Keys"));
40  } else {
41  mintrust = KgpgCore::TRUST_FULL;
42  textLabelAvailable->setText(i18n("Available Trusted Keys"));
43  }
44 
45  m_in = new GroupEditProxyModel(this, false, members, KgpgCore::TRUST_MINIMUM);
46  m_in->setKeyModel(md);
47  m_out = new GroupEditProxyModel(this, true, members, mintrust);
48  m_out->setKeyModel(md);
49 
50  m_outFilter->setSourceModel(m_out);
51  m_outFilter->setFilterCaseSensitivity(Qt::CaseInsensitive);
52  m_outFilter->setFilterKeyColumn(-1);
53 
54  connect(filterEdit, SIGNAL(textChanged(QString)), m_outFilter, SLOT(setFilterFixedString(QString)));
55 
56  availableKeys->setModel(m_outFilter);
57  groupKeys->setModel(m_in);
58  buttonAdd->setIcon(KIcon( QLatin1String( "go-down" )));
59  buttonRemove->setIcon(KIcon( QLatin1String( "go-up" )));
60 
61  availableKeys->setColumnWidth(0, 200);
62  availableKeys->setColumnWidth(1, 200);
63  availableKeys->setColumnWidth(2, 100);
64  availableKeys->verticalHeader()->hide();
65 
66  groupKeys->setColumnWidth(0, 200);
67  groupKeys->setColumnWidth(1, 200);
68  groupKeys->setColumnWidth(2, 100);
69  groupKeys->verticalHeader()->hide();
70 
71  setMinimumSize(sizeHint());
72 
73  connect(buttonAdd, SIGNAL(clicked()), this, SLOT(groupAdd()));
74  connect(buttonRemove, SIGNAL(clicked()), this, SLOT(groupRemove()));
75  connect(availableKeys, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(groupAdd(QModelIndex)));
76  connect(groupKeys, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(groupRemove(QModelIndex)));
77 }
78 
79 groupEdit::~groupEdit()
80 {
81  delete m_in;
82  delete m_out;
83 }
84 
85 void
86 groupEdit::groupAdd()
87 {
88  QModelIndexList sel = availableKeys->selectionModel()->selectedIndexes();
89  for (int i = 0; i < sel.count(); i++) {
90  if (sel.at(i).column() != 0)
91  continue;
92  KGpgNode *nd = m_out->nodeForIndex(m_outFilter->mapToSource(sel.at(i)));
93  members->append(nd);
94  }
95  m_in->invalidate();
96  m_out->invalidate();
97 }
98 
99 void
100 groupEdit::groupRemove()
101 {
102  Q_ASSERT(!members->isEmpty());
103  QModelIndexList sel = groupKeys->selectionModel()->selectedIndexes();
104  for (int i = 0; i < sel.count(); i++) {
105  if (sel.at(i).column() != 0)
106  continue;
107  KGpgNode *nd = m_in->nodeForIndex(sel.at(i));
108  for (int j = 0; j < members->count(); j++)
109  if (nd->toKeyNode()->compareId(members->at(j)->getId())) {
110  members->removeAt(j);
111  break;
112  }
113  }
114  m_in->invalidate();
115  m_out->invalidate();
116 }
117 
118 void
119 groupEdit::groupAdd(const QModelIndex &index)
120 {
121  KGpgNode *nd = m_out->nodeForIndex(m_outFilter->mapToSource(index));
122  members->append(nd);
123  m_in->invalidate();
124  m_out->invalidate();
125 }
126 
127 void
128 groupEdit::groupRemove(const QModelIndex &index)
129 {
130  Q_ASSERT(!members->isEmpty());
131  KGpgKeyNode *nd = m_in->nodeForIndex(index)->toKeyNode();
132  for (int i = 0; i < members->count(); i++)
133  if (nd->compareId(members->at(i)->getId())) {
134  members->removeAt(i);
135  break;
136  }
137  m_in->invalidate();
138  m_out->invalidate();
139 }
140 
141 #include "groupedit.moc"
QSortFilterProxyModel::invalidate
void invalidate()
KGpgItemModel
Definition: kgpgitemmodel.h:44
QModelIndex
QWidget
QSortFilterProxyModel::setFilterCaseSensitivity
void setFilterCaseSensitivity(Qt::CaseSensitivity cs)
QWidget::setupUi
void setupUi(QWidget *widget)
KGpgSettings::allowUntrustedGroupMembers
static bool allowUntrustedGroupMembers()
Get Allow untrusted keys to become members of key groups.
Definition: kgpgsettings.h:212
groupEdit::members
QList< KGpgNode * > *const members
the list of keys that are members of the group
Definition: groupedit.h:39
QSortFilterProxyModel::setSourceModel
virtual void setSourceModel(QAbstractItemModel *sourceModel)
QList::at
const T & at(int i) const
QList::removeAt
void removeAt(int i)
groupEdit::groupEdit
groupEdit(QWidget *parent, QList< KGpgNode * > *ids, KGpgItemModel *md)
constructor
Definition: groupedit.cpp:27
GroupEditProxyModel::setKeyModel
void setKeyModel(KGpgItemModel *)
Definition: groupeditproxymodel.cpp:40
kgpgkey.h
KGpgKeyNode
A public key with or without corresponding secret key.
Definition: KGpgKeyNode.h:33
QWidget::setMinimumSize
void setMinimumSize(const QSize &)
QList::count
int count(const T &value) const
QList::append
void append(const T &value)
groupEdit::~groupEdit
~groupEdit()
destructor
Definition: groupedit.cpp:79
kgpgitemmodel.h
QList::isEmpty
bool isEmpty() const
groupedit.h
QString
QList< KGpgNode * >
KgpgCore::TRUST_FULL
you can fully trust this key
Definition: kgpgkey.h:63
groupeditproxymodel.h
KGpgNode
The abstract base class for all classes representing keyring data.
Definition: KGpgNode.h:42
QSortFilterProxyModel
KgpgCore::TRUST_UNDEFINED
trust value undefined (i.e. you did not set a trust level)
Definition: kgpgkey.h:59
GroupEditProxyModel::nodeForIndex
KGpgNode * nodeForIndex(const QModelIndex &index) const
Definition: groupeditproxymodel.cpp:67
QWidget::sizeHint
virtual QSize sizeHint() const
KgpgCore::TRUST_MINIMUM
internal value for use in filters
Definition: kgpgkey.h:54
kgpgsettings.h
QSortFilterProxyModel::mapToSource
virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const
KGpgNode::toKeyNode
KGpgKeyNode * toKeyNode()
Definition: KGpgNode.cpp:94
QLatin1String
KGpgKeyNode::compareId
bool compareId(const QString &other) const
compare the id of this node to the given other node
Definition: KGpgKeyNode.cpp:339
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
GroupEditProxyModel
Definition: groupeditproxymodel.h:29
QSortFilterProxyModel::setFilterKeyColumn
void setFilterKeyColumn(int column)
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:42:08 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kgpg

Skip menu "kgpg"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeutils API Reference

Skip menu "kdeutils API Reference"
  • ark
  • filelight
  • kcalc
  • kcharselect
  • kdf
  • kfloppy
  • kgpg
  • ktimer
  • kwallet
  • sweeper

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal