diff options
Diffstat (limited to 'kopete/libkopete/managedconnectionaccount.h')
-rw-r--r-- | kopete/libkopete/managedconnectionaccount.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/kopete/libkopete/managedconnectionaccount.h b/kopete/libkopete/managedconnectionaccount.h new file mode 100644 index 00000000..ad29feed --- /dev/null +++ b/kopete/libkopete/managedconnectionaccount.h @@ -0,0 +1,79 @@ +/* + managedconnectionaccount.h - Kopete Account that uses a manager to + control its connection and respond to connection events + + Copyright (c) 2005 by Will Stephenson <lists@stevello.free-online.co.uk> + Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org> + + ************************************************************************* + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + ************************************************************************* +*/ + +#ifndef MANAGEDCONNECTIONACCOUNT_H +#define MANAGEDCONNECTIONACCOUNT_H + +#include "networkstatuscommon.h" + +#include "kopetepasswordedaccount.h" + +namespace Kopete +{ +class Protocol; + +/** + * A ManagedConnectionAccount queries the NetworkStatus KDED Module before trying to connect using + * connectwithPassword, starting a network connection if needed. If the network is not available, + * it delays calling performConnectWithPassword until it receives notification from the daemon + * that the network is up. The account receiveds notifications from the daemon of network failures + * and calls disconnect to set the account offline in a timely manner. + */ +class KOPETE_EXPORT ManagedConnectionAccount : public PasswordedAccount +{ + Q_OBJECT + public: + /** + * @brief ManagedConnectionAccount constructor. + * @param parent The protocol this account connects via + * @param acctId The ID of this account - should be unique within this protocol + * @param maxPasswordLength The maximum length for passwords for this account, or 0 for no limit + * @param name The name for this QObject + */ + ManagedConnectionAccount( Protocol *parent, const QString &acctId, uint maxPasswordLength = 0, const char *name = 0 ); + public slots: + /** + * @brief Begin the connection process, by checking if the connection is available with the ConnectionManager. + * This method is called by PasswordedAccount::connect() + * @param password the password to connect with. + */ + void connectWithPassword( const QString &password ); + protected: + /** + * @brief Connect to the server, once the network is available. + * This method is called by the ManagedConnectionAccount once the network is available. In this method you should set up your + * network connection and connect to the server. + */ + virtual void performConnectWithPassword( const QString & password ) = 0; + protected slots: + /** + * @brief Handle a change in the network connection + * Called by the ConnectionManager when the network comes up or fails. + * The default implementation calls performConnectWithPassword when the network goes online and connectWithPassword() was + * previously called, and calls disconnect() when the connection goes down. + * @param host For future expansion. + * @param status the new status of the network + */ + virtual void slotConnectionStatusChanged( const QString & host, NetworkStatus::EnumStatus status ); + private: + QString m_password; + bool m_waitingForConnection; +}; + +} + +#endif |