summaryrefslogtreecommitdiffstats
path: root/windowtitleupdate.cpp
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-06-16 06:04:34 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-06-16 06:04:34 -0700
commit0fa0eb2879bf72654a7febf8b977b0ba6f515658 (patch)
treec5bcdba3579ef86b342cc9671faa71a7ed5bb766 /windowtitleupdate.cpp
parentc593dea119b4c5fa77a8b2cc129d048d7d56afa4 (diff)
downloadsubsurface-0fa0eb2879bf72654a7febf8b977b0ba6f515658.tar.gz
Code cleanup: implement window title update via signal
This seems quite convoluted to me but I can't seem to make a more straight forward implementation work. The idea is that core code should never directly call into the UI. So instead the core code (this is C code) calls a helper function. That helper function calls a member function of a class which in return emits a signal. The UI code connects to that signal and acts accordingly when it is received. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'windowtitleupdate.cpp')
-rw-r--r--windowtitleupdate.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/windowtitleupdate.cpp b/windowtitleupdate.cpp
new file mode 100644
index 000000000..a22fee779
--- /dev/null
+++ b/windowtitleupdate.cpp
@@ -0,0 +1,31 @@
+#include "windowtitleupdate.h"
+
+WindowTitleUpdate *WindowTitleUpdate::m_instance = NULL;
+
+WindowTitleUpdate::WindowTitleUpdate(QObject *parent) : QObject(parent)
+{
+ Q_ASSERT_X(m_Instance == NULL, "WindowTitleUpdate", "WindowTitleUpdate recreated!");
+
+ m_instance = this;
+}
+
+WindowTitleUpdate *WindowTitleUpdate::instance()
+{
+ return m_instance;
+}
+
+WindowTitleUpdate::~WindowTitleUpdate()
+{
+ m_instance = NULL;
+}
+
+void WindowTitleUpdate::emitSignal()
+{
+ emit updateTitle();
+}
+
+extern "C" void updateWindowTitle()
+{
+ WindowTitleUpdate *wt = WindowTitleUpdate::instance();
+ wt->emitSignal();
+}