You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
4.0 KiB
148 lines
4.0 KiB
/*
|
|
AIMAccount - Oscar Protocol Account
|
|
|
|
Copyright (c) 2002 by Chris TenHarmsel <tenharmsel@staticmethod.net>
|
|
|
|
Kopete (c) 2002 by the Kopete developers <kopete-devel@kde.org>
|
|
|
|
*************************************************************************
|
|
* *
|
|
* 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. *
|
|
* *
|
|
*************************************************************************
|
|
|
|
*/
|
|
|
|
#ifndef AIMACCOUNT_H
|
|
#define AIMACCOUNT_H
|
|
|
|
#include <tqdict.h>
|
|
#include <tqstring.h>
|
|
#include <tqwidget.h>
|
|
#include "oscartypeclasses.h"
|
|
|
|
#include "oscaraccount.h"
|
|
#include "oscarmyselfcontact.h"
|
|
|
|
namespace AIM
|
|
{
|
|
namespace PrivacySettings
|
|
{
|
|
enum { AllowAll = 0, AllowMyContacts, AllowPremitList, BlockAll, BlockAIM, BlockDenyList };
|
|
}
|
|
}
|
|
|
|
namespace Kopete
|
|
{
|
|
class Contact;
|
|
class Group;
|
|
class ChatSession;
|
|
}
|
|
|
|
class TDEAction;
|
|
class OscarContact;
|
|
class AIMContact;
|
|
class AIMAccount;
|
|
class AIMJoinChatUI;
|
|
class AIMChatSession;
|
|
class OscarVisibilityDialog;
|
|
|
|
class AIMMyselfContact : public OscarMyselfContact
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
AIMMyselfContact( AIMAccount *acct );
|
|
void userInfoUpdated();
|
|
void setOwnProfile( const TQString& newProfile );
|
|
TQString userProfile();
|
|
void setLastAwayMessage( const TQString& msg) {m_lastAwayMessage = msg;}
|
|
TQString lastAwayMessage() { return m_lastAwayMessage; };
|
|
|
|
virtual Kopete::ChatSession* manager( Kopete::Contact::CanCreateFlags = Kopete::Contact::CannotCreate,
|
|
WORD exchange = 0, const TQString& room = TQString());
|
|
|
|
public slots:
|
|
void sendMessage( Kopete::Message&, Kopete::ChatSession* session );
|
|
void chatSessionDestroyed( Kopete::ChatSession* );
|
|
|
|
private:
|
|
TQString m_profileString;
|
|
AIMAccount* m_acct;
|
|
/**
|
|
* There has GOT to be a better way to get this away message
|
|
*/
|
|
TQString m_lastAwayMessage;
|
|
TQValueList<Kopete::ChatSession*> m_chatRoomSessions;
|
|
|
|
|
|
};
|
|
|
|
class AIMAccount : public OscarAccount
|
|
{
|
|
TQ_OBJECT
|
|
|
|
|
|
public:
|
|
AIMAccount(Kopete::Protocol *parent, TQString accountID, const char *name=0L);
|
|
virtual ~AIMAccount();
|
|
|
|
// Accessor method for the action menu
|
|
virtual TDEActionMenu* actionMenu();
|
|
|
|
void setAway(bool away, const TQString &awayReason = TQString() );
|
|
|
|
virtual void connectWithPassword( const TQString &password );
|
|
|
|
void setUserProfile(const TQString &profile);
|
|
|
|
void setPrivacySettings( int privacy );
|
|
|
|
public slots:
|
|
/** Reimplementation from Kopete::Account */
|
|
void setOnlineStatus( const Kopete::OnlineStatus& status, const TQString& reason = TQString() );
|
|
void slotEditInfo();
|
|
void slotGoOnline();
|
|
|
|
void slotGlobalIdentityChanged( const TQString&, const TQVariant& );
|
|
void slotBuddyIconChanged();
|
|
|
|
void slotJoinChat();
|
|
|
|
protected slots:
|
|
void slotGoAway(const TQString&);
|
|
void joinChatDialogClosed( int );
|
|
|
|
virtual void loginActions();
|
|
virtual void disconnected( Kopete::Account::DisconnectReason reason );
|
|
virtual void messageReceived( const Oscar::Message& message );
|
|
|
|
void connectedToChatRoom( WORD exchange, const TQString& roomName );
|
|
void userJoinedChat( Oscar::WORD exchange, const TQString& room, const TQString& contact );
|
|
void userLeftChat( Oscar::WORD exchange, const TQString& room, const TQString& contact );
|
|
|
|
void slotSetVisiblility();
|
|
void slotVisibilityDialogClosed();
|
|
|
|
protected:
|
|
|
|
/**
|
|
* Implement virtual method from OscarAccount
|
|
* This allows OscarAccount to take care of adding new contacts
|
|
*/
|
|
OscarContact *createNewContact( const TQString &contactId, Kopete::MetaContact *parentContact, const SSI& ssiItem );
|
|
|
|
TQString sanitizedMessage( const TQString& message );
|
|
|
|
private:
|
|
// Set privacy tlv item
|
|
void setPrivacyTLVs( BYTE privacy, DWORD userClasses );
|
|
|
|
AIMJoinChatUI* m_joinChatDialog;
|
|
OscarVisibilityDialog* m_visibilityDialog;
|
|
};
|
|
#endif
|