rrenkert@333: #include "administratorwindow.h" rrenkert@333: rrenkert@333: #include rrenkert@333: #include rrenkert@333: #include rrenkert@333: #include rrenkert@333: #include rrenkert@333: #include rrenkert@333: #include rrenkert@333: #include rrenkert@333: #include rrenkert@333: #include rrenkert@333: #include rrenkert@333: #include rrenkert@335: #include rrenkert@344: #include rrenkert@333: rrenkert@348: #include "certificatetabledelegate.h" rrenkert@348: rrenkert@333: AdministratorWindow::AdministratorWindow() { rrenkert@333: createActions(); rrenkert@333: createMenuBar(); rrenkert@333: createContent(); rrenkert@333: } rrenkert@333: rrenkert@333: void AdministratorWindow::createActions() rrenkert@333: { rrenkert@333: } rrenkert@333: rrenkert@333: void AdministratorWindow::createMenuBar() rrenkert@333: { rrenkert@333: menuBar = new QMenuBar(this); rrenkert@333: QMenu *menu = new QMenu(tr("Menu"), menuBar); rrenkert@333: menuBar->addMenu(menu); rrenkert@333: QAction *createInstaller = menu->addAction(tr("Create Installer")); rrenkert@333: QAction *settings = menu->addAction(tr("Settings")); rrenkert@333: menu->addSeparator(); rrenkert@333: QAction *help = menu->addAction(tr("Help")); rrenkert@333: QAction *about = menu->addAction(tr("About")); rrenkert@333: menu->addSeparator(); rrenkert@333: QAction *quit = menu->addAction(tr("Quit")); rrenkert@333: connect(createInstaller, SIGNAL(triggered()), this, SLOT(createInstaller())); rrenkert@333: connect(settings, SIGNAL(triggered()), this, SLOT(showSettings())); rrenkert@333: connect(help, SIGNAL(triggered()), this, SLOT(showHelp())); rrenkert@333: connect(about, SIGNAL(triggered()), this, SLOT(showAbout())); rrenkert@333: connect(quit, SIGNAL(triggered()), qApp, SLOT(quit())); rrenkert@333: setMenuBar(menuBar); rrenkert@333: } rrenkert@333: rrenkert@333: void AdministratorWindow::createContent() rrenkert@333: { rrenkert@333: // Create a central widget containing the main layout. rrenkert@333: QWidget *base = new QWidget; rrenkert@333: rrenkert@333: // Layouts and Container rrenkert@333: QVBoxLayout *mainLayout = new QVBoxLayout; rrenkert@333: QVBoxLayout *certLayout = new QVBoxLayout; rrenkert@333: QHBoxLayout *headerLayout = new QHBoxLayout; rrenkert@333: QVBoxLayout *headerTextLayout = new QVBoxLayout; rrenkert@333: QHBoxLayout *bottomLayout = new QHBoxLayout; rrenkert@333: rrenkert@333: // The certificate list rrenkert@333: QGroupBox *certBox = new QGroupBox(tr("Managed Certificates")); rrenkert@335: certificateView = new QTableView; rrenkert@343: certificateModel = new CertificateTabelModel(); rrenkert@348: CertificateTableDelegate *delegate = new CertificateTableDelegate(certificateView); rrenkert@343: certificateView->setModel(certificateModel); rrenkert@348: certificateView->setItemDelegate(delegate); rrenkert@348: certificateView->setColumnWidth(0, 50); rrenkert@335: certificateView->setColumnWidth(2, 130); rrenkert@335: certificateView->setColumnWidth(3, 130); rrenkert@335: certificateView->setColumnWidth(4, 200); rrenkert@343: certificateView->setSelectionBehavior(QAbstractItemView::SelectRows); rrenkert@343: certificateView->verticalHeader()->setVisible(false); rrenkert@335: certLayout->addWidget(certificateView); rrenkert@333: certBox->setLayout(certLayout); rrenkert@333: rrenkert@333: // The header (icon, about text) rrenkert@333: QImage *logoImage = new QImage(":/img/logo.png"); rrenkert@333: QLabel *logo = new QLabel; rrenkert@333: logo->setBackgroundRole(QPalette::Base); rrenkert@333: logo->setPixmap(QPixmap::fromImage(*logoImage)); rrenkert@333: QLabel *title = new QLabel("

" + tr("Administrator Application") + "

