QList<QUrl> LocalCollectionModel::ToSourceUrls (const QList<QModelIndex>& indexes) const { const auto& paths = std::accumulate (indexes.begin (), indexes.end (), QStringList {}, [this] (const QStringList& paths, decltype (indexes.front ()) item) { return paths + CollectPaths (item, this); }); QList<QUrl> result; result.reserve (paths.size ()); for (const auto& path : paths) result << QUrl::fromLocalFile (path); return result; }
QMimeData* LocalCollectionModel::mimeData (const QModelIndexList& indexes) const { QList<QUrl> urls; for (const auto& index : indexes) urls += Util::Map (CollectPaths (index, this), &QUrl::fromLocalFile); if (urls.isEmpty ()) return nullptr; auto result = new QMimeData; result->setUrls (urls); return result; }
QMimeData* LocalCollectionModel::mimeData (const QModelIndexList& indexes) const { QList<QUrl> urls; for (const auto& index : indexes) { const auto& paths = CollectPaths (index, this); std::transform (paths.begin (), paths.end (), std::back_inserter (urls), [] (const QString& path) { return QUrl::fromLocalFile (path); }); } if (urls.isEmpty ()) return nullptr; auto result = new QMimeData; result->setUrls (urls); return result; }