/* editaccountwidget.h - Kopete Account Widget Copyright (c) 2002-2003 by Martijn Klingens Copyright (c) 2003 by Olivier Goffart 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 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 EDITACCOUNTWIDGET_H #define EDITACCOUNTWIDGET_H #include "kopete_export.h" namespace Kopete { class Account; } class KopeteEditAccountWidgetPrivate; /** * @author Olivier Goffart * * This class is used by the protocol plugins to add specific protocol fields in the add account wizard, * or in the account preferences. If the given account is 0L, then you will have to create a new account * in @ref apply(). * * Each protocol has to subclass this class, and the protocol's edit account page MUST inherits from * TQWidget too. * * We suggest to put at least these fields in the page: * * - The User login, or the accountId. you can retrieve it from @ref Kopete::Account::accountId(). This * field has to be marked as ReadOnly or shown as a label if the account already exists. Remember * that accountId should be constant after account creation! * * - The password, and the remember password checkboxes. * * - The auto connect checkbox: use @ref Kopete::Account::excludeConnect() and * @ref Kopete::Account::setExcludeConnect() to get/set this flag. * * You may add other custom fields, e.g. the nickname. To save or retrieve these settings use * @ref Kopete::ContactListElement::pluginData() with your protocol as plugin. */ class KOPETE_EXPORT KopeteEditAccountWidget { public: /** * Constructor. * * If 'account' is 0L we are in the 'add account wizard', otherwise * we are editing an existing account. */ KopeteEditAccountWidget( Kopete::Account *account ); /** * Destructor */ virtual ~KopeteEditAccountWidget(); /** * This method must be reimplemented. * It does the same as @ref AddContactPage::validateData() */ virtual bool validateData() = 0; /** * Create a new account if we are in the 'add account wizard', * otherwise update the existing account. */ virtual Kopete::Account *apply() = 0; protected: /** * Get a pointer to the Kopete::Account passed to the constructor. * You can modify it any way you like, just don't delete the object. */ Kopete::Account * account() const; /** * Set the account */ // FIXME: Is it possible to make the API not require this? A const account // in this widget seems a lot cleaner to me - Martijn void setAccount( Kopete::Account *account ); private: KopeteEditAccountWidgetPrivate *d; }; #endif