view ui/certificateitemwidget.cpp @ 639:c1b35edb097f trustbridge-refactor

New methods to modify and use the certificate list.
author Raimund Renkert <rrenkert@intevation.de>
date Tue, 24 Jun 2014 17:03:59 +0200
parents 9d806f140bd5
children 9c3e7754b76b
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 "certificateitemwidget.h"

#include <QHBoxLayout>
#include <QDebug>

CertificateItemWidget::CertificateItemWidget(
    QWidget *parent,
    const Certificate &cert,
    bool state,
    bool editable) : QWidget(parent)
{
    mCertificate = cert;
    mState = state;
    mEditable = editable;
    setupGUI();
}

void CertificateItemWidget::setupGUI()
{
    mLabel = new QLabel(mCertificate.subjectCN());
    mComboBox = new QComboBox;
    mComboBox->setFixedWidth(46);
    connect(mComboBox, SIGNAL(currentIndexChanged(int)),
        this, SLOT(currentStateChanged(int)));

    QHBoxLayout *layout = new QHBoxLayout;
    if (mCertificate.isInstallCert()) {
        mComboBox->addItem(QIcon(":/img/list-add.png"), tr("add"), QVariant("true"));
        mComboBox->addItem(QIcon(":/img/list-remove.png"),
            tr("remove"), QVariant("false"));
        if (mState)
            mComboBox->setCurrentIndex(0);
        else {
            mComboBox->setCurrentIndex(1);
        }
        layout->addWidget(mComboBox);
    }
    else if (!mCertificate.isInstallCert() && !mEditable){
        QImage *img = new QImage(":/img/list-remove.png");
        QLabel *imgLabel = new QLabel;
        imgLabel->setPixmap(QPixmap::fromImage(*img));
        imgLabel->setFixedSize(25, 25);
        imgLabel->setMargin(5);
        layout->addWidget(imgLabel);
    }
    else {
        mComboBox->addItem(QIcon(":/img/list-add.png"), tr("add"), QVariant("true"));
        mComboBox->addItem(QIcon(":/img/list-remove.png"),
            tr("remove"), QVariant("false"));
        if (mState)
            mComboBox->setCurrentIndex(0);
        else {
            mComboBox->setCurrentIndex(1);
        }
        layout->addWidget(mComboBox);
    }
    layout->addWidget(mLabel);
    this->setLayout(layout);
}

bool CertificateItemWidget::state()
{
    return mComboBox->currentData().toBool();
}

void CertificateItemWidget::setState(bool state)
{
    disconnect(mComboBox, SIGNAL(currentIndexChanged(int)),
        this, SLOT(currentStateChanged(int)));

    if (state) {
        mComboBox->setCurrentIndex(0);
    }
    else {
        mComboBox->setCurrentIndex(1);
    }
    connect(mComboBox, SIGNAL(currentIndexChanged(int)),
        this, SLOT(currentStateChanged(int)));
}

Certificate CertificateItemWidget::certificate()
{
    return mCertificate;
}

void CertificateItemWidget::currentStateChanged(int)
{
    bool state = mComboBox->currentData().toBool();
    emit stateChanged(state, mCertificate);
}

http://wald.intevation.org/projects/trustbridge/