00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _TelepathyQt4_cli_account_manager_h_HEADER_GUARD_
00023 #define _TelepathyQt4_cli_account_manager_h_HEADER_GUARD_
00024
00025 #ifndef IN_TELEPATHY_QT4_HEADER
00026 #error IN_TELEPATHY_QT4_HEADER
00027 #endif
00028
00029 #include <TelepathyQt4/_gen/cli-account-manager.h>
00030
00031 #include <TelepathyQt4/Client/DBus>
00032 #include <TelepathyQt4/Client/DBusProxy>
00033 #include <TelepathyQt4/Client/OptionalInterfaceFactory>
00034
00035 #include <QDBusObjectPath>
00036 #include <QSet>
00037 #include <QSharedPointer>
00038 #include <QString>
00039 #include <QVariantMap>
00040
00041 namespace Telepathy
00042 {
00043 namespace Client
00044 {
00045
00046 class Account;
00047 class AccountManager;
00048 class PendingAccount;
00049 class PendingReady;
00050
00051 class AccountManager : public StatelessDBusProxy,
00052 private OptionalInterfaceFactory<AccountManager>
00053 {
00054 Q_OBJECT
00055 Q_DISABLE_COPY(AccountManager)
00056
00057 public:
00058 enum Feature {
00059 FeatureCore = 0,
00060 _Padding = 0xFFFFFFFF
00061 };
00062 Q_DECLARE_FLAGS(Features, Feature)
00063
00064 AccountManager(QObject *parent = 0);
00065 AccountManager(const QDBusConnection &bus, QObject *parent = 0);
00066
00067 virtual ~AccountManager();
00068
00069 QStringList interfaces() const;
00070
00071 inline DBus::PropertiesInterface *propertiesInterface() const
00072 {
00073 return OptionalInterfaceFactory<AccountManager>::interface<DBus::PropertiesInterface>();
00074 }
00075
00076 QStringList validAccountPaths() const;
00077 QStringList invalidAccountPaths() const;
00078 QStringList allAccountPaths() const;
00079
00080 QList<QSharedPointer<Account> > validAccounts();
00081 QList<QSharedPointer<Account> > invalidAccounts();
00082 QList<QSharedPointer<Account> > allAccounts();
00083
00084 QSharedPointer<Account> accountForPath(const QString &path);
00085 QList<QSharedPointer<Account> > accountsForPaths(const QStringList &paths);
00086
00087 PendingAccount *createAccount(const QString &connectionManager,
00088 const QString &protocol, const QString &displayName,
00089 const QVariantMap ¶meters);
00090
00091
00092
00093 bool isReady(const QSet<uint> &features = QSet<uint>()) const;
00094
00095 PendingReady *becomeReady(const QSet<uint> &requestedFeatures = QSet<uint>());
00096
00097 QSet<uint> requestedFeatures() const;
00098 QSet<uint> actualFeatures() const;
00099 QSet<uint> missingFeatures() const;
00100
00101 Q_SIGNALS:
00102 void accountCreated(const QString &path);
00103 void accountRemoved(const QString &path);
00104 void accountValidityChanged(const QString &path, bool valid);
00105
00106 protected:
00107 AccountManagerInterface *baseInterface() const;
00108
00109 private Q_SLOTS:
00110 void gotMainProperties(QDBusPendingCallWatcher *);
00111 void onAccountValidityChanged(const QDBusObjectPath &, bool);
00112 void onAccountRemoved(const QDBusObjectPath &);
00113
00114 private:
00115 struct Private;
00116 friend struct Private;
00117 friend class PendingAccount;
00118 Private *mPriv;
00119 };
00120
00121 Q_DECLARE_OPERATORS_FOR_FLAGS(AccountManager::Features)
00122
00123 }
00124 }
00125
00126 #endif