aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AppSettings.cpp (renamed from libmultimc/src/appsettings.cpp)2
-rw-r--r--AppSettings.h (renamed from libmultimc/include/appsettings.h)9
-rw-r--r--AppVersion.cpp (renamed from libmultimc/src/version.cpp)2
-rw-r--r--AppVersion.h (renamed from libmultimc/include/version.h)8
-rw-r--r--CMakeLists.txt19
-rw-r--r--backend/BaseInstance.cpp (renamed from libmultimc/src/instance.cpp)52
-rw-r--r--backend/BaseInstance.h (renamed from libmultimc/include/instance.h)57
-rw-r--r--backend/CMakeLists.txt91
-rw-r--r--backend/InstanceFactory.cpp (renamed from libmultimc/src/instanceloader.cpp)20
-rw-r--r--backend/InstanceFactory.h (renamed from libmultimc/include/instanceloader.h)21
-rw-r--r--backend/InstanceVersion.cpp (renamed from libmultimc/src/instversion.cpp)4
-rw-r--r--backend/InstanceVersion.h (renamed from libmultimc/include/instversion.h)5
-rw-r--r--backend/LegacyInstance.cpp0
-rw-r--r--backend/LegacyInstance.h1
-rw-r--r--backend/MinecraftProcess.cpp (renamed from libmultimc/src/minecraftprocess.cpp)54
-rw-r--r--backend/MinecraftProcess.h (renamed from libmultimc/include/minecraftprocess.h)22
-rw-r--r--backend/MinecraftVersion.cpp (renamed from libmultimc/src/minecraftversion.cpp)13
-rw-r--r--backend/MinecraftVersion.h (renamed from libmultimc/include/minecraftversion.h)43
-rw-r--r--backend/OneSixInstance.cpp0
-rw-r--r--backend/OneSixInstance.h1
-rw-r--r--backend/OneSixVersion.cpp (renamed from libmultimc/src/library.cpp)44
-rw-r--r--backend/OneSixVersion.h (renamed from libmultimc/include/library.h)89
-rw-r--r--backend/VersionFactory.cpp (renamed from libmultimc/src/fullversionfactory.cpp)16
-rw-r--r--backend/VersionFactory.h (renamed from libmultimc/include/fullversionfactory.h)0
-rw-r--r--backend/libmmc_config.h (renamed from libmultimc/include/libmmc_config.h)5
-rw-r--r--backend/lists/InstVersionList.cpp (renamed from libmultimc/src/instversionlist.cpp)4
-rw-r--r--backend/lists/InstVersionList.h (renamed from libmultimc/include/instversionlist.h)5
-rw-r--r--backend/lists/InstanceList.cpp (renamed from libmultimc/src/instancelist.cpp)25
-rw-r--r--backend/lists/InstanceList.h (renamed from libmultimc/include/instancelist.h)11
-rw-r--r--backend/lists/LwjglVersionList.cpp (renamed from libmultimc/src/lwjglversionlist.cpp)2
-rw-r--r--backend/lists/LwjglVersionList.h (renamed from libmultimc/include/lwjglversionlist.h)4
-rw-r--r--backend/lists/MinecraftVersionList.cpp (renamed from libmultimc/src/minecraftversionlist.cpp)4
-rw-r--r--backend/lists/MinecraftVersionList.h (renamed from libmultimc/include/minecraftversionlist.h)11
-rw-r--r--backend/tasks/GameUpdateTask.cpp (renamed from libmultimc/src/gameupdatetask.cpp)18
-rw-r--r--backend/tasks/GameUpdateTask.h (renamed from libmultimc/include/gameupdatetask.h)14
-rw-r--r--backend/tasks/LoginResponse.cpp (renamed from libmultimc/src/loginresponse.cpp)2
-rw-r--r--backend/tasks/LoginResponse.h (renamed from libmultimc/include/loginresponse.h)4
-rw-r--r--backend/tasks/LoginTask.cpp (renamed from libmultimc/src/logintask.cpp)2
-rw-r--r--backend/tasks/LoginTask.h (renamed from libmultimc/include/logintask.h)6
-rw-r--r--backend/tasks/Task.cpp (renamed from libmultimc/src/task.cpp)2
-rw-r--r--backend/tasks/Task.h (renamed from libmultimc/include/task.h)0
-rw-r--r--backend/tasks/UserInfo.cpp (renamed from libmultimc/src/userinfo.cpp)2
-rw-r--r--backend/tasks/UserInfo.h (renamed from libmultimc/include/userinfo.h)0
-rw-r--r--gui/consolewindow.h2
-rw-r--r--gui/instancemodel.cpp6
-rw-r--r--gui/instancemodel.h2
-rw-r--r--gui/legacymodeditdialog.cpp4
-rw-r--r--gui/legacymodeditdialog.h4
-rw-r--r--gui/lwjglselectdialog.cpp2
-rw-r--r--gui/mainwindow.cpp78
-rw-r--r--gui/mainwindow.h14
-rw-r--r--gui/modeditdialog.cpp4
-rw-r--r--gui/modeditdialog.h4
-rw-r--r--gui/modeditwindow.cpp4
-rw-r--r--gui/newinstancedialog.cpp10
-rw-r--r--gui/settingsdialog.cpp2
-rw-r--r--gui/taskdialog.cpp2
-rw-r--r--gui/versionselectdialog.cpp6
-rw-r--r--hacks/boost/property_tree/detail/json_parser_read.hpp333
-rw-r--r--libmultimc/CMakeLists.txt102
-rw-r--r--libmultimc/include/fullversion.h76
-rw-r--r--libmultimc/src/fullversion.cpp29
-rw-r--r--libutil/CMakeLists.txt2
-rw-r--r--libutil/include/cmdutils.h9
-rw-r--r--libutil/src/cmdutils.cpp50
-rw-r--r--main.cpp10
66 files changed, 489 insertions, 960 deletions
diff --git a/libmultimc/src/appsettings.cpp b/AppSettings.cpp
index 7c886fdb..835d42ac 100644
--- a/libmultimc/src/appsettings.cpp
+++ b/AppSettings.cpp
@@ -13,7 +13,7 @@
* limitations under the License.
*/
-#include "appsettings.h"
+#include "AppSettings.h"
#include <setting.h>
diff --git a/libmultimc/include/appsettings.h b/AppSettings.h
index 8447d58b..d8f21de1 100644
--- a/libmultimc/include/appsettings.h
+++ b/AppSettings.h
@@ -13,20 +13,17 @@
* limitations under the License.
*/
-#ifndef APPSETTINGS_H
-#define APPSETTINGS_H
+#pragma once
#include <QObject>
#include <inisettingsobject.h>
-#include "libmmc_config.h"
-
-class LIBMULTIMC_EXPORT AppSettings : public INISettingsObject
+class AppSettings : public INISettingsObject
{
Q_OBJECT
public:
explicit AppSettings(QObject *parent = 0);
};
-#endif // APPSETTINGS_H
+
diff --git a/libmultimc/src/version.cpp b/AppVersion.cpp
index eec50e13..2db3da26 100644
--- a/libmultimc/src/version.cpp
+++ b/AppVersion.cpp
@@ -13,7 +13,7 @@
* limitations under the License.
*/
-#include "version.h"
+#include "AppVersion.h"
#include "config.h"
diff --git a/libmultimc/include/version.h b/AppVersion.h
index 3025260b..504f1d17 100644
--- a/libmultimc/include/version.h
+++ b/AppVersion.h
@@ -13,17 +13,14 @@
* limitations under the License.
*/
-#ifndef VERSION_H
-#define VERSION_H
+#pragma once
#include <QObject>
-#include "libmmc_config.h"
-
/*!
* \brief The Version class represents a MultiMC version number.
*/
-class LIBMULTIMC_EXPORT Version : public QObject
+class Version : public QObject
{
Q_OBJECT
public:
@@ -66,4 +63,3 @@ public:
static Version current;
};
-#endif // VERSION_H
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f8df3260..e858d888 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -28,9 +28,6 @@ ENDIF()
################################ INCLUDE LIBRARIES ################################
-# First, include header overrides
-include_directories(hacks)
-
######## 3rd Party Libs ########
# Find the required Qt parts
@@ -68,7 +65,7 @@ add_subdirectory(libsettings)
include_directories(${LIBSETTINGS_INCLUDE_DIR})
# Add the instance library.
-add_subdirectory(libmultimc)
+add_subdirectory(backend)
include_directories(${LIBMULTIMC_INCLUDE_DIR})
# Add the group view library.
@@ -161,6 +158,10 @@ ADD_DEFINITIONS(-DQUAZIP_STATIC)
######## Headers ########
SET(MULTIMC_HEADERS
+multimc_pragma.h
+AppVersion.h
+AppSettings.h
+
gui/mainwindow.h
gui/modeditdialog.h
gui/legacymodeditdialog.h
@@ -178,8 +179,6 @@ gui/lwjglselectdialog.h
gui/iconcache.h
gui/instancesettings.h
-multimc_pragma.h
-
java/annotations.h
java/classfile.h
java/constants.h
@@ -193,6 +192,8 @@ java/membuffer.h
######## Sources ########
SET(MULTIMC_SOURCES
main.cpp
+AppVersion.cpp
+AppSettings.cpp
gui/mainwindow.cpp
gui/modeditdialog.cpp
@@ -270,9 +271,9 @@ ADD_EXECUTABLE(MultiMC MACOSX_BUNDLE WIN32
# Link
QT5_USE_MODULES(MultiMC Widgets Network WebKitWidgets)
TARGET_LINK_LIBRARIES(MultiMC quazip patchlib
-libUtil libSettings libMultiMC libGroupView
+libUtil libSettings backend libGroupView
${MultiMC_LINK_ADDITIONAL_LIBS})
-ADD_DEPENDENCIES(MultiMC MultiMCLauncher libUtil libSettings libMultiMC libGroupView)
+ADD_DEPENDENCIES(MultiMC MultiMCLauncher libUtil libSettings backend libGroupView)
option(BUILD_KEYRING_TEST "Build the simple keyring test binary" OFF)
@@ -288,7 +289,7 @@ IF(BUILD_ASSET_TEST)
# test.cpp
ADD_EXECUTABLE(AssetTest asset_test.cpp)
QT5_USE_MODULES(AssetTest Core Network)
- TARGET_LINK_LIBRARIES(AssetTest libUtil libMultiMC libSettings)
+ TARGET_LINK_LIBRARIES(AssetTest libUtil backend libSettings)
ENDIF()
diff --git a/libmultimc/src/instance.cpp b/backend/BaseInstance.cpp
index 5fdb5064..c2ffa664 100644
--- a/libmultimc/src/instance.cpp
+++ b/backend/BaseInstance.cpp
@@ -13,7 +13,7 @@
* limitations under the License.
*/
-#include "include/instance.h"
+#include "BaseInstance.h"
#include <QFileInfo>
@@ -22,19 +22,18 @@
#include "overridesetting.h"
#include "pathutils.h"
-#include <minecraftversionlist.h>
+#include <lists/MinecraftVersionList.h>
-Instance::Instance(const QString &rootDir, QObject *parent) :
+BaseInstance::BaseInstance(const QString &rootDir, QObject *parent) :
QObject(parent)
{
m_rootDir = rootDir;
- m_settings = new INISettingsObject(configFile(), this);
+ m_settings = new INISettingsObject(PathCombine(rootDir, "instance.cfg"), this);
settings().registerSetting(new Setting("name", "Unnamed Instance"));
settings().registerSetting(new Setting("iconKey", "default"));
settings().registerSetting(new Setting("notes", ""));
settings().registerSetting(new Setting("NeedsRebuild", true));
- settings().registerSetting(new Setting("IsForNewLauncher", false));
settings().registerSetting(new Setting("ShouldUpdate", false));
settings().registerSetting(new Setting("JarVersion", "Unknown"));
settings().registerSetting(new Setting("LwjglVersion", "2.9.0"));
@@ -77,17 +76,17 @@ Instance::Instance(const QString &rootDir, QObject *parent) :
settings().registerSetting(new Setting("OverrideCommands", false));
}
-QString Instance::id() const
+QString BaseInstance::id() const
{
return QFileInfo(rootDir()).fileName();
}
-QString Instance::rootDir() const
+QString BaseInstance::rootDir() const
{
return m_rootDir;
}
-InstanceList *Instance::instList() const
+InstanceList *BaseInstance::instList() const
{
if (parent()->inherits("InstanceList"))
return (InstanceList *)parent();
@@ -95,7 +94,7 @@ InstanceList *Instance::instList() const
return NULL;
}
-QString Instance::minecraftDir() const
+QString BaseInstance::minecraftDir() const
{
QFileInfo mcDir(PathCombine(rootDir(), "minecraft"));
QFileInfo dotMCDir(PathCombine(rootDir(), ".minecraft"));
@@ -106,78 +105,73 @@ QString Instance::minecraftDir() const
return mcDir.filePath();
}
-QString Instance::instModsDir() const
+QString BaseInstance::instModsDir() const
{
return PathCombine(rootDir(), "instMods");
}
-QString Instance::binDir() const
+QString BaseInstance::binDir() const
{
return PathCombine(minecraftDir(), "bin");
}
-QString Instance::savesDir() const
+QString BaseInstance::savesDir() const
{
return PathCombine(minecraftDir(), "saves");
}
-QString Instance::mlModsDir() const
+QString BaseInstance::mlModsDir() const
{
return PathCombine(minecraftDir(), "mods");
}
-QString Instance::coreModsDir() const
+QString BaseInstance::coreModsDir() const
{
return PathCombine(minecraftDir(), "coremods");
}
-QString Instance::resourceDir() const
+QString BaseInstance::resourceDir() const
{
return PathCombine(minecraftDir(), "resources");
}
-QString Instance::screenshotsDir() const
+QString BaseInstance::screenshotsDir() const
{
return PathCombine(minecraftDir(), "screenshots");
}
-QString Instance::texturePacksDir() const
+QString BaseInstance::texturePacksDir() const
{
return PathCombine(minecraftDir(), "texturepacks");
}
-QString Instance::mcJar() const
+QString BaseInstance::mcJar() const
{
return PathCombine(binDir(), "minecraft.jar");
}
-QString Instance::mcBackup() const
+QString BaseInstance::mcBackup() const
{
return PathCombine(binDir(), "mcbackup.jar");
}
-QString Instance::configFile() const
-{
- return PathCombine(rootDir(), "instance.cfg");
-}
-
-QString Instance::modListFile() const
+QString BaseInstance::modListFile() const
{
return PathCombine(rootDir(), "modlist");
}
-InstVersionList *Instance::versionList() const
+InstVersionList *BaseInstance::versionList() const
{
return &MinecraftVersionList::getMainList();
}
-bool Instance::shouldUpdateCurrentVersion() const
+bool BaseInstance::shouldUpdateCurrentVersion() const
{
QFileInfo jar(mcJar());
return jar.lastModified().toUTC().toMSecsSinceEpoch() != lastCurrentVersionUpdate();
}
-void Instance::updateCurrentVersion(bool keepCurrent)
+void BaseInstance::updateCurrentVersion(bool keepCurrent)
{
QFileInfo jar(mcJar());
@@ -199,7 +193,7 @@ void Instance::updateCurrentVersion(bool keepCurrent)
}
}
-SettingsObject &Instance::settings() const
+SettingsObject &BaseInstance::settings() const
{
return *m_settings;
}
diff --git a/libmultimc/include/instance.h b/backend/BaseInstance.h
index 36db7ffb..51f55b5e 100644
--- a/libmultimc/include/instance.h
+++ b/backend/BaseInstance.h
@@ -13,8 +13,7 @@
* limitations under the License.
*/
-#ifndef INSTANCE_H
-#define INSTANCE_H
+#pragma once
#include <QObject>
#include <QDateTime>
@@ -22,7 +21,7 @@
#include <settingsobject.h>
#include "inifile.h"
-#include "instversionlist.h"
+#include "lists/InstVersionList.h"
#include "libmmc_config.h"
@@ -36,7 +35,7 @@ class InstanceList;
* To create a new instance type, create a new class inheriting from this class
* and implement the pure virtual functions.
*/
-class LIBMULTIMC_EXPORT Instance : public QObject
+class LIBMULTIMC_EXPORT BaseInstance : public QObject
{
Q_OBJECT
@@ -68,6 +67,14 @@ class LIBMULTIMC_EXPORT Instance : public QObject
Q_PROPERTY(QString group READ group WRITE setGroup)
/*!
+ * Gets the time that the instance was last launched.
+ * Stored in milliseconds since epoch.
+ * This value is usually used for things like sorting instances by the time
+ * they were last launched.
+ */
+ Q_PROPERTY(qint64 lastLaunch READ lastLaunch WRITE setLastLaunch)
+
+ /*!
* 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
* re-added to a fresh minecraft.jar file.
@@ -101,25 +108,12 @@ class LIBMULTIMC_EXPORT Instance : public QObject
/*!
- * Gets the time that the instance was last launched.
- * Stored in milliseconds since epoch.
- * This value is usually used for things like sorting instances by the time
- * they were last launched.
- */
- Q_PROPERTY(qint64 lastLaunch READ lastLaunch WRITE setLastLaunch)
-
- /*!
* Gets the last time that the current version was checked.
* This is checked against the last modified time on the jar file to see if
* the current version needs to be checked again.
*/
Q_PROPERTY(qint64 lastCurrentVersionUpdate READ lastCurrentVersionUpdate WRITE setLastCurrentVersionUpdate)
- /*!
- * Is the instance a new launcher instance? Get/Set
- */
- Q_PROPERTY(bool isForNewLauncher READ isForNewLauncher WRITE setIsForNewLauncher)
-
// Dirs
//! Path to the instance's .minecraft folder.
Q_PROPERTY(QString minecraftDir READ minecraftDir STORED false)
@@ -156,22 +150,11 @@ class LIBMULTIMC_EXPORT Instance : public QObject
//! Path to the instance's mcbackup.jar
Q_PROPERTY(QString mcBackup READ mcBackup STORED false)
- //! Path to the instance's config file.
- Q_PROPERTY(QString configFile READ configFile STORED false)
-
//! Path to the instance's modlist file.
Q_PROPERTY(QString modListFile READ modListFile STORED false)
public:
- explicit Instance(const QString &rootDir, QObject *parent = 0);
-
- // Please, for the sake of my (and everyone else's) sanity, at least keep this shit
- // *somewhat* organized. Also, documentation is semi-important here. Please don't
- // leave undocumented stuff behind.
- // As a side-note, doxygen processes comments for accessor functions and
- // properties separately, so please document properties in the massive block of
- // Q_PROPERTY declarations above rather than documenting their accessors.
-
+ explicit BaseInstance(const QString &rootDir, QObject *parent = 0);
//////// STUFF ////////
virtual QString id() const;
@@ -252,16 +235,6 @@ public:
virtual qint64 lastCurrentVersionUpdate() const { return settings().get("lastVersionUpdate").value<qint64>(); }
virtual void setLastCurrentVersionUpdate(qint64 val) { settings().set("lastVersionUpdate", val); }
- virtual bool isForNewLauncher()
- {
- return settings().get("IsForNewLauncher").value<bool>();
- }
-
- virtual void setIsForNewLauncher(bool value = true)
- {
- settings().set("IsForNewLauncher", value);
- }
-
////// Directories //////
QString minecraftDir() const;
QString instModsDir() const;
@@ -277,7 +250,6 @@ public:
////// Files //////
QString mcJar() const;
QString mcBackup() const;
- QString configFile() const;
QString modListFile() const;
@@ -328,7 +300,7 @@ signals:
/*!
* \brief Signal emitted when properties relevant to the instance view change
*/
- void propertiesChanged(Instance * inst);
+ void propertiesChanged(BaseInstance * inst);
private:
QString m_rootDir;
@@ -337,6 +309,5 @@ private:
};
// pointer for lazy people
-typedef QSharedPointer<Instance> InstancePtr;
+typedef QSharedPointer<BaseInstance> InstancePtr;
-#endif // INSTANCE_H
diff --git a/backend/CMakeLists.txt b/backend/CMakeLists.txt
new file mode 100644
index 00000000..a17b7dfe
--- /dev/null
+++ b/backend/CMakeLists.txt
@@ -0,0 +1,91 @@
+project(libMultiMC)
+
+set(CMAKE_AUTOMOC ON)
+
+# Find Qt
+find_package(Qt5Core REQUIRED)
+find_package(Qt5Network REQUIRED)
+find_package(Qt5Xml REQUIRED)
+
+# Include Qt headers.
+include_directories(${Qt5Base_INCLUDE_DIRS})
+include_directories(${Qt5Network_INCLUDE_DIRS})
+
+# Include utility library.
+include_directories(${CMAKE_SOURCE_DIR}/libutil/include)
+
+# Include settings library.
+include_directories(${CMAKE_SOURCE_DIR}/libsettings/include)
+
+SET(LIBINST_HEADERS
+libmmc_config.h
+
+# Instance Stuff
+BaseInstance.h
+LegacyInstance.h
+OneSixInstance.h
+InstanceFactory.h
+
+# Versions
+InstanceVersion.h
+MinecraftVersion.h
+OneSixVersion.h
+VersionFactory.h
+
+# Lists
+lists/InstanceList.h
+lists/InstVersionList.h
+lists/MinecraftVersionList.h
+lists/LwjglVersionList.h
+
+# Tasks
+tasks/Task.h
+tasks/LoginTask.h
+tasks/LoginResponse.h
+tasks/UserInfo.h
+tasks/GameUpdateTask.h
+
+MinecraftProcess.h
+)
+
+SET(LIBINST_SOURCES
+# Instance Stuff
+BaseInstance.cpp
+LegacyInstance.cpp
+OneSixInstance.cpp
+InstanceFactory.cpp
+
+# Versions
+InstanceVersion.cpp
+MinecraftVersion.cpp
+OneSixVersion.cpp
+VersionFactory.cpp
+
+# Lists
+lists/InstanceList.cpp
+lists/InstVersionList.cpp
+lists/MinecraftVersionList.cpp
+lists/LwjglVersionList.cpp
+
+# Tasks
+tasks/Task.cpp
+tasks/LoginTask.cpp
+tasks/GameUpdateTask.cpp
+tasks/UserInfo.cpp
+tasks/LoginResponse.cpp
+
+MinecraftProcess.cpp
+)
+
+# Set the include dir path.
+SET(LIBMULTIMC_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE)
+
+# Include self.
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(${CMAKE_BINARY_DIR}/include)
+
+add_definitions(-DLIBMULTIMC_LIBRARY)
+
+add_library(backend SHARED ${LIBINST_SOURCES} ${LIBINST_HEADERS})
+qt5_use_modules(backend Core Network Xml)
+target_link_libraries(backend libUtil libSettings)
diff --git a/libmultimc/src/instanceloader.cpp b/backend/InstanceFactory.cpp
index e30435a9..318650ae 100644
--- a/libmultimc/src/instanceloader.cpp
+++ b/backend/InstanceFactory.cpp
@@ -13,28 +13,28 @@
* limitations under the License.
*/
-#include "include/instanceloader.h"
+#include "InstanceFactory.h"
#include <QDir>
#include <QFileInfo>
-#include "include/instance.h"
+#include "BaseInstance.h"
#include "inifile.h"
#include "pathutils.h"
-InstanceLoader InstanceLoader::loader;
+InstanceFactory InstanceFactory::loader;
-InstanceLoader::InstanceLoader() :
+InstanceFactory::InstanceFactory() :
QObject(NULL)
{
}
-InstanceLoader::InstLoadError InstanceLoader::loadInstance(Instance *&inst, const QString &instDir)
+InstanceFactory::InstLoadError InstanceFactory::loadInstance(BaseInstance *&inst, const QString &instDir)
{
- Instance *loadedInst = new Instance(instDir, this);
+ BaseInstance *loadedInst = new BaseInstance(instDir, this);
// TODO: Sanity checks to verify that the instance is valid.
@@ -44,18 +44,18 @@ InstanceLoader::InstLoadError InstanceLoader::loadInstance(Instance *&inst, cons
}
-InstanceLoader::InstCreateError InstanceLoader::createInstance(Instance *&inst, const QString &instDir)
+InstanceFactory::InstCreateError InstanceFactory::createInstance(BaseInstance *&inst, const QString &instDir)
{
QDir rootDir(instDir);
qDebug(instDir.toUtf8());
if (!rootDir.exists() && !rootDir.mkpath("."))
{