diff options
Diffstat (limited to 'tderesources/carddav/preferences.h')
-rw-r--r-- | tderesources/carddav/preferences.h | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/tderesources/carddav/preferences.h b/tderesources/carddav/preferences.h new file mode 100644 index 000000000..96a6377d2 --- /dev/null +++ b/tderesources/carddav/preferences.h @@ -0,0 +1,155 @@ +/*========================================================================= +| 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 <tdewallet.h> +#include <kdebug.h> + +class TQString; + +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" << '\n'; + 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 TDEConfigGroup, 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 + + |