18#ifndef METADATAMODEL_H
19#define METADATAMODEL_H
22#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)
35 NameRole = Qt::UserRole + 1,
55 HiddenMaskBit = 1 << 0,
56 clipOnlyMaskBit = 1 << 1,
57 gpuIncompatibleMaskBit = 1 << 2,
58 gpuAlternativeMaskBit = 1 << 3,
59 needsGPUMaskBit = 1 << 4,
61 trackOnlyMaskBit = 1 << 6,
62 outputOnlyMaskBit = 1 << 7,
63 reverseMaskBit = 1 << 8,
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 void setHidden(
const QString &objectName,
bool hidden);
74 Q_INVOKABLE
void saveFilterSet(
const QString &name);
75 Q_INVOKABLE
void deleteFilterSet(
const QString &name);
76 MetadataFilter filter()
const {
return m_filter; }
77 void setFilter(MetadataFilter);
78 void updateFilterMask(
bool isClipProducer,
81 bool isOutputProducer,
82 bool isReverseSupported);
83 QString search()
const {
return m_search; }
84 void setSearch(
const QString &search);
91 bool filterAcceptsRow(
int sourceRow,
const QModelIndex &sourceParent)
const;
94 MetadataFilter m_filter;
95 unsigned m_filterMask;
97 bool m_isClipProducer;
98 bool m_isChainProducer;
99 bool m_isTrackProducer;
100 bool m_isOutputProducer;
101 bool m_isReverseSupported;
104class InternalMetadataModel :
public QAbstractListModel
107 explicit InternalMetadataModel(QObject *parent = 0)
108 : 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() {
return m_list; }
121 void remove(
int index);
122 void setHidden(
const QString &objectName,
bool hidden);
125 typedef QList<QmlMetadata *> MetadataList;
128 unsigned computeFilterMask(
const QmlMetadata *meta);