/* gwcontactlist.cpp - Kopete GroupWise Protocol Copyright (c) 2005 SUSE Linux Products GmbH http://www.suse.com Kopete (c) 2002-2005 by the Kopete developers ************************************************************************* * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public * * License as published by the Free Software Foundation; either * * version 2 of the License, or (at your option) any later version. * * * ************************************************************************* */ #include #include #include "gwcontactlist.h" #include "gwerror.h" //debug area GWContactList::GWContactList( TQObject * tqparent ) : TQObject( tqparent ), rootFolder( new GWFolder( this, 0, 0, TQString() ) ) { } GWFolder * GWContactList::addFolder( unsigned int id, unsigned int sequence, const TQString & displayName ) { if ( rootFolder ) return new GWFolder( rootFolder, id, sequence, displayName ); else return 0; } GWContactInstance * GWContactList::addContactInstance( unsigned int id, unsigned int tqparent, unsigned int sequence, const TQString & displayName, const TQString & dn ) { TQObjectList * l = queryList( "GWFolder", 0, false, true ); TQObjectListIt it( *l ); // iterate over the buttons TQObject *obj; GWContactInstance * contact = 0; while ( (obj = it.current()) != 0 ) { GWFolder * folder = ::tqqt_cast< GWFolder * >( obj ); if ( folder && folder->id == tqparent ) { contact = new GWContactInstance( folder, id, sequence, displayName, dn ); break; } ++it; } delete l; return contact; } GWFolder * GWContactList::findFolderById( unsigned int id ) { TQObjectList * l = queryList( "GWFolder", 0, false, true ); TQObjectListIt it( *l ); // iterate over the buttons TQObject *obj; GWFolder * candidate, * folder = 0; while ( (obj = it.current()) != 0 ) { candidate = ::tqqt_cast< GWFolder * >( obj ); if ( candidate->id == id ) { folder = candidate; break; } ++it; } delete l; return folder; } GWFolder * GWContactList::findFolderByName( const TQString & displayName ) { TQObjectList * l = queryList( "GWFolder", 0, false, true ); TQObjectListIt it( *l ); // iterate over the buttons TQObject *obj; GWFolder * folder = 0; while ( (obj = it.current()) != 0 ) { GWFolder * candidate = ::tqqt_cast< GWFolder * >( obj ); if ( candidate->displayName == displayName ) { folder = candidate; break; } ++it; } delete l; return folder; } int GWContactList::maxSequenceNumber() { TQObjectList * l = queryList( "GWFolder", 0, false, true ); TQObjectListIt it( *l ); // iterate over the buttons TQObject *obj; unsigned int sequence = 0; while ( (obj = it.current()) != 0 ) { GWFolder * current = ::tqqt_cast< GWFolder * >( obj ); sequence = TQMAX( sequence, current->sequence ); ++it; } delete l; return sequence; } GWContactInstanceList GWContactList::instancesWithDn( const TQString & dn ) { TQObjectList * l = queryList( "GWContactInstance", 0, false, true ); TQObjectListIt it( *l ); // iterate over the buttons TQObject *obj; GWContactInstanceList matches; while ( (obj = it.current()) != 0 ) { ++it; GWContactInstance * current = ::tqqt_cast( obj ); if ( current->dn == dn ) matches.append( current ); } delete l; return matches; } void GWContactList::removeInstance( GWContactListItem * instance ) { delete instance; } void GWContactList::removeInstanceById( unsigned int id ) { TQObjectList * l = queryList( "GWContactInstance", 0, false, true ); TQObjectListIt it( *l ); // iterate over the buttons TQObject *obj; GWContactInstanceList matches; while ( (obj = it.current()) != 0 ) { ++it; GWContactInstance * current = ::tqqt_cast( obj ); if ( current->id == id ) { delete current; break; } } delete l; } void GWContactList::dump() { kdDebug(GROUPWISE_DEBUG_GLOBAL) << k_funcinfo << endl; const TQObjectList l = childrenListObject(); if ( !l.isEmpty() ) { TQObjectListIt it( l ); // iterate over the buttons TQObject *obj; while ( (obj = it.current()) != 0 ) { GWFolder * folder = ::tqqt_cast< GWFolder * >( obj ); if ( folder ) folder->dump( 1 ); ++it; } } else kdDebug ( GROUPWISE_DEBUG_GLOBAL ) << " contact list is empty." << endl; } void GWContactList::clear() { kdDebug(GROUPWISE_DEBUG_GLOBAL) << k_funcinfo << endl; const TQObjectList l = childrenListObject(); if ( !l.isEmpty() ) { TQObjectListIt it( l ); TQObject *obj; while ( (obj = it.current()) != 0 ) { delete obj; ++it; } } } GWContactListItem::GWContactListItem( TQObject * tqparent, unsigned int theId, unsigned int theSequence, const TQString & theDisplayName ) : TQObject( tqparent), id( theId ), sequence( theSequence ), displayName( theDisplayName ) { } GWFolder::GWFolder( TQObject * tqparent, unsigned int theId, unsigned int theSequence, const TQString & theDisplayName ) : GWContactListItem( tqparent, theId, theSequence, theDisplayName ) { } void GWFolder::dump( unsigned int depth ) { TQString s; s.fill( ' ', ++depth * 2 ); kdDebug( GROUPWISE_DEBUG_GLOBAL ) << s <<"Folder " << displayName << " id: " << id << " contains: " << endl; const TQObjectList l = childrenListObject(); if ( !l.isEmpty() ) { TQObjectListIt it( l ); // iterate over the buttons TQObject *obj; while ( (obj = it.current()) != 0 ) { ++it; GWContactInstance * instance = ::tqqt_cast< GWContactInstance * >( obj ); if (instance) instance->dump( depth ); else { GWFolder * folder = ::tqqt_cast< GWFolder * >( obj ); if ( folder ) folder->dump( depth ); } } } else kdDebug( GROUPWISE_DEBUG_GLOBAL ) << s << " no contacts." << endl; } GWContactInstance::GWContactInstance( TQObject * tqparent, unsigned int theId, unsigned int theSequence, const TQString & theDisplayName, const TQString & theDn ) : GWContactListItem( tqparent, theId, theSequence, theDisplayName ), dn( theDn ) { } void GWContactInstance::dump( unsigned int depth ) { TQString s; s.fill( ' ', ++depth * 2 ); kdDebug( GROUPWISE_DEBUG_GLOBAL ) << s << "Contact " << displayName << " id: " << id << " dn: " << dn << endl; } #include "gwcontactlist.moc"