summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorAndrew <forkk@forkk.net>2013-02-20 08:32:26 -0600
committerAndrew <forkk@forkk.net>2013-02-20 08:32:59 -0600
commitf71479ec33562c9a0ebbdb335bef5e2824a12710 (patch)
tree198479995279a2a9eaa04fce405ee05b0c7df482 /plugins
parent6e5017e48b633e20bbba61ac2e7cd58e693aec4e (diff)
downloadMultiMC-f71479ec33562c9a0ebbdb335bef5e2824a12710.tar
MultiMC-f71479ec33562c9a0ebbdb335bef5e2824a12710.tar.gz
MultiMC-f71479ec33562c9a0ebbdb335bef5e2824a12710.tar.lz
MultiMC-f71479ec33562c9a0ebbdb335bef5e2824a12710.tar.xz
MultiMC-f71479ec33562c9a0ebbdb335bef5e2824a12710.zip
Added stdinstance plugin and a ton of plugin stuff.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/stdinstance/CMakeLists.txt31
-rw-r--r--plugins/stdinstance/stdinstance.cpp53
-rw-r--r--plugins/stdinstance/stdinstance.h36
-rw-r--r--plugins/stdinstance/stdinstance.json1
-rw-r--r--plugins/stdinstance/stdinstancetype.cpp34
-rw-r--r--plugins/stdinstance/stdinstancetype.h38
-rw-r--r--plugins/stdinstance/stdinstplugin.cpp27
-rw-r--r--plugins/stdinstance/stdinstplugin.h33
8 files changed, 253 insertions, 0 deletions
diff --git a/plugins/stdinstance/CMakeLists.txt b/plugins/stdinstance/CMakeLists.txt
new file mode 100644
index 00000000..503bda75
--- /dev/null
+++ b/plugins/stdinstance/CMakeLists.txt
@@ -0,0 +1,31 @@
+project(stdinstance)
+
+ADD_DEFINITIONS(-DQT_PLUGIN)
+
+# Find Qt
+find_package(Qt5Core REQUIRED)
+find_package(Qt5Network REQUIRED)
+
+# Include Qt headers.
+include_directories(${Qt5Base_INCLUDE_DIRS})
+include_directories(${Qt5Network_INCLUDE_DIRS})
+
+# Include MultiMC's headers.
+include_directories(../../)
+
+SET(STDINST_HEADERS
+stdinstplugin.h
+stdinstancetype.h
+stdinstance.h
+)
+
+SET(STDINST_SOURCES
+stdinstplugin.cpp
+stdinstancetype.cpp
+stdinstance.cpp
+)
+
+add_library(stdinstance SHARED ${STDINST_SOURCES} ${STDINST_HEADERS})
+set_target_properties(stdinstance PROPERTIES PREFIX "")
+qt5_use_modules(stdinstance Core Network)
+target_link_libraries(stdinstance quazip patchlib)
diff --git a/plugins/stdinstance/stdinstance.cpp b/plugins/stdinstance/stdinstance.cpp
new file mode 100644
index 00000000..19490965
--- /dev/null
+++ b/plugins/stdinstance/stdinstance.cpp
@@ -0,0 +1,53 @@
+/* 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 "stdinstance.h"
+
+#include <QFileInfo>
+
+#include <java/javautils.h>
+
+StdInstance::StdInstance(const QString &rootDir, QObject *parent) :
+ Instance(rootDir, parent)
+{
+
+}
+
+bool StdInstance::shouldUpdateCurrentVersion()
+{
+ QFileInfo jar(mcJar());
+ return jar.lastModified().toUTC().toMSecsSinceEpoch() != lastVersionUpdate();
+}
+
+void StdInstance::updateCurrentVersion(bool keepCurrent)
+{
+ QFileInfo jar(mcJar());
+
+ if(!jar.exists())
+ {
+ setLastVersionUpdate(0);
+ setCurrentVersion("Unknown");
+ return;
+ }
+
+ qint64 time = jar.lastModified().toUTC().toMSecsSinceEpoch();
+
+ setLastVersionUpdate(time);
+ if (!keepCurrent)
+ {
+ QString newVersion = javautils::GetMinecraftJarVersion(jar.absoluteFilePath());
+ setCurrentVersion(newVersion);
+ }
+}
diff --git a/plugins/stdinstance/stdinstance.h b/plugins/stdinstance/stdinstance.h
new file mode 100644
index 00000000..17c03f15
--- /dev/null
+++ b/plugins/stdinstance/stdinstance.h
@@ -0,0 +1,36 @@
+/* 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 STDINSTANCE_H
+#define STDINSTANCE_H
+
+#include <data/inst/instance.h>
+
+class StdInstance : public Instance
+{
+ Q_OBJECT
+public:
+ explicit StdInstance(const QString &rootDir, QObject *parent = 0);
+
+ virtual bool shouldUpdateCurrentVersion();
+
+ virtual void updateCurrentVersion(bool keepCurrent);
+
+ ////// TIMESTAMPS //////
+ virtual qint64 lastVersionUpdate() { return getField("lastVersionUpdate", 0).value<qint64>(); }
+ virtual void setLastVersionUpdate(qint64 val) { setField("lastVersionUpdate", val); }
+};
+
+#endif // STDINSTANCE_H
diff --git a/plugins/stdinstance/stdinstance.json b/plugins/stdinstance/stdinstance.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/plugins/stdinstance/stdinstance.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/stdinstance/stdinstancetype.cpp b/plugins/stdinstance/stdinstancetype.cpp
new file mode 100644
index 00000000..3e9e00a0
--- /dev/null
+++ b/plugins/stdinstance/stdinstancetype.cpp
@@ -0,0 +1,34 @@
+/* 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 "stdinstancetype.h"
+
+StdInstanceType::StdInstanceType(QObject *parent) :
+ InstanceType(parent)
+{
+
+}
+
+InstanceLoader::InstTypeError StdInstanceType::createInstance(Instance *inst,
+ const QString &instDir) const
+{
+ return InstanceLoader::NoError;
+}
+
+InstanceLoader::InstTypeError StdInstanceType::loadInstance(Instance *inst,
+ const QString &instDir) const
+{
+ return InstanceLoader::NoError;
+}
diff --git a/plugins/stdinstance/stdinstancetype.h b/plugins/stdinstance/stdinstancetype.h
new file mode 100644
index 00000000..9516aa80
--- /dev/null
+++ b/plugins/stdinstance/stdinstancetype.h
@@ -0,0 +1,38 @@
+/* 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 STDINSTANCETYPE_H
+#define STDINSTANCETYPE_H
+
+#include <data/inst/instancetype.h>
+
+class StdInstanceType : public InstanceType
+{
+ Q_OBJECT
+public:
+ explicit StdInstanceType(QObject *parent = 0);
+
+ virtual QString typeID() const { return "net.forkk.MultiMC.StdInstance"; }
+
+ virtual QString displayName() const { return "Standard Instance"; }
+
+ virtual QString description() const { return "A standard Minecraft instance."; }
+
+ virtual InstanceLoader::InstTypeError createInstance(Instance *inst, const QString &instDir) const;
+
+ virtual InstanceLoader::InstTypeError loadInstance(Instance *inst, const QString &instDir) const;
+};
+
+#endif // STDINSTANCETYPE_H
diff --git a/plugins/stdinstance/stdinstplugin.cpp b/plugins/stdinstance/stdinstplugin.cpp
new file mode 100644
index 00000000..98e12ae0
--- /dev/null
+++ b/plugins/stdinstance/stdinstplugin.cpp
@@ -0,0 +1,27 @@
+/* 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 "stdinstplugin.h"
+
+#include <QtPlugin>
+
+#include "stdinstancetype.h"
+
+QList<InstanceType *> StdInstPlugin::getInstanceTypes()
+{
+ QList<InstanceType *> types;
+ types.push_back(new StdInstanceType(this));
+ return types;
+}
diff --git a/plugins/stdinstance/stdinstplugin.h b/plugins/stdinstance/stdinstplugin.h
new file mode 100644
index 00000000..f44409bd
--- /dev/null
+++ b/plugins/stdinstance/stdinstplugin.h
@@ -0,0 +1,33 @@
+/* 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 STDINSTPLUGIN_H
+#define STDINSTPLUGIN_H
+
+#include <QObject>
+
+#include <data/plugin/instancetypeplugin.h>
+
+class StdInstPlugin : public QObject, InstanceTypePlugin
+{
+ Q_OBJECT
+ Q_INTERFACES(InstanceTypePlugin)
+ Q_PLUGIN_METADATA(IID "net.forkk.MultiMC.Plugins.StdInstance")
+
+public:
+ virtual QList<InstanceType *> getInstanceTypes();
+};
+
+#endif // STDINSTPLUGIN_H