MultiMC5/plugins/stdinstance/stdinstversion.cpp
2013-03-08 13:56:26 -06:00

148 lines
3.2 KiB
C++

/* 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;
}