Mercurial > trustbridge
diff ui/certificateitemwidget.cpp @ 706:6bb3018b966d
Merged
author | Sascha Wilde <wilde@intevation.de> |
---|---|
date | Wed, 02 Jul 2014 11:57:32 +0200 |
parents | 31c3d2bc9880 |
children | 86c9ff4cfb02 |
line wrap: on
line diff
--- a/ui/certificateitemwidget.cpp Wed Jul 02 11:56:56 2014 +0200 +++ b/ui/certificateitemwidget.cpp Wed Jul 02 11:57:32 2014 +0200 @@ -9,6 +9,7 @@ #include <QHBoxLayout> #include <QDebug> +#include <QStyleFactory> CertificateItemWidget::CertificateItemWidget(QWidget *parent, const Certificate &cert, @@ -26,18 +27,32 @@ setupGUI(); } + +/* We use the label as data to hide it in the normal dropdown menu and only + * show it when the popup is shown.*/ + void CertificateItemWidget::setupGUI() { mLabel = new QLabel(mCertificate.subjectCN()); - mComboBox = new QComboBox; + mComboBox = new IconOnlyTextPopupBox; + QStyle *fusionStyle = QStyleFactory::create("Fusion"); + if (!fusionStyle) { + qDebug() << "Failed to create fusion style"; + } else { + mComboBox->setStyle(fusionStyle); + } + mComboBox->setFixedWidth(46); + + mLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + mComboBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); connect(mComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentStateChanged(int))); QHBoxLayout *layout = new QHBoxLayout; if (mCertificate.isInstallCert()) { - mComboBox->addItem(QIcon(":/img/security-high.png"), mInstallLabel, QVariant("true")); - mComboBox->addItem(QIcon(":/img/security-low.png"), mRemoveLabel, QVariant("false")); + mComboBox->addItem(QIcon(":/img/security-high.png"), QString(), mInstallLabel); + mComboBox->addItem(QIcon(":/img/security-low.png"), QString(), mRemoveLabel); if (mState) mComboBox->setCurrentIndex(0); else { @@ -72,7 +87,14 @@ if (!mEditable) { return true; } - return mComboBox->currentData().toBool(); + + const QString currentString = mComboBox->currentData().toString(); + + if (!mCertificate.isInstallCert()) { + return currentString == tr("uninstall"); + } + + return currentString == mInstallLabel; } void CertificateItemWidget::setState(bool state) @@ -100,3 +122,17 @@ bool state = mComboBox->currentData().toBool(); emit stateChanged(state, mCertificate); } + +void IconOnlyTextPopupBox::showPopup() { + for (int i = 0; i < count(); i++) { + setItemText(i, itemData(i).toString()); + } + QComboBox::showPopup(); +} + +void IconOnlyTextPopupBox::hidePopup() { + for (int i = 0; i < count(); i++) { + setItemText(i, QString()); + } + QComboBox::hidePopup(); +}