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();
+}

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