00001 /* 00002 * This file is part of TelepathyQt4 00003 * 00004 * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/> 00005 * Copyright (C) 2009 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_ready_object_h_HEADER_GUARD_ 00023 #define _TelepathyQt4_cli_ready_object_h_HEADER_GUARD_ 00024 00025 #ifndef IN_TELEPATHY_QT4_HEADER 00026 #error IN_TELEPATHY_QT4_HEADER 00027 #endif 00028 00029 #include <TelepathyQt4/Client/Feature> 00030 00031 #include <QObject> 00032 00033 namespace Telepathy 00034 { 00035 namespace Client 00036 { 00037 00038 class DBusProxy; 00039 class PendingReady; 00040 class ReadinessHelper; 00041 00042 class ReadyObject 00043 { 00044 Q_DISABLE_COPY(ReadyObject) 00045 00046 public: 00047 ReadyObject(QObject *object, const Feature &featureCore); 00048 ~ReadyObject(); 00049 00050 virtual bool isReady(const Features &features = Features()) const; 00051 virtual PendingReady *becomeReady(const Features &requestedFeatures = Features()); 00052 00053 virtual Features requestedFeatures() const; 00054 virtual Features actualFeatures() const; 00055 virtual Features missingFeatures() const; 00056 00057 protected: 00058 ReadinessHelper *readinessHelper() const; 00059 00060 private: 00061 struct Private; 00062 friend struct Private; 00063 Private *mPriv; 00064 }; 00065 00066 } // Telepathy::Client 00067 } // Telepathy 00068 00069 #endif