1 /***************************************************************************
2 * Copyright (C) 2005-07 by The Quassel IRC Development Team *
3 * devel@quassel-irc.org *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19 ***************************************************************************/
28 #include <QDomDocument>
30 extern void messageHandler(QtMsgType type, const char *msg);
32 Global *Global::instanceptr = 0;
34 Global * Global::instance() {
35 if(instanceptr) return instanceptr;
36 return instanceptr = new Global();
39 void Global::destroy() {
45 qInstallMsgHandler(messageHandler);
46 qRegisterMetaType<Message>("Message");
47 qRegisterMetaTypeStreamOperators<Message>("Message");
48 qRegisterMetaType<BufferId>("BufferId");
49 qRegisterMetaTypeStreamOperators<BufferId>("BufferId");
59 void Global::setGuiUser(UserId uid) {
63 QVariant Global::data(QString key, QVariant defval) {
64 return data(guiUser, key, defval);
67 QVariant Global::data(UserId uid, QString key, QVariant defval) {
70 if(instance()->datastore[uid].contains(key)) d = instance()->datastore[uid][key];
73 //qDebug() << "getData("<<key<<"): " << d;
77 QStringList Global::keys() {
81 QStringList Global::keys(UserId uid) {
84 k = instance()->datastore[uid].keys();
89 void Global::putData(QString key, QVariant d) {
90 putData(guiUser, key, d);
93 void Global::putData(UserId uid, QString key, QVariant d) {
95 instance()->datastore[uid][key] = d;
97 emit instance()->dataPutLocally(uid, key);
100 void Global::updateData(QString key, QVariant d) {
101 updateData(guiUser, key, d);
104 void Global::updateData(UserId uid, QString key, QVariant d) {
106 instance()->datastore[uid][key] = d;
108 emit instance()->dataUpdatedRemotely(uid, key);
113 void Global::initIconMap() {
114 // Do not depend on GUI in core!
115 QDomDocument doc("IconMap");
116 QFile file("images/iconmap.xml");
117 if(!file.open(QIODevice::ReadOnly)) {
118 qDebug() << "Error opening iconMap file!";
120 } else if(!doc.setContent(&file)) {
122 qDebug() << "Error parsing iconMap file!";
130 /**************************************************************************************/
134 BufferId::BufferId(uint _id, QString _net, QString _buf, uint _gid) : id(_id), gid(_gid), net(_net), buf(_buf) {
139 QString BufferId::buffer() const {
140 if(isChannelName(buf)) return buf;
141 else return nickFromMask(buf);
144 QDataStream &operator<<(QDataStream &out, const BufferId &bufferId) {
145 out << bufferId.id << bufferId.gid << bufferId.net.toUtf8() << bufferId.buf.toUtf8();
148 QDataStream &operator>>(QDataStream &in, BufferId &bufferId) {
151 in >> bufferId.id >> bufferId.gid >> n >> b;
152 bufferId.net = QString::fromUtf8(n);
153 bufferId.buf = QString::fromUtf8(b);
156 uint qHash(const BufferId &bid) {
157 return qHash(bid.id);
161 * Retrieves an icon determined by its symbolic name. The mapping shall later
162 * be performed by a theme manager or something like that.
163 * @param symbol Symbol of requested icon
164 * @return Pointer to a newly created QIcon
167 //QIcon *Global::getIcon(QString /*symbol*/) {
168 //if(symbol == "connect"
173 QMutex Global::mutex;
174 Global::RunMode Global::runMode;
175 UserId Global::guiUser;
176 QString Global::quasselDir;