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() {
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;