Mercurial > trustbridge
comparison 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 |
comparison
equal
deleted
inserted
replaced
705:ff2efc1cb8fa | 706:6bb3018b966d |
---|---|
7 */ | 7 */ |
8 #include "certificateitemwidget.h" | 8 #include "certificateitemwidget.h" |
9 | 9 |
10 #include <QHBoxLayout> | 10 #include <QHBoxLayout> |
11 #include <QDebug> | 11 #include <QDebug> |
12 #include <QStyleFactory> | |
12 | 13 |
13 CertificateItemWidget::CertificateItemWidget(QWidget *parent, | 14 CertificateItemWidget::CertificateItemWidget(QWidget *parent, |
14 const Certificate &cert, | 15 const Certificate &cert, |
15 bool state, | 16 bool state, |
16 bool editable, | 17 bool editable, |
24 mState = state; | 25 mState = state; |
25 mEditable = editable; | 26 mEditable = editable; |
26 setupGUI(); | 27 setupGUI(); |
27 } | 28 } |
28 | 29 |
30 | |
31 /* We use the label as data to hide it in the normal dropdown menu and only | |
32 * show it when the popup is shown.*/ | |
33 | |
29 void CertificateItemWidget::setupGUI() | 34 void CertificateItemWidget::setupGUI() |
30 { | 35 { |
31 mLabel = new QLabel(mCertificate.subjectCN()); | 36 mLabel = new QLabel(mCertificate.subjectCN()); |
32 mComboBox = new QComboBox; | 37 mComboBox = new IconOnlyTextPopupBox; |
38 QStyle *fusionStyle = QStyleFactory::create("Fusion"); | |
39 if (!fusionStyle) { | |
40 qDebug() << "Failed to create fusion style"; | |
41 } else { | |
42 mComboBox->setStyle(fusionStyle); | |
43 } | |
44 | |
33 mComboBox->setFixedWidth(46); | 45 mComboBox->setFixedWidth(46); |
46 | |
47 mLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); | |
48 mComboBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); | |
34 connect(mComboBox, SIGNAL(currentIndexChanged(int)), | 49 connect(mComboBox, SIGNAL(currentIndexChanged(int)), |
35 this, SLOT(currentStateChanged(int))); | 50 this, SLOT(currentStateChanged(int))); |
36 | 51 |
37 QHBoxLayout *layout = new QHBoxLayout; | 52 QHBoxLayout *layout = new QHBoxLayout; |
38 if (mCertificate.isInstallCert()) { | 53 if (mCertificate.isInstallCert()) { |
39 mComboBox->addItem(QIcon(":/img/security-high.png"), mInstallLabel, QVariant("true")); | 54 mComboBox->addItem(QIcon(":/img/security-high.png"), QString(), mInstallLabel); |
40 mComboBox->addItem(QIcon(":/img/security-low.png"), mRemoveLabel, QVariant("false")); | 55 mComboBox->addItem(QIcon(":/img/security-low.png"), QString(), mRemoveLabel); |
41 if (mState) | 56 if (mState) |
42 mComboBox->setCurrentIndex(0); | 57 mComboBox->setCurrentIndex(0); |
43 else { | 58 else { |
44 mComboBox->setCurrentIndex(1); | 59 mComboBox->setCurrentIndex(1); |
45 } | 60 } |
70 bool CertificateItemWidget::state() | 85 bool CertificateItemWidget::state() |
71 { | 86 { |
72 if (!mEditable) { | 87 if (!mEditable) { |
73 return true; | 88 return true; |
74 } | 89 } |
75 return mComboBox->currentData().toBool(); | 90 |
91 const QString currentString = mComboBox->currentData().toString(); | |
92 | |
93 if (!mCertificate.isInstallCert()) { | |
94 return currentString == tr("uninstall"); | |
95 } | |
96 | |
97 return currentString == mInstallLabel; | |
76 } | 98 } |
77 | 99 |
78 void CertificateItemWidget::setState(bool state) | 100 void CertificateItemWidget::setState(bool state) |
79 { | 101 { |
80 disconnect(mComboBox, SIGNAL(currentIndexChanged(int)), | 102 disconnect(mComboBox, SIGNAL(currentIndexChanged(int)), |
98 void CertificateItemWidget::currentStateChanged(int) | 120 void CertificateItemWidget::currentStateChanged(int) |
99 { | 121 { |
100 bool state = mComboBox->currentData().toBool(); | 122 bool state = mComboBox->currentData().toBool(); |
101 emit stateChanged(state, mCertificate); | 123 emit stateChanged(state, mCertificate); |
102 } | 124 } |
125 | |
126 void IconOnlyTextPopupBox::showPopup() { | |
127 for (int i = 0; i < count(); i++) { | |
128 setItemText(i, itemData(i).toString()); | |
129 } | |
130 QComboBox::showPopup(); | |
131 } | |
132 | |
133 void IconOnlyTextPopupBox::hidePopup() { | |
134 for (int i = 0; i < count(); i++) { | |
135 setItemText(i, QString()); | |
136 } | |
137 QComboBox::hidePopup(); | |
138 } |