bool MetadataModel::setData(const QModelIndex &index, const QVariant &value, int role) { if(!index.isValid()) return false; switch(role) { case FavoriteRole: { QmlMetadata* meta = m_list.at(index.row()); meta->setIsFavorite(value.value<bool>()); emit(dataChanged(index, index)); break; } } return true; }
QVariant MetadataModel::data(const QModelIndex &index, int role) const { QVariant result; QmlMetadata* meta = m_list.at(index.row()); if(meta) { switch(role) { case Qt::DisplayRole: case NameRole: result = meta->name(); break; case HiddenRole: result = meta->isHidden(); break; case FavoriteRole: result = meta->isFavorite(); break; case ServiceRole: result = meta->mlt_service(); break; case IsAudioRole: result = meta->isAudio(); break; case NeedsGpuRole: result = meta->needsGPU(); break; case VisibleRole: result = isVisible(index.row()); break; } } return result; }
bool MetadataModel::isVisible(int row) const { QmlMetadata* meta = m_list.at(row); if (meta->isHidden()) return false; if (meta->needsGPU() && !Settings.playerGPU()) return false; if (!meta->needsGPU() && Settings.playerGPU() && !meta->gpuAlt().isEmpty()) return false; if (m_filter == FavoritesFilter && !meta->isFavorite()) return false; if (m_filter == AudioFilter && !meta->isAudio()) return false; if (m_filter == VideoFilter && meta->isAudio()) return false; return true; }
QVariant AttachedFiltersModel::data(const QModelIndex &index, int role) const { if ( !m_producer || !m_producer->is_valid() || index.row() >= m_producer->filter_count()) return QVariant(); switch (role ) { case Qt::DisplayRole: { QVariant result; Mlt::Filter* filter = filterForRow(index.row()); if (filter && filter->is_valid()) { // Relabel by QML UI QmlMetadata* meta = MAIN.filtersDock()->qmlMetadataForService(filter); if (meta) result = meta->name(); // Fallback is raw mlt_service name else if (filter->get("mlt_service")) result = QString::fromUtf8(filter->get("mlt_service")); } // Relabel for widgets UIs if (result == "movit.mirror" || result == "mirror") result = tr("Mirror"); delete filter; return result; } case Qt::CheckStateRole: { Mlt::Filter* filter = filterForRow(index.row()); QVariant result = Qt::Unchecked; if (filter && filter->is_valid() && !filter->get_int("disable")) result = Qt::Checked; delete filter; return result; } break; default: break; } return QVariant(); }