summaryrefslogtreecommitdiffstats
path: root/tderesources/carddav/preferences.h
diff options
context:
space:
mode:
Diffstat (limited to 'tderesources/carddav/preferences.h')
-rw-r--r--tderesources/carddav/preferences.h155
1 files changed, 155 insertions, 0 deletions
diff --git a/tderesources/carddav/preferences.h b/tderesources/carddav/preferences.h
new file mode 100644
index 00000000..96a6377d
--- /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
+
+