-void Buffer::setVisible(bool visible) {
- _isVisible = visible;
- setActivityLevel(NoActivity);
- if(_lastRcvdMsg.msgId() > 0) setLastSeenMsg(_lastRcvdMsg.msgId());
-}
-
-void Buffer::setLastSeenMsg(const MsgId &msgId) {
- const MsgId oldLastSeen = lastSeenMsg();
- if(!oldLastSeen.isValid() || (msgId.isValid() && msgId > oldLastSeen)) {
- _lastSeenMsg = msgId;
- Client::setBufferLastSeenMsg(bufferInfo().bufferId(), msgId);
- setActivityLevel(NoActivity);
- }
-}
-
-void Buffer::setActivityLevel(ActivityLevel level) {
- _activityLevel = level;
- if(bufferInfo().bufferId() > 0) {
- Client::networkModel()->setBufferActivity(bufferInfo(), level);
- }
-}
-
-void Buffer::updateActivityLevel(const Message &msg) {
- // FIXME dirty hack to allow the lastSeen stuff to continue to work
- // will be made much nicer once Buffer dies, I hope...
- if(msg.msgId() > _lastRcvdMsg.msgId()) _lastRcvdMsg = msg;
-
- if(isVisible())
- return;
-
- if(msg.flags() & Message::Self) // don't update activity for our own messages
- return;
-
- if(lastSeenMsg().isValid() && lastSeenMsg() >= msg.msgId())
- return;
-
- ActivityLevel level = activityLevel() | OtherActivity;
- if(msg.type() & (Message::Plain | Message::Notice | Message::Action))
- level |= NewMessage;
-
- if(msg.flags() & Message::Highlight)
- level |= Highlight;
-
- if(level != activityLevel())
- setActivityLevel(level);
-}