summaryrefslogtreecommitdiffstats
path: root/libmultimc
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-03-19 06:24:34 +0100
committerPetr Mrázek <peterix@gmail.com>2013-03-19 06:24:34 +0100
commit7d7e4034f48b578c87a4651075c2b73dc236181b (patch)
treea0e58c46bb5f18726ea6e5c9039eceaeea001f0d /libmultimc
parentd67d58e662159d53ee5fde37a6f60903f6350731 (diff)
downloadMultiMC-7d7e4034f48b578c87a4651075c2b73dc236181b.tar
MultiMC-7d7e4034f48b578c87a4651075c2b73dc236181b.tar.gz
MultiMC-7d7e4034f48b578c87a4651075c2b73dc236181b.tar.lz
MultiMC-7d7e4034f48b578c87a4651075c2b73dc236181b.tar.xz
MultiMC-7d7e4034f48b578c87a4651075c2b73dc236181b.zip
Property change propagation, changing instance groups, icon preview
Diffstat (limited to 'libmultimc')
-rw-r--r--libmultimc/include/instance.h29
-rw-r--r--libmultimc/include/instancelist.h3
-rw-r--r--libmultimc/src/instancelist.cpp13
3 files changed, 41 insertions, 4 deletions
diff --git a/libmultimc/include/instance.h b/libmultimc/include/instance.h
index 9334dff8..258a0dab 100644
--- a/libmultimc/include/instance.h
+++ b/libmultimc/include/instance.h
@@ -176,16 +176,28 @@ public:
//// General Info ////
virtual QString name() { return settings().get("name").toString(); }
- virtual void setName(QString val) { settings().set("name", val); }
+ virtual void setName(QString val)
+ {
+ settings().set("name", val);
+ emit propertiesChanged(this);
+ }
virtual QString iconKey() const { return settings().get("iconKey").toString(); }
- virtual void setIconKey(QString val) { settings().set("iconKey", val); }
+ virtual void setIconKey(QString val)
+ {
+ settings().set("iconKey", val);
+ emit propertiesChanged(this);
+ }
virtual QString notes() const { return settings().get("notes").toString(); }
virtual void setNotes(QString val) { settings().set("notes", val); }
virtual QString group() const { return m_group; }
- virtual void setGroup(QString val) { m_group = val; }
+ virtual void setGroup(QString val)
+ {
+ m_group = val;
+ emit propertiesChanged(this);
+ }
virtual bool shouldRebuild() const { return settings().get("NeedsRebuild").toBool(); }
virtual void setShouldRebuild(bool val) { settings().set("NeedsRebuild", val); }
@@ -208,7 +220,10 @@ public:
virtual qint64 lastLaunch() { return settings().get("lastLaunchTime").value<qint64>(); }
virtual void setLastLaunch(qint64 val = QDateTime::currentMSecsSinceEpoch())
- { settings().set("lastLaunchTime", val); }
+ {
+ settings().set("lastLaunchTime", val);
+ emit propertiesChanged(this);
+ }
////// Directories //////
@@ -283,6 +298,12 @@ public:
*/
virtual SettingsObject &settings() const;
+signals:
+ /*!
+ * \brief Signal emitted when properties relevant to the instance view change
+ */
+ void propertiesChanged(Instance * inst);
+
private:
QString m_rootDir;
QString m_group;
diff --git a/libmultimc/include/instancelist.h b/libmultimc/include/instancelist.h
index 3eef8bdc..a0d8788a 100644
--- a/libmultimc/include/instancelist.h
+++ b/libmultimc/include/instancelist.h
@@ -78,6 +78,9 @@ signals:
void instanceChanged(int index);
void invalidated();
+private slots:
+ void propertiesChanged(Instance * inst);
+
protected:
QString m_instDir;
QList< InstancePtr > m_instances;
diff --git a/libmultimc/src/instancelist.cpp b/libmultimc/src/instancelist.cpp
index a835fcfe..f9c525d0 100644
--- a/libmultimc/src/instancelist.cpp
+++ b/libmultimc/src/instancelist.cpp
@@ -185,6 +185,7 @@ InstanceList::InstListError InstanceList::loadList()
qDebug(QString("Loaded instance %1").arg(inst->name()).toUtf8());
inst->setParent(this);
m_instances.append(inst);
+ connect(instPtr, SIGNAL(propertiesChanged(Instance*)),this, SLOT(propertiesChanged(Instance*)));
}
}
}
@@ -221,4 +222,16 @@ InstancePtr InstanceList::getInstanceById(QString instId)
return InstancePtr();
else
return iter.peekPrevious();
+}
+
+void InstanceList::propertiesChanged(Instance * inst)
+{
+ for(int i = 0; i < m_instances.count(); i++)
+ {
+ if(inst == m_instances[i].data())
+ {
+ emit instanceChanged(i);
+ break;
+ }
+ }
} \ No newline at end of file