From 36396f7c6aca9fcc61c8620e10c31ed2c8999ebd Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 26 Feb 2013 16:47:39 -0600 Subject: Massive re-organization. --- libmultimc/src/instancelist.cpp | 87 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 libmultimc/src/instancelist.cpp (limited to 'libmultimc/src/instancelist.cpp') diff --git a/libmultimc/src/instancelist.cpp b/libmultimc/src/instancelist.cpp new file mode 100644 index 00000000..3b0b668f --- /dev/null +++ b/libmultimc/src/instancelist.cpp @@ -0,0 +1,87 @@ +/* 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 +#include +#include + +#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()) + { + Instance *instPtr = NULL; + + InstanceLoader::InstTypeError error = InstanceLoader::get(). + loadInstance(instPtr, 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 (!instPtr) + { + qDebug(QString("Error loading instance %1. Instance loader returned null."). + arg(QFileInfo(subDir).baseName()).toUtf8()); + } + else + { + QSharedPointer inst(instPtr); + + qDebug(QString("Loaded instance %1").arg(inst->name()).toUtf8()); + inst->setParent(this); + append(QSharedPointer(inst)); + } + } + } + + return NoError; +} -- cgit v1.2.3