# HG changeset patch # User Raimund Renkert # Date 1397557954 -7200 # Node ID 9731d28b95af279fe1bc805d517e33d5d881b3da # Parent 78eec57bc133a175113152e4aea42d6c970fc240 Implemented 'remove certificate' in administrator app. diff -r 78eec57bc133 -r 9731d28b95af ui/administratorwindow.cpp --- a/ui/administratorwindow.cpp Tue Apr 15 09:44:54 2014 +0200 +++ b/ui/administratorwindow.cpp Tue Apr 15 12:32:34 2014 +0200 @@ -73,6 +73,8 @@ certificateView->setColumnWidth(3, 130); certificateView->setColumnWidth(4, 200); certificateView->setSelectionBehavior(QAbstractItemView::SelectRows); + connect(certificateView, SIGNAL(clicked(const QModelIndex&)), this, + SLOT(clickedCertificate(const QModelIndex&))); certificateView->verticalHeader()->setVisible(false); certLayout->addWidget(certificateView); certBox->setLayout(certLayout); @@ -100,6 +102,8 @@ addButton = new QPushButton(tr("Add")); connect(addButton, SIGNAL(clicked()), this, SLOT(addCertificates())); removeButton = new QPushButton(tr("Remove")); + removeButton->setEnabled(false); + connect(removeButton, SIGNAL(clicked()), this, SLOT(removeCertificates())); bottomLayout->addWidget(saveButton); bottomLayout->addWidget(loadButton); bottomLayout->addWidget(addButton); @@ -147,6 +151,14 @@ addToCertificateTable(certs); } +void AdministratorWindow::removeCertificates() +{ + QModelIndexList list = certificateView->selectionModel()->selectedRows(); + for (int i = list.size() -1 ; i >= 0; i--) { + certificateModel->removeRow(list.at(i).row(), list.at(i)); + } +} + void AdministratorWindow::loadCertificateTable() { foreach(const Certificate &cert, certList.getCertificates()) { certificateModel->addCertificate(cert, true); @@ -182,3 +194,12 @@ dialog->show(); } +void AdministratorWindow::clickedCertificate(const QModelIndex &index) +{ + if (index.data(Qt::UserRole).toBool()) { + removeButton->setEnabled(false); + } + else { + removeButton->setEnabled(true); + } +} diff -r 78eec57bc133 -r 9731d28b95af ui/administratorwindow.h --- a/ui/administratorwindow.h Tue Apr 15 09:44:54 2014 +0200 +++ b/ui/administratorwindow.h Tue Apr 15 12:32:34 2014 +0200 @@ -33,6 +33,8 @@ void loadCertificateFile(); void saveCertificateFile(); void addCertificates(); + void removeCertificates(); + void clickedCertificate(const QModelIndex&); private: void createActions(); diff -r 78eec57bc133 -r 9731d28b95af ui/certificatetablemodel.cpp --- a/ui/certificatetablemodel.cpp Tue Apr 15 09:44:54 2014 +0200 +++ b/ui/certificatetablemodel.cpp Tue Apr 15 12:32:34 2014 +0200 @@ -20,6 +20,22 @@ endInsertRows(); } +bool CertificateTabelModel::removeRows(int row, int count, + const QModelIndex &index) +{ + beginRemoveRows(QModelIndex(), row, row + count - 1); + if ((row + count - 1) > certificates.size()) { + return false; + } + for (int i = row + count - 1; i >= row; i--) { + if (!certificates.at(i).isEditable()) { + certificates.removeAt(i); + } + } + endRemoveRows(); + return true; +} + QVariant CertificateTabelModel::data(const QModelIndex &index, int role) const { diff -r 78eec57bc133 -r 9731d28b95af ui/certificatetablemodel.h --- a/ui/certificatetablemodel.h Tue Apr 15 09:44:54 2014 +0200 +++ b/ui/certificatetablemodel.h Tue Apr 15 12:32:34 2014 +0200 @@ -18,6 +18,7 @@ CertificateTabelModel(QObject *parent = 0); void addCertificate(const Certificate &certificate, bool editable); + bool removeRows(int row, int count, const QModelIndex&); int rowCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &parent = QModelIndex()) const;