00001 /* 00002 * This file is part of TelepathyQt4 00003 * 00004 * Copyright (C) 2008 Collabora Ltd. <http://www.collabora.co.uk/> 00005 * Copyright (C) 2008 Nokia Corporation 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00020 */ 00021 00022 #ifndef _TelepathyQt4_cli_pending_contacts_h_HEADER_GUARD_ 00023 #define _TelepathyQt4_cli_pending_contacts_h_HEADER_GUARD_ 00024 00025 #ifndef IN_TELEPATHY_QT4_HEADER 00026 #error IN_TELEPATHY_QT4_HEADER 00027 #endif 00028 00029 #include <TelepathyQt4/Client/PendingOperation> 00030 00031 #include <QList> 00032 #include <QMap> 00033 #include <QSet> 00034 #include <QStringList> 00035 00036 #include <TelepathyQt4/Types> 00037 #include <TelepathyQt4/Client/Contact> 00038 00039 namespace Telepathy 00040 { 00041 namespace Client 00042 { 00043 00044 class ContactManager; 00045 00046 class PendingContacts : public PendingOperation 00047 { 00048 Q_OBJECT 00049 00050 public: 00051 ~PendingContacts(); 00052 00053 ContactManager *manager() const; 00054 QSet<Contact::Feature> features() const; 00055 00056 bool isForHandles() const; 00057 UIntList handles() const; 00058 00059 bool isForIdentifiers() const; 00060 QStringList identifiers() const; 00061 00062 bool isUpgrade() const; 00063 QList<ContactPtr> contactsToUpgrade() const; 00064 00065 QList<ContactPtr> contacts() const; 00066 UIntList invalidHandles() const; 00067 00068 private Q_SLOTS: 00069 void onAttributesFinished(Telepathy::Client::PendingOperation *); 00070 void onHandlesFinished(Telepathy::Client::PendingOperation *); 00071 void onNestedFinished(Telepathy::Client::PendingOperation *); 00072 00073 private: 00074 Q_DISABLE_COPY(PendingContacts); 00075 00076 PendingContacts(ContactManager *manager, const UIntList &handles, 00077 const QSet<Contact::Feature> &features, 00078 const QMap<uint, ContactPtr> &satisfyingContacts); 00079 PendingContacts(ContactManager *manager, const QStringList &identifiers, 00080 const QSet<Contact::Feature> &features); 00081 PendingContacts(ContactManager *manager, const QList<ContactPtr> &contacts, 00082 const QSet<Contact::Feature> &features); 00083 00084 void allAttributesFetched(); 00085 00086 struct Private; 00087 friend struct Private; 00088 friend class ContactManager; 00089 Private *mPriv; 00090 }; 00091 00092 } // Telepathy::Client 00093 } // Telepathy 00094 00095 #endif