# HG changeset patch # User Sascha Wilde # Date 1396444953 -7200 # Node ID d13d51f7a0e2252247901565263f6247e15c4d8b # Parent 0f73fe4230c1db9721a27b74326ca38c07883756# Parent e265431f3e9281c2c61140613a3b9615cf31e8d0 Merged diff -r 0f73fe4230c1 -r d13d51f7a0e2 ui/CMakeLists.txt --- a/ui/CMakeLists.txt Wed Apr 02 15:22:13 2014 +0200 +++ b/ui/CMakeLists.txt Wed Apr 02 15:22:33 2014 +0200 @@ -21,6 +21,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/aboutdialog.cpp ${CMAKE_CURRENT_SOURCE_DIR}/statusdialog.cpp ${CMAKE_CURRENT_SOURCE_DIR}/certificateitemdelegate.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/separatoritemdelegate.cpp ${CMAKE_CURRENT_SOURCE_DIR}/installwrapper.cpp ${CERTIFICATELIST_SOURCES} ${DOWNLOADER_SOURCES} diff -r 0f73fe4230c1 -r d13d51f7a0e2 ui/certificateitemdelegate.h --- a/ui/certificateitemdelegate.h Wed Apr 02 15:22:13 2014 +0200 +++ b/ui/certificateitemdelegate.h Wed Apr 02 15:22:33 2014 +0200 @@ -1,4 +1,3 @@ - #ifndef CERTIFICATELISTITEM_H #define CERTIFICATELISTITEM_H /** diff -r 0f73fe4230c1 -r d13d51f7a0e2 ui/mainwindow.cpp --- a/ui/mainwindow.cpp Wed Apr 02 15:22:13 2014 +0200 +++ b/ui/mainwindow.cpp Wed Apr 02 15:22:33 2014 +0200 @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -33,6 +32,7 @@ #include "aboutdialog.h" #include "statusdialog.h" #include "certificateitemdelegate.h" +#include "separatoritemdelegate.h" MainWindow::MainWindow() { createActions(); @@ -239,10 +239,11 @@ QHBoxLayout *mainLayout = new QHBoxLayout; QVBoxLayout *infoLayout = new QVBoxLayout; QVBoxLayout *certLayout = new QVBoxLayout; + QVBoxLayout *detailLayout = new QVBoxLayout; QHBoxLayout *headerLayout = new QHBoxLayout; QVBoxLayout *headerTextLayout = new QVBoxLayout; QVBoxLayout *toolLayout = new QVBoxLayout; - QHBoxLayout *toolButtonLayout = new QHBoxLayout; + QHBoxLayout *bottomLayout = new QHBoxLayout; // The certificate list QGroupBox *certBox = new QGroupBox(tr("Managed Certificates")); @@ -267,28 +268,37 @@ headerLayout->setStretch(0, 0); headerLayout->setStretch(1, 10); - // The tools to update the certificate list/software and install - // certificates. + // The settings. QCheckBox *autoUpdateOption = new QCheckBox(tr("autoupdate")); toolLayout->addWidget(autoUpdateOption); // connect(autoUpdateOption, SIGNAL(stateChanged()), this, SLOT(setAutoUpdate())); - QPushButton *update = new QPushButton(tr("Search for Updates")); - connect(update, SIGNAL(clicked()), this, SLOT(checkUpdates())); - QPushButton *install = new QPushButton(tr("Install selected")); -// connect(update, SIGNAL(clicked()), this, SLOT(installCertificates())); - toolButtonLayout->addWidget(update); - toolButtonLayout->addWidget(install); - toolButtonLayout->insertStretch(2, 10); - toolLayout->addLayout(toolButtonLayout); + + // The buttons. + bottomLayout->setAlignment(Qt::AlignBottom); + installButton = new QPushButton(tr("Install selected")); + installButton->setFixedHeight(80); + connect(installButton, SIGNAL(clicked()), this, SLOT(resizeButtons())); + quitButton = new QPushButton(tr("Quit")); + quitButton->setFixedHeight(20); + connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit())); + bottomLayout->insertStretch(0, 10); + bottomLayout->addWidget(installButton); + bottomLayout->setAlignment(installButton, Qt::AlignBottom); + bottomLayout->addWidget(quitButton); + bottomLayout->setAlignment(quitButton, Qt::AlignBottom); // The certificate details + QGroupBox *detailBox = new QGroupBox(tr("Details")); certificateDetails = new QTextEdit; certificateDetails->setReadOnly(true); + detailLayout->addWidget(certificateDetails); + detailBox->setLayout(detailLayout); infoLayout->addSpacing(20); infoLayout->addLayout(headerLayout); infoLayout->addLayout(toolLayout); - infoLayout->addWidget(certificateDetails); + infoLayout->addWidget(detailBox); + infoLayout->addLayout(bottomLayout); mainLayout->addWidget(certBox); mainLayout->addLayout(infoLayout); @@ -311,6 +321,7 @@ continue; } QListWidgetItem* item = new QListWidgetItem(cert.shortDescription()); + SeparatorItemDelegate *separator = new SeparatorItemDelegate(); item->setData(Qt::UserRole, cert.details()); if (cert.isInstallCert()) { // This if statements is for testing! @TODO Remove this! @@ -324,6 +335,12 @@ item->setFlags(item->flags() | Qt::ItemIsUserCheckable); item->setCheckState(Qt::Checked); } + if (i == 3) { + QListWidgetItem *sep = new QListWidgetItem("New certificates"); + certificateList->setItemDelegateForRow(i, separator); + certificateList->addItem(sep); + i++; + } } else { // This if statements is for testing! @TODO Remove this! @@ -375,3 +392,9 @@ details.append("\rInstalled: 1.1.1971\rRemoved: 1.1.1971"); certificateDetails->setPlainText(details); } + +void MainWindow::resizeButtons() +{ + installButton->setFixedHeight(20); + quitButton->setFixedHeight(80); +} diff -r 0f73fe4230c1 -r d13d51f7a0e2 ui/mainwindow.h --- a/ui/mainwindow.h Wed Apr 02 15:22:13 2014 +0200 +++ b/ui/mainwindow.h Wed Apr 02 15:22:33 2014 +0200 @@ -12,6 +12,7 @@ #include #include #include +#include #include "downloader.h" #include "certificatelist.h" @@ -53,6 +54,7 @@ void showHelp(); void showAbout(); void showDetails(QListWidgetItem*); + void resizeButtons(); private: /** @brief check the integrity of available files. @@ -88,6 +90,8 @@ QListWidget *certificateList; QTextEdit *certificateDetails; + QPushButton *installButton; + QPushButton *quitButton; }; #endif // MAINWINDOW_H diff -r 0f73fe4230c1 -r d13d51f7a0e2 ui/separatoritemdelegate.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/separatoritemdelegate.cpp Wed Apr 02 15:22:33 2014 +0200 @@ -0,0 +1,34 @@ +#include + +#include "separatoritemdelegate.h" + +void SeparatorItemDelegate::paint(QPainter *painter, + const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + // Save the current painter. + painter->save(); + + // Get the position for separator line. + int topLeftY = option.rect.topLeft().y(); + int height = option.rect.height(); + int middle = topLeftY + (height / 2); + + // Draw the first part. + QPen linePen(Qt::black, 2, Qt::SolidLine); + painter->setPen(linePen); + painter->drawLine(10, middle, 80, middle); + + // Draw the text. + QString text = index.data().toString(); + QRect rect = option.rect.adjusted(85, -2, 0, -2); + painter->drawText(rect.left(), rect.top(), rect.width(), rect.height(), + Qt::AlignVCenter|Qt::AlignLeft, text, &rect); + + // Draw the second part. + painter->drawLine(rect.topRight().x() + 5, middle, rect.topRight().x() + 75, middle); + + // Restore the painter to have an unmodified painter for the next draw + // action. + painter->restore(); + return; +} diff -r 0f73fe4230c1 -r d13d51f7a0e2 ui/separatoritemdelegate.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/separatoritemdelegate.h Wed Apr 02 15:22:33 2014 +0200 @@ -0,0 +1,28 @@ +#ifndef SEPARATORITEMDELEGATE_H +#define SEPARATORITEMDELEGATE_H +/** + * @file separatoritemdelegate.h + * @brief Item delegate drawing a separator in list widgets. + * + */ + +#include + +class SeparatorItemDelegate : public QStyledItemDelegate +{ +Q_OBJECT + +public: + SeparatorItemDelegate(QWidget *parent = 0) : QStyledItemDelegate(parent){} + + /** + * @brief Renders the delegate using the given painter and options. + * + * @param painter The painter to draw the item. + * @param option The style options. + * @param index The model index of the item to draw. + */ + void paint(QPainter *painter, const QStyleOptionViewItem &option, + const QModelIndex &index) const; +}; +#endif