//#include "nicktreemodel.h"
#include "signalproxy.h"
#include "ircuser.h"
+#include "util.h"
#include <QMapIterator>
#include <QHashIterator>
+#include <QTextCodec>
#include <QDebug>
// PUBLIC:
// ====================
bool IrcChannel::isKnownUser(IrcUser *ircuser) const {
- bool isknown = true;
-
if(ircuser == 0) {
qWarning() << "Channel" << name() << "received IrcUser Nullpointer!";
- isknown = false;
+ return false;
}
if(!_userModes.contains(ircuser)) {
qWarning() << "Channel" << name() << "received data for unknown User" << ircuser->nick();
- isknown = false;
+ return false;
}
-
- return isknown;
+
+ return true;
}
bool IrcChannel::isValidChannelUserMode(const QString &mode) const {
return userModes(networkInfo->ircUser(nick));
}
+QTextCodec *IrcChannel::codecForEncoding() const {
+ return _codecForEncoding;
+}
+
+void IrcChannel::setCodecForEncoding(const QString &name) {
+ setCodecForEncoding(QTextCodec::codecForName(name.toAscii()));
+}
+
+void IrcChannel::setCodecForEncoding(QTextCodec *codec) {
+ _codecForEncoding = codec;
+}
+
+QTextCodec *IrcChannel::codecForDecoding() const {
+ return _codecForDecoding;
+}
+
+void IrcChannel::setCodecForDecoding(const QString &name) {
+ setCodecForDecoding(QTextCodec::codecForName(name.toAscii()));
+}
+
+void IrcChannel::setCodecForDecoding(QTextCodec *codec) {
+ _codecForDecoding = codec;
+}
+
+QString IrcChannel::decodeString(const QByteArray &text) const {
+ if(!codecForDecoding()) return networkInfo->decodeString(text);
+ return ::decodeString(text, _codecForDecoding);
+}
+
+QByteArray IrcChannel::encodeString(const QString string) const {
+ if(codecForEncoding()) {
+ return _codecForEncoding->fromUnicode(string);
+ }
+ return networkInfo->encodeString(string);
+}
+
// ====================
// PUBLIC SLOTS:
// ====================
if(!_userModes.contains(ircuser) && ircuser) {
_userModes[ircuser] = QString();
ircuser->joinChannel(name());
- qDebug() << "JOIN" << name() << ircuser->nick() << ircUsers().count();
+ //qDebug() << "JOIN" << name() << ircuser->nick() << ircUsers().count();
connect(ircuser, SIGNAL(nickSet(QString)), this, SLOT(ircUserNickSet(QString)));
connect(ircuser, SIGNAL(destroyed()), this, SLOT(ircUserDestroyed()));
// if you wonder why there is no counterpart to ircUserJoined:
if(isKnownUser(ircuser)) {
_userModes.remove(ircuser);
ircuser->partChannel(name());
- qDebug() << "PART" << name() << ircuser->nick() << ircUsers().count();
+ //qDebug() << "PART" << name() << ircuser->nick() << ircUsers().count();
// if you wonder why there is no counterpart to ircUserParted:
// the joines are propagted by the ircuser. the signal ircUserParted is only for convenience
emit ircUserParted(ircuser);
Q_ASSERT(ircUser);
_userModes.remove(ircUser);
emit ircUserParted(ircUser);
- qDebug() << "DEST" << name() << ircUsers().count();
+ //qDebug() << "DEST" << name() << ircUsers().count();
}
void IrcChannel::ircUserNickSet(QString nick) {