rrenkert@334: #include "certificatetablemodel.h" rrenkert@334: rrenkert@334: CertificateTabelModel::CertificateTabelModel(QObject *parent) rrenkert@334: : QAbstractTableModel(parent) rrenkert@334: { rrenkert@342: header.append(""); rrenkert@342: header.append(tr("CN")); rrenkert@342: header.append(tr("issued on")); rrenkert@342: header.append(tr("expires on")); andre@378: header.append(tr("SHA1 Fingerprint")); rrenkert@334: rrenkert@334: } rrenkert@334: rrenkert@358: void CertificateTabelModel::addCertificate(const Certificate& certificate, rrenkert@358: bool editable) rrenkert@334: { rrenkert@342: beginInsertRows(QModelIndex(), rowCount(), rowCount()); rrenkert@342: certificates.append(certificate); rrenkert@358: certificates.last().setEditable(editable); rrenkert@342: endInsertRows(); rrenkert@334: } rrenkert@334: rrenkert@376: bool CertificateTabelModel::removeRows(int row, int count, rrenkert@376: const QModelIndex &index) rrenkert@376: { rrenkert@376: beginRemoveRows(QModelIndex(), row, row + count - 1); rrenkert@376: if ((row + count - 1) > certificates.size()) { rrenkert@376: return false; rrenkert@376: } rrenkert@376: for (int i = row + count - 1; i >= row; i--) { rrenkert@376: if (!certificates.at(i).isEditable()) { rrenkert@376: certificates.removeAt(i); rrenkert@376: } rrenkert@376: } rrenkert@376: endRemoveRows(); rrenkert@376: return true; rrenkert@376: } rrenkert@376: rrenkert@334: QVariant CertificateTabelModel::data(const QModelIndex &index, rrenkert@334: int role) const rrenkert@334: { rrenkert@342: if (index.row() > certificates.size() || index.row() < 0) { rrenkert@334: return QVariant(); rrenkert@334: } rrenkert@334: rrenkert@342: if (role == Qt::DisplayRole) { rrenkert@342: Certificate cert = certificates.at(index.row()); rrenkert@342: QVariant ret; rrenkert@342: switch(index.column()) { rrenkert@342: case 0: ret = cert.isInstallCert(); break; rrenkert@342: case 1: ret = cert.subjectCN(); break; rrenkert@342: case 2: ret = cert.validFrom(); break; rrenkert@342: case 3: ret = cert.validTo(); break; andre@378: case 4: ret = cert.fingerprint(); break; rrenkert@342: default: ; rrenkert@342: } rrenkert@342: return ret; rrenkert@334: } rrenkert@358: if (role == Qt::UserRole) { rrenkert@358: Certificate cert = certificates.at(index.row()); rrenkert@358: return cert.isEditable(); rrenkert@358: } rrenkert@334: rrenkert@334: return QVariant(); rrenkert@334: } rrenkert@334: rrenkert@348: bool CertificateTabelModel::setData(const QModelIndex &index, rrenkert@348: const QVariant &value, int role) rrenkert@348: { rrenkert@353: if (index.row() > certificates.size() || index.row() < 0) { rrenkert@353: return false; rrenkert@353: } rrenkert@353: rrenkert@353: bool newValue = value.toBool(); rrenkert@353: Certificate &cert = certificates[index.row()]; rrenkert@358: if (!cert.isEditable()) { rrenkert@358: return false; rrenkert@358: } rrenkert@353: cert.setInstallCert(newValue); rrenkert@353: rrenkert@353: emit dataChanged(index, index); rrenkert@353: rrenkert@348: return true; rrenkert@348: } rrenkert@348: rrenkert@334: QVariant CertificateTabelModel::headerData(int section, rrenkert@334: Qt::Orientation orientation, int role) const rrenkert@334: { rrenkert@334: if (orientation == Qt::Horizontal && role == Qt::DisplayRole) { rrenkert@342: return header.at(section); rrenkert@334: } rrenkert@334: return QVariant(); rrenkert@334: } rrenkert@334: rrenkert@334: int CertificateTabelModel::rowCount(const QModelIndex&) const rrenkert@334: { rrenkert@342: return certificates.size(); rrenkert@334: } rrenkert@334: rrenkert@334: int CertificateTabelModel::columnCount(const QModelIndex&) const rrenkert@334: { rrenkert@342: return header.size(); rrenkert@334: } rrenkert@334: rrenkert@348: Qt::ItemFlags CertificateTabelModel::flags(const QModelIndex &index) const rrenkert@348: { rrenkert@348: if (!index.isValid ()) rrenkert@348: return Qt::ItemIsSelectable; rrenkert@334: rrenkert@348: if (index.column() == 0) { rrenkert@348: return QAbstractTableModel::flags(index) | Qt::ItemIsEditable; rrenkert@348: } rrenkert@348: rrenkert@348: return QAbstractTableModel::flags(index); rrenkert@348: }