rendered paste bodyclass TreeItemBase //: public QListViewItem
{
public :
TreeItemBase( QListView *parent = 0 ): /* QListViewItem( parent ),*/ mFolder( 0 ) {}
void setFolder( KMFolder * folder ) { mFolder = folder; };
const KMFolder * folder() { return mFolder; };
// Set the flag which determines if this is an alternate row
void setAlternate ( bool alternate ) {
mAlternate = alternate;
}
private:
KMFolder * mFolder;
bool mAlternate;
};
template <class T> class SimpleFolderTreeItem : public T, public TreeItemBase
{
//, TreeItemBase( listView )
public:
SimpleFolderTreeItem( QListView * listView ) : T( listView ){}
SimpleFolderTreeItem( QListView * listView, QListViewItem * afterListViewItem ) :
T( listView, afterListViewItem ) {}
SimpleFolderTreeItem( QListViewItem * listViewItem ) : T( listViewItem ) {}
SimpleFolderTreeItem( QListViewItem * listViewItem, QListViewItem * afterListViewItem ) :
T( listViewItem, afterListViewItem ) {}
void setFolder( KMFolder * folder ) { TreeItemBase::setFolder( folder ); }
const KMFolder * folder() { return TreeItemBase::folder(); }
// Set the flag which determines if this is an alternate row
void setAlternate ( bool alternate ) {
TreeItemBase::setAlternate( alternate );
}
/*
private:
KMFolder * mFolder;
bool mAlternate;
*/
};
template <> class SimpleFolderTreeItem<QCheckListItem> : public QCheckListItem, public TreeItemBase
{
public:
SimpleFolderTreeItem( QListView * listView ) :
QCheckListItem( listView, QString(), CheckBox ), TreeItemBase( listView ) {}
SimpleFolderTreeItem( QListView * listView, QListViewItem * afterListViewItem ) :
QCheckListItem( listView, afterListViewItem, QString(), CheckBox ), TreeItemBase( listView ) {}
SimpleFolderTreeItem( QListViewItem * listViewItem ) :
QCheckListItem( listViewItem, QString(), CheckBox ) {}
SimpleFolderTreeItem( QListViewItem * listViewItem, QListViewItem * afterListViewItem ) :
QCheckListItem( listViewItem, afterListViewItem, QString(), CheckBox ) {}
/*
void setFolder( KMFolder * folder ) { mFolder = folder; };
const KMFolder * folder() { return mFolder; };
// Set the flag which determines if this is an alternate row
void setAlternate ( bool alternate ) {
mAlternate = alternate;
}
private:
KMFolder * mFolder;
bool mAlternate;
*/
};
class TreeBase : public KListView
{
Q_OBJECT
public:
TreeBase( QWidget * parent, KMFolderTree *folderTree,
const QString &preSelection, bool mustBeReadWrite );
........
};
void TreeBase::recolorRows()
{
kdDebug(5006) << k_funcinfo << endl;
// Iterate through the list to set the alternate row flags.
int alt = 0;
QListViewItemIterator it ( this );
while ( it.current() ) {
QListViewItem * item = it.current() ;
if ( item->isVisible() ) {
bool visible = true;
QListViewItem * parent = item->parent();
while ( parent ) {
if (!parent->isOpen()) {
visible = false;
break;
}
parent = parent->parent();
}
if ( visible ) {
TreeBase * treeItemBase = dynamic_cast<TreeItemBase*>( it.current() );
treeItemBase->setAlternate( alt );
alt = !alt;
}
}
++it;
}
}