You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.4 KiB
C++
46 lines
1.4 KiB
C++
#ifndef CSM_WORLD_INFOTABLEPROXYMODEL_HPP
|
|
#define CSM_WORLD_INFOTABLEPROXYMODEL_HPP
|
|
|
|
#include <QHash>
|
|
|
|
#include "idtableproxymodel.hpp"
|
|
#include "columns.hpp"
|
|
#include "universalid.hpp"
|
|
|
|
namespace CSMWorld
|
|
{
|
|
class IdTableBase;
|
|
|
|
class InfoTableProxyModel : public IdTableProxyModel
|
|
{
|
|
Q_OBJECT
|
|
|
|
UniversalId::Type mType;
|
|
Columns::ColumnId mInfoColumnId;
|
|
///< Contains ID for Topic or Journal ID
|
|
int mInfoColumnIndex;
|
|
int mLastAddedSourceRow;
|
|
|
|
mutable QHash<QString, int> mFirstRowCache;
|
|
|
|
int getFirstInfoRow(int currentRow) const;
|
|
///< Finds the first row with the same topic (journal entry) as in \a currentRow
|
|
///< \a currentRow is a row of the source model.
|
|
|
|
public:
|
|
InfoTableProxyModel(UniversalId::Type type, QObject *parent = 0);
|
|
|
|
virtual void setSourceModel(QAbstractItemModel *sourceModel);
|
|
|
|
protected:
|
|
virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
|
|
|
|
protected slots:
|
|
virtual void sourceRowsInserted(const QModelIndex &parent, int start, int end);
|
|
virtual void sourceRowsRemoved(const QModelIndex &parent, int start, int end);
|
|
virtual void sourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
|
|
};
|
|
}
|
|
|
|
#endif
|