Mercurial > trustbridge
view ui/certificatetablemodel.cpp @ 1379:831d28c2291d
(issue179) Handle software update even if new version can't be found on server
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Thu, 15 Jan 2015 12:42:49 +0100 |
parents | ff9cd05e861e |
children |
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik * Software engineering by Intevation GmbH * * This file is Free Software under the GNU GPL (v>=2) * and comes with ABSOLUTELY NO WARRANTY! * See LICENSE.txt for details. */ #include "certificatetablemodel.h" #include <QFont> CertificateTabelModel::CertificateTabelModel(QObject *parent) : QAbstractTableModel(parent) { header.append(""); header.append(tr("Subject CN")); header.append(tr("Subject O")); header.append(tr("Valid from")); header.append(tr("Valid to")); header.append(tr("Fingerprint (SHA1)")); } void CertificateTabelModel::addCertificate(const Certificate& certificate, bool editable) { beginInsertRows(QModelIndex(), rowCount(), rowCount()); mCertificates.append(certificate); mCertificates.last().setEditable(editable); endInsertRows(); } bool CertificateTabelModel::removeRows(int row, int count, const QModelIndex &index) { beginRemoveRows(QModelIndex(), row, row + count - 1); if (count < 0 || row < 0 || (row + count) > mCertificates.size()) { return false; } for (int i = 0; i < count; ++i) { mCertificates.removeAt(row); } endRemoveRows(); return true; } bool CertificateTabelModel::removeAll() { return removeRows(0, mCertificates.size(), QModelIndex()); } QVariant CertificateTabelModel::data(const QModelIndex &index, int role) const { if (index.row() > mCertificates.size() || index.row() < 0) { return QVariant(); } if (role == Qt::DisplayRole) { Certificate cert = mCertificates.at(index.row()); QVariant ret; switch(index.column()) { case 0: ret = cert.isInstallCert(); break; case 1: ret = cert.subjectCN(); break; case 2: ret = cert.subjectO(); break; case 3: ret = cert.validFrom(); break; case 4: ret = cert.validTo(); break; case 5: ret = cert.fingerprint(); break; default: ; } return ret; } if (role == Qt::UserRole) { Certificate cert = mCertificates.at(index.row()); return cert.isEditable(); } if (role == Qt::FontRole && index.column() == 7) { QFont block("DejaVu Sans Mono"); return block; } return QVariant(); } bool CertificateTabelModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (index.row() > mCertificates.size() || index.row() < 0) { return false; } bool newValue = value.toBool(); Certificate &cert = mCertificates[index.row()]; if (!cert.isEditable()) { return false; } cert.setInstallCert(newValue); emit dataChanged(index, index); return true; } QVariant CertificateTabelModel::headerData(int section, Qt::Orientation orientation, int role) const { if (orientation == Qt::Horizontal && role == Qt::DisplayRole) { return header.at(section); } return QVariant(); } int CertificateTabelModel::rowCount(const QModelIndex&) const { return mCertificates.size(); } int CertificateTabelModel::columnCount(const QModelIndex&) const { return header.size(); } Qt::ItemFlags CertificateTabelModel::flags(const QModelIndex &index) const { if (!index.isValid ()) return Qt::ItemIsSelectable; if (index.column() == 0) { return QAbstractTableModel::flags(index) | Qt::ItemIsEditable; } return QAbstractTableModel::flags(index); }