rrenkert@582: /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik rrenkert@582: * Software engineering by Intevation GmbH rrenkert@582: * rrenkert@582: * This file is Free Software under the GNU GPL (v>=2) rrenkert@582: * and comes with ABSOLUTELY NO WARRANTY! rrenkert@582: * See LICENSE.txt for details. rrenkert@582: */ rrenkert@582: #include "certificateitemwidget.h" rrenkert@582: rrenkert@582: #include rrenkert@582: #include rrenkert@582: rrenkert@582: CertificateItemWidget::CertificateItemWidget( rrenkert@582: QWidget *parent, rrenkert@638: const Certificate &cert, rrenkert@638: bool state, rrenkert@638: bool editable) : QWidget(parent) rrenkert@582: { rrenkert@582: mCertificate = cert; rrenkert@638: mState = state; rrenkert@638: mEditable = editable; rrenkert@582: setupGUI(); rrenkert@582: } rrenkert@582: rrenkert@582: void CertificateItemWidget::setupGUI() rrenkert@582: { rrenkert@582: mLabel = new QLabel(mCertificate.subjectCN()); rrenkert@582: mComboBox = new QComboBox; rrenkert@582: mComboBox->setFixedWidth(46); rrenkert@627: connect(mComboBox, SIGNAL(currentIndexChanged(int)), rrenkert@627: this, SLOT(currentStateChanged(int))); rrenkert@582: rrenkert@638: QHBoxLayout *layout = new QHBoxLayout; rrenkert@582: if (mCertificate.isInstallCert()) { rrenkert@650: mComboBox->addItem(QIcon(":/img/security-high.png"), tr("install"), QVariant("true")); rrenkert@650: mComboBox->addItem(QIcon(":/img/security-low.png"), rrenkert@582: tr("remove"), QVariant("false")); rrenkert@638: if (mState) rrenkert@638: mComboBox->setCurrentIndex(0); rrenkert@638: else { rrenkert@638: mComboBox->setCurrentIndex(1); rrenkert@638: } rrenkert@638: layout->addWidget(mComboBox); rrenkert@638: } rrenkert@638: else if (!mCertificate.isInstallCert() && !mEditable){ rrenkert@650: QImage *img = new QImage(":/img/trash-empty.png"); rrenkert@638: QLabel *imgLabel = new QLabel; rrenkert@638: imgLabel->setPixmap(QPixmap::fromImage(*img)); rrenkert@650: imgLabel->setFixedSize(28, 28); rrenkert@650: imgLabel->setMargin(2); rrenkert@638: layout->addWidget(imgLabel); rrenkert@582: } rrenkert@582: else { rrenkert@650: mComboBox->addItem(QIcon(":/img/trash-empty.png"), tr("deinstall"), QVariant("true")); rrenkert@650: mComboBox->addItem(QIcon(":/img/security-medium.png"), rrenkert@650: tr("leave"), QVariant("false")); rrenkert@638: if (mState) rrenkert@638: mComboBox->setCurrentIndex(0); rrenkert@638: else { rrenkert@638: mComboBox->setCurrentIndex(1); rrenkert@638: } rrenkert@638: layout->addWidget(mComboBox); rrenkert@582: } rrenkert@582: layout->addWidget(mLabel); rrenkert@582: this->setLayout(layout); rrenkert@582: } rrenkert@627: rrenkert@627: bool CertificateItemWidget::state() rrenkert@627: { rrenkert@627: return mComboBox->currentData().toBool(); rrenkert@627: } rrenkert@627: rrenkert@638: void CertificateItemWidget::setState(bool state) rrenkert@638: { rrenkert@638: disconnect(mComboBox, SIGNAL(currentIndexChanged(int)), rrenkert@638: this, SLOT(currentStateChanged(int))); rrenkert@638: rrenkert@638: if (state) { rrenkert@638: mComboBox->setCurrentIndex(0); rrenkert@638: } rrenkert@638: else { rrenkert@638: mComboBox->setCurrentIndex(1); rrenkert@638: } rrenkert@638: connect(mComboBox, SIGNAL(currentIndexChanged(int)), rrenkert@638: this, SLOT(currentStateChanged(int))); rrenkert@638: } rrenkert@638: rrenkert@627: Certificate CertificateItemWidget::certificate() rrenkert@627: { rrenkert@627: return mCertificate; rrenkert@627: } rrenkert@627: rrenkert@627: void CertificateItemWidget::currentStateChanged(int) rrenkert@627: { rrenkert@627: bool state = mComboBox->currentData().toBool(); rrenkert@627: emit stateChanged(state, mCertificate); rrenkert@627: }