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 ***************************************************************************/
21 #include <QStringList>
28 extern void messageHandler(QtMsgType type, const char *msg);
30 Global *Global::instanceptr = 0;
32 Global * Global::instance() {
33 if(instanceptr) return instanceptr;
34 return instanceptr = new Global();
37 void Global::destroy() {
43 qInstallMsgHandler(messageHandler);
44 qRegisterMetaType<Message>("Message");
45 qRegisterMetaTypeStreamOperators<Message>("Message");
46 qRegisterMetaType<BufferId>("BufferId");
47 qRegisterMetaTypeStreamOperators<BufferId>("BufferId");
57 void Global::setGuiUser(UserId uid) {
61 QVariant Global::data(QString key, QVariant defval) {
62 return data(guiUser, key, defval);
65 QVariant Global::data(UserId uid, QString key, QVariant defval) {
68 if(instance()->datastore[uid].contains(key)) d = instance()->datastore[uid][key];
71 //qDebug() << "getData("<<key<<"): " << d;
75 QStringList Global::keys() {
79 QStringList Global::keys(UserId uid) {
82 k = instance()->datastore[uid].keys();
87 void Global::putData(QString key, QVariant d) {
88 putData(guiUser, key, d);
91 void Global::putData(UserId uid, QString key, QVariant d) {
93 instance()->datastore[uid][key] = d;
95 emit instance()->dataPutLocally(uid, key);
98 void Global::updateData(QString key, QVariant d) {
99 updateData(guiUser, key, d);
102 void Global::updateData(UserId uid, QString key, QVariant d) {
104 instance()->datastore[uid][key] = d;
106 emit instance()->dataUpdatedRemotely(uid, key);
111 void Global::initIconMap() {
112 // Do not depend on GUI in core!
113 QDomDocument doc("IconMap");
114 QFile file("images/iconmap.xml");
115 if(!file.open(QIODevice::ReadOnly)) {
116 qDebug() << "Error opening iconMap file!";
118 } else if(!doc.setContent(&file)) {
120 qDebug() << "Error parsing iconMap file!";
128 /**************************************************************************************/
132 BufferId::BufferId(uint _id, QString _net, QString _buf, uint _gid) : id(_id), gid(_gid), net(_net), buf(_buf) {
137 QString BufferId::buffer() const {
138 if(isChannelName(buf)) return buf;
139 else return nickFromMask(buf);
142 QDataStream &operator<<(QDataStream &out, const BufferId &bufferId) {
143 out << bufferId.id << bufferId.gid << bufferId.net.toUtf8() << bufferId.buf.toUtf8();
146 QDataStream &operator>>(QDataStream &in, BufferId &bufferId) {
149 in >> bufferId.id >> bufferId.gid >> n >> b;
150 bufferId.net = QString::fromUtf8(n);
151 bufferId.buf = QString::fromUtf8(b);
154 uint qHash(const BufferId &bid) {
155 return qHash(bid.id);
159 * Retrieves an icon determined by its symbolic name. The mapping shall later
160 * be performed by a theme manager or something like that.
161 * @param symbol Symbol of requested icon
162 * @return Pointer to a newly created QIcon
165 //QIcon *Global::getIcon(QString /*symbol*/) {
166 //if(symbol == "connect"
171 QMutex Global::mutex;
172 Global::RunMode Global::runMode;
173 UserId Global::guiUser;
174 QString Global::quasselDir;