aheinecke@404: /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik aheinecke@404: * Software engineering by Intevation GmbH aheinecke@404: * aheinecke@404: * This file is Free Software under the GNU GPL (v>=2) aheinecke@404: * and comes with ABSOLUTELY NO WARRANTY! aheinecke@404: * See LICENSE.txt for details. aheinecke@404: */ rrenkert@367: #include "createcertlistdialog.h" rrenkert@367: #include rrenkert@367: #include rrenkert@367: #include rrenkert@367: #include rrenkert@367: #include rrenkert@367: #include rrenkert@367: #include rrenkert@367: #include rrenkert@413: #include rrenkert@367: rrenkert@367: CreateCertListDialog::CreateCertListDialog(QMainWindow *parent) : rrenkert@367: QDialog(parent) rrenkert@367: { rrenkert@413: setWindowTitle(tr("Save certificate list")); rrenkert@367: setupGUI(); rrenkert@413: resize(500, 200); rrenkert@367: } rrenkert@367: rrenkert@367: void CreateCertListDialog::setupGUI() rrenkert@367: { rrenkert@367: /* Top level layout / widgets */ rrenkert@367: QVBoxLayout *topLayout = new QVBoxLayout; rrenkert@413: QVBoxLayout *headerLayout = new QVBoxLayout; rrenkert@413: QHBoxLayout *headerSubLayout = new QHBoxLayout; rrenkert@367: QVBoxLayout *centerLayout = new QVBoxLayout; rrenkert@367: QHBoxLayout *bottomLayout = new QHBoxLayout; rrenkert@367: QHBoxLayout *certLayout = new QHBoxLayout; rrenkert@367: QHBoxLayout *saveLayout = new QHBoxLayout; rrenkert@367: rrenkert@413: QLabel *header = new QLabel("

" + tr("Save certificate list") + "

"); rrenkert@413: QLabel *description = new QLabel( rrenkert@413: tr("Save all managed root certificates in a new, signed certificate list")); rrenkert@413: headerSubLayout->insertSpacing(0, 40); rrenkert@413: headerSubLayout->addWidget(description); rrenkert@413: QFrame *headerSeparator = new QFrame(); rrenkert@413: headerSeparator->setFrameShape(QFrame::HLine); rrenkert@413: headerSeparator->setFrameShadow(QFrame::Sunken); rrenkert@413: headerLayout->addWidget(header); rrenkert@413: headerLayout->addLayout(headerSubLayout); rrenkert@413: headerLayout->addWidget(headerSeparator); rrenkert@367: rrenkert@413: QLabel *certLabel = new QLabel("Select signature certificate (secret key):"); rrenkert@367: certLabel->setFixedWidth(140); rrenkert@367: mCertFile = new QLineEdit(); rrenkert@367: QPushButton *certSelect = new QPushButton("..."); rrenkert@367: connect(certSelect, SIGNAL(clicked()), this, SLOT(openCertificateSelect())); rrenkert@367: certSelect->setFixedWidth(30); rrenkert@367: certLayout->addWidget(certLabel); rrenkert@367: certLayout->addWidget(mCertFile); rrenkert@367: certLayout->addWidget(certSelect); rrenkert@367: rrenkert@413: QLabel *saveLabel = new QLabel("Select output folder:"); rrenkert@367: saveLabel->setFixedWidth(140); rrenkert@367: mSaveFile = new QLineEdit(); rrenkert@367: QPushButton *saveSelect = new QPushButton("..."); rrenkert@367: connect(saveSelect, SIGNAL(clicked()), this, SLOT(openSaveLocation())); rrenkert@367: saveSelect->setFixedWidth(30); rrenkert@413: rrenkert@413: QString footerText = tr("In addition, each certificate list will be saved" rrenkert@413: "automatically in the archive directory:\n"); rrenkert@413: // TODO print out the path, not the displayName. rrenkert@413: footerText.append(QStandardPaths::displayName(QStandardPaths::DataLocation)); rrenkert@413: QLabel *footer = new QLabel(footerText); rrenkert@367: saveLayout->addWidget(saveLabel); rrenkert@367: saveLayout->addWidget(mSaveFile); rrenkert@367: saveLayout->addWidget(saveSelect); rrenkert@367: rrenkert@413: centerLayout->insertSpacing(0, 10); rrenkert@367: centerLayout->addLayout(certLayout); rrenkert@367: centerLayout->addLayout(saveLayout); rrenkert@413: centerLayout->insertSpacing(3, 10); rrenkert@367: rrenkert@367: QPushButton *create = new QPushButton(tr("Create List")); rrenkert@367: connect(create, SIGNAL(clicked()), this, SLOT(createList())); rrenkert@413: QPushButton *cancel = new QPushButton(tr("Cancel")); rrenkert@413: connect(cancel, SIGNAL(clicked()), this, SLOT(close())); rrenkert@367: bottomLayout->insertStretch(0, 10); rrenkert@367: bottomLayout->addWidget(create); rrenkert@413: bottomLayout->addWidget(cancel); rrenkert@413: rrenkert@413: QFrame *bottomSeparator = new QFrame(); rrenkert@413: bottomSeparator->setFrameShape(QFrame::HLine); rrenkert@413: bottomSeparator->setFrameShadow(QFrame::Sunken); rrenkert@367: rrenkert@367: topLayout->addLayout(headerLayout); rrenkert@367: topLayout->addLayout(centerLayout); rrenkert@367: topLayout->insertStretch(2, 10); rrenkert@413: topLayout->addWidget(footer); rrenkert@413: topLayout->addWidget(bottomSeparator); rrenkert@367: topLayout->addLayout(bottomLayout); rrenkert@367: rrenkert@367: setLayout(topLayout); rrenkert@367: rrenkert@367: return; rrenkert@367: } rrenkert@367: rrenkert@367: void CreateCertListDialog::openCertificateSelect() rrenkert@367: { rrenkert@367: QString certFile = QFileDialog::getOpenFileName( rrenkert@367: this, tr("Select certificate"), QDir::homePath(), "*.pem *.der *.crt"); rrenkert@367: mCertFile->setText(certFile); rrenkert@367: } rrenkert@367: rrenkert@367: void CreateCertListDialog::openSaveLocation() rrenkert@367: { rrenkert@367: QString saveFile = QFileDialog::getExistingDirectory( rrenkert@367: this, tr("Select target location"), QDir::homePath()); rrenkert@367: mSaveFile->setText(saveFile); rrenkert@367: } rrenkert@367: rrenkert@367: void CreateCertListDialog::createList() rrenkert@367: { rrenkert@367: qDebug() << "and now create the certificate list using:"; rrenkert@367: qDebug() << "certificate: " << mCertFile->text(); rrenkert@367: qDebug() << "target" << mSaveFile->text(); rrenkert@367: // TODO rrenkert@367: }