#include "DepotTree.h"
#include "Depot.h"
#include "DirEntry.h"
#include "ImageManager.h"
#include "Iupdateable.h"
#include "P4Client.h"
#include <qheader.h>
#include <qstringlist.h>
DepotTree::DepotTree( QWidget* parent, const char* name ) :
QListView( parent, name )
{
setRootIsDecorated( true );
setSorting( 0, false );
addColumn( "" );
header()->hide();
QObject::connect( this, SIGNAL(expanded(QListViewItem*)),
this, SLOT(slotExpanded(QListViewItem*)) );
}
void DepotTree::slotExpanded( QListViewItem* item )
{
// qDebug( "void DepotTree::slotExpanded( QListViewItem* item )" );
if (item == NULL) {
return;
}
QListViewItem* i = item->firstChild();
if (i == NULL) {
return;
}
if (i->text(0) == "depot-dummy") {
// update node here.
QString s = item->text(0).mid( 2 );
Perforce::Depot* d = Perforce::Depot::getDepot( s );
// remove dummy...
item->takeItem( i );
if (d != NULL) {
// get dirs
Perforce::DirEntryList lst = d->getDirEntries();
for (Perforce::DirEntry* di = lst.first(); di != NULL; di = lst.next()) {
ASSERT( di != NULL );
QListViewItem* i = new QListViewItem( item, di->getName() );
i->setPixmap( 0,
ImageManager::getInstance()->getPixmap("folder_grey.png")
);
QListViewItem* dummy = new QListViewItem( i, di->getFullPath() );
}
// get files.
Perforce::FileEntryList lst2 =
Perforce::FileEntry::getFileEntries( item->text(0) );
for (Perforce::FileEntry* fe = lst2.first(); fe != NULL; fe = lst2.next()) {
ASSERT( fe != NULL );
QString name = fe->getName();
name.append( "#0/" )
.append( QString::number(fe->getRevision()) )
.append( " <" )
.append( fe->getType() )
.append( ">" );
QListViewItem* i = new QListViewItem( item, name );
}
}
}
else {
QStringList lst = QStringList::split( "/", i->text(0) );
QString depot = lst.first();
qDebug( "Depot=%s", depot.latin1() );
Perforce::Depot* p = Perforce::Depot::getDepot( depot );
ASSERT( depot != NULL );
}
}
void DepotTree::refresh()
{
// qDebug( "DepotTree::refresh()" );
clear();
QListViewItem* item;
QListViewItem* dummy;
Perforce::DepotList lst = Perforce::Depot::getDepots( true );
for (Perforce::Depot* d = lst.first(); d != NULL; d = lst.next()) {
ASSERT( d != NULL );
QString s = d->getName();
item = new QListViewItem( this, "//" + s );
item->setPixmap( 0, ImageManager::getInstance()->getPixmap("depot.png") );
// add dummy.
dummy = new QListViewItem( item, "depot-dummy" );
}
}