Merge branch 'master' of git://github.com/peterix/MultiMC5

Conflicts:
	CMakeLists.txt
	gui/mainwindow.cpp
This commit is contained in:
Andrew
2013-03-28 11:37:12 -05:00
43 changed files with 1475 additions and 461 deletions

View File

@@ -65,6 +65,9 @@ class LIBMULTIMC_EXPORT Instance : public QObject
//! The instance's notes.
Q_PROPERTY(QString notes READ notes WRITE setNotes)
//! The instance's group.
Q_PROPERTY(QString group READ group WRITE setGroup)
/*!
* Whether or not the instance's minecraft.jar needs to be rebuilt.
* If this is true, when the instance launches, its jar mods will be
@@ -173,14 +176,29 @@ public:
//// General Info ////
virtual QString name() { return settings().get("name").toString(); }
virtual void setName(QString val) { settings().set("name", val); }
virtual void setName(QString val)
{
settings().set("name", val);
emit propertiesChanged(this);
}
virtual QString iconKey() const { return settings().get("iconKey").toString(); }
virtual void setIconKey(QString val) { settings().set("iconKey", val); }
virtual void setIconKey(QString val)
{
settings().set("iconKey", val);
emit propertiesChanged(this);
}
virtual QString notes() const { return settings().get("notes").toString(); }
virtual void setNotes(QString val) { settings().set("notes", val); }
virtual QString group() const { return m_group; }
virtual void setGroup(QString val)
{
m_group = val;
emit propertiesChanged(this);
}
virtual bool shouldRebuild() const { return settings().get("NeedsRebuild").toBool(); }
virtual void setShouldRebuild(bool val) { settings().set("NeedsRebuild", val); }
@@ -202,7 +220,10 @@ public:
virtual qint64 lastLaunch() { return settings().get("lastLaunchTime").value<qint64>(); }
virtual void setLastLaunch(qint64 val = QDateTime::currentMSecsSinceEpoch())
{ settings().set("lastLaunchTime", val); }
{
settings().set("lastLaunchTime", val);
emit propertiesChanged(this);
}
////// Directories //////
@@ -277,8 +298,15 @@ public:
*/
virtual SettingsObject &settings() const;
signals:
/*!
* \brief Signal emitted when properties relevant to the instance view change
*/
void propertiesChanged(Instance * inst);
private:
QString m_rootDir;
QString m_group;
SettingsObject *m_settings;
};

View File

@@ -17,16 +17,14 @@
#define INSTANCELIST_H
#include <QObject>
#include <QSharedPointer>
#include "siglist.h"
#include "instance.h"
#include "libmmc_config.h"
class Instance;
class LIBMULTIMC_EXPORT InstanceList : public QObject, public SigList< QSharedPointer<Instance> >
class LIBMULTIMC_EXPORT InstanceList : public QObject
{
Q_OBJECT
public:
@@ -46,14 +44,46 @@ public:
QString instDir() const { return m_instDir; }
/*!
* \brief Loads the instance list.
* \brief Loads the instance list. Triggers notifications.
*/
InstListError loadList();
DEFINE_SIGLIST_SIGNALS(QSharedPointer<Instance>);
SETUP_SIGLIST_SIGNALS(QSharedPointer<Instance>);
/*!
* \brief Get the instance at index
*/
InstancePtr at(int i) const
{
return m_instances.at(i);
};
/*!
* \brief Get the count of loaded instances
*/
int count() const
{
return m_instances.count();
};
/// Clear all instances. Triggers notifications.
void clear();
/// Add an instance. Triggers notifications, returns the new index
int add(InstancePtr t);
/// Get an instance by ID
InstancePtr getInstanceById (QString id);
signals:
void instanceAdded(int index);
void instanceChanged(int index);
void invalidated();
private slots:
void propertiesChanged(Instance * inst);
protected:
QString m_instDir;
QList< InstancePtr > m_instances;
};
#endif // INSTANCELIST_H

View File

@@ -6,7 +6,7 @@
* 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
* 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,
@@ -23,74 +23,98 @@
#include "libmmc_config.h"
/**
* @brief the MessageLevel Enum
* defines what level a message is
*/
namespace MessageLevel {
enum LIBMULTIMC_EXPORT Enum {
MultiMC, /**< MultiMC Messages */
Debug, /**< Debug Messages */
Info, /**< Info Messages */
Message, /**< Standard Messages */
Warning, /**< Warnings */
Error, /**< Errors */
Fatal /**< Fatal Errors */
};
}
/**
* @file data/minecraftprocess.h
* @brief The MinecraftProcess class
*/
class LIBMULTIMC_EXPORT MinecraftProcess : public QProcess
{
Q_OBJECT
Q_OBJECT
public:
/**
* @brief MinecraftProcess constructor
* @param inst the Instance pointer to launch
* @param user the minecraft username
* @param session the minecraft session id
* @param console the instance console window
*/
MinecraftProcess(InstancePtr inst, QString user, QString session);
/**
* @brief MinecraftProcess constructor
* @param inst the Instance pointer to launch
* @param user the minecraft username
* @param session the minecraft session id
* @param console the instance console window
*/
MinecraftProcess(InstancePtr inst, QString user, QString session);
/**
* @brief launch minecraft
*/
void launch();
/**
* @brief launch minecraft
*/
void launch();
/**
* @brief extract the instance icon
* @param inst the instance
* @param destination the destination path
*/
static inline void extractIcon(InstancePtr inst, QString destination);
/**
* @brief extract the instance icon
* @param inst the instance
* @param destination the destination path
*/
static inline void extractIcon(InstancePtr inst, QString destination);
/**
* @brief extract the MultiMC launcher.jar
* @param destination the destination path
*/
static inline void extractLauncher(QString destination);
/**
* @brief extract the MultiMC launcher.jar
* @param destination the destination path
*/
static inline void extractLauncher(QString destination);
/**
* @brief prepare the launch by extracting icon and launcher
* @param inst the instance
*/
static void prepare(InstancePtr inst);
/**
* @brief prepare the launch by extracting icon and launcher
* @param inst the instance
*/
static void prepare(InstancePtr inst);
/**
* @brief split a string into argv items like a shell would do
* @param args the argument string
* @return a QStringList containing all arguments
*/
static QStringList splitArgs(QString args);
/**
* @brief split a string into argv items like a shell would do
* @param args the argument string
* @return a QStringList containing all arguments
*/
static QStringList splitArgs(QString args);
signals:
/**
* @brief emitted when mc has finished and the PostLaunchCommand was run
*/
void ended();
/**
* @brief emitted when mc has finished and the PostLaunchCommand was run
*/
void ended();
/**
* @brief emitted when we want to log something
* @param text the text to log
* @param level the level to log at
*/
void log(QString text, MessageLevel::Enum level=MessageLevel::MultiMC);
protected:
InstancePtr m_instance;
QString m_user;
QString m_session;
QProcess m_prepostlaunchprocess;
QStringList m_arguments;
InstancePtr m_instance;
QString m_user;
QString m_session;
QString m_err_leftover;
QString m_out_leftover;
QProcess m_prepostlaunchprocess;
QStringList m_arguments;
void genArgs();
void log(QString text);
void genArgs();
protected slots:
void finish(int, QProcess::ExitStatus status);
void on_stdErr();
void on_stdOut();
void finish(int, QProcess::ExitStatus status);
void on_stdErr();
void on_stdOut();
};