00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _KWALLET_H
00023 #define _KWALLET_H
00024
00025 #include <qglobal.h>
00026 #ifdef Q_OS_UNIX
00027
00028 #include <qstring.h>
00029 #include <qstringlist.h>
00030 #include <qobject.h>
00031 #include <dcopobject.h>
00032
00033 class DCOPRef;
00034
00036 namespace KWallet {
00037
00048 class KIO_EXPORT Wallet : public QObject, public DCOPObject {
00049 K_DCOP
00050 Q_OBJECT
00051 protected:
00058 Wallet(int handle, const QString& name);
00063 Wallet(const Wallet&);
00064
00065 public:
00066 enum EntryType { Unknown=0, Password, Stream, Map, Unused=0xffff };
00067
00071 virtual ~Wallet();
00072
00078 static QStringList walletList();
00079
00085 static bool isEnabled();
00086
00092 static bool isOpen(const QString& name);
00093
00103 static int closeWallet(const QString& name, bool force);
00104
00111 static int deleteWallet(const QString& name);
00112
00119 static bool disconnectApplication(const QString& wallet, const QCString& app);
00120
00121 enum OpenType { Synchronous=0, Asynchronous, Path, OpenTypeUnused=0xff };
00122
00139 static Wallet* openWallet(const QString& name, WId w = 0, OpenType ot = Synchronous);
00140
00147 static QStringList users(const QString& wallet);
00148
00152 static const QString LocalWallet();
00153
00157 static const QString NetworkWallet();
00158
00165 static const QString PasswordFolder();
00166
00173 static const QString FormDataFolder();
00174
00181 static void changePassword(const QString& name, WId w = 0);
00182
00189 virtual int sync();
00190
00196 virtual int lockWallet();
00197
00201 virtual const QString& walletName() const;
00202
00208 virtual bool isOpen() const;
00209
00215 virtual void requestChangePassword(WId w = 0);
00216
00221 virtual QStringList folderList();
00222
00228 virtual bool hasFolder(const QString& f);
00229
00237 virtual bool setFolder(const QString& f);
00238
00244 virtual bool removeFolder(const QString& f);
00245
00251 virtual bool createFolder(const QString& f);
00252
00259 virtual const QString& currentFolder() const;
00260
00266 virtual QStringList entryList();
00267
00274 virtual int renameEntry(const QString& oldName, const QString& newName);
00275
00285 virtual int readEntry(const QString& key, QByteArray& value);
00286
00295 virtual int readMap(const QString& key, QMap<QString,QString>& value);
00296
00305 virtual int readPassword(const QString& key, QString& value);
00306
00319 int readEntryList(const QString& key, QMap<QString, QByteArray>& value);
00320
00332 int readMapList(const QString& key, QMap<QString, QMap<QString, QString> >& value);
00333
00345 int readPasswordList(const QString& key, QMap<QString, QString>& value);
00346
00357 virtual int writeEntry(const QString& key, const QByteArray& value, EntryType entryType);
00358
00366 virtual int writeEntry(const QString& key, const QByteArray& value);
00367
00374 virtual int writeMap(const QString& key, const QMap<QString,QString>& value);
00375
00382 virtual int writePassword(const QString& key, const QString& value);
00383
00389 virtual bool hasEntry(const QString& key);
00390
00396 virtual int removeEntry(const QString& key);
00397
00404 virtual EntryType entryType(const QString& key);
00405
00416 static bool folderDoesNotExist(const QString& wallet, const QString& folder);
00417
00429 static bool keyDoesNotExist(const QString& wallet, const QString& folder,
00430 const QString& key);
00431
00432 signals:
00436 void walletClosed();
00437
00442 void folderUpdated(const QString& folder);
00443
00447 void folderListUpdated();
00448
00453 void folderRemoved(const QString& folder);
00454
00459 void walletOpened(bool success);
00460
00461 private:
00462 k_dcop:
00467 ASYNC slotWalletClosed(int handle);
00468
00473 ASYNC slotFolderUpdated(const QString& wallet, const QString& folder);
00474
00479 ASYNC slotFolderListUpdated(const QString& wallet);
00480
00485 ASYNC slotApplicationDisconnected(const QString& wallet, const QCString& application);
00486
00491 ASYNC walletOpenResult(int rc);
00492
00493 private slots:
00498 void slotAppUnregistered(const QCString&);
00499
00500 private:
00501 class WalletPrivate;
00502 WalletPrivate *d;
00503 QString _name;
00504 QString _folder;
00505 int _handle;
00506 DCOPRef *_dcopRef;
00507
00508 protected:
00512 virtual void virtual_hook(int id, void *data);
00513 };
00514
00515 }
00516
00517 #endif //Q_OS_UNIX
00518
00519 #endif //_KWALLET_H
00520