/**
* This file is part of GPGFrontend.
*
* GPGFrontend is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Foobar is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Foobar. If not, see .
*
* The initial version of the source code is inherited from gpg4usb-team.
* Their source code version also complies with GNU General Public License.
*
* The source code version of this software was modified and released
* by Saturneric starting on May 12, 2021.
*
*/
#include "ui/AttachmentTableModel.h"
#include
/** compare with http://doc.qt.nokia.com/4.6/itemviews-addressbook.html
*/
AttachmentTableModel::AttachmentTableModel(QObject *parent) :
QAbstractTableModel(parent) {
}
AttachmentTableModel::AttachmentTableModel(QList mimeparts, QObject *parent) :
QAbstractTableModel(parent) {
listOfMimeparts = std::move(mimeparts);
}
void AttachmentTableModel::add(const MimePart &mp) {
listOfMimeparts.append(mp);
//QModelIndex changedIndex0 = createIndex(listOfMimeparts.size(), 0);
//QModelIndex changedIndex1 = createIndex(listOfMimeparts.size(), 1);
//emit(dataChanged(changedIndex0, changedIndex1));
// TODO: check the data-changed signal
// reset();
}
MimePart AttachmentTableModel::getSelectedMimePart(QModelIndex index) {
return listOfMimeparts.at(index.row());
}
MimePart AttachmentTableModel::getMimePart(int index) {
return listOfMimeparts.at(index);
}
/*QList AttachmentTableModel::getSelectedMimeParts(QModelIndexList indexes){
foreach(QModelIndex index, indexes) {
qDebug() << "ir: "<< index.row();
}
}*/
int AttachmentTableModel::rowCount(const QModelIndex &parent) const {
Q_UNUSED(parent);
return listOfMimeparts.size();
}
int AttachmentTableModel::columnCount(const QModelIndex &parent) const {
Q_UNUSED(parent);
return 2;
}
QVariant AttachmentTableModel::data(const QModelIndex &index, int role) const {
//qDebug() << "called, index: " << index.column();
if (!index.isValid())
return QVariant();
if (index.row() >= listOfMimeparts.size() || index.row() < 0)
return QVariant();
if (role == Qt::DisplayRole) {
MimePart mp = listOfMimeparts.at(index.row());
if (index.column() == 0)
return mp.header.getParam("Content-Type", "name");
if (index.column() == 1)
return mp.header.getValue("Content-Type");
}
// set icon
// TODO more generic matching, e.g. for audio
if (role == Qt::DecorationRole && index.column() == 0) {
MimePart mp = listOfMimeparts.at(index.row());
QString icon;
if (mp.header.getValue("Content-Type").startsWith("image")) {
icon = ":mimetypes/image-x-generic.png";
} else {
icon = mp.header.getValue("Content-Type").replace("/", "-");
icon = ":mimetypes/" + icon + ".png";
}
if (!QFile::exists(icon)) icon = ":mimetypes/unknown.png";
return QIcon(icon);
}
return QVariant();
}
QVariant AttachmentTableModel::headerData(int section, Qt::Orientation orientation, int role) const {
//qDebug() << "called, section: " << section;
if (role != Qt::DisplayRole)
return QVariant();
if (orientation == Qt::Horizontal) {
switch (section) {
case 0:
return tr("Filename");
case 1:
return tr("Contenttype");
default:
return QVariant();
}
}
return QVariant();
}