Rewrote the settings system. It may still need some work.

This commit is contained in:
Andrew
2013-02-25 13:24:46 -06:00
parent a7111b1328
commit 498225debd
23 changed files with 783 additions and 272 deletions

70
data/appsettings.cpp Normal file
View File

@ -0,0 +1,70 @@
/* 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 "appsettings.h"
#include <setting.h>
#include <QPoint>
#include <QColor>
AppSettings *settings;
AppSettings::AppSettings(QObject *parent) :
BasicSettingsObject(parent)
{
// Updates
registerSetting(new Setting("UseDevBuilds", false));
registerSetting(new Setting("AutoUpdate", true));
// Folders
registerSetting(new Setting("InstanceDir", "instances"));
registerSetting(new Setting("CentralModsDir", "mods"));
registerSetting(new Setting("LWJGLDir", "lwjgl"));
// Console
registerSetting(new Setting("ShowConsole", true));
registerSetting(new Setting("AutoCloseConsole", true));
// Toolbar settings
registerSetting(new Setting("InstanceToolbarVisible", true));
registerSetting(new Setting("InstanceToolbarPosition", QPoint()));
// Console Colors
registerSetting(new Setting("SysMessageColor", QColor(Qt::blue)));
registerSetting(new Setting("StdOutColor", QColor(Qt::black)));
registerSetting(new Setting("StdErrColor", QColor(Qt::red)));
// Window Size
registerSetting(new Setting("LaunchCompatMode", false));
registerSetting(new Setting("LaunchMaximized", false));
registerSetting(new Setting("MinecraftWinWidth", 854));
registerSetting(new Setting("MinecraftWinHeight", 480));
// Auto login
registerSetting(new Setting("AutoLogin", false));
// Memory
registerSetting(new Setting("MinMemAlloc", 512));
registerSetting(new Setting("MaxMemAlloc", 1024));
// Java Settings
registerSetting(new Setting("JavaPath", "java"));
registerSetting(new Setting("JvmArgs", ""));
// Custom Commands
registerSetting(new Setting("PreLaunchCommand", ""));
registerSetting(new Setting("PostExitCommand", ""));
}

32
data/appsettings.h Normal file
View File

@ -0,0 +1,32 @@
/* 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.
*/
#ifndef APPSETTINGS_H
#define APPSETTINGS_H
#include <QObject>
#include <basicsettingsobject.h>
class AppSettings : public BasicSettingsObject
{
Q_OBJECT
public:
explicit AppSettings(QObject *parent = 0);
};
extern AppSettings *settings;
#endif // APPSETTINGS_H

View File

@ -19,51 +19,51 @@ LoginResponse::LoginResponse(const QString& username, const QString& sessionID,
qint64 latestVersion, QObject *parent) :
QObject(parent)
{
this->username = username;
this->sessionID = sessionID;
this->latestVersion = latestVersion;
this->m_username = username;
this->m_sessionID = sessionID;
this->m_latestVersion = latestVersion;
}
LoginResponse::LoginResponse()
{
this->username = "";
this->sessionID = "";
this->latestVersion = 0;
this->m_username = "";
this->m_sessionID = "";
this->m_latestVersion = 0;
}
LoginResponse::LoginResponse(const LoginResponse &other)
{
this->username = other.getUsername();
this->sessionID = other.getSessionID();
this->latestVersion = other.getLatestVersion();
this->m_username = other.username();
this->m_sessionID = other.sessionID();
this->m_latestVersion = other.latestVersion();
}
QString LoginResponse::getUsername() const
QString LoginResponse::username() const
{
return username;
return m_username;
}
void LoginResponse::setUsername(const QString& username)
{
this->username = username;
this->m_username = username;
}
QString LoginResponse::getSessionID() const
QString LoginResponse::sessionID() const
{
return sessionID;
return m_sessionID;
}
void LoginResponse::setSessionID(const QString& sessionID)
{
this->sessionID = sessionID;
this->m_sessionID = sessionID;
}
qint64 LoginResponse::getLatestVersion() const
qint64 LoginResponse::latestVersion() const
{
return latestVersion;
return m_latestVersion;
}
void LoginResponse::setLatestVersion(qint64 v)
{
this->latestVersion = v;
this->m_latestVersion = v;
}

