diff options
author | Andrew <forkk@forkk.net> | 2013-02-20 19:10:09 -0600 |
---|---|---|
committer | Andrew <forkk@forkk.net> | 2013-02-20 19:10:09 -0600 |
commit | dd2e836b4cf4cfa043f9ea2911f58f1d22d4e282 (patch) | |
tree | 07e99dd9c2858e2e46075a649751049c3195b437 /libinstance/src/instancelist.cpp | |
parent | f71479ec33562c9a0ebbdb335bef5e2824a12710 (diff) | |
download | PrismLauncher-dd2e836b4cf4cfa043f9ea2911f58f1d22d4e282.tar.gz PrismLauncher-dd2e836b4cf4cfa043f9ea2911f58f1d22d4e282.tar.bz2 PrismLauncher-dd2e836b4cf4cfa043f9ea2911f58f1d22d4e282.zip |
Split MultiMC up into a few separate libraries.
Fixed plugin system.
Tons of other stuff...
Diffstat (limited to 'libinstance/src/instancelist.cpp')
-rw-r--r-- | libinstance/src/instancelist.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/libinstance/src/instancelist.cpp b/libinstance/src/instancelist.cpp new file mode 100644 index 00000000..15f79d05 --- /dev/null +++ b/libinstance/src/instancelist.cpp @@ -0,0 +1,84 @@ +/* Copyright 2013 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "include/instancelist.h" + +#include "siglist_impl.h" + +#include <QDir> +#include <QFile> +#include <QDirIterator> + +#include "include/instance.h" +#include "include/instanceloader.h" + +#include "pathutils.h" + + +InstanceList::InstanceList(const QString &instDir, QObject *parent) : + QObject(parent), m_instDir(instDir) +{ + +} + +InstanceList::InstListError InstanceList::loadList() +{ + QDir dir(m_instDir); + QDirIterator iter(dir); + + while (iter.hasNext()) + { + QString subDir = iter.next(); + if (QFileInfo(PathCombine(subDir, "instance.cfg")).exists()) + { + QSharedPointer<Instance> inst; + InstanceLoader::InstTypeError error = InstanceLoader::get(). + loadInstance(inst.data(), subDir); + + if (error != InstanceLoader::NoError && + error != InstanceLoader::NotAnInstance) + { + QString errorMsg = QString("Failed to load instance %1: "). + arg(QFileInfo(subDir).baseName()).toUtf8(); + + switch (error) + { + case InstanceLoader::TypeNotRegistered: + errorMsg += "Instance type not found."; + break; + + default: + errorMsg += QString("Unknown instance loader error %1"). + arg(error); + break; + } + qDebug(errorMsg.toUtf8()); + } + else if (!inst.data()) + { + qDebug(QString("Error loading instance %1. Instance loader returned null."). + arg(QFileInfo(subDir).baseName()).toUtf8()); + } + else + { + qDebug(QString("Loaded instance %1").arg(inst->name()).toUtf8()); + inst->setParent(this); + append(QSharedPointer<Instance>(inst)); + } + } + } + + return NoError; +} |