annotate ui/certificateitemwidget.cpp @ 856:797aa8d9c785

(issue48) Fallback to HKEY_USERS on hive load failure If the hive can not be loaded it might mean that the user is currently logged on. In that case we can access his registry via HKEY_USERS.
author Andre Heinecke <andre.heinecke@intevation.de>
date Thu, 31 Jul 2014 12:56:26 +0200
parents bd33c6585cd0
children 9c4543128666
rev   line source
582
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
3 *
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU GPL (v>=2)
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY!
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
6 * See LICENSE.txt for details.
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
7 */
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
8 #include "certificateitemwidget.h"
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10 #include <QHBoxLayout>
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 #include <QDebug>
701
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
12 #include <QStyleFactory>
582
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13
687
973a7ce19658 (issue24) Let the string for install / remove be set for each item individually
Andre Heinecke <andre.heinecke@intevation.de>
parents: 685
diff changeset
14 CertificateItemWidget::CertificateItemWidget(QWidget *parent,
973a7ce19658 (issue24) Let the string for install / remove be set for each item individually
Andre Heinecke <andre.heinecke@intevation.de>
parents: 685
diff changeset
15 const Certificate &cert,
973a7ce19658 (issue24) Let the string for install / remove be set for each item individually
Andre Heinecke <andre.heinecke@intevation.de>
parents: 685
diff changeset
16 bool state,
973a7ce19658 (issue24) Let the string for install / remove be set for each item individually
Andre Heinecke <andre.heinecke@intevation.de>
parents: 685
diff changeset
17 bool editable,
973a7ce19658 (issue24) Let the string for install / remove be set for each item individually
Andre Heinecke <andre.heinecke@intevation.de>
parents: 685
diff changeset
18 const QString &installLabel,
973a7ce19658 (issue24) Let the string for install / remove be set for each item individually
Andre Heinecke <andre.heinecke@intevation.de>
parents: 685
diff changeset
19 const QString &removeLabel) :
973a7ce19658 (issue24) Let the string for install / remove be set for each item individually
Andre Heinecke <andre.heinecke@intevation.de>
parents: 685
diff changeset
20 QWidget(parent),
973a7ce19658 (issue24) Let the string for install / remove be set for each item individually
Andre Heinecke <andre.heinecke@intevation.de>
parents: 685
diff changeset
21 mInstallLabel (installLabel),
973a7ce19658 (issue24) Let the string for install / remove be set for each item individually
Andre Heinecke <andre.heinecke@intevation.de>
parents: 685
diff changeset
22 mRemoveLabel (removeLabel)
582
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 {
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 mCertificate = cert;
638
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
25 mState = state;
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
26 mEditable = editable;
582
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 setupGUI();
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 }
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29
701
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
30
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
31 /* We use the label as data to hide it in the normal dropdown menu and only
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
32 * show it when the popup is shown.*/
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
33
582
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 void CertificateItemWidget::setupGUI()
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 {
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 710
diff changeset
36 mLabel = new QLabel;
701
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
37 mComboBox = new IconOnlyTextPopupBox;
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
38 QStyle *fusionStyle = QStyleFactory::create("Fusion");
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
39 if (!fusionStyle) {
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
40 qDebug() << "Failed to create fusion style";
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
41 } else {
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
42 mComboBox->setStyle(fusionStyle);
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
43 }
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
44
842
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
45 mComboBox->setIconSize(QSize(32, 32));
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
46 mComboBox->setFixedWidth(64);
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 710
diff changeset
47
786
4eff77851e76 Use minimum size for certificates to avoid scaling in small lists.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 780
diff changeset
48 setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
4eff77851e76 Use minimum size for certificates to avoid scaling in small lists.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 780
diff changeset
49
842
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
50 const QString validity = tr("Validity: %1 until %2").arg(
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 710
diff changeset
51 QLocale::system().toString(mCertificate.validFrom().date(), QLocale::ShortFormat)).arg(
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 710
diff changeset
52 QLocale::system().toString(mCertificate.validTo().date(), QLocale::ShortFormat));
842
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
53 const QString fpstring = tr("Fingerprint (SHA1): <code>%1</code>").arg(mCertificate.fingerprint());
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
54 mLabel->setText(QString::fromLatin1("<big><b>%1</b></big><br/>%2<br/>%3<br/>%4").arg
743
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 710
diff changeset
55 (mCertificate.subjectCN()).arg(mCertificate.subjectO()).arg(validity).arg
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 710
diff changeset
56 (fpstring));
a467204a35f5 Rework User Interface.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 710
diff changeset
57 mLabel->setTextFormat(Qt::RichText);
701
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
58
842
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
59 mLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
780
9f13c00a2647 Make certificate text selectable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 744
diff changeset
60
9f13c00a2647 Make certificate text selectable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 744
diff changeset
61 mLabel->setTextInteractionFlags(
9f13c00a2647 Make certificate text selectable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 744
diff changeset
62 Qt::TextSelectableByMouse |
9f13c00a2647 Make certificate text selectable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 744
diff changeset
63 Qt::TextSelectableByKeyboard);
701
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
64 mComboBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
627
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
65 connect(mComboBox, SIGNAL(currentIndexChanged(int)),
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
66 this, SLOT(currentStateChanged(int)));
582
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67
638
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
68 QHBoxLayout *layout = new QHBoxLayout;
582
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
69 if (mCertificate.isInstallCert()) {
701
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
70 mComboBox->addItem(QIcon(":/img/security-high.png"), QString(), mInstallLabel);
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
71 mComboBox->addItem(QIcon(":/img/security-low.png"), QString(), mRemoveLabel);
842
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
72 if (mState) {
638
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
73 mComboBox->setCurrentIndex(0);
842
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
74 mComboBox->setToolTip(tr("This certificate is currently installed."));
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
75 }
638
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
76 else {
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
77 mComboBox->setCurrentIndex(1);
842
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
78 mComboBox->setToolTip(tr("This certificate is currently not installed."));
638
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
79 }
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
80 layout->addWidget(mComboBox);
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
81 }
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
82 else if (!mCertificate.isInstallCert() && !mEditable){
650
9c3e7754b76b Use new icons in certificate lists.
Raimund Renkert <rrenkert@intevation.de>
parents: 638
diff changeset
83 QImage *img = new QImage(":/img/trash-empty.png");
638
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
84 QLabel *imgLabel = new QLabel;
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
85 imgLabel->setPixmap(QPixmap::fromImage(*img));
842
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
86 imgLabel->setFixedSize(64, 64);
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
87 imgLabel->setMargin(8);
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
88 imgLabel->setToolTip(tr("This certificate was uninstalled."));
638
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
89 layout->addWidget(imgLabel);
582
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
90 }
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
91 else {
710
86c9ff4cfb02 (Issue30) Actually set the text as data also for removal
Andre Heinecke <andre.heinecke@intevation.de>
parents: 701
diff changeset
92 mComboBox->addItem(QIcon(":/img/trash-empty.png"), QString(), tr("uninstall"));
86c9ff4cfb02 (Issue30) Actually set the text as data also for removal
Andre Heinecke <andre.heinecke@intevation.de>
parents: 701
diff changeset
93 mComboBox->addItem(QIcon(":/img/security-medium.png"), QString(), tr("keep"));
842
bd33c6585cd0 UI improvements (issue18, 60)
Emanuel Schuetze <emanuel@intevation.de>
parents: 839
diff changeset
94 mComboBox->setToolTip(tr("This certificate is currently installed."));
638
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
95 if (mState)
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
96 mComboBox->setCurrentIndex(0);
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
97 else {
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
98 mComboBox->setCurrentIndex(1);
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
99 }
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
100 layout->addWidget(mComboBox);
582
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
101 }
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
102 layout->addWidget(mLabel);
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
103 this->setLayout(layout);
88c9bdc74175 New widgets to display certificates in lists.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
104 }
627
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
105
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
106 bool CertificateItemWidget::state()
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
107 {
685
248d4f24e618 (Issue 29) Uneditable items are always selected
Andre Heinecke <andre.heinecke@intevation.de>
parents: 659
diff changeset
108 if (!mEditable) {
248d4f24e618 (Issue 29) Uneditable items are always selected
Andre Heinecke <andre.heinecke@intevation.de>
parents: 659
diff changeset
109 return true;
248d4f24e618 (Issue 29) Uneditable items are always selected
Andre Heinecke <andre.heinecke@intevation.de>
parents: 659
diff changeset
110 }
701
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
111
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
112 const QString currentString = mComboBox->currentData().toString();
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
113
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
114 if (!mCertificate.isInstallCert()) {
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
115 return currentString == tr("uninstall");
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
116 }
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
117
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
118 return currentString == mInstallLabel;
627
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
119 }
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
120
638
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
121 void CertificateItemWidget::setState(bool state)
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
122 {
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
123 disconnect(mComboBox, SIGNAL(currentIndexChanged(int)),
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
124 this, SLOT(currentStateChanged(int)));
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
125
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
126 if (state) {
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
127 mComboBox->setCurrentIndex(0);
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
128 }
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
129 else {
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
130 mComboBox->setCurrentIndex(1);
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
131 }
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
132 connect(mComboBox, SIGNAL(currentIndexChanged(int)),
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
133 this, SLOT(currentStateChanged(int)));
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
134 }
9d806f140bd5 Added state and editable flag to certificate list items.
Raimund Renkert <rrenkert@intevation.de>
parents: 627
diff changeset
135
627
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
136 Certificate CertificateItemWidget::certificate()
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
137 {
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
138 return mCertificate;
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
139 }
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
140
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
141 void CertificateItemWidget::currentStateChanged(int)
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
142 {
839
b108510bac5a (issue71) Fix state toggle information.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 786
diff changeset
143 bool state = !mComboBox->currentIndex();
627
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
144 emit stateChanged(state, mCertificate);
566ee111e331 Added state to certificate list item and updated certificate list widget.
Raimund Renkert <rrenkert@intevation.de>
parents: 582
diff changeset
145 }
701
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
146
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
147 void IconOnlyTextPopupBox::showPopup() {
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
148 for (int i = 0; i < count(); i++) {
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
149 setItemText(i, itemData(i).toString());
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
150 }
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
151 QComboBox::showPopup();
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
152 }
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
153
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
154 void IconOnlyTextPopupBox::hidePopup() {
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
155 for (int i = 0; i < count(); i++) {
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
156 setItemText(i, QString());
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
157 }
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
158 QComboBox::hidePopup();
31c3d2bc9880 (Issue22) Fix painting problems with fixed size in windows style.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 687
diff changeset
159 }

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