diff options
Diffstat (limited to 'kresources/caldav/preferences.h')
-rw-r--r-- | kresources/caldav/preferences.h | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/kresources/caldav/preferences.h b/kresources/caldav/preferences.h new file mode 100644 index 000000000..b8c3bb191 --- /dev/null +++ b/kresources/caldav/preferences.h @@ -0,0 +1,154 @@ +/*========================================================================= +| KCalDAV +|-------------------------------------------------------------------------- +| (c) 2010 Timothy Pearson +| (c) 2009 Kumaran Santhanam (initial KDE4 version) +| +| This project is released under the GNU General Public License. +| Please see the file COPYING for more details. +|-------------------------------------------------------------------------- +| CalDAV resource preferences class. + ========================================================================*/ + +/*========================================================================= +| INCLUDES + ========================================================================*/ + +#ifndef KCAL_CALDAVPREFS_H +#define KCAL_CALDAVPREFS_H + +#include "prefsskel.h" + +#include <kwallet.h> +#include <kdebug.h> + +class QString; + +namespace KCal { + +/*========================================================================= +| CLASS + ========================================================================*/ + +/** + * This class provides access to ResourceCalDav preferences. + * It inherits auto-generated CalDavPrefsSkel class to add password-handling code. + * KWallet is used for storing passwords. + * It also adds code to allow multiple CalDAV resources to store settings in the same + * config file. + */ +class CalDavPrefs : public CalDavPrefsSkel { + +public: + + /** + * @param prefix Unique prefix of the resource instance (use identifier() method). + */ + CalDavPrefs(const QString& prefix) + : mWallet(NULL) + , mNoWallet(false) + , mPrefix(prefix) + , mPassword(NO_PASSWORD) + { + addPrefix(prefix); + } + + virtual ~CalDavPrefs() { + 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 QString& p); + + /** + * Returns password. The password is taken from the wallet. + * May return an empty string, if there is no password available. + */ + QString password(); + + /** + * Returns the username. + */ + QString getusername(); + + void setRememberPassword(bool v); + + /** + * @return A full URL to connect to CalDAV server (including username and password). + */ + QString getFullUrl(); + +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 QString& 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 QString& 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 QString& password); + + /** + * Extracts password from the wallet. + * @param password a variable to save read password to. + * @return true on success, false on failure + */ + bool readPasswordFromWallet(QString& password); + + /** + * Clears password in the wallet. + * @return true on success, false on failure + */ + bool removePasswordFromWallet(); + +private: + + static const QString NO_PASSWORD; + static const QString WALLET_FOLDER; + static const QString WALLET_PWD_SUFFIX; + + KWallet::Wallet* mWallet; + bool mNoWallet; + + QString mPrefix; + QString mPassword; +}; + +} // namespace KCal + +#endif // KCAL_CALDAVPREFS_H + + |