1.1 --- a/treemodel.cpp Sat Aug 08 21:58:26 2009 +0000
1.2 +++ b/treemodel.cpp Tue Aug 18 12:39:07 2009 +0000
1.3 @@ -3,9 +3,10 @@
1.4 #include <iostream>
1.5 using namespace std;
1.6
1.7 +#include "attributeitem.h"
1.8 #include "branchitem.h"
1.9 +#include "imageitem.h"
1.10 #include "treeitem.h"
1.11 -#include "imageitem.h"
1.12 #include "treemodel.h"
1.13
1.14 TreeModel::TreeModel(QObject *parent)
1.15 @@ -51,13 +52,33 @@
1.16 return QVariant();
1.17 }
1.18
1.19 +QModelIndex TreeModel::index (TreeItem* ti)
1.20 +{
1.21 + if (!ti->parent())
1.22 + return QModelIndex();
1.23 + else
1.24 + return createIndex (ti->row(),ti->column(),ti);
1.25 +}
1.26 +
1.27 QModelIndex TreeModel::index(int row, int column, const QModelIndex &parent)
1.28 const
1.29 {
1.30 TreeItem *parentItem;
1.31
1.32 if (!parent.isValid())
1.33 + { //FIXME-1
1.34 parentItem = rootItem;
1.35 + /*
1.36 + cout << "TM::index() no parent?! xxx\n";
1.37 + cout << " row="<<row<<" col="<<column<<endl;
1.38 + cout << " parent.internal="<< parent.internalPointer()<<endl;
1.39 + */
1.40 + //return QModelIndex(); //FIXME-0 this line is new (testing)
1.41 + // Somehow index is requested where parentIndex is invalid.
1.42 + // what's happening here...?
1.43 + // Check if Qt examples also return index of rootIem then...
1.44 +
1.45 + }
1.46 else
1.47 parentItem = getItem (parent);
1.48
1.49 @@ -73,8 +94,12 @@
1.50 if (!index.isValid())
1.51 return QModelIndex();
1.52
1.53 + //FIXME-3 cout << "TM::parent ri="<<rootItem<< " row="<<index.row()<<" col="<<index.column()<<endl;
1.54 TreeItem *ti= getItem (index);
1.55 + //cout << " ti="<<ti<<endl;
1.56 + //cout << " "<<ti->getHeadingStd()<<endl;
1.57 TreeItem *parentItem = ti->parent();
1.58 + //cout << " pi="<<parentItem<<endl;
1.59
1.60 //cout << "TreeModel::parent ti="<<ti<<" "<<ti->getHeading().toStdString()<<" pi="<<parentItem<<" "<<endl;
1.61 if (parentItem == rootItem)
1.62 @@ -192,6 +217,10 @@
1.63 TreeItem *pi= getItem (parent);
1.64 TreeItem *ti;
1.65
1.66 +/* FIXME-3
1.67 + cout << "TM::removeRows row="<<row<<" count="<<count<<endl;
1.68 + cout << " pi="<<pi<<" ti="<<ti<<endl;
1.69 +*/
1.70 for (int i=row; i<=last; i++)
1.71 {
1.72 ti=pi->getChildNum (row);
1.73 @@ -207,6 +236,9 @@
1.74 case TreeItem::Image:
1.75 delete (ImageItem*)ti;
1.76 break;
1.77 + case TreeItem::Attribute:
1.78 + delete (AttributeItem*)ti;
1.79 + break;
1.80 default:
1.81 delete ti;
1.82 break;
1.83 @@ -217,9 +249,11 @@
1.84
1.85 TreeItem *TreeModel::getItem(const QModelIndex &index) const
1.86 {
1.87 +//FIXME-3 cout << "TM::getItem "<<index.internalPointer()<<endl;
1.88 if (index.isValid()) {
1.89 TreeItem *item = static_cast<TreeItem*>(index.internalPointer());
1.90
1.91 +// cout << " item="<<item<<endl;
1.92 if (item) return item;
1.93 }
1.94 return rootItem;
1.95 @@ -230,8 +264,3 @@
1.96 return rootItem;
1.97 }
1.98
1.99 -QModelIndex TreeModel::index (TreeItem* ti)
1.100 -{
1.101 - return createIndex (ti->row(),ti->column(),ti);
1.102 -}
1.103 -