// FIXME remove
-Buffer *Client::buffer(BufferId bufferUid) {
- if(instance()->_buffers.contains(bufferUid))
- return instance()->_buffers[bufferUid];
+Buffer *Client::buffer(BufferId bufferId) {
+ if(instance()->_buffers.contains(bufferId))
+ return instance()->_buffers[bufferId];
else
return 0;
}
// FIXME remove
-Buffer *Client::buffer(BufferInfo id) {
- Buffer *buff = buffer(id.uid());
+Buffer *Client::buffer(BufferInfo bufferInfo) {
+ Buffer *buff = buffer(bufferInfo.bufferId());
if(!buff) {
Client *client = Client::instance();
- buff = new Buffer(id, client);
+ buff = new Buffer(bufferInfo, client);
connect(buff, SIGNAL(destroyed()),
client, SLOT(bufferDestroyed()));
- client->_buffers[id.uid()] = buff;
- emit client->bufferUpdated(id);
+ client->_buffers[bufferInfo.bufferId()] = buff;
+ emit client->bufferUpdated(bufferInfo);
}
Q_ASSERT(buff);
return buff;
}
void Client::recvMessage(const Message &msg) {
- Buffer *b = buffer(msg.buffer());
+ Buffer *b = buffer(msg.bufferInfo());
b->appendMsg(msg);
networkModel()->updateBufferActivity(msg);
if(msg.type() == Message::Plain || msg.type() == Message::Notice || msg.type() == Message::Action) {
// FIXME: fetch networkName();
- QString sender = ":" + msg.buffer().buffer() + ":" + msg.sender();
- Message mmsg = Message(msg.timestamp(), msg.buffer(), msg.type(), msg.text(), sender, msg.flags());
+ QString sender = ":" + msg.bufferInfo().bufferName() + ":" + msg.sender();
+ Message mmsg = Message(msg.timestamp(), msg.bufferInfo(), msg.type(), msg.text(), sender, msg.flags());
monitorBuffer()->appendMsg(mmsg);
}
_activity(NoActivity)
{
// determine BufferType
- if(bufferInfo.buffer().isEmpty())
+ if(bufferInfo.bufferName().isEmpty())
_type = StatusType;
- else if(isChannelName(bufferInfo.buffer()))
+ else if(isChannelName(bufferInfo.bufferName()))
_type = ChannelType;
else
_type = QueryType;
}
quint64 BufferItem::id() const {
- return bufferInfo().uid().toInt();
+ return bufferInfo().bufferId().toInt();
}
bool BufferItem::isStatusBuffer() const {
case NetworkModel::ItemTypeRole:
return NetworkModel::BufferItemType;
case NetworkModel::BufferIdRole:
- return qVariantFromValue(bufferInfo().uid());
+ return qVariantFromValue(bufferInfo().bufferId());
case NetworkModel::NetworkIdRole:
return qVariantFromValue(bufferInfo().networkId());
case NetworkModel::BufferInfoRole:
if(bufferType() == StatusType)
return tr("Status Buffer");
else
- return bufferInfo().buffer();
+ return bufferInfo().bufferName();
}
QString BufferItem::topic() const {
}
BufferItem *NetworkModel::existsBufferItem(const BufferInfo &bufferInfo) {
- QModelIndex bufferIdx = bufferIndex(bufferInfo.uid());
+ QModelIndex bufferIdx = bufferIndex(bufferInfo.bufferId());
if(bufferIdx.isValid())
return static_cast<BufferItem *>(bufferIdx.internalPointer());
else
if(msg.flags() & Message::Highlight)
level |= BufferItem::Highlight;
- bufferItem(msg.buffer())->updateActivity(level);
+ bufferItem(msg.bufferInfo())->updateActivity(level);
}
#include "util.h"
BufferInfo::BufferInfo()
- : _id(0),
+ : _bufferId(0),
_netid(0),
- _gid(0),
+ _groupId(0),
_bufferName(QString())
{
}
BufferInfo::BufferInfo(BufferId id, NetworkId networkid, uint gid, QString buf)
- : _id(id),
+ : _bufferId(id),
_netid(networkid),
- _gid(gid),
+ _groupId(gid),
_bufferName(buf)
{
}
-QString BufferInfo::buffer() const {
+QString BufferInfo::bufferName() const {
if(isChannelName(_bufferName))
return _bufferName;
else
}
QDebug operator<<(QDebug dbg, const BufferInfo &b) {
- dbg.nospace() << "(bufId: " << b.uid() << ", netId: " << b.networkId() << ", groupId: " << b.groupId() << ", buf: " << b.buffer() << ")";
+ dbg.nospace() << "(bufId: " << b.bufferId() << ", netId: " << b.networkId() << ", groupId: " << b.groupId() << ", buf: " << b.bufferName() << ")";
return dbg.space();
}
QDataStream &operator<<(QDataStream &out, const BufferInfo &bufferInfo) {
- out << bufferInfo._id << bufferInfo._netid << bufferInfo._gid << bufferInfo._bufferName.toUtf8();
+ out << bufferInfo._bufferId << bufferInfo._netid << bufferInfo._groupId << bufferInfo._bufferName.toUtf8();
return out;
}
QDataStream &operator>>(QDataStream &in, BufferInfo &bufferInfo) {
QByteArray buffername;
- in >> bufferInfo._id >> bufferInfo._netid >> bufferInfo._gid >> buffername;
+ in >> bufferInfo._bufferId >> bufferInfo._netid >> bufferInfo._groupId >> buffername;
bufferInfo._bufferName = QString::fromUtf8(buffername);
return in;
}
uint qHash(const BufferInfo &bufferid) {
- return qHash(bufferid._id.toInt());
+ return qHash(bufferid._bufferId.toInt());
}
BufferInfo();
BufferInfo(BufferId id, NetworkId networkid, uint gid = 0, QString buf = QString());
- inline BufferId uid() const { return _id; }
+ inline BufferId bufferId() const { return _bufferId; }
inline NetworkId networkId() const { return _netid; }
- inline uint groupId() const { return _gid; }
- QString buffer() const;
+ inline uint groupId() const { return _groupId; }
+ QString bufferName() const;
- void setGroupId(uint gid) { _gid = gid; }
+ void setGroupId(uint gid) { _groupId = gid; }
- inline bool operator==(const BufferInfo &other) const { return _id == other._id; }
+ inline bool operator==(const BufferInfo &other) const { return _bufferId == other._bufferId; }
private:
- BufferId _id;
+ BufferId _bufferId;
NetworkId _netid;
- uint _gid;
+ uint _groupId;
QString _bufferName;
friend uint qHash(const BufferInfo &);
#include <QDataStream>
-Message::Message(BufferInfo __buffer, Type __type, QString __text, QString __sender, quint8 __flags)
- : _buffer(__buffer), _text(__text), _sender(__sender), _type(__type), _flags(__flags) {
- _timestamp = QDateTime::currentDateTime().toUTC();
-}
-
-Message::Message(QDateTime __ts, BufferInfo __buffer, Type __type, QString __text, QString __sender, quint8 __flags)
- : _timestamp(__ts), _buffer(__buffer), _text(__text), _sender(__sender), _type(__type), _flags(__flags) {
-
-}
-
-MsgId Message::msgId() const {
- return _msgId;
-}
-
-void Message::setMsgId(MsgId _id) {
- _msgId = _id;
-}
-
-BufferInfo Message::buffer() const {
- return _buffer;
-}
-
-QString Message::text() const {
- return _text;
-}
-
-QString Message::sender() const {
- return _sender;
-}
-
-Message::Type Message::type() const {
- return _type;
-}
-
-quint8 Message::flags() const {
- return _flags;
-}
-
-QDateTime Message::timestamp() const {
- return _timestamp;
+Message::Message(BufferInfo bufferInfo, Type type, QString text, QString sender, quint8 flags)
+ : _timestamp(QDateTime::currentDateTime().toUTC()),
+ _bufferInfo(bufferInfo),
+ _text(text),
+ _sender(sender),
+ _type(type),
+ _flags(flags)
+{
+}
+
+Message::Message(QDateTime ts,BufferInfo bufferInfo, Type type, QString text, QString sender, quint8 flags)
+ : _timestamp(ts),
+ _bufferInfo(bufferInfo),
+ _text(text),
+ _sender(sender),
+ _type(type),
+ _flags(flags)
+{
}
QString Message::mircToInternal(QString mirc) {
}
void Message::format() {
- if(!_formattedText.isNull()) return; // already done
+ if(!_formattedText.isNull())
+ return; // already done
+
QString user = userFromMask(sender());
QString host = hostFromMask(sender());
QString nick = nickFromMask(sender());
QString txt = mircToInternal(text());
- QString bufferName = buffer().buffer();
+ QString bufferName = bufferInfo().bufferName();
_formattedTimestamp = tr("%DT[%1]").arg(timestamp().toLocalTime().toString("hh:mm:ss"));
QDataStream &operator<<(QDataStream &out, const Message &msg) {
out << (quint32)msg.timestamp().toTime_t() << (quint8)msg.type() << (quint8)msg.flags()
- << msg.buffer() << msg.sender().toUtf8() << msg.text().toUtf8();
+ << msg.bufferInfo() << msg.sender().toUtf8() << msg.text().toUtf8();
return out;
}
in >> ts >> t >> f >> buf >> s >> m;
msg._type = (Message::Type)t;
msg._flags = (quint8)f;
- msg._buffer = buf;
+ msg._bufferInfo = buf;
msg._timestamp = QDateTime::fromTime_t(ts);
msg._sender = QString::fromUtf8(s);
msg._text = QString::fromUtf8(m);
class Message {
Q_DECLARE_TR_FUNCTIONS(Message);
- public:
- /** The different types a message can have for display */
- enum Type { Plain, Notice, Action, Nick, Mode, Join, Part, Quit, Kick, Kill, Server, Info, Error };
- enum Flags { None = 0, Self = 1, PrivMsg = 2, Highlight = 4 };
+public:
+ /** The different types a message can have for display */
+ enum Type { Plain, Notice, Action, Nick, Mode, Join, Part, Quit, Kick, Kill, Server, Info, Error };
+ enum Flags { None = 0, Self = 1, PrivMsg = 2, Highlight = 4 };
- Message(BufferInfo buffer = BufferInfo(), Type type = Plain, QString text = "", QString sender = "", quint8 flags = None);
+ Message(BufferInfo bufferInfo = BufferInfo(), Type type = Plain, QString text = "", QString sender = "", quint8 flags = None);
- Message(QDateTime ts, BufferInfo buffer = BufferInfo(), Type type = Plain, QString text = "", QString sender = "", quint8 flags = None);
+ Message(QDateTime ts, BufferInfo buffer = BufferInfo(), Type type = Plain, QString text = "", QString sender = "", quint8 flags = None);
- MsgId msgId() const;
- void setMsgId(MsgId id);
+ inline MsgId msgId() const { return _msgId; }
+ inline void setMsgId(MsgId id) { _msgId = id; }
- BufferInfo buffer() const;
- QString text() const;
- QString sender() const;
- Type type() const;
- quint8 flags() const;
- QDateTime timestamp() const;
+ inline BufferInfo bufferInfo() const { return _bufferInfo; }
+ inline QString text() const { return _text; }
+ inline QString sender() const { return _sender; }
+ inline Type type() const { return _type; }
+ inline quint8 flags() const { return _flags; }
+ inline QDateTime timestamp() const { return _timestamp; }
- QString formattedTimestamp();
- QString formattedSender();
- QString formattedText();
+ QString formattedTimestamp();
+ QString formattedSender();
+ QString formattedText();
- //static QString formattedToHtml(const QString &);
+ //static QString formattedToHtml(const QString &);
- void format();
+ void format();
- private:
- QDateTime _timestamp;
- MsgId _msgId;
- BufferInfo _buffer;
- QString _text;
- QString _sender;
- Type _type;
- quint8 _flags;
+private:
+ QDateTime _timestamp;
+ MsgId _msgId;
+ BufferInfo _bufferInfo;
+ QString _text;
+ QString _sender;
+ Type _type;
+ quint8 _flags;
- QString _formattedTimestamp, _formattedSender, _formattedText; // cache
+ QString _formattedTimestamp, _formattedSender, _formattedText; // cache
- /** Convert mIRC control codes to our own */
- QString mircToInternal(QString);
+ /** Convert mIRC control codes to our own */
+ QString mircToInternal(QString);
- friend QDataStream &operator>>(QDataStream &in, Message &msg);
+ friend QDataStream &operator>>(QDataStream &in, Message &msg);
};
QDataStream &operator<<(QDataStream &out, const Message &msg);
void CoreSession::msgFromClient(BufferInfo bufinfo, QString msg) {
NetworkConnection *conn = networkConnection(bufinfo.networkId());
if(conn) {
- conn->userInput(bufinfo.buffer(), msg);
+ conn->userInput(bufinfo.bufferName(), msg);
} else {
qWarning() << "Trying to send to unconnected network!";
}
MsgId SqliteStorage::logMessage(Message msg) {
QSqlQuery *logMessageQuery = cachedQuery("insert_message");
logMessageQuery->bindValue(":time", msg.timestamp().toTime_t());
- logMessageQuery->bindValue(":bufferid", msg.buffer().uid().toInt());
+ logMessageQuery->bindValue(":bufferid", msg.bufferInfo().bufferId().toInt());
logMessageQuery->bindValue(":type", msg.type());
logMessageQuery->bindValue(":flags", msg.flags());
logMessageQuery->bindValue(":sender", msg.sender());
QSqlQuery *getLastMessageIdQuery = cachedQuery("select_lastMessage");
getLastMessageIdQuery->bindValue(":time", msg.timestamp().toTime_t());
- getLastMessageIdQuery->bindValue(":bufferid", msg.buffer().uid().toInt());
+ getLastMessageIdQuery->bindValue(":bufferid", msg.bufferInfo().bufferId().toInt());
getLastMessageIdQuery->bindValue(":type", msg.type());
getLastMessageIdQuery->bindValue(":sender", msg.sender());
getLastMessageIdQuery->exec();
if(getLastMessageIdQuery->first()) {
return getLastMessageIdQuery->value(0).toInt();
} else { // somethin went wrong... :(
- qDebug() << getLastMessageIdQuery->lastQuery() << "time/bufferid/type/sender:" << msg.timestamp().toTime_t() << msg.buffer().uid() << msg.type() << msg.sender();
+ qDebug() << getLastMessageIdQuery->lastQuery() << "time/bufferid/type/sender:" << msg.timestamp().toTime_t() << msg.bufferInfo().bufferId() << msg.type() << msg.sender();
Q_ASSERT(false);
return 0;
}
QList<Message> messagelist;
// we have to determine the real offset first
QSqlQuery *offsetQuery = cachedQuery("select_messagesOffset");
- offsetQuery->bindValue(":bufferid", buffer.uid().toInt());
+ offsetQuery->bindValue(":bufferid", buffer.bufferId().toInt());
offsetQuery->bindValue(":messageid", offset);
offsetQuery->exec();
offsetQuery->first();
// now let's select the messages
QSqlQuery *msgQuery = cachedQuery("select_messages");
- msgQuery->bindValue(":bufferid", buffer.uid().toInt());
+ msgQuery->bindValue(":bufferid", buffer.bufferId().toInt());
msgQuery->bindValue(":limit", lastmsgs);
msgQuery->bindValue(":offset", offset);
msgQuery->exec();
QList<Message> messagelist;
// we have to determine the real offset first
QSqlQuery *offsetQuery = cachedQuery("select_messagesSinceOffset");
- offsetQuery->bindValue(":bufferid", buffer.uid().toInt());
+ offsetQuery->bindValue(":bufferid", buffer.bufferId().toInt());
offsetQuery->bindValue(":since", since.toTime_t());
offsetQuery->exec();
offsetQuery->first();
// now let's select the messages
QSqlQuery *msgQuery = cachedQuery("select_messagesSince");
- msgQuery->bindValue(":bufferid", buffer.uid().toInt());
+ msgQuery->bindValue(":bufferid", buffer.bufferId().toInt());
msgQuery->bindValue(":since", since.toTime_t());
msgQuery->bindValue(":offset", offset);
msgQuery->exec();
QList<Message> SqliteStorage::requestMsgRange(BufferInfo buffer, int first, int last) {
QList<Message> messagelist;
QSqlQuery *rangeQuery = cachedQuery("select_messageRange");
- rangeQuery->bindValue(":bufferid", buffer.uid().toInt());
+ rangeQuery->bindValue(":bufferid", buffer.bufferId().toInt());
rangeQuery->bindValue(":firstmsg", first);
rangeQuery->bindValue(":lastmsg", last);
rangeQuery->exec();
// ====================
void UserInputHandler::handleAway(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
emit putCmd("AWAY", QStringList(msg));
}
}
void UserInputHandler::handleCtcp(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
QString nick = msg.section(' ', 0, 0);
QString ctcpTag = msg.section(' ', 1, 1).toUpper();
if (ctcpTag.isEmpty()) return;
}
void UserInputHandler::handleJ(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
QStringList params = msg.split(" ");
if(params.size() > 0 && !params[0].startsWith("#")) {
params[0] = QString("#%1").arg(params[0]);
}
void UserInputHandler::handleJoin(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
emit putCmd("JOIN", msg.split(" "));
}
}
void UserInputHandler::handleList(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
emit putCmd("LIST", msg.split(' ', QString::SkipEmptyParts));
}
}
void UserInputHandler::handleMode(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
emit putCmd("MODE", msg.split(' ', QString::SkipEmptyParts));
}
// TODO: show privmsgs
void UserInputHandler::handleMsg(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
QString nick = msg.section(" ", 0, 0);
msg = msg.section(" ", 1);
if(nick.isEmpty() || msg.isEmpty()) return;
}
void UserInputHandler::handleNick(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
QString nick = msg.section(' ', 0, 0);
emit putCmd("NICK", QStringList(nick));
}
}
void UserInputHandler::handleQuit(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
emit putCmd("QUIT", QStringList(msg));
}
void UserInputHandler::handleQuote(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
emit putRawLine(msg);
}
}
void UserInputHandler::handleWho(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
emit putCmd("WHO", msg.split(' '));
}
void UserInputHandler::handleWhois(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
emit putCmd("WHOIS", msg.split(' '));
}
void UserInputHandler::handleWhowas(QString bufname, QString msg) {
+ Q_UNUSED(bufname)
emit putCmd("WHOWAS", msg.split(' '));
}
void UserInputHandler::defaultHandler(QString cmd, QString bufname, QString msg) {
+ Q_UNUSED(bufname)
emit displayMsg(Message::Error, "", QString("Error: %1 %2").arg(cmd).arg(msg));
}
}
BufferInfo ChatLine::bufferInfo() const {
- return msg.buffer();
+ return msg.bufferInfo();
}
QDateTime ChatLine::timestamp() const {
BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
- Client::instance()->userInput(bufferInfo, QString("/JOIN %1").arg(bufferInfo.buffer()));
- // Client::fakeInput(index.data(NetworkModel::BufferIdRole).value<BufferId>(), QString("/JOIN %1").arg(index.sibling(index.row(), 0).data().toString()));
+ Client::userInput(bufferInfo, QString("/JOIN %1").arg(bufferInfo.bufferName()));
}
void BufferView::keyPressEvent(QKeyEvent *event) {
{ using namespace Global;
quasselVersion = "0.2.0-pre";
- quasselDate = "2008-02-02";
- quasselBuild = 444;
+ quasselDate = "2008-02-03";
+ quasselBuild = 445;
//! Minimum client build number the core needs
- clientBuildNeeded = 435;
+ clientBuildNeeded = 437;
clientVersionNeeded = quasselVersion;
//! Minimum core build number the client needs