#ifndef CSM_WOLRD_IDTABLEPROXYMODEL_H
#define CSM_WOLRD_IDTABLEPROXYMODEL_H

#include <string>

#include <boost/shared_ptr.hpp>

#include <map>

#include <QSortFilterProxyModel>

#include "../filter/node.hpp"

namespace CSMWorld
{
    class IdTableProxyModel : public QSortFilterProxyModel
    {
            Q_OBJECT

            boost::shared_ptr<CSMFilter::Node> mFilter;
            std::map<int, int> mColumnMap; // column ID, column index in this model (or -1)

        private:

            void updateColumnMap();

            bool filterAcceptsRow (int sourceRow, const QModelIndex& sourceParent) const;

        public:

            IdTableProxyModel (QObject *parent = 0);

            virtual QModelIndex getModelIndex (const std::string& id, int column) const;

            void setFilter (const boost::shared_ptr<CSMFilter::Node>& filter);

        protected:

            bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
    };
}

#endif