mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-11 09:04:24 +02:00
Make base URLs for external resources modifiable
This commit is contained in:
parent
0310764013
commit
84e01630ee
3 changed files with 61 additions and 0 deletions
|
@ -5544,6 +5544,21 @@ void Application::loadSettings() {
|
|||
}
|
||||
|
||||
getMyAvatar()->loadData();
|
||||
|
||||
|
||||
auto bucketEnum = QMetaEnum::fromType<ExternalResource::Bucket>();
|
||||
auto er = ExternalResource::getInstance();
|
||||
|
||||
for(int i=0;i<bucketEnum.keyCount();i++) {
|
||||
const char *keyName = bucketEnum.key(i);
|
||||
QString setting("ExternalResource/");
|
||||
setting += keyName;
|
||||
auto bucket = static_cast<ExternalResource::Bucket>(bucketEnum.keyToValue(keyName));
|
||||
Setting::Handle<QString> url(setting, er->getBase(bucket));
|
||||
er->setBase( bucket, url.get() );
|
||||
}
|
||||
|
||||
|
||||
_settingsLoaded = true;
|
||||
}
|
||||
|
||||
|
@ -5560,6 +5575,18 @@ void Application::saveSettings() const {
|
|||
Menu::getInstance()->saveSettings();
|
||||
getMyAvatar()->saveData();
|
||||
PluginManager::getInstance()->saveSettings();
|
||||
|
||||
auto bucketEnum = QMetaEnum::fromType<ExternalResource::Bucket>();
|
||||
auto er = ExternalResource::getInstance();
|
||||
|
||||
for(int i=0;i<bucketEnum.keyCount();i++) {
|
||||
const char *keyName = bucketEnum.key(i);
|
||||
QString setting("ExternalResource/");
|
||||
setting += keyName;
|
||||
auto bucket = static_cast<ExternalResource::Bucket>(bucketEnum.keyToValue(keyName));
|
||||
Setting::Handle<QString> url(setting, er->getBase(bucket));
|
||||
url.set(er->getBase(bucket));
|
||||
}
|
||||
}
|
||||
|
||||
bool Application::importEntities(const QString& urlOrFilename, const bool isObservable, const qint64 callerId) {
|
||||
|
|
|
@ -44,6 +44,7 @@ QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl &relative_path) {
|
|||
return relative_path;
|
||||
}
|
||||
|
||||
std::lock_guard<std::mutex> guard(_bucketMutex);
|
||||
QUrl base = _bucketBases[bucket];
|
||||
QUrl merged = base.resolved(relative_path);
|
||||
|
||||
|
@ -53,3 +54,27 @@ QUrl ExternalResource::getQUrl(Bucket bucket, const QUrl &relative_path) {
|
|||
return merged;
|
||||
}
|
||||
|
||||
|
||||
QString ExternalResource::getBase(Bucket bucket) {
|
||||
std::lock_guard<std::mutex> guard(_bucketMutex);
|
||||
return _bucketBases.value(bucket).toString();
|
||||
};
|
||||
|
||||
void ExternalResource::setBase(Bucket bucket, const QString &url) {
|
||||
QUrl new_url(url);
|
||||
|
||||
if (!new_url.isValid() || new_url.isRelative()) {
|
||||
qCCritical(external_resource) << "Attempted to set bucket " << bucket << " to invalid URL " << url;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_bucketBases.contains(bucket)) {
|
||||
qCritical(external_resource) << "Invalid bucket " << bucket;
|
||||
return;
|
||||
}
|
||||
|
||||
qCDebug(external_resource) << "Setting base URL for " << bucket << " to " << new_url;
|
||||
|
||||
std::lock_guard<std::mutex> guard(_bucketMutex);
|
||||
_bucketBases[bucket] = new_url;
|
||||
}
|
||||
|
|
|
@ -16,6 +16,9 @@
|
|||
#include <QUrl>
|
||||
#include <QMap>
|
||||
|
||||
#include <mutex>
|
||||
|
||||
|
||||
/**
|
||||
* Flexible management for external resources
|
||||
*
|
||||
|
@ -125,9 +128,15 @@ class ExternalResource : public QObject {
|
|||
return ExternalResource::getQUrl(bucket, QUrl(relative_path)).toString();
|
||||
};
|
||||
|
||||
Q_INVOKABLE QString getBase(Bucket bucket);
|
||||
|
||||
Q_INVOKABLE void setBase(Bucket bucket, const QString &url);
|
||||
|
||||
private:
|
||||
ExternalResource(QObject* parent = nullptr);
|
||||
|
||||
std::mutex _bucketMutex;
|
||||
|
||||
QMap<Bucket, QUrl> _bucketBases {
|
||||
{ Bucket::Public, QUrl("https://public.vircadia.com")},
|
||||
{ Bucket::Content, QUrl("https://content.vircadia.com")},
|
||||
|
|
Loading…
Reference in a new issue