fallback if local URL empty when loading default scripts

This commit is contained in:
Stephen Birarda 2017-01-20 10:36:57 -08:00
parent 25bd6fa2c1
commit eb033c797a

View file

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