summaryrefslogtreecommitdiffstats
path: root/logic/DerpVersion.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'logic/DerpVersion.cpp')
-rw-r--r--logic/DerpVersion.cpp164
1 files changed, 164 insertions, 0 deletions
diff --git a/logic/DerpVersion.cpp b/logic/DerpVersion.cpp
new file mode 100644
index 00000000..f13ac620
--- /dev/null
+++ b/logic/DerpVersion.cpp
@@ -0,0 +1,164 @@
+/* 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 "DerpVersion.h"
+
+#include <QDebug>
+
+#include "DerpVersionBuilder.h"
+
+DerpVersion::DerpVersion(DerpInstance *instance, QObject *parent)
+ : QAbstractListModel(parent), m_instance(instance)
+{
+}
+
+bool DerpVersion::reload(QWidget *widgetParent)
+{
+ return DerpVersionBuilder::build(this, m_instance, widgetParent);
+}
+
+QList<std::shared_ptr<DerpLibrary> > DerpVersion::getActiveNormalLibs()
+{
+ QList<std::shared_ptr<DerpLibrary> > output;
+ for (auto lib : libraries)
+ {
+ if (lib->isActive() && !lib->isNative())
+ {
+ output.append(lib);
+ }
+ }
+ return output;
+}
+
+QList<std::shared_ptr<DerpLibrary> > DerpVersion::getActiveNativeLibs()
+{
+ QList<std::shared_ptr<DerpLibrary> > output;
+ for (auto lib : libraries)
+ {
+ if (lib->isActive() && lib->isNative())
+ {
+ output.append(lib);
+ }
+ }
+ return output;
+}
+
+QVariant DerpVersion::data(const QModelIndex &index, int role) const
+{
+ if (!index.isValid())
+ return QVariant();
+
+ int row = index.row();
+ int column = index.column();
+
+ if (row < 0 || row >= libraries.size())
+ return QVariant();
+
+ if (role == Qt::DisplayRole)
+ {
+ switch (column)
+ {
+ case 0:
+ return libraries[row]->name();
+ case 1:
+ return libraries[row]->type();
+ case 2:
+ return libraries[row]->version();
+ default:
+ return QVariant();
+ }
+ }
+ return QVariant();
+}
+
+Qt::ItemFlags DerpVersion::flags(const QModelIndex &index) const
+{
+ if (!index.isValid())
+ return Qt::NoItemFlags;
+ int row = index.row();
+ if (libraries[row]->isActive())
+ {
+ return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemNeverHasChildren;
+ }
+ else
+ {
+ return Qt::ItemNeverHasChildren;
+ }
+ // return QAbstractListModel::flags(index);
+}
+
+QVariant DerpVersion::headerData(int section, Qt::Orientation orientation, int role) const
+{
+ if (role != Qt::DisplayRole || orientation != Qt::Horizontal)
+ return QVariant();
+ switch (section)
+ {
+ case 0:
+ return QString("Name");
+ case 1:
+ return QString("Type");
+ case 2:
+ return QString("Version");
+ default:
+ return QString();
+ }
+}
+
+int DerpVersion::rowCount(const QModelIndex &parent) const
+{
+ return libraries.size();
+}
+
+int DerpVersion::columnCount(const QModelIndex &parent) const
+{
+ return 3;
+}
+
+QDebug operator<<(QDebug &dbg, const DerpVersion *version)
+{
+ dbg.nospace() << "DerpVersion("
+ << "\n\tid=" << version->id
+ << "\n\ttime=" << version->time
+ << "\n\treleaseTime=" << version->releaseTime
+ << "\n\ttype=" << version->type
+ << "\n\tassets=" << version->assets
+ << "\n\tprocessArguments=" << version->processArguments
+ << "\n\tminecraftArguments=" << version->minecraftArguments
+ << "\n\tminimumLauncherVersion=" << version->minimumLauncherVersion
+ << "\n\tmainClass=" << version->mainClass
+ << "\n\tlibraries=";
+ for (auto lib : version->libraries)
+ {
+ dbg.nospace() << "\n\t\t" << lib.get();
+ }
+ dbg.nospace() << "\n)";
+ return dbg.maybeSpace();
+}
+QDebug operator<<(QDebug &dbg, const DerpLibrary *library)
+{
+ dbg.nospace() << "DerpLibrary("
+ << "\n\t\t\trawName=" << library->rawName()
+ << "\n\t\t\tname=" << library->name()
+ << "\n\t\t\tversion=" << library->version()
+ << "\n\t\t\ttype=" << library->type()
+ << "\n\t\t\tisActive=" << library->isActive()
+ << "\n\t\t\tisNative=" << library->isNative()
+ << "\n\t\t\tdownloadUrl=" << library->downloadUrl()
+ << "\n\t\t\tstoragePath=" << library->storagePath()
+ << "\n\t\t\tabsolutePath=" << library->absoluteUrl()
+ << "\n\t\t\thint=" << library->hint();
+ dbg.nospace() << "\n\t\t)";
+ return dbg.maybeSpace();
+}