- Fixed a bug where all messages where marked as highlighted, when not connected to the according network.
-void Client::recvMessage(const Message &msg) {
+void Client::recvMessage(Message &msg) {
+ Buffer *b;
+
if(msg.type() == Message::Error) {
if(msg.type() == Message::Error) {
- Buffer *b = buffer(msg.bufferInfo().bufferId());
- if(b) {
- b->appendMsg(msg);
- networkModel()->updateBufferActivity(msg);
- } else {
- //TODO: display message in the status buffer
+ b = buffer(msg.bufferInfo().bufferId());
+ if(!b) {
+ // FIXME: if buffer doesn't exist, forward the message to the status or current buffer
b = buffer(msg.bufferInfo());
b = buffer(msg.bufferInfo());
- b->appendMsg(msg);
- networkModel()->updateBufferActivity(msg);
- Buffer *b = buffer(msg.bufferInfo());
- b->appendMsg(msg);
- networkModel()->updateBufferActivity(msg);
+ b = buffer(msg.bufferInfo());
+
+ checkForHighlight(msg);
+ b->appendMsg(msg);
+ networkModel()->updateBufferActivity(msg);
+
if(msg.type() == Message::Plain || msg.type() == Message::Notice || msg.type() == Message::Action) {
const Network *net = network(msg.bufferInfo().networkId());
QString networkName = net != 0
if(msg.type() == Message::Plain || msg.type() == Message::Notice || msg.type() == Message::Action) {
const Network *net = network(msg.bufferInfo().networkId());
QString networkName = net != 0
Buffer *b = buffer(id);
foreach(QVariant v, msgs) {
Message msg = v.value<Message>();
Buffer *b = buffer(id);
foreach(QVariant v, msgs) {
Message msg = v.value<Message>();
+ checkForHighlight(msg);
b->prependMsg(msg);
networkModel()->updateBufferActivity(msg);
if(!layoutQueue.contains(b)) layoutQueue.append(b);
b->prependMsg(msg);
networkModel()->updateBufferActivity(msg);
if(!layoutQueue.contains(b)) layoutQueue.append(b);
return instance()->mainUi->layoutMsg(msg);
}
return instance()->mainUi->layoutMsg(msg);
}
+void Client::checkForHighlight(Message &msg) const {
+ const Network *net = network(msg.bufferInfo().networkId());
+ if(net && !net->myNick().isEmpty()) {
+ QRegExp nickRegExp("^(.*\\W)?" + QRegExp::escape(net->myNick()) + "(\\W.*)?$");
+ if((msg.type() == Message::Plain || msg.type() == Message::Notice || msg.type() == Message::Action) && nickRegExp.exactMatch(msg.text()))
+ msg.setFlags(msg.flags() | Message::Highlight);
+ }
+}
enum ClientMode { LocalCore, RemoteCore };
enum ClientMode { LocalCore, RemoteCore };
+ void checkForHighlight(Message &msg) const;
+
signals:
void sendInput(BufferInfo, QString message);
void showBuffer(Buffer *);
signals:
void sendInput(BufferInfo, QString message);
void showBuffer(Buffer *);
//void networkConnected(NetworkId);
//void networkDisconnected(NetworkId);
//void networkConnected(NetworkId);
//void networkDisconnected(NetworkId);
- void recvMessage(const Message &message);
+ void recvMessage(Message &message);
void recvStatusMsg(QString network, QString message);
void recvBacklogData(BufferInfo, QVariantList, bool);
void updateBufferInfo(BufferInfo);
void recvStatusMsg(QString network, QString message);
void recvBacklogData(BufferInfo, QVariantList, bool);
void updateBufferInfo(BufferInfo);
if(msg.type() == Message::Plain || msg.type() == Message::Notice)
level |= BufferItem::NewMessage;
if(msg.type() == Message::Plain || msg.type() == Message::Notice)
level |= BufferItem::NewMessage;
-
- const Network *net = Client::network(msg.bufferInfo().networkId());
- if(net) {
- QRegExp nickRegExp("^(.*\\W)?"+net->myNick()+"(\\W.*)?$");
- if((msg.type() == Message::Plain || msg.type() == Message::Notice || msg.type() == Message::Action) && nickRegExp.exactMatch(msg.text()))
+ if(msg.flags() & Message::Highlight)
level |= BufferItem::Highlight;
level |= BufferItem::Highlight;
bufferItem(msg.bufferInfo())->updateActivity(level);
}
bufferItem(msg.bufferInfo())->updateActivity(level);
}
+void Message::setFlags(quint8 flags) {
+ _flags = flags;
+}
+
QString Message::mircToInternal(QString mirc) {
mirc.replace('%', "%%"); // escape % just to be sure
mirc.replace('\x02', "%B");
QString Message::mircToInternal(QString mirc) {
mirc.replace('%', "%%"); // escape % just to be sure
mirc.replace('\x02', "%B");
inline quint8 flags() const { return _flags; }
inline QDateTime timestamp() const { return _timestamp; }
inline quint8 flags() const { return _flags; }
inline QDateTime timestamp() const { return _timestamp; }
+ void setFlags(quint8 flags);
+
QString formattedTimestamp();
QString formattedSender();
QString formattedText();
QString formattedTimestamp();
QString formattedSender();
QString formattedText();
}
void ChatLine::formatMsg(Message msg) {
}
void ChatLine::formatMsg(Message msg) {
- const Network *net = Client::network(msg.bufferInfo().networkId());
- if(net) {
- QRegExp nickRegExp("^(.*\\W)?"+net->myNick()+"(\\W.*)?$");
- if((msg.type() == Message::Plain || msg.type() == Message::Notice || msg.type() == Message::Action) && nickRegExp.exactMatch(msg.text()))
- isHighlight = true;
- }
+ isHighlight = msg.flags() & Message::Highlight;
QTextOption tsOption, senderOption, textOption;
styledTimeStamp = QtUi::style()->styleString(msg.formattedTimestamp());
styledSender = QtUi::style()->styleString(msg.formattedSender());
QTextOption tsOption, senderOption, textOption;
styledTimeStamp = QtUi::style()->styleString(msg.formattedTimestamp());
styledSender = QtUi::style()->styleString(msg.formattedSender());
quasselVersion = "0.2.0-pre";
quasselDate = "2008-02-10";
quasselVersion = "0.2.0-pre";
quasselDate = "2008-02-10";
//! Minimum client build number the core needs
clientBuildNeeded = 480;
//! Minimum client build number the core needs
clientBuildNeeded = 480;