History

fallback if local URL empty when loading default scripts

Stephen Birarda committed 9 years ago

Commit eb033c71 parent 25bd6fa1 file · +35 −32Browse files

Showing the changes to libraries/script-engine/src/ScriptsModel.cpp (1 of 1 file). Show all

Unified · Split

libraries/script-engine/src/ScriptsModel.cpp+35−32
@@ -156,39 +156,42 @@ void ScriptsModel::reloadDefaultFiles() { · 155 unmodified lines
156156 void ScriptsModel::requestDefaultFiles(QString marker) {
157157 QUrl url(defaultScriptsLocation());
158158
159− if (url.isLocalFile()) {
160− // if the url indicates a local directory, use QDirIterator
161− QString localDir = expandScriptUrl(url).toLocalFile();
162− int localDirPartCount = localDir.split("/").size();
163− if (localDir.endsWith("/")) {
164− localDirPartCount--;
165− }
166− #ifdef Q_OS_WIN
167− localDirPartCount++; // one for the drive letter
168− #endif
169− QDirIterator it(localDir, QStringList() << "*.js", QDir::Files, QDirIterator::Subdirectories);
170− while (it.hasNext()) {
171− QUrl jsFullPath = QUrl::fromLocalFile(it.next());
172− QString jsPartialPath = jsFullPath.path().split("/").mid(localDirPartCount).join("/");
173− jsFullPath = normalizeScriptURL(jsFullPath);
174− _treeNodes.append(new TreeNodeScript(jsPartialPath, jsFullPath.toString(), SCRIPT_ORIGIN_DEFAULT));
175− }
176− _loadingScripts = false;
177− } else {
178− // the url indicates http(s), use QNetworkRequest
179− QUrlQuery query;
180− query.addQueryItem(PREFIX_PARAMETER_NAME, ".");
181− if (!marker.isEmpty()) {
182− query.addQueryItem(MARKER_PARAMETER_NAME, marker);
159+ // targets that don't have a scripts folder in the appropriate location will have an empty URL here
160+ if (!url.isEmpty()) {
161+ if (url.isLocalFile()) {
162+ // if the url indicates a local directory, use QDirIterator
163+ QString localDir = expandScriptUrl(url).toLocalFile();
164+ int localDirPartCount = localDir.split("/").size();
165+ if (localDir.endsWith("/")) {
166+ localDirPartCount--;
167+ }
168+#ifdef Q_OS_WIN
169+ localDirPartCount++; // one for the drive letter
170+#endif
171+ QDirIterator it(localDir, QStringList() << "*.js", QDir::Files, QDirIterator::Subdirectories);
172+ while (it.hasNext()) {
173+ QUrl jsFullPath = QUrl::fromLocalFile(it.next());
174+ QString jsPartialPath = jsFullPath.path().split("/").mid(localDirPartCount).join("/");
175+ jsFullPath = normalizeScriptURL(jsFullPath);
176+ _treeNodes.append(new TreeNodeScript(jsPartialPath, jsFullPath.toString(), SCRIPT_ORIGIN_DEFAULT));
177+ }
178+ _loadingScripts = false;
179+ } else {
180+ // the url indicates http(s), use QNetworkRequest
181+ QUrlQuery query;
182+ query.addQueryItem(PREFIX_PARAMETER_NAME, ".");
183+ if (!marker.isEmpty()) {
184+ query.addQueryItem(MARKER_PARAMETER_NAME, marker);
185+ }
186+ url.setQuery(query);
187+
188+ QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance();
189+ QNetworkRequest request(url);
190+ request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
191+ request.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT);
192+ QNetworkReply* reply = networkAccessManager.get(request);
193+ connect(reply, SIGNAL(finished()), SLOT(downloadFinished()));
183194 }
184− url.setQuery(query);
185−
186− QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance();
187− QNetworkRequest request(url);
188− request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
189− request.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT);
190− QNetworkReply* reply = networkAccessManager.get(request);
191− connect(reply, SIGNAL(finished()), SLOT(downloadFinished()));
192195 }
193196 }
194197