void SourceFileModel::updateSourceFileLists() { for (auto const &sourceFile : *m_sourceFiles) { sourceFile->m_additionalParts.clear(); sourceFile->m_appendedFiles.clear(); } m_sourceFiles->clear(); for (auto row = 0, numRows = rowCount(); row < numRows; ++row) { auto idx = index(row, 0, QModelIndex{}); auto sourceFile = fromIndex(idx); Q_ASSERT(sourceFile); *m_sourceFiles << sourceFile; for (auto appendedRow = 0, numAppendedRows = rowCount(idx); appendedRow < numAppendedRows; ++appendedRow) { auto appendedSourceFile = fromIndex(index(appendedRow, 0, idx)); Q_ASSERT(appendedSourceFile); appendedSourceFile->m_appendedTo = sourceFile.get(); if (appendedSourceFile->isAppended()) sourceFile->m_appendedFiles << appendedSourceFile; else sourceFile->m_additionalParts << appendedSourceFile; } } // TODO: SourceFileModel::updateSourceFileLists move dropped additional parts to end of additional parts sub-list dumpSourceFiles("updateSourceFileLists END"); }
void SourceFileModel::updateSelectionStatus() { m_nonAppendedSelected = false; m_appendedSelected = false; m_additionalPartSelected = false; auto selectionModel = qobject_cast<QItemSelectionModel *>(QObject::sender()); Q_ASSERT(selectionModel); Util::withSelectedIndexes(selectionModel, [this](QModelIndex const &selectedIndex) { auto sourceFile = fromIndex(selectedIndex); Q_ASSERT(!!sourceFile); if (sourceFile->isRegular()) m_nonAppendedSelected = true; else if (sourceFile->isAppended()) m_appendedSelected = true; else if (sourceFile->isAdditionalPart()) m_additionalPartSelected = true; }); mxinfo(boost::format("file sel changed nonApp %1% app %2% addPart %3%\n") % m_nonAppendedSelected % m_appendedSelected % m_additionalPartSelected); }
void Track::fixAssociations(MuxConfig::Loader &l) { if (isAppended()) { auto appendedToID = l.settings.value("appendedTo").toLongLong(); if ((0 >= appendedToID) || !l.objectIDToTrack.contains(appendedToID)) throw mtx::InvalidSettingsX{}; m_appendedTo = l.objectIDToTrack.value(appendedToID); } m_appendedTracks.clear(); for (auto &appendedTrackID : l.settings.value("appendedTracks").toStringList()) { if (!l.objectIDToTrack.contains(appendedTrackID.toLongLong())) throw mtx::InvalidSettingsX{}; m_appendedTracks << l.objectIDToTrack.value(appendedTrackID.toLongLong()); } }
void SourceFileModel::updateSelectionStatus() { m_nonAppendedSelected = false; m_appendedSelected = false; m_additionalPartSelected = false; auto selectionModel = qobject_cast<QItemSelectionModel *>(QObject::sender()); Q_ASSERT(selectionModel); Util::withSelectedIndexes(selectionModel, [this](QModelIndex const &selectedIndex) { auto sourceFile = fromIndex(selectedIndex); if (!sourceFile) return; if (sourceFile->isRegular()) m_nonAppendedSelected = true; else if (sourceFile->isAppended()) m_appendedSelected = true; else if (sourceFile->isAdditionalPart()) m_additionalPartSelected = true; }); }