Mercurial > trustbridge
view ui/certificatetabledelegate.cpp @ 1075:7e1fd6d96714
(issue109) Feedback improved. Shell translation updated.
author | Bernhard Reiter <bernhard@intevation.de> |
---|---|
date | Thu, 11 Sep 2014 10:18:46 +0200 |
parents | 0d92ab04d61c |
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 <QtWidgets> #include <QComboBox> #include "certificatetabledelegate.h" void CertificateTableDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { painter->save(); if (index.column() == 0) { if (option.state & QStyle::State_Selected) { painter->fillRect(option.rect, option.palette.highlight()); } bool value = index.data(Qt::DisplayRole).toBool(); QIcon icon = value ? QIcon(":/img/list-add.png"):QIcon(":/img/list-remove.png") ; icon.paint(painter, option.rect, Qt::AlignVCenter|Qt::AlignHCenter); } else { QStyledItemDelegate::paint(painter, option, index); } painter->restore(); } QWidget *CertificateTableDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const { if (index.column() == 0) { // Draw a combobox in the first column for install/remove certificate // selection. return drawComboBox(parent, option, index); } else { return QStyledItemDelegate::createEditor(parent, option, index); } } QWidget *CertificateTableDelegate::drawComboBox(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const { bool editable = index.data(Qt::UserRole).toBool(); // Create a combobox and add two items for install/remove. QComboBox *comboBox = new QComboBox(parent); comboBox->setFixedWidth(110); comboBox->addItem(QIcon(":/img/list-add.png"), tr("add"), QVariant("true")); if (editable) { comboBox->addItem(QIcon(":/img/list-remove.png"), tr("remove"), QVariant("false")); } return comboBox; } void CertificateTableDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const { if (index.column() != 0) { return; } // Get the current value from the model. QString value = index.data(Qt::DisplayRole).toString(); // Find the index in comboxbox items and set the current index. QComboBox *comboBox = static_cast<QComboBox*>(editor); int ndx = comboBox->findData(value, Qt::UserRole); comboBox->setCurrentIndex(ndx); } void CertificateTableDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { if (index.column() != 0) { return; } QComboBox *comboBox = static_cast<QComboBox*>(editor); bool value = comboBox->currentData().toBool(); model->setData(index, value, Qt::EditRole); } void CertificateTableDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const { if (index.column() != 0) { return; } editor->setGeometry(option.rect); }