implemented TreeModel::setData() which haven't been needed yet
authorMarcus Eggenberger <egs@quassel-irc.org>
Wed, 23 Jan 2008 18:18:14 +0000 (18:18 +0000)
committerMarcus Eggenberger <egs@quassel-irc.org>
Wed, 23 Jan 2008 18:18:14 +0000 (18:18 +0000)
src/client/treemodel.cpp
src/client/treemodel.h
version.inc

index 0dc19b7..e9cf7d1 100644 (file)
@@ -232,10 +232,22 @@ SimpleTreeItem::~SimpleTreeItem() {
 }
 
 QVariant SimpleTreeItem::data(int column, int role) const {
-  if(role == Qt::DisplayRole && column < _itemData.count())
+  if(column >= columnCount() || role != Qt::DisplayRole)
+    return QVariant();
+  else
     return _itemData[column];
+}
+
+bool SimpleTreeItem::setData(int column, const QVariant &value, int role) {
+  if(column > columnCount() || role != Qt::DisplayRole)
+    return false;
+
+  if(column == columnCount())
+    _itemData.append(value);
   else
-    return QVariant();
+    _itemData[column] = value;
+
+  return true;
 }
 
 int SimpleTreeItem::columnCount() const {
@@ -262,15 +274,19 @@ PropertyMapItem::~PropertyMapItem() {
 }
   
 QVariant PropertyMapItem::data(int column, int role) const {
-  if(column >= columnCount())
-    return QVariant();
-
-  if(role != Qt::DisplayRole)
+  if(column >= columnCount() || role != Qt::DisplayRole)
     return QVariant();
 
   return property(_propertyOrder[column].toAscii());
 }
 
+bool PropertyMapItem::setData(int column, const QVariant &value, int role) {
+  if(column >= columnCount() || role != Qt::DisplayRole)
+    return false;
+
+  return setProperty(_propertyOrder[column].toAscii(), value);
+}
+
 int PropertyMapItem::columnCount() const {
   return _propertyOrder.count();
 }
@@ -402,10 +418,18 @@ QVariant TreeModel::data(const QModelIndex &index, int role) const {
   if(!index.isValid())
     return QVariant();
 
-  AbstractTreeItem *item = static_cast<AbstractTreeItem*>(index.internalPointer());
+  AbstractTreeItem *item = static_cast<AbstractTreeItem *>(index.internalPointer());
   return item->data(index.column(), role);
 }
 
+bool TreeModel::setData(const QModelIndex &index, const QVariant &value, int role) {
+  if(!index.isValid())
+    return false;
+
+  AbstractTreeItem *item = static_cast<AbstractTreeItem *>(index.internalPointer());
+  return item->setData(index.column(), value, role);
+}
+
 Qt::ItemFlags TreeModel::flags(const QModelIndex &index) const {
   AbstractTreeItem *item;
   if(!index.isValid())
index 6439233..f7159fd 100644 (file)
@@ -63,6 +63,7 @@ public:
   virtual int columnCount() const = 0;
 
   virtual QVariant data(int column, int role) const = 0;
+  virtual bool setData(int column, const QVariant &value, int role) = 0;
 
   virtual Qt::ItemFlags flags() const;
   virtual void setFlags(Qt::ItemFlags);
@@ -99,7 +100,10 @@ class SimpleTreeItem : public AbstractTreeItem {
 public:
   SimpleTreeItem(const QList<QVariant> &data, AbstractTreeItem *parent = 0);
   virtual ~SimpleTreeItem();
+
   virtual QVariant data(int column, int role) const;
+  virtual bool setData(int column, const QVariant &value, int role);
+
   virtual int columnCount() const;
 
 private:
@@ -119,6 +123,8 @@ public:
   virtual ~PropertyMapItem();
   
   virtual QVariant data(int column, int role) const;
+  virtual bool setData(int column, const QVariant &value, int role);
+
   virtual int columnCount() const;
   
   void appendProperty(const QString &property);
@@ -138,7 +144,9 @@ public:
   TreeModel(const QList<QVariant> &, QObject *parent = 0);
   virtual ~TreeModel();
 
-  QVariant data(const QModelIndex &index, int role) const;
+  virtual QVariant data(const QModelIndex &index, int role) const;
+  virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
+
   virtual Qt::ItemFlags flags(const QModelIndex &index) const;
   QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
   
index e8cf895..4c2b80d 100644 (file)
@@ -4,8 +4,8 @@
 { using namespace Global;
 
   quasselVersion = "0.2.0-pre";
-  quasselDate = "2008-01-22";
-  quasselBuild = 377;
+  quasselDate = "2008-01-23";
+  quasselBuild = 378;
 
   //! Minimum client build number the core needs
   clientBuildNeeded = 358;