00001 /* 00002 * Copyright (C) 2008 Nokia Corporation. 00003 * 00004 * Contact: Marius Vollmer <marius.vollmer@nokia.com> 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public License 00008 * version 2.1 as published by the Free Software Foundation. 00009 * 00010 * This library is distributed in the hope that it will be useful, but 00011 * WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public 00016 * License along with this library; if not, write to the Free Software 00017 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 00018 * 02110-1301 USA 00019 * 00020 */ 00021 00022 #ifndef CONTEXTPROPERTY_H 00023 #define CONTEXTPROPERTY_H 00024 00025 #include <QObject> 00026 #include <QVariant> 00027 #include <QString> 00028 00029 class ContextPropertyPrivate; 00030 class ContextPropertyInfo; 00031 00032 class ContextProperty : public QObject 00033 { 00034 Q_OBJECT 00035 00036 public: 00037 explicit ContextProperty(const QString &key, QObject *parent = 0); 00038 00039 virtual ~ContextProperty(); 00040 00041 QString key() const; 00042 QVariant value(const QVariant &def) const; 00043 QVariant value() const; 00044 00045 const ContextPropertyInfo* info() const; 00046 00047 void subscribe () const; 00048 void unsubscribe () const; 00049 00050 void waitForSubscription() const; 00051 void waitForSubscription(bool block) const; 00052 00053 static void ignoreCommander(); 00054 static void setTypeCheck(bool typeCheck); 00055 00056 Q_SIGNALS: 00057 void valueChanged(); 00058 00059 private: 00060 ContextPropertyPrivate *priv; 00061 private Q_SLOTS: 00062 void onValueChanged(); 00063 }; 00064 00065 #endif