/* yahooconferencemessagemanager.h - Yahoo Conference Message Manager Copyright (c) 2003 by Duncan Mac-Vicar Copyright (c) 2005 by André Duffeck Kopete (c) 2002-2005 by the Kopete developers ************************************************************************* * * * This program 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 #include #include #include #include #include #include #include #include #include "yahooconferencemessagemanager.h" #include "yahoocontact.h" #include "yahooaccount.h" #include "yahooinvitelistimpl.h" YahooConferenceChatSession::YahooConferenceChatSession( const TQString & yahooRoom, Kopete::Protocol *protocol, const Kopete::Contact *user, Kopete::ContactPtrList others, const char *name ) : Kopete::ChatSession( user, others, protocol, name ) { Kopete::ChatSessionManager::self()->registerChatSession( this ); setInstance(protocol->instance()); connect ( this, TQT_SIGNAL( messageSent ( Kopete::Message &, Kopete::ChatSession * ) ), TQT_SLOT( slotMessageSent ( Kopete::Message &, Kopete::ChatSession * ) ) ); m_yahooRoom = yahooRoom; m_actionInvite = new TDEAction( i18n( "&Invite others" ), "kontact_contacts", this, TQT_SLOT( slotInviteOthers() ), actionCollection(), "yahooInvite"); setXMLFile("yahooconferenceui.rc"); } YahooConferenceChatSession::~YahooConferenceChatSession() { emit leavingConference( this ); } YahooAccount *YahooConferenceChatSession::account() { return static_cast< YahooAccount *>( Kopete::ChatSession::account() ); } const TQString &YahooConferenceChatSession::room() { return m_yahooRoom; } void YahooConferenceChatSession::joined( YahooContact *c ) { addContact( c ); } void YahooConferenceChatSession::left( YahooContact *c ) { removeContact( c ); } void YahooConferenceChatSession::slotMessageSent( Kopete::Message & message, Kopete::ChatSession * ) { kdDebug ( YAHOO_GEN_DEBUG ) << k_funcinfo << endl; YahooAccount *acc = dynamic_cast< YahooAccount *>( account() ); if( acc ) acc->sendConfMessage( this, message ); appendMessage( message ); messageSucceeded(); } void YahooConferenceChatSession::slotInviteOthers() { TQStringList buddies; TQDictIterator it( account()->contacts() ); Kopete::Contact *myself = account()->myself(); for( ; it.current(); ++it ) { if( (*it) != myself && !members().contains( *it ) ) buddies.push_back( (*it)->contactId() ); } YahooInviteListImpl *dlg = new YahooInviteListImpl( Kopete::UI::Global::mainWidget() ); TQObject::connect( dlg, TQT_SIGNAL( readyToInvite( const TQString &, const TQStringList &, const TQStringList &, const TQString & ) ), account(), TQT_SLOT( slotAddInviteConference( const TQString &, const TQStringList &, const TQStringList &, const TQString & ) ) ); dlg->setRoom( m_yahooRoom ); dlg->fillFriendList( buddies ); for( TQPtrList::ConstIterator it = members().begin(); it != members().end(); it++ ) dlg->addParticipant( (*it)->contactId() ); dlg->show(); } #include "yahooconferencemessagemanager.moc" // vim: set noet ts=4 sts=4 sw=4: