+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:
+ setActivityLevel((Buffer::ActivityLevel)value.toInt());
+ return true;
+ default:
+ return PropertyMapItem::setData(column, value, role);
+ }
+ return true;
+}
+
+void BufferItem::setBufferName(const QString &name) {
+ _bufferInfo = BufferInfo(_bufferInfo.bufferId(), _bufferInfo.networkId(), _bufferInfo.type(), _bufferInfo.groupId(), name);
+ emit dataChanged(0);
+}
+
+QString BufferItem::toolTip(int column) const {
+ Q_UNUSED(column);
+ return tr("<p> %1 - %2 </p>").arg(bufferInfo().bufferId().toInt()).arg(bufferName());
+}
+
+/*
+void BufferItem::setLastMsgInsert(QDateTime msgDate) {
+ if(msgDate.isValid() && msgDate > _lastMsgInsert)
+ _lastMsgInsert = msgDate;
+}
+*/
+/*
+// FIXME emit dataChanged()
+bool BufferItem::setLastSeen() {
+ if(_lastSeen > _lastMsgInsert)
+ return false;
+
+ _lastSeen = _lastMsgInsert;
+ BufferSettings(bufferInfo().bufferId()).setLastSeen(_lastSeen);
+ return true;
+}
+
+QDateTime BufferItem::lastSeen() {
+ return _lastSeen;
+}
+*/
+
+/*****************************************
+* StatusBufferItem
+*****************************************/
+StatusBufferItem::StatusBufferItem(const BufferInfo &bufferInfo, NetworkItem *parent)
+ : BufferItem(bufferInfo, parent)
+{
+ Q_ASSERT(parent);
+ connect(parent, SIGNAL(dataChanged()), this, SIGNAL(dataChanged()));
+}
+
+QString StatusBufferItem::toolTip(int column) const {
+ Q_UNUSED(column);
+ QStringList toolTip;
+
+ QString netName = Client::network(bufferInfo().networkId())->networkName();
+ toolTip.append(tr("<b>Status buffer of %1</b>").arg(netName));
+
+ return tr("<p> %1 </p>").arg(toolTip.join("<br />"));
+}
+
+/*****************************************
+* QueryBufferItem
+*****************************************/
+QueryBufferItem::QueryBufferItem(const BufferInfo &bufferInfo, NetworkItem *parent)
+ : BufferItem(bufferInfo, parent)
+{
+ setFlags(flags() | Qt::ItemIsDropEnabled);
+}
+
+QString QueryBufferItem::toolTip(int column) const {
+ Q_UNUSED(column);
+ QStringList toolTip;
+
+ toolTip.append(tr("<b>Query with %1</b>").arg(bufferName()));
+ if(topic() != "") {
+ toolTip.append(tr("Away Message: %1").arg(topic()));
+ }
+
+ return tr("<p> %1 </p>").arg(toolTip.join("<br />"));
+}
+
+/*****************************************
+* ChannelBufferItem
+*****************************************/
+ChannelBufferItem::ChannelBufferItem(const BufferInfo &bufferInfo, AbstractTreeItem *parent)
+ : BufferItem(bufferInfo, parent),
+ _ircChannel(0)
+{
+}
+
+QString ChannelBufferItem::toolTip(int column) const {
+ Q_UNUSED(column);
+ QStringList toolTip;
+
+ toolTip.append(tr("<b>Channel %1</b>").arg(bufferName()));
+ if(isActive()) {
+ //TODO: add channel modes
+ toolTip.append(tr("<b>Users:</b> %1").arg(nickCount()));
+ if(_ircChannel) {
+ QString channelMode = _ircChannel->channelModeString(); // channelModeString is compiled on the fly -> thus cache the result
+ if(!channelMode.isEmpty())
+ toolTip.append(tr("<b>Mode:</b> %1").arg(channelMode));
+ }
+
+ BufferSettings s;
+ bool showTopic = s.value("DisplayTopicInTooltip", QVariant(false)).toBool();
+ if(showTopic) {
+ QString _topic = topic();
+ if(_topic != "") {
+ _topic.replace(QString("<"), QString("<"));
+ _topic.replace(QString(">"), QString(">"));
+ toolTip.append(QString("<font size='-2'> </font>"));
+ toolTip.append(tr("<b>Topic:</b> %1").arg(_topic));
+ }
+ }
+ } else {
+ toolTip.append(tr("Not active <br /> Double-click to join"));
+ }
+
+ return tr("<p> %1 </p>").arg(toolTip.join("<br />"));
+}
+
+void ChannelBufferItem::attachIrcChannel(IrcChannel *ircChannel) {
+ Q_ASSERT(!_ircChannel && ircChannel);