summaryrefslogtreecommitdiffstats
path: root/logic/lists
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-10-28 20:55:12 +0100
committerPetr Mrázek <peterix@gmail.com>2013-10-28 20:55:12 +0100
commit6ecb833dbf4c4930c8354dcce7967ad44c16c217 (patch)
tree268120b4b8f7716b6468a655909e1db210dfe3dc /logic/lists
parent923347729557eed76e4f7e9f6f5f1a79216de0a4 (diff)
downloadMultiMC-6ecb833dbf4c4930c8354dcce7967ad44c16c217.tar
MultiMC-6ecb833dbf4c4930c8354dcce7967ad44c16c217.tar.gz
MultiMC-6ecb833dbf4c4930c8354dcce7967ad44c16c217.tar.lz
MultiMC-6ecb833dbf4c4930c8354dcce7967ad44c16c217.tar.xz
MultiMC-6ecb833dbf4c4930c8354dcce7967ad44c16c217.zip
Fix problem with instance list not using the instance folder path
Diffstat (limited to 'logic/lists')
-rw-r--r--logic/lists/InstanceList.cpp16
-rw-r--r--logic/lists/InstanceList.h69
2 files changed, 51 insertions, 34 deletions
diff --git a/logic/lists/InstanceList.cpp b/logic/lists/InstanceList.cpp
index 9740d5a5..08985a19 100644
--- a/logic/lists/InstanceList.cpp
+++ b/logic/lists/InstanceList.cpp
@@ -34,7 +34,7 @@
const static int GROUP_FILE_FORMAT_VERSION = 1;
InstanceList::InstanceList(const QString &instDir, QObject *parent)
- : QAbstractListModel(parent), m_instDir("instances")
+ : QAbstractListModel(parent), m_instDir(instDir)
{
}
@@ -196,8 +196,8 @@ void InstanceList::loadGroupList(QMap<QString, QString> &groupMap)
if (error.error != QJsonParseError::NoError)
{
QLOG_ERROR() << QString("Failed to parse instance group file: %1 at offset %2")
- .arg(error.errorString(), QString::number(error.offset))
- .toUtf8();
+ .arg(error.errorString(), QString::number(error.offset))
+ .toUtf8();
return;
}
@@ -269,7 +269,8 @@ InstanceList::InstListError InstanceList::loadList()
m_instances.clear();
QDir dir(m_instDir);
- QDirIterator iter(dir);
+ QDirIterator iter(m_instDir, QDir::Dirs | QDir::NoDot | QDir::NoDotDot | QDir::Readable,
+ QDirIterator::FollowSymlinks);
while (iter.hasNext())
{
QString subDir = iter.next();
@@ -340,7 +341,12 @@ void InstanceList::clear()
endResetModel();
emit dataIsInvalid();
}
-;
+
+void InstanceList::on_InstFolderChanged(const Setting &setting, QVariant value)
+{
+ m_instDir = value.toString();
+ loadList();
+}
/// Add an instance. Triggers notifications, returns the new index
int InstanceList::add(InstancePtr t)
diff --git a/logic/lists/InstanceList.h b/logic/lists/InstanceList.h
index 501edeb1..3cde6bf5 100644
--- a/logic/lists/InstanceList.h
+++ b/logic/lists/InstanceList.h
@@ -3,7 +3,7 @@
* 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
@@ -29,19 +29,19 @@ class InstanceList : public QAbstractListModel
{
Q_OBJECT
private:
- void loadGroupList(QMap<QString, QString> & groupList);
+ void loadGroupList(QMap<QString, QString> &groupList);
void saveGroupList();
-
+
public:
explicit InstanceList(const QString &instDir, QObject *parent = 0);
virtual ~InstanceList();
-
+
public:
- QModelIndex index ( int row, int column = 0, const QModelIndex& parent = QModelIndex() ) const;
- int rowCount ( const QModelIndex& parent = QModelIndex() ) const;
- QVariant data ( const QModelIndex& index, int role ) const;
- Qt::ItemFlags flags ( const QModelIndex& index ) const;
-
+ QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ QVariant data(const QModelIndex &index, int role) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
enum AdditionalRoles
{
InstancePointerRole = 0x34B1CB48 ///< Return pointer to real instance
@@ -56,58 +56,69 @@ public:
NoError = 0,
UnknownError
};
-
- QString instDir() const { return m_instDir; }
-
+
+ QString instDir() const
+ {
+ return m_instDir;
+ }
+
/*!
* \brief Loads the instance list. Triggers notifications.
*/
InstListError loadList();
-
+
/*!
* \brief Get the instance at index
*/
InstancePtr at(int i) const
{
return m_instances.at(i);
- };
-
+ }
+ ;
+
/*!
* \brief Get the count of loaded instances
*/
int count() const
{
return m_instances.count();
- };
-
+ }
+ ;
+
/// Clear all instances. Triggers notifications.
void clear();
-
+
/// Add an instance. Triggers notifications, returns the new index
int add(InstancePtr t);
-
+
/// Get an instance by ID
- InstancePtr getInstanceById (QString id);
+ InstancePtr getInstanceById(QString id);
signals:
void dataIsInvalid();
-
-private slots:
- void propertiesChanged(BaseInstance * inst);
- void instanceNuked(BaseInstance * inst);
+
+public
+slots:
+ void on_InstFolderChanged(const Setting & setting, QVariant value);
+
+private
+slots:
+ void propertiesChanged(BaseInstance *inst);
+ void instanceNuked(BaseInstance *inst);
void groupChanged();
+
private:
- int getInstIndex(BaseInstance * inst);
+ int getInstIndex(BaseInstance *inst);
+
protected:
QString m_instDir;
- QList< InstancePtr > m_instances;
+ QList<InstancePtr> m_instances;
};
class InstanceProxyModel : public KCategorizedSortFilterProxyModel
{
public:
- explicit InstanceProxyModel ( QObject *parent = 0 );
+ explicit InstanceProxyModel(QObject *parent = 0);
protected:
- virtual bool subSortLessThan ( const QModelIndex& left, const QModelIndex& right ) const;
+ virtual bool subSortLessThan(const QModelIndex &left, const QModelIndex &right) const;
};
-