Big, big, major commit this time:
[quassel.git] / main / quassel.cpp
index 9149263..cb35cc2 100644 (file)
 
 #include "quassel.h"
 #include "logger.h"
+#include "core.h"
 
-#include <QIcon>
 #include <QString>
+#include <QStringList>
 #include <QDomDocument>
 
-void Quassel::init() {
+extern void messageHandler(QtMsgType type, const char *msg);
+
+Global::Global() {
+  if(global) qFatal("Trying to instantiate more than one Global object!");
+  qInstallMsgHandler(messageHandler);
   //initIconMap();
 }
 
-void Quassel::setLogger(Logger *) {
+/*
+void Global::setLogger(Logger *) {
 
 
 };
+*/
+
+QVariant Global::getData(QString key, QVariant defval) {
+  QVariant d;
+  mutex.lock();
+  if(data.contains(key)) d = data[key];
+  else d = defval;
+  mutex.unlock();
+  //qDebug() << "getData("<<key<<"): " << d;
+  return d;
+}
+
+QStringList Global::getKeys() {
+  QStringList k;
+  mutex.lock();
+  k = data.keys();
+  mutex.unlock();
+  return k;
+}
 
+void Global::putData(QString key, QVariant d) {
+  mutex.lock();
+  data[key] = d;
+  mutex.unlock();
+  emit dataPutLocally(key);
+}
+
+void Global::updateData(QString key, QVariant d) {
+  mutex.lock();
+  data[key] = d;
+  mutex.unlock();
+  emit dataUpdatedRemotely(key);
+}
 
 /* not done yet */
-void Quassel::initIconMap() {
+void Global::initIconMap() {
+// Do not depend on GUI in core!
+/*
   QDomDocument doc("IconMap");
   QFile file("images/iconmap.xml");
   if(!file.open(QIODevice::ReadOnly)) {
@@ -49,6 +89,7 @@ void Quassel::initIconMap() {
     file.close();
 
   }
+*/
 }
 
 
@@ -58,8 +99,12 @@ void Quassel::initIconMap() {
  * @param symbol Symbol of requested icon
  * @return Pointer to a newly created QIcon
  */
-QIcon *Quassel::getIcon(QString /*symbol*/) {
+//
+//QIcon *Global::getIcon(QString /*symbol*/) {
   //if(symbol == "connect"
 
-  return 0;
-}
+//  return 0;
+//}
+
+Global *global = 0;
+Global::RunMode Global::runMode;