From 2d6e785e4ee8a8b837fe84f83972ec23a09564af Mon Sep 17 00:00:00 2001 From: Andrew Date: Fri, 8 Mar 2013 13:56:26 -0600 Subject: Implemented version lists. --- plugins/stdinstance/stdinstversion.cpp | 147 +++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 plugins/stdinstance/stdinstversion.cpp (limited to 'plugins/stdinstance/stdinstversion.cpp') diff --git a/plugins/stdinstance/stdinstversion.cpp b/plugins/stdinstance/stdinstversion.cpp new file mode 100644 index 00000000..0e582ffc --- /dev/null +++ b/plugins/stdinstance/stdinstversion.cpp @@ -0,0 +1,147 @@ +/* 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 "stdinstversion.h" + +StdInstVersion::StdInstVersion(QString descriptor, + QString name, + qint64 timestamp, + QString dlUrl, + bool hasLWJGL, + QString etag, + InstVersionList *parent) : + InstVersion(parent), m_descriptor(descriptor), m_name(name), m_timestamp(timestamp), + m_dlUrl(dlUrl), m_hasLWJGL(hasLWJGL), m_etag(etag) +{ + m_linkedVersion = NULL; +} + +StdInstVersion::StdInstVersion(StdInstVersion *linkedVersion) +{ + m_linkedVersion = linkedVersion; +} + +StdInstVersion::StdInstVersion() +{ + m_timestamp = 0; + m_hasLWJGL = false; + m_linkedVersion = NULL; +} + +StdInstVersion *StdInstVersion::mcnVersion(QString rawName, QString niceName) +{ + StdInstVersion *version = new StdInstVersion; + version->m_descriptor = rawName; + version->m_name = niceName; + version->setVersionType(MCNostalgia); + return version; +} + +QString StdInstVersion::descriptor() const +{ + if (m_linkedVersion) + return m_linkedVersion->descriptor(); + return m_descriptor; +} + +QString StdInstVersion::name() const +{ + if (m_linkedVersion) + return m_linkedVersion->name(); + return m_name; +} + +QString StdInstVersion::type() const +{ + if (m_linkedVersion) + return m_linkedVersion->type(); + + switch (versionType()) + { + case OldSnapshot: + return "Old Snapshot"; + + case Stable: + return "Stable"; + + case CurrentStable: + return "Current Stable"; + + case Snapshot: + return "Snapshot"; + + case MCNostalgia: + return "MCNostalgia"; + + case MetaCustom: + // Not really sure what this does, but it was in the code for v4, + // so it must be important... Right? + return "Custom Meta Version"; + + case MetaLatestSnapshot: + return "Latest Snapshot"; + + case MetaLatestStable: + return "Latest Stable"; + + default: + return QString("Unknown Type %1").arg(versionType()); + } +} + +qint64 StdInstVersion::timestamp() const +{ + if (m_linkedVersion) + return m_linkedVersion->timestamp(); + return m_timestamp; +} + +QString StdInstVersion::downloadURL() const +{ + if (m_linkedVersion) + return m_linkedVersion->downloadURL(); + return m_dlUrl; +} + +bool StdInstVersion::hasLWJGL() const +{ + if (m_linkedVersion) + return m_linkedVersion->hasLWJGL(); + return m_hasLWJGL; +} + +QString StdInstVersion::etag() const +{ + if (m_linkedVersion) + return m_linkedVersion->etag(); + return m_etag; +} + +StdInstVersion::VersionType StdInstVersion::versionType() const +{ + return m_type; +} + +void StdInstVersion::setVersionType(StdInstVersion::VersionType type) +{ + m_type = type; +} + +bool StdInstVersion::isMeta() const +{ + return versionType() == MetaCustom || + versionType() == MetaLatestSnapshot || + versionType() == MetaLatestStable; +} -- cgit v1.2.3