Add a basic model (list-based) for DanbooruItems
This commit is contained in:
		
					parent
					
						
							
								e9fde425df
							
						
					
				
			
			
				commit
				
					
						0d83d7b266
					
				
			
		
					 2 changed files with 142 additions and 0 deletions
				
			
		
							
								
								
									
										86
									
								
								src/danboorutablemodel.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								src/danboorutablemodel.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,86 @@
 | 
			
		|||
/*
 | 
			
		||||
 * <one line to give the library's name and an idea of what it does.>
 | 
			
		||||
 * Copyright 2013  Luca Beltrame <lbeltrame@kde.org>
 | 
			
		||||
 *
 | 
			
		||||
 * 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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "danboorutablemodel.h"
 | 
			
		||||
#include "libdanbooru/danboorupost.h"
 | 
			
		||||
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
#include <QPixmap>
 | 
			
		||||
 | 
			
		||||
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();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										56
									
								
								src/danboorutablemodel.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								src/danboorutablemodel.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
/*
 | 
			
		||||
 * <one line to give the library's name and an idea of what it does.>
 | 
			
		||||
 * Copyright 2013  Luca Beltrame <lbeltrame@kde.org>
 | 
			
		||||
 *
 | 
			
		||||
 * 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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef DANBOORUTABLEMODEL_H
 | 
			
		||||
#define DANBOORUTABLEMODEL_H
 | 
			
		||||
 | 
			
		||||
#include <QAbstractListModel>
 | 
			
		||||
#include <QList>
 | 
			
		||||
 | 
			
		||||
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<DanbooruPost*> m_posts;
 | 
			
		||||
 | 
			
		||||
    public Q_SLOTS:
 | 
			
		||||
        void addPost(Danbooru::DanbooruPost* post);
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
}; // namespace Danbooru
 | 
			
		||||
 | 
			
		||||
#endif // DANBOORUTABLEMODEL_H
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue