Mercurial > trustbridge
view ui/certificatelistwidget.cpp @ 638:9d806f140bd5 trustbridge-refactor
Added state and editable flag to certificate list items.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Tue, 24 Jun 2014 16:59:52 +0200 |
parents | 566ee111e331 |
children | c1b35edb097f |
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik * Software engineering by Intevation GmbH * * This file is Free Software under the GNU GPL (v>=2) * and comes with ABSOLUTELY NO WARRANTY! * See LICENSE.txt for details. */ #include "certificatelistwidget.h" #include <QDebug> #include <QVBoxLayout> #include <QHBoxLayout> #include <QGroupBox> #include <QLabel> #include "certificateitemwidget.h" CertificateListWidget::CertificateListWidget(QWidget *parent, Qt::WindowFlags flags) : QWidget(parent, flags) { setupGUI(); } void CertificateListWidget::setupGUI() { QHBoxLayout *mainLayout = new QHBoxLayout; mCertificateList = new QListWidget; mCertificateList->setFixedWidth(250); connect(mCertificateList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(updateDetails(QListWidgetItem*))); QHBoxLayout *detailLayout = new QHBoxLayout; QVBoxLayout *detailLabelLayout = new QVBoxLayout; QVBoxLayout *detailContentLayout = new QVBoxLayout; QGroupBox *detailBox = new QGroupBox(); QLabel *subjectCN = new QLabel(tr("Subject Common Name:")); QLabel *subjectOU = new QLabel(tr("Subject Organisation:")); QLabel *issuerCN = new QLabel(tr("Issuer Common Name:")); QLabel *issuerOU = new QLabel(tr("Issuer Organisation:")); QLabel *validFrom = new QLabel(tr("Valid from:")); QLabel *validTo = new QLabel(tr("Valid to:")); QLabel *fingerprint = new QLabel(tr("Fingerprint:")); detailLabelLayout->addWidget(subjectCN); detailLabelLayout->addWidget(subjectOU); detailLabelLayout->addWidget(issuerCN); detailLabelLayout->addWidget(issuerOU); detailLabelLayout->addWidget(validFrom); detailLabelLayout->addWidget(validTo); detailLabelLayout->addWidget(fingerprint); mSubjectCN = new QLabel(tr("")); mSubjectO = new QLabel(tr("")); mIssuerCN = new QLabel(tr("")); mIssuerO = new QLabel(tr("")); mValidFrom = new QLabel(tr("")); mValidTo = new QLabel(tr("")); mFingerprint = new QLabel(tr("")); mFingerprint->setFont(QFont("DejaVu Sans Mono")); detailContentLayout->addWidget(mSubjectCN); detailContentLayout->addWidget(mSubjectO); detailContentLayout->addWidget(mIssuerCN); detailContentLayout->addWidget(mIssuerO); detailContentLayout->addWidget(mValidFrom); detailContentLayout->addWidget(mValidTo); detailContentLayout->addWidget(mFingerprint); detailLayout->addLayout(detailLabelLayout); detailLayout->addLayout(detailContentLayout); detailBox->setLayout(detailLayout); mainLayout->addWidget(mCertificateList); mainLayout->addWidget(detailBox); this->setLayout(mainLayout); } void CertificateListWidget::addCertificate(const Certificate &certificate) { QListWidgetItem* item = new QListWidgetItem(mCertificateList); item->setData(Qt::UserRole, QVariant::fromValue(certificate)); mCertificateList->addItem(item); CertificateItemWidget *widget = new CertificateItemWidget(mCertificateList, certificate); connect(widget, SIGNAL(stateChanged(bool, const Certificate&)), this, SLOT(certStateChanged(bool, const Certificate&))); item->setSizeHint(widget->minimumSizeHint()); mCertificateList->setItemWidget(item, widget); } void CertificateListWidget::addCertificates(const QList<Certificate> &list) { } void CertificateListWidget::removeCertificate(int ndx) { } void CertificateListWidget::clear() { mCertificateList->clear(); } QStringList CertificateListWidget::certificates() { QStringList list; for (int i = 0; i < mCertificateList->count(); i++) { QListWidgetItem *item = mCertificateList->item(i); CertificateItemWidget *itemWidget = static_cast<CertificateItemWidget*>(mCertificateList->itemWidget(item)); if (itemWidget->state()) { list << itemWidget->certificate().base64Line(); continue; } QString b64Line = itemWidget->certificate().base64Line(); if (b64Line.startsWith("I:")) { b64Line[0] = 'R'; list << b64Line; } } return list; } void CertificateListWidget::updateDetails(QListWidgetItem *item) { if (item == NULL) { return; } Certificate cert = item->data(Qt::UserRole).value<Certificate>(); mSubjectCN->setText(cert.subjectCN()); mSubjectO->setText(cert.subjectO()); mIssuerCN->setText(cert.issuerCN()); mIssuerO->setText(cert.issuerO()); mValidFrom->setText(cert.validFrom().toString()); mValidTo->setText(cert.validTo().toString()); mFingerprint->setText(cert.fingerprint()); } void CertificateListWidget::certStateChanged(bool state, const Certificate &cert) { int selected = 0; for (int i = 0; i < mCertificateList->count(); i++) { QListWidgetItem *item = mCertificateList->item(i); CertificateItemWidget *itemWidget = static_cast<CertificateItemWidget*>(mCertificateList->itemWidget(item)); if (itemWidget->state()) { selected++; } } emit certListChanged(selected); } int CertificateListWidget::selectedCertCount() { int selected = 0; for (int i = 0; i < mCertificateList->count(); i++) { QListWidgetItem *item = mCertificateList->item(i); CertificateItemWidget *itemWidget = static_cast<CertificateItemWidget*>(mCertificateList->itemWidget(item)); if (itemWidget->state()) { selected++; } } return selected; }