18#ifndef METADATAMODEL_H
19#define METADATAMODEL_H
21#include <QSortFilterProxyModel>
26class MetadataModel :
public QSortFilterProxyModel
29 Q_ENUMS(MetadataFilter)
30 Q_PROPERTY(MetadataFilter filter READ filter WRITE setFilter NOTIFY filterChanged)
31 Q_PROPERTY(QString search READ search WRITE setSearch NOTIFY searchChanged)
36 NameRole = Qt::UserRole + 1,
56 HiddenMaskBit = 1 << 0,
57 clipOnlyMaskBit = 1 << 1,
58 gpuIncompatibleMaskBit = 1 << 2,
59 gpuAlternativeMaskBit = 1 << 3,
60 needsGPUMaskBit = 1 << 4,
62 trackOnlyMaskBit = 1 << 6,
63 outputOnlyMaskBit = 1 << 7,
66 explicit MetadataModel(QObject *parent = 0);
68 Q_INVOKABLE
int rowCount(
const QModelIndex &parent = QModelIndex())
const;
69 int sourceRowCount(
const QModelIndex &parent = QModelIndex())
const;
70 void add(QmlMetadata *data);
71 Q_INVOKABLE QmlMetadata *get(
int row)
const;
72 QmlMetadata *getFromSource(
int index)
const;
73 Q_INVOKABLE
void saveFilterSet(
const QString &name);
74 Q_INVOKABLE
void deleteFilterSet(
const QString &name);
75 MetadataFilter filter()
const
79 void setFilter(MetadataFilter);
80 void updateFilterMask(
bool isClipProducer,
bool isChainProducer,
bool isTrackProducer,
81 bool isOutputProducer);
82 QString search()
const
86 void setSearch(
const QString &search);
93 bool filterAcceptsRow(
int sourceRow,
const QModelIndex &sourceParent)
const;
96 MetadataFilter m_filter;
97 unsigned m_filterMask;
99 bool m_isClipProducer;
100 bool m_isChainProducer;
101 bool m_isTrackProducer;
102 bool m_isOutputProducer;
105class InternalMetadataModel :
public QAbstractListModel
108 explicit InternalMetadataModel(QObject *parent = 0) : QAbstractListModel(parent) {};
111 int rowCount(
const QModelIndex &parent = QModelIndex())
const;
112 QVariant data(
const QModelIndex &index,
int role)
const;
113 bool setData(
const QModelIndex &index,
const QVariant &value,
int role);
114 QHash<int, QByteArray> roleNames()
const;
115 Qt::ItemFlags flags(
const QModelIndex &index)
const;
118 void add(QmlMetadata *data);
119 QmlMetadata *get(
int index)
const;
120 QList<QmlMetadata *> &list()
124 void remove(
int index);
127 typedef QList<QmlMetadata *> MetadataList;
130 unsigned computeFilterMask(
const QmlMetadata *meta);