/****************************************************************************
**
** Copyright (C) 2012 Róbert Márki
**
** This file is part of Web Feeds.
**
** Web Feeds 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.
**
** Web Feeds 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 Web Feeds.  If not, see <http://www.gnu.org/licenses/>.
****************************************************************************/

#ifndef FEEDLISTPAGEMODEL_H
#define FEEDLISTPAGEMODEL_H
#include <QModelIndex>
#include <QVariant>
#include <QPointer>
#include <QtPlugin>
#include "pageitem.h"
#include <QSortFilterProxyModel>

namespace WebFeeds
{
class PageItemModelPrivate;
class PageItemModel : public QSortFilterProxyModel
{
    Q_OBJECT
public:
    explicit PageItemModel(QObject *parent = 0);
    explicit PageItemModel(PageItemPtr rootItem, QObject *parent = 0);
    virtual ~PageItemModel();
    void setupModelData(const QSet<QString> &customProperties);

public slots:
    Q_INVOKABLE QVariant index(PageItem* item) const;
    Q_INVOKABLE int row(PageItem* item) const;
    Q_INVOKABLE PageItem* item(const QVariant& index);

private slots:
    void onFilterChanged();

protected:
    bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;

private:
    PageItemModelPrivate* d;
};
} // namespace WebFeeds
Q_DECLARE_METATYPE(QModelIndex)
Q_DECLARE_METATYPE(PageItem*)
#endif // FEEDLISTPAGEMODEL_H
