moved QEventLoops inside functions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
@@ -149,4 +149,14 @@ Task::Ptr Index::loadVersion(const QString& uid, const QString& version, Net::Mo
|
||||
loadTask->addTask(versionList->getVersion(version)->loadTask(mode));
|
||||
return loadTask;
|
||||
}
|
||||
|
||||
Version::Ptr Index::getLoadedVersion(const QString& uid, const QString& version)
|
||||
{
|
||||
QEventLoop ev;
|
||||
auto task = loadVersion(uid, version);
|
||||
QObject::connect(task.get(), &Task::finished, &ev, &QEventLoop::quit);
|
||||
task->start();
|
||||
ev.exec();
|
||||
return get(uid, version);
|
||||
}
|
||||
} // namespace Meta
|
||||
|
||||
@@ -50,6 +50,9 @@ class Index : public QAbstractListModel, public BaseEntity {
|
||||
|
||||
Task::Ptr loadVersion(const QString& uid, const QString& version = {}, Net::Mode mode = Net::Mode::Online, bool force = false);
|
||||
|
||||
// this blocks until the version is loaded
|
||||
Version::Ptr getLoadedVersion(const QString& uid, const QString& version);
|
||||
|
||||
public: // for usage by parsers only
|
||||
void merge(const std::shared_ptr<Index>& other);
|
||||
|
||||
|
||||
@@ -254,4 +254,14 @@ BaseVersion::Ptr VersionList::getRecommended() const
|
||||
return m_recommended;
|
||||
}
|
||||
|
||||
void VersionList::waitToLoad()
|
||||
{
|
||||
if (isLoaded())
|
||||
return;
|
||||
QEventLoop ev;
|
||||
auto task = getLoadTask();
|
||||
QObject::connect(task.get(), &Task::finished, &ev, &QEventLoop::quit);
|
||||
task->start();
|
||||
ev.exec();
|
||||
}
|
||||
} // namespace Meta
|
||||
|
||||
@@ -59,6 +59,9 @@ class VersionList : public BaseVersionList, public BaseEntity {
|
||||
|
||||
QVector<Version::Ptr> versions() const { return m_versions; }
|
||||
|
||||
// this blocks until the version list is loaded
|
||||
void waitToLoad();
|
||||
|
||||
public: // for usage only by parsers
|
||||
void setName(const QString& name);
|
||||
void setVersions(const QVector<Version::Ptr>& versions);
|
||||
|
||||
Reference in New Issue
Block a user