void ScriptsModel::requestDefaultFiles(QString marker) { QUrl url(PathUtils::defaultScriptsLocation()); // targets that don't have a scripts folder in the appropriate location will have an empty URL here if (!url.isEmpty()) { if (url.isLocalFile()) { // if the url indicates a local directory, use QDirIterator QString localDir = expandScriptUrl(url).toLocalFile(); int localDirPartCount = localDir.split("/").size(); if (localDir.endsWith("/")) { localDirPartCount--; } #ifdef Q_OS_WIN localDirPartCount++; // one for the drive letter #endif QDirIterator it(localDir, QStringList() << "*.js", QDir::Files, QDirIterator::Subdirectories); while (it.hasNext()) { QUrl jsFullPath = QUrl::fromLocalFile(it.next()); QString jsPartialPath = jsFullPath.path().split("/").mid(localDirPartCount).join("/"); jsFullPath = normalizeScriptURL(jsFullPath); _treeNodes.append(new TreeNodeScript(jsPartialPath, jsFullPath.toString(), SCRIPT_ORIGIN_DEFAULT)); } _loadingScripts = false; } else { // the url indicates http(s), use QNetworkRequest QUrlQuery query; query.addQueryItem(PREFIX_PARAMETER_NAME, "."); if (!marker.isEmpty()) { query.addQueryItem(MARKER_PARAMETER_NAME, marker); } url.setQuery(query); QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); QNetworkRequest request(url); request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); request.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT); QNetworkReply* reply = networkAccessManager.get(request); connect(reply, SIGNAL(finished()), SLOT(downloadFinished())); } } }
TreeNodeScript::TreeNodeScript(const QString& localPath, const QString& fullPath, ScriptOrigin origin) : TreeNodeBase(NULL, localPath.split("/").last(), TREE_NODE_TYPE_SCRIPT), _localPath(localPath), _fullPath(expandScriptUrl(QUrl(fullPath)).toString()), _origin(origin) { };