summaryrefslogtreecommitdiffstats
path: root/data/version
diff options
context:
space:
mode:
Diffstat (limited to 'data/version')
-rw-r--r--data/version/instversion.cpp32
-rw-r--r--data/version/instversion.h51
-rw-r--r--data/version/instversionlist.cpp21
-rw-r--r--data/version/instversionlist.h43
4 files changed, 147 insertions, 0 deletions
diff --git a/data/version/instversion.cpp b/data/version/instversion.cpp
new file mode 100644
index 00000000..1493153a
--- /dev/null
+++ b/data/version/instversion.cpp
@@ -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.
+ */
+
+#include "instversion.h"
+#include "instversionlist.h"
+
+InstVersion::InstVersion(InstVersionList *parent) :
+ QObject(parent)
+{
+
+}
+
+InstVersionList *InstVersion::versionList() const
+{
+ // Parent should *always* be an InstVersionList
+ if (!parent() || !parent()->inherits("InstVersionList"))
+ return NULL;
+ else
+ return (InstVersionList *)parent();
+}
diff --git a/data/version/instversion.h b/data/version/instversion.h
new file mode 100644
index 00000000..361563fd
--- /dev/null
+++ b/data/version/instversion.h
@@ -0,0 +1,51 @@
+/* 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 INSTVERSION_H
+#define INSTVERSION_H
+
+#include <QObject>
+
+class InstVersionList;
+
+class InstVersion : public QObject
+{
+ Q_OBJECT
+public:
+ // Constructs a new InstVersion with the given parent. The parent *must*
+ // be the InstVersionList that contains this InstVersion. The InstVersion
+ // should be added to the list immediately after being created as any calls
+ // to id() will likely fail unless the InstVersion is in a list.
+ explicit InstVersion(InstVersionList *parent = 0);
+
+ // Returns this InstVersion's ID. This is usually just the InstVersion's index
+ // within its InstVersionList, but not always.
+ // If this InstVersion is not in an InstVersionList, returns -1.
+ virtual int id() const = 0;
+
+ // Returns this InstVersion's name. This is displayed to the user in the GUI
+ // and is usually just the version number ("1.4.7"), for example.
+ virtual QString name() const = 0;
+
+ // Returns this InstVersion's name. This is usually displayed to the user
+ // in the GUI and specifies what kind of version this is. For example: it
+ // could be "Snapshot", "Latest Version", "MCNostalgia", etc.
+ virtual QString type() const = 0;
+
+ // Returns the version list that this InstVersion is a part of.
+ virtual InstVersionList *versionList() const;
+};
+
+#endif // INSTVERSION_H
diff --git a/data/version/instversionlist.cpp b/data/version/instversionlist.cpp
new file mode 100644
index 00000000..ab57f94c
--- /dev/null
+++ b/data/version/instversionlist.cpp
@@ -0,0 +1,21 @@
+/* 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 "instversionlist.h"
+
+InstVersionList::InstVersionList() :
+ QObject(NULL)
+{
+}
diff --git a/data/version/instversionlist.h b/data/version/instversionlist.h
new file mode 100644
index 00000000..f79bc1b0
--- /dev/null
+++ b/data/version/instversionlist.h
@@ -0,0 +1,43 @@
+/* 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 INSTVERSIONLIST_H
+#define INSTVERSIONLIST_H
+
+#include <QObject>
+
+class InstVersion;
+
+// Class that each instance type's version list derives from. Version lists are
+// the lists that keep track of the available game versions for that instance.
+// This list will not be loaded on startup. It will be loaded when the list's
+// load function is called.
+class InstVersionList : public QObject
+{
+ Q_OBJECT
+public:
+ explicit InstVersionList();
+
+ // Reloads the version list.
+ virtual void loadVersionList() = 0;
+
+ // Gets the version at the given index.
+ virtual const InstVersion *at(int i) const = 0;
+
+ // Returns the number of versions in the list.
+ virtual int count() const = 0;
+};
+
+#endif // INSTVERSIONLIST_H