xca/widgets/ReqTreeView.cpp
Christian Hohnstaedt af79214121 Use fromIndex(index) convenience function
for certificates create a function returning
a dynamically casted pki_x509 pointer

Add NULL check of dynamically casted pointer,
because it could be a folder...
2020-05-08 17:37:40 +02:00

65 lines
1.4 KiB
C++

/* vi: set sw=4 ts=4:
*
* Copyright (C) 2015 Christian Hohnstaedt.
*
* All rights reserved.
*/
#include "lib/pki_x509req.h"
#include "ReqTreeView.h"
#include "MainWindow.h"
#include <QAbstractItemModel>
#include <QAbstractItemView>
#include <QMenu>
void ReqTreeView::fillContextMenu(QMenu *menu, QMenu *subExport,
const QModelIndex &index, QModelIndexList indexes)
{
X509SuperTreeView::fillContextMenu(menu, subExport, index, indexes);
pki_x509req *req = dynamic_cast<pki_x509req*>(db_base::fromIndex(index));
if (indexes.size() != 1 || !req)
return;
menu->addAction(tr("Sign"), this, SLOT(signReq()));
if (req->getDone())
menu->addAction(tr("Unmark signed"),
this, SLOT(unmarkSigned()));
else
menu->addAction(tr("Mark signed"),
this, SLOT(markSigned()));
if (transform) {
transform->addAction(tr("Similar Request"), this,
SLOT(toRequest()));
}
}
void ReqTreeView::toRequest()
{
pki_x509req *req = static_cast<pki_x509req*>(currentIndex()
.internalPointer());
db_x509 *certs = Database.model<db_x509>();
certs->newCert(req);
}
void ReqTreeView::signReq()
{
pki_x509req *req = static_cast<pki_x509req*>(currentIndex()
.internalPointer());
if (basemodel)
reqs()->newItem(NULL, req);
}
void ReqTreeView::markSigned()
{
if (basemodel)
reqs()->setSigned(currentIndex(), true);
}
void ReqTreeView::unmarkSigned()
{
if (basemodel)
reqs()->setSigned(currentIndex(), false);
}