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