comparison ui/administratorwindow.cpp @ 1316:ff9cd05e861e

(issue166) Fix certificiate removal The index that should be removed came from the filter proxy model and did not map to the real index. This was broken.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 13 Oct 2014 17:23:35 +0200
parents 38d3dce323b4
children d009da9cfa10
comparison
equal deleted inserted replaced
1315:12ed0b72e9f5 1316:ff9cd05e861e
84 // The certificate list 84 // The certificate list
85 QGroupBox *certBox = new QGroupBox( 85 QGroupBox *certBox = new QGroupBox(
86 tr("All managed root certificates of the certificate list: ")); 86 tr("All managed root certificates of the certificate list: "));
87 certificateView = new QTableView; 87 certificateView = new QTableView;
88 certificateModel = new CertificateTabelModel(); 88 certificateModel = new CertificateTabelModel();
89 QSortFilterProxyModel *filterModel = new QSortFilterProxyModel(this); 89 mFilterModel = new QSortFilterProxyModel(this);
90 filterModel->setSourceModel(certificateModel); 90 mFilterModel->setSourceModel(certificateModel);
91 CertificateTableDelegate *delegate = new CertificateTableDelegate(certificateView); 91 CertificateTableDelegate *delegate = new CertificateTableDelegate(certificateView);
92 certificateView->setModel(filterModel); 92 certificateView->setModel(mFilterModel);
93 certificateView->setItemDelegate(delegate); 93 certificateView->setItemDelegate(delegate);
94 certificateView->horizontalHeader()->setStretchLastSection(true); 94 certificateView->horizontalHeader()->setStretchLastSection(true);
95 certificateView->resizeColumnsToContents(); 95 certificateView->resizeColumnsToContents();
96 certificateView->setColumnWidth(0, 60); 96 certificateView->setColumnWidth(0, 60);
97 certificateView->setSelectionBehavior(QAbstractItemView::SelectRows); 97 certificateView->setSelectionBehavior(QAbstractItemView::SelectRows);
187 } 187 }
188 188
189 void AdministratorWindow::removeCertificates() 189 void AdministratorWindow::removeCertificates()
190 { 190 {
191 QModelIndexList list = certificateView->selectionModel()->selectedRows(); 191 QModelIndexList list = certificateView->selectionModel()->selectedRows();
192 for (int i = list.size() -1 ; i >= 0; i--) { 192 foreach (QModelIndex idx, list) {
193 certificateModel->removeRow(list.at(i).row(), list.at(i)); 193 QModelIndex realidx = mFilterModel->mapToSource(idx);
194 qDebug() << "About to remove row: " << realidx.row();
195 if (certificateModel->data(idx, Qt::UserRole).toBool()) {
196 certificateModel->removeRow(realidx.row(), realidx.parent());
197 } else {
198 qDebug() << "Tried to remove old certificate at idx: " << realidx.row();;
199 }
194 } 200 }
195 } 201 }
196 202
197 void AdministratorWindow::loadCertificateTable() { 203 void AdministratorWindow::loadCertificateTable() {
198 foreach(const Certificate &cert, mCertList.getCertificates()) { 204 foreach(const Certificate &cert, mCertList.getCertificates()) {

http://wald.intevation.org/projects/trustbridge/