projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Activity level is now properly handled for the currently selected buffer.
[quassel.git]
/
src
/
client
/
networkmodel.cpp
diff --git
a/src/client/networkmodel.cpp
b/src/client/networkmodel.cpp
index
75a18af
..
29ebfc9
100644
(file)
--- a/
src/client/networkmodel.cpp
+++ b/
src/client/networkmodel.cpp
@@
-22,7
+22,6
@@
#include <QAbstractItemView>
#include <QAbstractItemView>
-#include "bufferinfo.h"
#include "buffermodel.h"
#include "client.h"
#include "signalproxy.h"
#include "buffermodel.h"
#include "client.h"
#include "signalproxy.h"
@@
-40,11
+39,16
@@
NetworkItem::NetworkItem(const NetworkId &netid, AbstractTreeItem *parent)
: PropertyMapItem(QList<QString>() << "networkName" << "currentServer" << "nickCount", parent),
_networkId(netid)
{
: PropertyMapItem(QList<QString>() << "networkName" << "currentServer" << "nickCount", parent),
_networkId(netid)
{
- setFlags(Qt::ItemIsEnabled);
+ setFlags(Qt::ItemIsEnabled
| Qt::ItemIsSelectable
);
}
QVariant NetworkItem::data(int column, int role) const {
switch(role) {
}
QVariant NetworkItem::data(int column, int role) const {
switch(role) {
+ case NetworkModel::BufferIdRole:
+ if(childCount())
+ return child(0)->data(column, role);
+ else
+ return QVariant();
case NetworkModel::NetworkIdRole:
return qVariantFromValue(_networkId);
case NetworkModel::ItemTypeRole:
case NetworkModel::NetworkIdRole:
return qVariantFromValue(_networkId);
case NetworkModel::ItemTypeRole:
@@
-174,22
+178,22
@@
QString NetworkItem::toolTip(int column) const {
BufferItem::BufferItem(const BufferInfo &bufferInfo, AbstractTreeItem *parent)
: PropertyMapItem(QStringList() << "bufferName" << "topic" << "nickCount", parent),
_bufferInfo(bufferInfo),
BufferItem::BufferItem(const BufferInfo &bufferInfo, AbstractTreeItem *parent)
: PropertyMapItem(QStringList() << "bufferName" << "topic" << "nickCount", parent),
_bufferInfo(bufferInfo),
- _activity(Buffer::NoActivity)
+ _activity(Buffer
Info
::NoActivity)
{
setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled);
}
{
setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled);
}
-void BufferItem::setActivityLevel(Buffer::ActivityLevel level) {
+void BufferItem::setActivityLevel(Buffer
Info
::ActivityLevel level) {
if(_activity != level) {
_activity = level;
emit dataChanged();
}
}
if(_activity != level) {
_activity = level;
emit dataChanged();
}
}
-//void BufferItem::updateActivityLevel(Buffer::ActivityLevel level) {
void BufferItem::updateActivityLevel(const Message &msg) {
void BufferItem::updateActivityLevel(const Message &msg) {
- if(isCurrentBuffer())
+ if(isCurrentBuffer())
{
return;
return;
+ }
if(msg.flags() & Message::Self) // don't update activity for our own messages
return;
if(msg.flags() & Message::Self) // don't update activity for our own messages
return;
@@
-197,14
+201,14
@@
void BufferItem::updateActivityLevel(const Message &msg) {
if(lastSeenMsgId() >= msg.msgId())
return;
if(lastSeenMsgId() >= msg.msgId())
return;
- Buffer::ActivityLevel oldLevel = activityLevel();
+ Buffer
Info
::ActivityLevel oldLevel = activityLevel();
- _activity |= Buffer::OtherActivity;
+ _activity |= Buffer
Info
::OtherActivity;
if(msg.type() & (Message::Plain | Message::Notice | Message::Action))
if(msg.type() & (Message::Plain | Message::Notice | Message::Action))
- _activity |= Buffer::NewMessage;
+ _activity |= Buffer
Info
::NewMessage;
if(msg.flags() & Message::Highlight)
if(msg.flags() & Message::Highlight)
- _activity |= Buffer::Highlight;
+ _activity |= Buffer
Info
::Highlight;
if(oldLevel != _activity)
emit dataChanged();
if(oldLevel != _activity)
emit dataChanged();
@@
-235,7
+239,7
@@
bool BufferItem::setData(int column, const QVariant &value, int role) {
qDebug() << "BufferItem::setData(int column, const QVariant &value, int role):" << this << column << value << role;
switch(role) {
case NetworkModel::BufferActivityRole:
qDebug() << "BufferItem::setData(int column, const QVariant &value, int role):" << this << column << value << role;
switch(role) {
case NetworkModel::BufferActivityRole:
- setActivityLevel((Buffer::ActivityLevel)value.toInt());
+ setActivityLevel((Buffer
Info
::ActivityLevel)value.toInt());
return true;
default:
return PropertyMapItem::setData(column, value, role);
return true;
default:
return PropertyMapItem::setData(column, value, role);
@@
-248,6
+252,14
@@
void BufferItem::setBufferName(const QString &name) {
emit dataChanged(0);
}
emit dataChanged(0);
}
+void BufferItem::setLastSeenMsgId(const MsgId &msgId) {
+ _lastSeenMsgId = msgId;
+ if(!isCurrentBuffer()) {
+ _lastSeenMarkerMsgId = msgId;
+ }
+ setActivityLevel(BufferInfo::NoActivity);
+}
+
bool BufferItem::isCurrentBuffer() const {
return _bufferInfo.bufferId() == Client::bufferModel()->currentIndex().data(NetworkModel::BufferIdRole).value<BufferId>();
}
bool BufferItem::isCurrentBuffer() const {
return _bufferInfo.bufferId() == Client::bufferModel()->currentIndex().data(NetworkModel::BufferIdRole).value<BufferId>();
}
@@
-908,6
+920,13
@@
MsgId NetworkModel::lastSeenMsgId(BufferId bufferId) {
return _bufferItemCache[bufferId]->lastSeenMsgId();
}
return _bufferItemCache[bufferId]->lastSeenMsgId();
}
+MsgId NetworkModel::lastSeenMarkerMsgId(BufferId bufferId) {
+ if(!_bufferItemCache.contains(bufferId))
+ return MsgId();
+
+ return _bufferItemCache[bufferId]->lastSeenMarkerMsgId();
+}
+
void NetworkModel::setLastSeenMsgId(const BufferId &bufferId, const MsgId &msgId) {
BufferItem *bufferItem = findBufferItem(bufferId);
if(!bufferItem) {
void NetworkModel::setLastSeenMsgId(const BufferId &bufferId, const MsgId &msgId) {
BufferItem *bufferItem = findBufferItem(bufferId);
if(!bufferItem) {
@@
-918,10
+937,13
@@
void NetworkModel::setLastSeenMsgId(const BufferId &bufferId, const MsgId &msgId
}
void NetworkModel::updateBufferActivity(const Message &msg) {
}
void NetworkModel::updateBufferActivity(const Message &msg) {
- bufferItem(msg.bufferInfo())->updateActivityLevel(msg);
+ BufferItem *item = bufferItem(msg.bufferInfo());
+ item->updateActivityLevel(msg);
+ if(item->isCurrentBuffer())
+ emit setLastSeenMsg(item->bufferId(), msg.msgId());
}
}
-void NetworkModel::setBufferActivity(const BufferId &bufferId, Buffer::ActivityLevel level) {
+void NetworkModel::setBufferActivity(const BufferId &bufferId, Buffer
Info
::ActivityLevel level) {
BufferItem *bufferItem = findBufferItem(bufferId);
if(!bufferItem) {
qDebug() << "NetworkModel::setBufferActivity(): buffer is unknown:" << bufferId;
BufferItem *bufferItem = findBufferItem(bufferId);
if(!bufferItem) {
qDebug() << "NetworkModel::setBufferActivity(): buffer is unknown:" << bufferId;