View File

@ -18,28 +18,75 @@
#include <QObject>
/*!
* \brief The LoginResponse class represents a response received from Minecraft's login servers.
*/
class LoginResponse : public QObject
{
Q_OBJECT
public:
/*!
* \brief Creates a new instance of the LoginResponse class.
* \param username The user's username.
* \param sessionID The user's session ID.
* \param latestVersion The latest version of Minecraft.
* \param parent The parent object.
*/
explicit LoginResponse(const QString &username, const QString &sessionID,
qint64 latestVersion, QObject *parent = 0);
LoginResponse();
LoginResponse(const LoginResponse& other);
QString getUsername() const;
/*!
* \brief Gets the username.
* This one should go without saying.
* \return The username.
* \sa setUsername()
*/
QString username() const;
/*!
* \brief setUsername Sets the username.
* \param username The new username.
* \sa username()
*/
void setUsername(const QString& username);
QString getSessionID() const;
/*!
* \brief Gets the session ID.
* \return The session ID.
* \sa setSessionID()
*/
QString sessionID() const;
/*!
* \brief Sets the session ID.
* \param sessionID The new session ID.
* \sa sessionID()
*/
void setSessionID(const QString& sessionID);
qint64 getLatestVersion() const;
/*!
* \brief Gets the latest version.
* This is a value returned by the login servers when a user logs in.
* \return The latest version.
* \sa setLatestVersion()
*/
qint64 latestVersion() const;
/*!
* \brief Sets the latest version.
* \param v The new latest version.
* \sa latestVersion()
*/
void setLatestVersion(qint64 v);
private:
QString username;
QString sessionID;
qint64 latestVersion;
QString m_username;
QString m_sessionID;
qint64 m_latestVersion;
};
Q_DECLARE_METATYPE(LoginResponse)

View File

@ -18,32 +18,32 @@
UserInfo::UserInfo(const QString &username, const QString &password, QObject *parent) :
QObject(parent)
{
this->username = username;
this->password = password;
this->m_username = username;
this->m_password = password;
}
UserInfo::UserInfo(const UserInfo &other)
{
this->username = other.username;
this->password = other.password;
this->m_username = other.m_username;
this->m_password = other.m_password;
}
QString UserInfo::getUsername() const
QString UserInfo::username() const
{
return username;
return m_username;
}
void UserInfo::setUsername(const QString &username)
{
this->username = username;
this->m_username = username;
}
QString UserInfo::getPassword() const
QString UserInfo::password() const
{
return password;
return m_password;
}
void UserInfo::setPassword(const QString &password)
{
this->password = password;
this->m_password = password;
}

View File

@ -25,15 +25,15 @@ public:
explicit UserInfo(const QString& username, const QString& password, QObject *parent = 0);
explicit UserInfo(const UserInfo& other);
QString getUsername() const;
QString username() const;
void setUsername(const QString& username);
QString getPassword() const;
QString password() const;
void setPassword(const QString& password);
protected:
QString username;
QString password;
QString m_username;
QString m_password;
};
#endif // USERINFO_H

View File

@ -18,6 +18,9 @@
#include <QObject>
/*!
* \brief The Version class represents a MultiMC version number.
*/
class Version : public QObject
{
Q_OBJECT
@ -27,11 +30,35 @@ public:
Version(const Version& ver);
/*!
* \brief Converts the Version to a string.
* \return The version number in string format (major.minor.revision.build).
*/
QString toString() const;
/*!
* \brief The major version number.
* For MultiMC 5, this will always be 5.
*/
int major;
/*!
* \brief The minor version number.
* This number is incremented when major features are added.
*/
int minor;
/*!
* \brief The revision number.
* This number is incremented for bugfixes and small features.
*/
int revision;
/*!
* \brief The build number.
* This number is automatically set by Jenkins. It is incremented every time
* a new build is run.
*/
int build;
static Version current;