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.blur" || result == "boxblur") result = tr("Blur"); else if (result == "movit.lift_gamma_gain" || result == "frei0r.coloradj_RGB") result = tr("Color Grading"); else if (result == "crop") result = tr("Crop"); else if (result == "movit.glow" || result == "frei0r.glow") result = tr("Glow"); else if (result == "movit.mirror" || result == "mirror") result = tr("Mirror"); else if (result == "webvfx") result = tr("Overlay HTML"); else if (result == "movit.sharpen" || result == "frei0r.sharpness") result = tr("Sharpen"); else if (result == "movit.white_balance" || result == "frei0r.colgate") result = tr("White Balance"); else if (result == "sox" && filter->get("use_peak")) result = tr("Normalize"); 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(); }
void AttachedFiltersModel::remove(int row) { Mlt::Filter* filter = filterForRow(row); if (filter && filter->is_valid()) { beginRemoveRows(QModelIndex(), row, row); MLT.pause(); m_producer->detach(*filter); m_rows--; endRemoveRows(); emit changed(); } delete filter; }
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(); }
bool AttachedFiltersModel::setData(const QModelIndex& index, const QVariant& value, int role) { if (role == Qt::CheckStateRole) { Mlt::Filter* filter = filterForRow(index.row()); if (filter && filter->is_valid()) { double speed = MLT.producer()->get_speed(); MLT.pause(); filter->set("disable", !filter->get_int("disable")); MLT.play(speed); emit changed(); emit dataChanged(createIndex(index.row(), 0), createIndex(index.row(), 0)); } delete filter; return true; } return false; }