All pastes #922276 Raw Edit

Anonymous

public text v1 · immutable
#922276 ·published 2008-02-28 18:08 UTC
rendered paste body
class 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() ) {
         TreeItemBase * item = dynamic_cast<TreeItemBase*>( 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 ) {
          item->setAlternate( alt );
          alt = !alt;
         }
       }

       ++it;
      }

}