mirror of
https://github.com/vcmi/vcmi.git
synced 2025-07-15 01:24:45 +02:00
Merge pull request #2761 from IvanSavenko/fix_launcher_freeze
(1.3.2) Fix Launcher freeze on startup
This commit is contained in:
@ -192,13 +192,6 @@ void CModListModel::resetRepositories()
|
|||||||
endResetModel();
|
endResetModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CModListModel::addRepository(QVariantMap data)
|
|
||||||
{
|
|
||||||
beginResetModel();
|
|
||||||
CModList::addRepository(data);
|
|
||||||
endResetModel();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CModListModel::modChanged(QString modID)
|
void CModListModel::modChanged(QString modID)
|
||||||
{
|
{
|
||||||
int index = modNameToID.indexOf(modID);
|
int index = modNameToID.indexOf(modID);
|
||||||
|
@ -61,7 +61,6 @@ public:
|
|||||||
/// CModListContainer overrides
|
/// CModListContainer overrides
|
||||||
void resetRepositories() override;
|
void resetRepositories() override;
|
||||||
void reloadRepositories() override;
|
void reloadRepositories() override;
|
||||||
void addRepository(QVariantMap data) override;
|
|
||||||
void modChanged(QString modID) override;
|
void modChanged(QString modID) override;
|
||||||
|
|
||||||
QVariant data(const QModelIndex & index, int role) const override;
|
QVariant data(const QModelIndex & index, int role) const override;
|
||||||
|
@ -657,6 +657,7 @@ void CModListView::installFiles(QStringList files)
|
|||||||
{
|
{
|
||||||
QStringList mods;
|
QStringList mods;
|
||||||
QStringList images;
|
QStringList images;
|
||||||
|
QVector<QVariantMap> repositories;
|
||||||
|
|
||||||
// TODO: some better way to separate zip's with mods and downloaded repository files
|
// TODO: some better way to separate zip's with mods and downloaded repository files
|
||||||
for(QString filename : files)
|
for(QString filename : files)
|
||||||
@ -666,12 +667,12 @@ void CModListView::installFiles(QStringList files)
|
|||||||
if(filename.endsWith(".json"))
|
if(filename.endsWith(".json"))
|
||||||
{
|
{
|
||||||
//download and merge additional files
|
//download and merge additional files
|
||||||
auto repodata = JsonUtils::JsonFromFile(filename).toMap();
|
auto repoData = JsonUtils::JsonFromFile(filename).toMap();
|
||||||
if(repodata.value("name").isNull())
|
if(repoData.value("name").isNull())
|
||||||
{
|
{
|
||||||
for(const auto & key : repodata.keys())
|
for(const auto & key : repoData.keys())
|
||||||
{
|
{
|
||||||
auto modjson = repodata[key].toMap().value("mod");
|
auto modjson = repoData[key].toMap().value("mod");
|
||||||
if(!modjson.isNull())
|
if(!modjson.isNull())
|
||||||
{
|
{
|
||||||
downloadFile(key + ".json", modjson.toString(), "repository index");
|
downloadFile(key + ".json", modjson.toString(), "repository index");
|
||||||
@ -682,14 +683,17 @@ void CModListView::installFiles(QStringList files)
|
|||||||
{
|
{
|
||||||
auto modn = QFileInfo(filename).baseName();
|
auto modn = QFileInfo(filename).baseName();
|
||||||
QVariantMap temp;
|
QVariantMap temp;
|
||||||
temp[modn] = repodata;
|
temp[modn] = repoData;
|
||||||
repodata = temp;
|
repoData = temp;
|
||||||
}
|
}
|
||||||
manager->loadRepository(repodata);
|
repositories.push_back(repoData);
|
||||||
}
|
}
|
||||||
if(filename.endsWith(".png"))
|
if(filename.endsWith(".png"))
|
||||||
images.push_back(filename);
|
images.push_back(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
manager->loadRepositories(repositories);
|
||||||
|
|
||||||
if(!mods.empty())
|
if(!mods.empty())
|
||||||
installMods(mods);
|
installMods(mods);
|
||||||
|
|
||||||
|
@ -68,9 +68,11 @@ void CModManager::resetRepositories()
|
|||||||
modList->resetRepositories();
|
modList->resetRepositories();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CModManager::loadRepository(QVariantMap repomap)
|
void CModManager::loadRepositories(QVector<QVariantMap> repomap)
|
||||||
{
|
{
|
||||||
modList->addRepository(repomap);
|
for (auto const & entry : repomap)
|
||||||
|
modList->addRepository(entry);
|
||||||
|
modList->reloadRepositories();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CModManager::loadMods()
|
void CModManager::loadMods()
|
||||||
|
@ -35,7 +35,7 @@ public:
|
|||||||
CModManager(CModList * modList);
|
CModManager(CModList * modList);
|
||||||
|
|
||||||
void resetRepositories();
|
void resetRepositories();
|
||||||
void loadRepository(QVariantMap repomap);
|
void loadRepositories(QVector<QVariantMap> repomap);
|
||||||
void loadModSettings();
|
void loadModSettings();
|
||||||
void loadMods();
|
void loadMods();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user