From 0a6399b52cc72980b4847510cc183b54c75d1821 Mon Sep 17 00:00:00 2001 From: Jan Dalheimer Date: Mon, 2 Dec 2013 11:09:56 +0100 Subject: Unit testing --- logic/lists/InstanceList.cpp | 2 +- logic/lists/InstanceList.h | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'logic/lists') diff --git a/logic/lists/InstanceList.cpp b/logic/lists/InstanceList.cpp index b9595578..697694b4 100644 --- a/logic/lists/InstanceList.cpp +++ b/logic/lists/InstanceList.cpp @@ -36,11 +36,11 @@ const static int GROUP_FILE_FORMAT_VERSION = 1; InstanceList::InstanceList(const QString &instDir, QObject *parent) : QAbstractListModel(parent), m_instDir(instDir) { + connect(MMC, &MultiMC::aboutToQuit, this, &InstanceList::saveGroupList); } InstanceList::~InstanceList() { - saveGroupList(); } int InstanceList::rowCount(const QModelIndex &parent) const diff --git a/logic/lists/InstanceList.h b/logic/lists/InstanceList.h index 8cd39746..c3bb74cd 100644 --- a/logic/lists/InstanceList.h +++ b/logic/lists/InstanceList.h @@ -29,6 +29,9 @@ class InstanceList : public QAbstractListModel Q_OBJECT private: void loadGroupList(QMap &groupList); + +private +slots: void saveGroupList(); public: -- cgit From 4435016faef8a5b57ebb8fece123e6e527e83167 Mon Sep 17 00:00:00 2001 From: Jan Dalheimer Date: Mon, 2 Dec 2013 12:02:37 +0100 Subject: Fix some bugs that surfaced --- logic/lists/InstanceList.cpp | 5 +++++ logic/lists/MojangAccountList.cpp | 11 +++++++++++ 2 files changed, 16 insertions(+) (limited to 'logic/lists') diff --git a/logic/lists/InstanceList.cpp b/logic/lists/InstanceList.cpp index 697694b4..94481fb9 100644 --- a/logic/lists/InstanceList.cpp +++ b/logic/lists/InstanceList.cpp @@ -37,6 +37,11 @@ InstanceList::InstanceList(const QString &instDir, QObject *parent) : QAbstractListModel(parent), m_instDir(instDir) { connect(MMC, &MultiMC::aboutToQuit, this, &InstanceList::saveGroupList); + + if (!QDir::current().exists(m_instDir)) + { + QDir::current().mkpath(m_instDir); + } } InstanceList::~InstanceList() diff --git a/logic/lists/MojangAccountList.cpp b/logic/lists/MojangAccountList.cpp index 466cc934..439b5da6 100644 --- a/logic/lists/MojangAccountList.cpp +++ b/logic/lists/MojangAccountList.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include "logger/QsLog.h" @@ -233,6 +234,11 @@ bool MojangAccountList::loadList(const QString &filePath) return false; } + if (!QDir::current().exists(path)) + { + QDir::current().mkpath(path); + } + QFile file(path); // Try to open the file and fail if we can't. @@ -316,6 +322,11 @@ bool MojangAccountList::saveList(const QString &filePath) return false; } + if (!QDir::current().exists(path)) + { + QDir::current().mkpath(path); + } + QLOG_INFO() << "Writing account list to" << path; QLOG_DEBUG() << "Building JSON data structure."; -- cgit From dd9e04000ccd02a868138de9276f8fb93b855550 Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Sun, 15 Dec 2013 18:10:51 +0100 Subject: Improve group changing, update instance on version change Gives a list of existing groups to choose from. Instances are updated as long as there is at least one valid account. --- logic/lists/InstanceList.cpp | 14 +++++++++++++- logic/lists/InstanceList.h | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'logic/lists') diff --git a/logic/lists/InstanceList.cpp b/logic/lists/InstanceList.cpp index 94481fb9..15fd10ba 100644 --- a/logic/lists/InstanceList.cpp +++ b/logic/lists/InstanceList.cpp @@ -117,6 +117,11 @@ void InstanceList::groupChanged() saveGroupList(); } +QStringList InstanceList::getGroups() +{ + return m_groups.toList(); +} + void InstanceList::saveGroupList() { QString groupFileName = m_instDir + "/instgroups.json"; @@ -126,7 +131,7 @@ void InstanceList::saveGroupList() if (!groupFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) { // An error occurred. Ignore it. - QLOG_ERROR() << "Failed to read instance group file."; + QLOG_ERROR() << "Failed to save instance group file."; return; } QTextStream out(&groupFile); @@ -137,6 +142,10 @@ void InstanceList::saveGroupList() QString group = instance->group(); if (group.isEmpty()) continue; + + // keep a list/set of groups for choosing + m_groups.insert(group); + if (!groupMap.count(group)) { QSet set; @@ -253,6 +262,9 @@ void InstanceList::loadGroupList(QMap &groupMap) continue; } + // keep a list/set of groups for choosing + m_groups.insert(groupName); + // Iterate through the list of instances in the group. QJsonArray instancesArray = groupObj.value("instances").toArray(); diff --git a/logic/lists/InstanceList.h b/logic/lists/InstanceList.h index c3bb74cd..f23b7763 100644 --- a/logic/lists/InstanceList.h +++ b/logic/lists/InstanceList.h @@ -17,6 +17,7 @@ #include #include +#include #include "categorizedsortfilterproxymodel.h" #include @@ -97,6 +98,9 @@ public: InstancePtr getInstanceById(QString id) const; QModelIndex getInstanceIndexById(const QString &id) const; + + // FIXME: instead of iterating through all instances and forming a set, keep the set around + QStringList getGroups(); signals: void dataIsInvalid(); @@ -116,6 +120,7 @@ private: protected: QString m_instDir; QList m_instances; + QSet m_groups; }; class InstanceProxyModel : public KCategorizedSortFilterProxyModel -- cgit