/* testbedcontact.cpp - Kopete Testbed Protocol Copyright (c) 2003 by Will Stephenson Kopete (c) 2002-2003 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 "testbedcontact.h" #include #include #include #include "kopeteaccount.h" #include "kopetechatsessionmanager.h" #include "kopetemetacontact.h" #include "testbedaccount.h" #include "testbedfakeserver.h" #include "testbedprotocol.h" TestbedContact::TestbedContact( Kopete::Account* _account, const TQString &uniqueName, const TestbedContactType type, const TQString &displayName, Kopete::MetaContact *parent ) : Kopete::Contact( _account, uniqueName, parent ) { kdDebug( 14210 ) << k_funcinfo << " uniqueName: " << uniqueName << ", displayName: " << displayName << endl; m_type = type; // FIXME: ? setDisplayName( displayName ); m_msgManager = 0L; setOnlineStatus( TestbedProtocol::protocol()->testbedOffline ); } TestbedContact::~TestbedContact() { } bool TestbedContact::isReachable() { return true; } void TestbedContact::serialize( TQMap< TQString, TQString > &serializedData, TQMap< TQString, TQString > & /* addressBookData */ ) { TQString value; switch ( m_type ) { case Null: value = "null"; case Echo: value = "echo"; } serializedData[ "contactType" ] = value; } Kopete::ChatSession* TestbedContact::manager( CanCreateFlags ) { kdDebug( 14210 ) << k_funcinfo << endl; if ( m_msgManager ) { return m_msgManager; } else { TQPtrList contacts; contacts.append(this); m_msgManager = Kopete::ChatSessionManager::self()->create(account()->myself(), contacts, protocol()); connect(m_msgManager, TQT_SIGNAL(messageSent(Kopete::Message&, Kopete::ChatSession*)), this, TQT_SLOT( sendMessage( Kopete::Message& ) ) ); connect(m_msgManager, TQT_SIGNAL(destroyed()), this, TQT_SLOT(slotChatSessionDestroyed())); return m_msgManager; } } TQPtrList *TestbedContact::customContextMenuActions() //OBSOLETE { //FIXME!!! this function is obsolete, we should use XMLGUI instead /*m_actionCollection = new TDEActionCollection( this, "userColl" ); m_actionPrefs = new TDEAction(i18n( "&Contact Settings" ), 0, this, TQT_SLOT( showContactSettings( )), m_actionCollection, "contactSettings" ); return m_actionCollection;*/ return 0L; } void TestbedContact::showContactSettings() { //TestbedContactSettings* p = new TestbedContactSettings( this ); //p->show(); } void TestbedContact::sendMessage( Kopete::Message &message ) { kdDebug( 14210 ) << k_funcinfo << endl; // convert to the what the server wants // For this 'protocol', there's nothing to do // send it static_cast( account() )->server()->sendMessage( message.to().first()->contactId(), message.plainBody() ); // give it back to the manager to display manager()->appendMessage( message ); // tell the manager it was sent successfully manager()->messageSucceeded(); } void TestbedContact::receivedMessage( const TQString &message ) { // Create a Kopete::Message Kopete::Message *newMessage; Kopete::ContactPtrList contactList; account(); contactList.append( account()->myself() ); newMessage = new Kopete::Message( this, contactList, message, Kopete::Message::Inbound ); // Add it to the manager manager()->appendMessage (*newMessage); delete newMessage; } void TestbedContact::slotChatSessionDestroyed() { //FIXME: the chat window was closed? Take appropriate steps. m_msgManager = 0L; } #include "testbedcontact.moc" // vim: set noet ts=4 sts=4 sw=4: