Mercurial > trustbridge
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 +}