diff options
author | Petr Mrázek <peterix@gmail.com> | 2013-03-18 23:00:46 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2013-03-18 23:00:46 +0100 |
commit | 65faabeed48584c461ca21d784c3f1d46f67f832 (patch) | |
tree | e814006279d0c56246e61e5c8f3bd29bc0e1c541 /libmultimc | |
parent | b84dfddd1b24e82dccb5a20d9c30570d26846e76 (diff) | |
download | PrismLauncher-65faabeed48584c461ca21d784c3f1d46f67f832.tar.gz PrismLauncher-65faabeed48584c461ca21d784c3f1d46f67f832.tar.bz2 PrismLauncher-65faabeed48584c461ca21d784c3f1d46f67f832.zip |
Connect instance list to model.
Diffstat (limited to 'libmultimc')
-rw-r--r-- | libmultimc/include/instancelist.h | 41 | ||||
-rw-r--r-- | libmultimc/src/instancelist.cpp | 40 |
2 files changed, 69 insertions, 12 deletions
diff --git a/libmultimc/include/instancelist.h b/libmultimc/include/instancelist.h index d4e7556a..3eef8bdc 100644 --- a/libmultimc/include/instancelist.h +++ b/libmultimc/include/instancelist.h @@ -17,16 +17,14 @@ #define INSTANCELIST_H #include <QObject> - #include <QSharedPointer> -#include "siglist.h" - +#include "instance.h" #include "libmmc_config.h" class Instance; -class LIBMULTIMC_EXPORT InstanceList : public QObject, public SigList< QSharedPointer<Instance> > +class LIBMULTIMC_EXPORT InstanceList : public QObject { Q_OBJECT public: @@ -46,14 +44,43 @@ public: QString instDir() const { return m_instDir; } /*! - * \brief Loads the instance list. + * \brief Loads the instance list. Triggers notifications. */ InstListError loadList(); - DEFINE_SIGLIST_SIGNALS(QSharedPointer<Instance>); - SETUP_SIGLIST_SIGNALS(QSharedPointer<Instance>); + /*! + * \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); + +signals: + void instanceAdded(int index); + void instanceChanged(int index); + void invalidated(); + protected: QString m_instDir; + QList< InstancePtr > m_instances; }; #endif // INSTANCELIST_H diff --git a/libmultimc/src/instancelist.cpp b/libmultimc/src/instancelist.cpp index 78650634..83a72afb 100644 --- a/libmultimc/src/instancelist.cpp +++ b/libmultimc/src/instancelist.cpp @@ -15,11 +15,10 @@ #include "include/instancelist.h" -#include "siglist_impl.h" - #include <QDir> #include <QFile> #include <QDirIterator> +#include <QThread> #include "include/instance.h" #include "include/instanceloader.h" @@ -37,7 +36,7 @@ InstanceList::InstListError InstanceList::loadList() { QDir dir(m_instDir); QDirIterator iter(dir); - + m_instances.clear(); while (iter.hasNext()) { QString subDir = iter.next(); @@ -78,10 +77,41 @@ InstanceList::InstListError InstanceList::loadList() qDebug(QString("Loaded instance %1").arg(inst->name()).toUtf8()); inst->setParent(this); - append(QSharedPointer<Instance>(inst)); + m_instances.append(inst); } } } - + emit invalidated(); return NoError; } + +/// Clear all instances. Triggers notifications. +void InstanceList::clear() +{ + m_instances.clear(); + emit invalidated(); +}; + +/// Add an instance. Triggers notifications, returns the new index +int InstanceList::add(InstancePtr t) +{ + m_instances.append(t); + emit instanceAdded(count() - 1); + return count() - 1; +} + +InstancePtr InstanceList::getInstanceById(QString instId) +{ + QListIterator<InstancePtr> iter(m_instances); + InstancePtr inst; + while(iter.hasNext()) + { + inst = iter.next(); + if (inst->id() == instId) + break; + } + if (inst->id() != instId) + return InstancePtr(); + else + return iter.peekPrevious(); +}
\ No newline at end of file |