you can now rename query buffers
[quassel.git] / src / client / networkmodel.cpp
index c75dd57..7d64442 100644 (file)
@@ -244,7 +244,6 @@ QVariant BufferItem::data(int column, int role) const {
 }
 
 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((BufferInfo::ActivityLevel)value.toInt());
@@ -304,7 +303,7 @@ QueryBufferItem::QueryBufferItem(const BufferInfo &bufferInfo, NetworkItem *pare
   : BufferItem(bufferInfo, parent),
     _ircUser(0)
 {
-  setFlags(flags() | Qt::ItemIsDropEnabled);
+  setFlags(flags() | Qt::ItemIsDropEnabled | Qt::ItemIsEditable);
 
   const Network *net = Client::network(bufferInfo.networkId());
   if(!net)
@@ -318,7 +317,7 @@ QueryBufferItem::QueryBufferItem(const BufferInfo &bufferInfo, NetworkItem *pare
 QVariant QueryBufferItem::data(int column, int role) const {
   switch(role) {
   case NetworkModel::IrcUserRole:
-    return _ircUser;
+    return QVariant::fromValue<QObject *>(_ircUser);
   case NetworkModel::UserAwayRole:
     return (bool)_ircUser ? _ircUser->isAway() : false;
   default:
@@ -326,6 +325,27 @@ QVariant QueryBufferItem::data(int column, int role) const {
   }
 }
 
+bool QueryBufferItem::setData(int column, const QVariant &value, int role) {
+  if(column != 0)
+    return BufferItem::setData(column, value, role);
+
+  switch(role) {
+  case Qt::EditRole:
+    {
+      QString newName = value.toString();
+      if(!newName.isEmpty()) {
+       Client::renameBuffer(bufferId(), newName);
+       return true;
+      } else {
+       return false;
+      }
+    }
+    break;
+  default:
+    return BufferItem::setData(column, value, role);
+  }
+}
+
 QString QueryBufferItem::toolTip(int column) const {
   // pretty much code duplication of IrcUserItem::toolTip() but inheritance won't solve this...
   Q_UNUSED(column);
@@ -392,7 +412,7 @@ ChannelBufferItem::ChannelBufferItem(const BufferInfo &bufferInfo, AbstractTreeI
 QVariant ChannelBufferItem::data(int column, int role) const {
   switch(role) {
     case NetworkModel::IrcChannelRole:
-      return _ircChannel;
+      return QVariant::fromValue<QObject *>(_ircChannel);
     default:
       return BufferItem::data(column, role);
   }
@@ -689,8 +709,10 @@ QVariant IrcUserItem::data(int column, int role) const {
     return parent()->data(column, role);
   case NetworkModel::BufferInfoRole:
     return parent()->data(column, role);
+  case NetworkModel::IrcChannelRole:
+    return parent()->data(column, role);
   case NetworkModel::IrcUserRole:
-    return _ircUser.data();
+    return QVariant::fromValue<QObject *>(_ircUser.data());
   case NetworkModel::UserAwayRole:
     return (bool)_ircUser ? _ircUser->isAway() : false;
   default: