view ui/createinstallerdialog.cpp @ 417:03c562b1a3ea

Fixed layout in TrustBridge Adminstration dialogs.
author Raimund Renkert <rrenkert@intevation.de>
date Wed, 16 Apr 2014 17:46:40 +0200
parents 3d803d383b41
children d7cda835abd6
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU GPL (v>=2)
 * and comes with ABSOLUTELY NO WARRANTY!
 * See LICENSE.txt for details.
 */
#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("Create binary installer"));
    setupGUI();
    resize(500, 250);
}

void CreateInstallerDialog::setupGUI()
{
    /* Top level layout / widgets */
    QVBoxLayout *topLayout = new QVBoxLayout;
    QVBoxLayout *headerLayout = new QVBoxLayout;
    QHBoxLayout *headerSubLayout = new QHBoxLayout;
    QVBoxLayout *centerLayout = new QVBoxLayout;
    QHBoxLayout *bottomLayout = new QHBoxLayout;
    QHBoxLayout *archiveLayout = new QHBoxLayout;
    QHBoxLayout *certLayout = new QHBoxLayout;
    QHBoxLayout *saveLayout = new QHBoxLayout;

    QLabel *header = new QLabel("<h3>" + tr("Create binary installer") + "</h3>");
    QLabel *description = new QLabel(
        tr("Create and signed a TrustBridge binary installer from source."));
    headerSubLayout->insertSpacing(0, 40);
    headerSubLayout->addWidget(description);
    QFrame *headerSeparator = new QFrame();
    headerSeparator->setFrameShape(QFrame::HLine);
    headerSeparator->setFrameShadow(QFrame::Sunken);
    headerLayout->addWidget(header);
    headerLayout->addLayout(headerSubLayout);
    headerLayout->addWidget(headerSeparator);

    QLabel *archiveLabel = new QLabel(tr("Select source archive:"));
    archiveLabel->setFixedWidth(225);
    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(tr("Select code signing certificate (secret key):"));
    certLabel->setFixedWidth(225);
    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(tr("Select output folder:"));
    saveLabel->setFixedWidth(225);
    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->insertSpacing(0, 10);
    centerLayout->addLayout(archiveLayout);
    centerLayout->addLayout(certLayout);
    centerLayout->addLayout(saveLayout);
    centerLayout->insertSpacing(4, 10);

    QPushButton *create = new QPushButton(tr("Create installer"));
    connect(create, SIGNAL(clicked()), this, SLOT(createInstaller()));
    QPushButton *cancel = new QPushButton(tr("Cancel"));
    connect(cancel, SIGNAL(clicked()), this, SLOT(close()));
    bottomLayout->insertStretch(0, 10);
    bottomLayout->addWidget(create);
    bottomLayout->addWidget(cancel);

    QFrame *bottomSeparator = new QFrame();
    bottomSeparator->setFrameShape(QFrame::HLine);
    bottomSeparator->setFrameShadow(QFrame::Sunken);

    topLayout->addLayout(headerLayout);
    topLayout->addLayout(centerLayout);
    topLayout->insertStretch(2, 10);
    topLayout->addWidget(bottomSeparator);
    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/