Mercurial > trustbridge
annotate ui/listupdatedialog.cpp @ 217:83a015f2e078
Remove leftover incrementation of i from former loop style. Fixes a crash when adding only one
certificate.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 26 Mar 2014 20:14:22 +0100 |
parents | aab742690bee |
children | 431b058e903d |
rev | line source |
---|---|
71
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
1 #include "listupdatedialog.h" |
127
04dcc0fb1eca
Set cinst process path to be the directory of the executable running
Andre Heinecke <aheinecke@intevation.de>
parents:
98
diff
changeset
|
2 #include <QCoreApplication> |
71
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
3 #include <QDebug> |
127
04dcc0fb1eca
Set cinst process path to be the directory of the executable running
Andre Heinecke <aheinecke@intevation.de>
parents:
98
diff
changeset
|
4 #include <QDir> |
04dcc0fb1eca
Set cinst process path to be the directory of the executable running
Andre Heinecke <aheinecke@intevation.de>
parents:
98
diff
changeset
|
5 #include <QFileInfo> |
85
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
6 #include <QProcess> |
80
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
7 #include <QPushButton> |
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
8 #include <QGroupBox> |
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
9 #include <QHBoxLayout> |
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
10 #include <QListWidget> |
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
11 #include <QVBoxLayout> |
213
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
12 #include <QLabel> |
80
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
13 #include "certificate.h" |
71
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
14 |
153
252ffe6e27fd
Changed type of MainWindow from QDialog to QMainWindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
129
diff
changeset
|
15 ListUpdateDialog::ListUpdateDialog(QMainWindow *parent, |
71
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
16 const CertificateList &listToInstall) : |
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
17 QDialog(parent), |
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
18 mCertificateList(listToInstall) |
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
19 { |
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
20 setupGUI(); |
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
21 } |
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
22 |
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
23 void ListUpdateDialog::setupGUI() |
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
24 { |
80
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
25 /* Top level layout / widgets */ |
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
26 QVBoxLayout *topLayout = new QVBoxLayout; |
213
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
27 QHBoxLayout *headerLayout = new QHBoxLayout; |
80
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
28 QHBoxLayout *listLayout = new QHBoxLayout; |
213
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
29 QHBoxLayout *bottomLayout = new QHBoxLayout; |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
30 |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
31 QImage *logoImage = new QImage(":/img/logo-small.png"); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
32 QLabel *logo = new QLabel; |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
33 logo->setBackgroundRole(QPalette::Base); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
34 logo->setPixmap(QPixmap::fromImage(*logoImage)); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
35 QLabel *title = new QLabel("<h3>" + tr("Update Certificate") + "</h3>"); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
36 headerLayout->addWidget(logo); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
37 headerLayout->addWidget(title); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
38 headerLayout->setStretch(0, 0); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
39 headerLayout->setStretch(1, 10); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
40 |
80
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
41 QPushButton *executeUpdate = new QPushButton(tr("Update Stores")); |
85
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
42 connect(executeUpdate, &QPushButton::clicked, |
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
43 this, &ListUpdateDialog::executeUpdate); |
213
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
44 QPushButton *install = new QPushButton(tr("Install selected")); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
45 QPushButton *later = new QPushButton(tr("Remind me later")); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
46 bottomLayout->insertStretch(0, 10); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
47 bottomLayout->addWidget(executeUpdate); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
48 bottomLayout->addWidget(install); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
49 bottomLayout->addWidget(later); |
80
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
50 |
213
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
51 /* The certificate groups */ |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
52 mCertListWidget = new QListWidget; |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
53 connect(mCertListWidget, SIGNAL(itemClicked(QListWidgetItem*)), |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
54 this, SLOT(showDetails(QListWidgetItem*))); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
55 mDetailWidget = new QTextEdit; |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
56 mDetailWidget->setReadOnly(true); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
57 listLayout->addWidget(mCertListWidget); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
58 listLayout->addWidget(mDetailWidget); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
59 QGroupBox *certGroup = new QGroupBox(tr("Select certificates")); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
60 certGroup->setLayout(listLayout); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
61 |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
62 foreach (const Certificate& cert, mCertificateList.getInstallCertificates()) { |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
63 if (!cert.isValid()) { |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
64 qWarning() << "Invalid certificate in list"; |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
65 continue; |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
66 } |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
67 QListWidgetItem* item = new QListWidgetItem(cert.shortDescription()); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
68 item->setFlags(item->flags() | Qt::ItemIsUserCheckable); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
69 item->setData(Qt::ToolTipRole, cert.details()); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
70 item->setData(Qt::UserRole, cert.base64Line()); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
71 item->setCheckState(Qt::Checked); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
72 QIcon *certIcon = new QIcon(":/img/list-add.png"); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
73 item->setIcon(*certIcon); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
74 mCertListWidget->addItem(item); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
75 } |
80
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
76 |
82
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
77 foreach (const Certificate& cert, mCertificateList.getRemoveCertificates()) { |
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
78 if (!cert.isValid()) { |
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
79 qWarning() << "Invalid certificate in list"; |
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
80 continue; |
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
81 } |
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
82 QListWidgetItem* item = new QListWidgetItem(cert.shortDescription()); |
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
83 item->setFlags(item->flags() | Qt::ItemIsUserCheckable); |
128
95d35ec93bbe
Supply the cinst process with checked items not with selected ones
Andre Heinecke <aheinecke@intevation.de>
parents:
127
diff
changeset
|
84 item->setData(Qt::ToolTipRole, cert.details()); |
95d35ec93bbe
Supply the cinst process with checked items not with selected ones
Andre Heinecke <aheinecke@intevation.de>
parents:
127
diff
changeset
|
85 item->setData(Qt::UserRole, cert.base64Line()); |
82
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
86 item->setCheckState(Qt::Checked); |
213
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
87 QIcon *certIcon = new QIcon(":/img/list-remove.png"); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
88 item->setIcon(*certIcon); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
89 mCertListWidget->addItem(item); |
82
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
90 } |
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
91 |
80
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
92 |
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
93 /* Fill top level layout */ |
213
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
94 topLayout->addLayout(headerLayout); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
95 topLayout->addWidget(certGroup); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
96 topLayout->addLayout(bottomLayout); |
80
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
97 |
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
98 setLayout(topLayout); |
01286d0872ca
Add some UI in listupdatedialog
Andre Heinecke <aheinecke@intevation.de>
parents:
71
diff
changeset
|
99 |
71
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
100 return; |
f22a99f7cb69
Add certificatelist to install as member. Look for updates on startup
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
101 } |
82
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
102 |
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
103 void ListUpdateDialog::executeUpdate() { |
85
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
104 /* TODO move this in another dialog and call it async*/ |
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
105 QProcess installerProcess; |
127
04dcc0fb1eca
Set cinst process path to be the directory of the executable running
Andre Heinecke <aheinecke@intevation.de>
parents:
98
diff
changeset
|
106 QFileInfo fi(QCoreApplication::applicationFilePath()); |
04dcc0fb1eca
Set cinst process path to be the directory of the executable running
Andre Heinecke <aheinecke@intevation.de>
parents:
98
diff
changeset
|
107 QDir myDir = fi.absoluteDir(); |
04dcc0fb1eca
Set cinst process path to be the directory of the executable running
Andre Heinecke <aheinecke@intevation.de>
parents:
98
diff
changeset
|
108 QString instProcName = "cinst"; |
04dcc0fb1eca
Set cinst process path to be the directory of the executable running
Andre Heinecke <aheinecke@intevation.de>
parents:
98
diff
changeset
|
109 if (!fi.suffix().isEmpty()) { |
04dcc0fb1eca
Set cinst process path to be the directory of the executable running
Andre Heinecke <aheinecke@intevation.de>
parents:
98
diff
changeset
|
110 instProcName += "." + fi.suffix(); |
04dcc0fb1eca
Set cinst process path to be the directory of the executable running
Andre Heinecke <aheinecke@intevation.de>
parents:
98
diff
changeset
|
111 } |
04dcc0fb1eca
Set cinst process path to be the directory of the executable running
Andre Heinecke <aheinecke@intevation.de>
parents:
98
diff
changeset
|
112 QString instPath = myDir.absoluteFilePath(instProcName); |
82
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
113 |
127
04dcc0fb1eca
Set cinst process path to be the directory of the executable running
Andre Heinecke <aheinecke@intevation.de>
parents:
98
diff
changeset
|
114 installerProcess.setProgram(instPath); |
85
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
115 installerProcess.start(); |
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
116 installerProcess.waitForStarted(); |
98
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
117 if (installerProcess.state() == QProcess::NotRunning) { |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
118 qWarning() << "Failed to start installer Process."; |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
119 /* TODO ERROR message for the user */ |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
120 return; |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
121 } |
128
95d35ec93bbe
Supply the cinst process with checked items not with selected ones
Andre Heinecke <aheinecke@intevation.de>
parents:
127
diff
changeset
|
122 |
85
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
123 installerProcess.write("-----BEGIN CERTIFICATE LIST-----\r\n"); |
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
124 installerProcess.write(mCertificateList.rawData().toLatin1()); |
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
125 installerProcess.write("-----END CERTIFICATE LIST-----\r\n"); |
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
126 |
128
95d35ec93bbe
Supply the cinst process with checked items not with selected ones
Andre Heinecke <aheinecke@intevation.de>
parents:
127
diff
changeset
|
127 /* Items to install */ |
213
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
128 for (int i = 0; i < mCertListWidget->count(); i++) { |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
129 QListWidgetItem *item = mCertListWidget->item(i); |
214
aab742690bee
Fix check for selected items and wait for bytes written.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
213
diff
changeset
|
130 if (item->checkState() 1= Qt::Checked && |
213
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
131 item->data(Qt::UserRole).toString().startsWith("I:")) { |
128
95d35ec93bbe
Supply the cinst process with checked items not with selected ones
Andre Heinecke <aheinecke@intevation.de>
parents:
127
diff
changeset
|
132 continue; |
95d35ec93bbe
Supply the cinst process with checked items not with selected ones
Andre Heinecke <aheinecke@intevation.de>
parents:
127
diff
changeset
|
133 } |
95d35ec93bbe
Supply the cinst process with checked items not with selected ones
Andre Heinecke <aheinecke@intevation.de>
parents:
127
diff
changeset
|
134 installerProcess.write(item->data(Qt::UserRole).toString().toLatin1()); |
95d35ec93bbe
Supply the cinst process with checked items not with selected ones
Andre Heinecke <aheinecke@intevation.de>
parents:
127
diff
changeset
|
135 installerProcess.write("\r\n"); |
95d35ec93bbe
Supply the cinst process with checked items not with selected ones
Andre Heinecke <aheinecke@intevation.de>
parents:
127
diff
changeset
|
136 } |
85
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
137 |
128
95d35ec93bbe
Supply the cinst process with checked items not with selected ones
Andre Heinecke <aheinecke@intevation.de>
parents:
127
diff
changeset
|
138 /* Items to remove */ |
213
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
139 for (int i = 0; i < mCertListWidget->count(); i++) { |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
140 QListWidgetItem *item = mCertListWidget->item(i); |
214
aab742690bee
Fix check for selected items and wait for bytes written.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
213
diff
changeset
|
141 if (!item->checkState() != Qt::Checked && |
213
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
142 item->data(Qt::UserRole).toString().startsWith("R:")) { |
128
95d35ec93bbe
Supply the cinst process with checked items not with selected ones
Andre Heinecke <aheinecke@intevation.de>
parents:
127
diff
changeset
|
143 continue; |
95d35ec93bbe
Supply the cinst process with checked items not with selected ones
Andre Heinecke <aheinecke@intevation.de>
parents:
127
diff
changeset
|
144 } |
85
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
145 installerProcess.write(item->data(Qt::UserRole).toString().toLatin1()); |
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
146 installerProcess.write("\r\n"); |
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
147 } |
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
148 |
214
aab742690bee
Fix check for selected items and wait for bytes written.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
213
diff
changeset
|
149 installerProcess.waitForBytesWritten(); |
85
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
150 installerProcess.closeWriteChannel(); |
e52df5870c4f
Add basic interaction with another process
Andre Heinecke <aheinecke@intevation.de>
parents:
82
diff
changeset
|
151 installerProcess.waitForFinished(); |
98
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
152 |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
153 if (installerProcess.exitStatus() == QProcess::CrashExit) { |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
154 /* Woops */ |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
155 qWarning() << "Installer process crashed"; |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
156 } else if (installerProcess.exitStatus() != QProcess::NormalExit) { |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
157 /* Can not Happen. there are only those two values but maybe |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
158 * qt changed.. */ |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
159 qWarning() << "Exit status neither normal nor crash."; |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
160 return; |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
161 } |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
162 |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
163 if (installerProcess.exitCode() == 0) { |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
164 qDebug() << "Success!"; |
129
39b7930fbca9
Print debug output also on success
Andre Heinecke <aheinecke@intevation.de>
parents:
128
diff
changeset
|
165 qDebug() << "output: " << installerProcess.readAllStandardOutput(); |
98
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
166 } else { |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
167 /* TODO handle errors defined by errorcodes.h */ |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
168 qDebug() << "Installer Process returned: " << installerProcess.exitCode(); |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
169 qDebug() << "output: " << installerProcess.readAllStandardOutput(); |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
170 return; |
6090e673c707
Add some error handling. Change process path for testing
Andre Heinecke <aheinecke@intevation.de>
parents:
85
diff
changeset
|
171 } |
82
1f27d6db5ee3
Polarssl based certificate handling
Andre Heinecke <aheinecke@intevation.de>
parents:
80
diff
changeset
|
172 } |
213
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
173 |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
174 void ListUpdateDialog::showDetails(QListWidgetItem *item) |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
175 { |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
176 QString details = item->data(Qt::ToolTipRole).toString(); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
177 mDetailWidget->setPlainText(details); |
3ebebd055d3a
Refactored the list update dialog. Now it looks a bit more like the mainwindow.
Raimund Renkert <rrenkert@intevation.de>
parents:
153
diff
changeset
|
178 } |