diff --git a/src/danboorutablemodel.cpp b/src/danboorutablemodel.cpp new file mode 100644 index 0000000..46a234f --- /dev/null +++ b/src/danboorutablemodel.cpp @@ -0,0 +1,86 @@ +/* + * + * Copyright 2013 Luca Beltrame + * + * This program 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 2 of + * the License or (at your option) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * This program 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 this program. If not, see . + * + */ + +#include "danboorutablemodel.h" +#include "libdanbooru/danboorupost.h" + +#include +#include + +namespace Danbooru { + + DanbooruTableModel::DanbooruTableModel(QObject* parent): QAbstractListModel(parent) + { + + } + + DanbooruTableModel::~DanbooruTableModel() + { + qDeleteAll(m_posts); + } + + int DanbooruTableModel::rowCount(const QModelIndex& parent) const + { + Q_UNUSED(parent) + return m_posts.length(); + } + + void DanbooruTableModel::addPost(Danbooru::DanbooruPost* post) + { + + beginInsertRows(QModelIndex(), m_posts.length(), m_posts.length()+1); + m_posts.append(post); + endInsertRows(); + } + + QVariant DanbooruTableModel::data(const QModelIndex& index, int role) const + { + + if (!index.isValid()) { + + return QVariant(); + } + + if (index.row() >= m_posts.length() || index.row() < 0) { + return QVariant(); + } + + if (m_posts.isEmpty()) { + return QVariant(); + } + + if (role == Qt::DisplayRole) { + + DanbooruPost* post = m_posts.at(index.row()); + return post->fileUrl().fileName(); + } + + if (role == Qt::DecorationRole) { + DanbooruPost* post = m_posts.at(index.row()); + const QPixmap* pixmap = post->pixmap(); + return *pixmap; + } + + return QVariant(); + } + +}; diff --git a/src/danboorutablemodel.h b/src/danboorutablemodel.h new file mode 100644 index 0000000..f42023a --- /dev/null +++ b/src/danboorutablemodel.h @@ -0,0 +1,56 @@ +/* + * + * Copyright 2013 Luca Beltrame + * + * This program 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 2 of + * the License or (at your option) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * This program 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 this program. If not, see . + * + */ + +#ifndef DANBOORUTABLEMODEL_H +#define DANBOORUTABLEMODEL_H + +#include +#include + +namespace Danbooru { + class DanbooruPost; + + class DanbooruTableModel : public QAbstractListModel + { + + Q_OBJECT + + public: + DanbooruTableModel(QObject* parent=0); + ~DanbooruTableModel(); + + int rowCount(const QModelIndex& parent=QModelIndex()) const; + QVariant data(const QModelIndex& index, int role) const; + + // bool insertRows(int row, int count=rowCount(), + // const QModelIndex& parent=QModelIndex()); + + private: + QList m_posts; + + public Q_SLOTS: + void addPost(Danbooru::DanbooruPost* post); + + }; +}; // namespace Danbooru + +#endif // DANBOORUTABLEMODEL_H