00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 #ifndef _KWALLETD_H_
00023 #define _KWALLETD_H_
00024 
00025 #include <kded/kdedmodule.h>
00026 #include <qintdict.h>
00027 #include <qstring.h>
00028 #include <qwidget.h>
00029 #include "kwalletbackend.h"
00030 
00031 #include <time.h>
00032 #include <stdlib.h>
00033 
00034 class KDirWatch;
00035 class KTimeout;
00036 
00037 
00038 class KWalletTransaction;
00039 
00040 class KWalletD : public KDEDModule {
00041     Q_OBJECT
00042     K_DCOP
00043     public:
00044         KWalletD(const QCString &name);
00045         virtual ~KWalletD();
00046 
00047     k_dcop:
00048         
00049         virtual bool isEnabled() const;
00050 
00051         
00052         virtual int open(const QString& wallet, uint wId);
00053 
00054         
00055         virtual int openPath(const QString& path, uint wId);
00056 
00057         
00058         
00059         virtual void openAsynchronous(const QString& wallet, const QCString& returnObject, uint wId);
00060 
00061         
00062         
00063         
00064         
00065         virtual int close(const QString& wallet, bool force);
00066         virtual int close(int handle, bool force);
00067 
00068         
00069         virtual ASYNC sync(int handle);
00070 
00071         
00072         virtual int deleteWallet(const QString& wallet);
00073 
00074         
00075         virtual bool isOpen(const QString& wallet) const;
00076         virtual bool isOpen(int handle);
00077 
00078         
00079         virtual QStringList users(const QString& wallet) const;
00080 
00081         
00082         virtual void changePassword(const QString& wallet, uint wId);
00083 
00084         
00085         virtual QStringList wallets() const;
00086 
00087         
00088         virtual QStringList folderList(int handle);
00089 
00090         
00091         virtual bool hasFolder(int handle, const QString& folder);
00092 
00093         
00094         virtual bool createFolder(int handle, const QString& folder);
00095 
00096         
00097         virtual bool removeFolder(int handle, const QString& folder);
00098 
00099         
00100         virtual QStringList entryList(int handle, const QString& folder);
00101 
00102         
00103         
00104         
00105         virtual QByteArray readEntry(int handle, const QString& folder, const QString& key);
00106         virtual QByteArray readMap(int handle, const QString& folder, const QString& key);
00107         virtual QString readPassword(int handle, const QString& folder, const QString& key);
00108 
00109         
00110         virtual int renameEntry(int handle, const QString& folder, const QString& oldName, const QString& newName);
00111 
00112         
00113         virtual int writeEntry(int handle, const QString& folder, const QString& key, const QByteArray& value, int entryType);
00114         virtual int writeEntry(int handle, const QString& folder, const QString& key, const QByteArray& value);
00115         virtual int writeMap(int handle, const QString& folder, const QString& key, const QByteArray& value);
00116         virtual int writePassword(int handle, const QString& folder, const QString& key, const QString& value);
00117 
00118         
00119         virtual bool hasEntry(int handle, const QString& folder, const QString& key);
00120 
00121         
00122         virtual int entryType(int handle, const QString& folder, const QString& key);
00123 
00124         
00125         virtual int removeEntry(int handle, const QString& folder, const QString& key);
00126 
00127         
00128         virtual bool disconnectApplication(const QString& wallet, const QCString& application);
00129 
00130         virtual void reconfigure();
00131 
00132         
00133         virtual bool folderDoesNotExist(const QString& wallet, const QString& folder);
00134         virtual bool keyDoesNotExist(const QString& wallet, const QString& folder, const QString& key);
00135 
00136         virtual void closeAllWallets();
00137 
00138     private slots:
00139         void slotAppUnregistered(const QCString& app);
00140         void emitWalletListDirty();
00141         void timedOut(int);
00142 
00143     private:
00144         int internalOpen(const QCString& appid, const QString& wallet, bool isPath = false, WId w = 0);
00145         
00146         KWallet::Backend* getWallet(const QCString& appid, int handle);
00147         
00148         int generateHandle();
00149         
00150         void invalidateHandle(int handle);
00151         
00152         void doCloseSignals(int,const QString&);
00153         void emitFolderUpdated(const QString&, const QString&);
00154         
00155         int closeWallet(KWallet::Backend *w, int handle, bool force);
00156         
00157         bool implicitAllow(const QString& wallet, const QCString& app);
00158         QCString friendlyDCOPPeerName();
00159 
00160         void processTransactions();
00161         void doTransactionChangePassword(const QCString& appid, const QString& wallet, uint wId);
00162         int doTransactionOpen(const QCString& appid, const QString& wallet, uint wId);
00163 
00164         QIntDict<KWallet::Backend> _wallets;
00165         QMap<QCString,QValueList<int> > _handles;
00166         QMap<QString,QCString> _passwords;
00167         KDirWatch *_dw;
00168         int _failed;
00169 
00170         bool _leaveOpen, _closeIdle, _launchManager, _enabled, _openPrompt, _firstUse;
00171         int _idleTime;
00172         QMap<QString,QStringList> _implicitAllowMap;
00173         KTimeout *_timeouts;
00174 
00175         QPtrList<KWalletTransaction> _transactions;
00176 };
00177 
00178 
00179 #endif