"); rrenkert@333: QLabel *subTitle = new QLabel("This Software creates a signed file containing certificates"); rrenkert@333: headerTextLayout->addWidget(title); rrenkert@333: headerTextLayout->addWidget(subTitle); rrenkert@333: headerLayout->addWidget(logo); rrenkert@333: headerLayout->addLayout(headerTextLayout); rrenkert@333: headerLayout->setStretch(0, 0); rrenkert@333: headerLayout->setStretch(1, 10); rrenkert@333: rrenkert@333: // The buttons. rrenkert@333: bottomLayout->setAlignment(Qt::AlignBottom); rrenkert@333: saveButton = new QPushButton(tr("Save")); rrenkert@333: loadButton = new QPushButton(tr("Load")); rrenkert@344: connect(loadButton, SIGNAL(clicked()), this, SLOT(loadCertificateFile())); rrenkert@333: addButton = new QPushButton(tr("Add")); rrenkert@358: connect(addButton, SIGNAL(clicked()), this, SLOT(addCertificates())); rrenkert@333: removeButton = new QPushButton(tr("Remove")); rrenkert@333: bottomLayout->addWidget(saveButton); rrenkert@333: bottomLayout->addWidget(loadButton); rrenkert@333: bottomLayout->addWidget(addButton); rrenkert@333: bottomLayout->addWidget(removeButton); rrenkert@333: bottomLayout->insertStretch(4, 10); rrenkert@333: rrenkert@333: mainLayout->addLayout(headerLayout); rrenkert@333: mainLayout->addWidget(certBox); rrenkert@333: mainLayout->addLayout(bottomLayout); rrenkert@333: rrenkert@333: rrenkert@333: // QMainWindow allready has a layout. All child layouts and widgets are rrenkert@333: // managed in the central widget. rrenkert@333: base->setLayout(mainLayout); rrenkert@333: setCentralWidget(base); rrenkert@335: certificateView->horizontalHeader()->setSectionResizeMode(1, rrenkert@335: QHeaderView::Stretch); rrenkert@333: } rrenkert@333: rrenkert@344: void AdministratorWindow::loadCertificateFile() rrenkert@344: { rrenkert@344: QString certFile = QFileDialog::getOpenFileName( rrenkert@344: this, tr("Select certificate file"), "/home/rrenkert/local-home/projects/m13/src/repo/ui/tests/data/", "*.txt"); rrenkert@344: qDebug() << "selected: " + certFile; rrenkert@344: certList.readList(certFile.toLocal8Bit().constData()); rrenkert@344: if (!certList.isValid()) { rrenkert@344: qDebug() << "Not a valid list."; rrenkert@344: } rrenkert@344: else { rrenkert@344: loadCertificateTable(); rrenkert@344: } rrenkert@344: } rrenkert@344: rrenkert@358: void AdministratorWindow::addCertificates() rrenkert@358: { rrenkert@358: QString certFile = QFileDialog::getOpenFileName( rrenkert@358: this, tr("Select certificate"), "/home/rrenkert/local-home/projects/m13/src/repo/ui/tests/data/", "*.pem *.der"); rrenkert@358: QList certs = Certificate::fromFileName(certFile); rrenkert@358: addToCertificateTable(certs); rrenkert@358: } rrenkert@358: rrenkert@344: void AdministratorWindow::loadCertificateTable() { rrenkert@344: foreach(const Certificate &cert, certList.getCertificates()) { rrenkert@358: certificateModel->addCertificate(cert, true); rrenkert@358: } rrenkert@358: } rrenkert@358: rrenkert@358: void AdministratorWindow::addToCertificateTable(const QList &certs) rrenkert@358: { rrenkert@358: foreach(const Certificate &cert, certs) { rrenkert@358: certificateModel->addCertificate(cert, false); rrenkert@344: } rrenkert@344: } rrenkert@344: rrenkert@333: void AdministratorWindow::showSettings() rrenkert@333: { rrenkert@333: qDebug() << "show settingsdialog"; rrenkert@333: } rrenkert@333: rrenkert@333: void AdministratorWindow::showHelp() rrenkert@333: { rrenkert@333: qDebug() << "show helpdialog"; rrenkert@333: } rrenkert@333: rrenkert@333: void AdministratorWindow::showAbout() rrenkert@333: { rrenkert@333: qDebug() << "show aboutdialog"; rrenkert@333: } rrenkert@333: rrenkert@333: void AdministratorWindow::createInstaller() rrenkert@333: { rrenkert@333: qDebug() << "create Installer"; rrenkert@333: } rrenkert@333: