diff ui/createinstallerdialog.cpp @ 361:b67dd46cd4a9

Added dialog to create a new, signed installer binary.
author Raimund Renkert <rrenkert@intevation.de>
date Sat, 12 Apr 2014 17:19:38 +0200
parents
children 17e1c8f37d72
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/createinstallerdialog.cpp	Sat Apr 12 17:19:38 2014 +0200
@@ -0,0 +1,111 @@
+#include "createinstallerdialog.h"
+#include <QDebug>
+#include <QDir>
+#include <QPushButton>
+#include <QGroupBox>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QLabel>
+#include <QFileDialog>
+
+CreateInstallerDialog::CreateInstallerDialog(QMainWindow *parent) :
+    QDialog(parent)
+{
+    setWindowTitle(tr("adminstrator - Create signed installer binary"));
+    setupGUI();
+}
+
+void CreateInstallerDialog::setupGUI()
+{
+    /* Top level layout / widgets */
+    QVBoxLayout *topLayout = new QVBoxLayout;
+    QHBoxLayout *headerLayout = new QHBoxLayout;
+    QVBoxLayout *centerLayout = new QVBoxLayout;
+    QHBoxLayout *bottomLayout = new QHBoxLayout;
+    QHBoxLayout *archiveLayout = new QHBoxLayout;
+    QHBoxLayout *certLayout = new QHBoxLayout;
+    QHBoxLayout *saveLayout = new QHBoxLayout;
+
+    QString descString = tr("Create a new signed installer binary.\n");
+    descString.append("Select the archive, certificate and destination directory.");
+    QLabel *description = new QLabel(descString);
+    headerLayout->addWidget(description);
+
+    QLabel *archiveLabel = new QLabel("Select source archive:");
+    archiveLabel->setFixedWidth(140);
+    mArchiveFile = new QLineEdit();
+    QPushButton *archiveSelect = new QPushButton("...");
+    connect(archiveSelect, SIGNAL(clicked()), this, SLOT(openArchiveSelect()));
+    archiveSelect->setFixedWidth(30);
+    archiveLayout->addWidget(archiveLabel);
+    archiveLayout->addWidget(mArchiveFile);
+    archiveLayout->addWidget(archiveSelect);
+
+    QLabel *certLabel = new QLabel("Select certificate:");
+    certLabel->setFixedWidth(140);
+    mCertFile = new QLineEdit();
+    QPushButton *certSelect = new QPushButton("...");
+    connect(certSelect, SIGNAL(clicked()), this, SLOT(openCertificateSelect()));
+    certSelect->setFixedWidth(30);
+    certLayout->addWidget(certLabel);
+    certLayout->addWidget(mCertFile);
+    certLayout->addWidget(certSelect);
+
+    QLabel *saveLabel = new QLabel("Select target location:");
+    saveLabel->setFixedWidth(140);
+    mSaveFile = new QLineEdit();
+    QPushButton *saveSelect = new QPushButton("...");
+    connect(saveSelect, SIGNAL(clicked()), this, SLOT(openSaveLocation()));
+    saveSelect->setFixedWidth(30);
+    saveLayout->addWidget(saveLabel);
+    saveLayout->addWidget(mSaveFile);
+    saveLayout->addWidget(saveSelect);
+
+    centerLayout->addLayout(archiveLayout);
+    centerLayout->addLayout(certLayout);
+    centerLayout->addLayout(saveLayout);
+
+    QPushButton *create = new QPushButton(tr("Create Installer"));
+    connect(create, SIGNAL(clicked()), this, SLOT(createInstaller()));
+    bottomLayout->insertStretch(0, 10);
+    bottomLayout->addWidget(create);
+
+    topLayout->addLayout(headerLayout);
+    topLayout->addLayout(centerLayout);
+    topLayout->insertStretch(2, 10);
+    topLayout->addLayout(bottomLayout);
+
+    setLayout(topLayout);
+
+    return;
+}
+
+void CreateInstallerDialog::openCertificateSelect()
+{
+    QString certFile = QFileDialog::getOpenFileName(
+        this, tr("Select certificate"), QDir::homePath(), "*.pem *.der *.crt");
+    mCertFile->setText(certFile);
+}
+
+void CreateInstallerDialog::openArchiveSelect()
+{
+    QString archiveFile = QFileDialog::getOpenFileName(
+        this, tr("Select source archive"), QDir::homePath(), "*.zip *.tar.gz");
+    mArchiveFile->setText(archiveFile);
+}
+
+void CreateInstallerDialog::openSaveLocation()
+{
+    QString saveFile = QFileDialog::getExistingDirectory(
+        this, tr("Select target location"), QDir::homePath());
+    mSaveFile->setText(saveFile);
+}
+
+void CreateInstallerDialog::createInstaller()
+{
+    qDebug() << "and now create the installer using:";
+    qDebug() << "source archive: " << mArchiveFile->text();
+    qDebug() << "certificate: " << mCertFile->text();
+    qDebug() << "target" << mSaveFile->text();
+    // TODO
+}

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