/*========================================================================= | KCardDAV |-------------------------------------------------------------------------- | (c) 2010 Timothy Pearson | | This project is released under the GNU General Public License. | Please see the file COPYING for more details. |-------------------------------------------------------------------------- | CardDAV resource preferences class. ========================================================================*/ /*========================================================================= | INCLUDES ========================================================================*/ #ifndef KABC_CARDDAVPREFS_H #define KABC_CARDDAVPREFS_H #include "prefsskel.h" #include #include class QString; namespace KABC { /*========================================================================= | CLASS ========================================================================*/ /** * This class provides access to ResourceCardDav preferences. * It inherits auto-generated CardDavPrefsSkel class to add password-handling code. * KWallet is used for storing passwords. * It also adds code to allow multiple CardDAV resources to store settings in the same * config file. */ class CardDavPrefs : public CardDavPrefsSkel { public: /** * @param prefix Unique prefix of the resource instance (use identifier() method). */ CardDavPrefs(const TQString& prefix) : mWallet(NULL) , mNoWallet(false) , mPrefix(prefix) , mPassword(NO_PASSWORD) { addPrefix(prefix); } virtual ~CardDavPrefs() { kdDebug() << "removing wallet"; removeWallet(); } virtual void writeConfig(); virtual void readConfig(); /** * Sets a new password. Also, if remember password flag is true, * remembers the password in the wallet. So, if you want the password * to be properly saved, call this method after ensuring the remember flag * is set. */ void setPassword(const TQString& p); /** * Returns password. The password is taken from the wallet. * May return an empty string, if there is no password available. */ TQString password(); /** * Returns the username. */ TQString getusername(); void setRememberPassword(bool v); /** * @return A full URL to connect to CardDAV server (including username and password). */ TQString getFullUrl(); bool getUseURI(); protected: /** * Add an unique prefix to KConfigGroup, so that different instances of the resource * can use the same config file. * @param prefix Unique prefix of the resource instance. */ void addPrefix(const TQString& prefix); /** * Returns the wallet or NULL, if the wallet can't be obtained. */ KWallet::Wallet* getWallet(); /** * Tries to set a working folder for the wallet. If the wallet is not configured yet, does nothing. * @param folder the wallet working folder * @return true, if the folder has been set, and false otherwise. */ bool setWalletFolder(const TQString& folder); /** * Removes the wallet. If @p noWallet is set, the wallet has been marked inaccessible, so that subsequent * getWallet calls will not try to recreate it. */ void removeWallet(bool noWallet = false); /** * Wrire password to the wallet. * @param password password to write * @return true on success, false on failure */ bool writePasswordToWallet(const TQString& password); /** * Extracts password from the wallet. * @param password a variable to save read password to. * @return true on success, false on failure */ bool readPasswordFromWallet(TQString& password); /** * Clears password in the wallet. * @return true on success, false on failure */ bool removePasswordFromWallet(); private: static const TQString NO_PASSWORD; static const TQString WALLET_FOLDER; static const TQString WALLET_PWD_SUFFIX; KWallet::Wallet* mWallet; bool mNoWallet; TQString mPrefix; TQString mPassword; }; } // namespace KABC #endif // KABC_CARDDAVPREFS_H