treemodel.cpp
changeset 788 78ba80b54bc4
parent 776 25e634a7e1dc
child 789 d85834ad8c54
     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 -