qtmobility/src/multimedia/qmediaobject.cpp
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
child 15 1f895d8a5b2b
--- a/qtmobility/src/multimedia/qmediaobject.cpp	Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/src/multimedia/qmediaobject.cpp	Wed Jun 23 19:08:38 2010 +0300
@@ -43,8 +43,9 @@
 
 #include "qmediaobject_p.h"
 
-#include "qmediaservice.h"
-#include "qmetadatacontrol.h"
+#include <qmediaservice.h>
+#include <qmetadatareadercontrol.h>
+#include <qmediabindableinterface.h>
 
 
 QT_BEGIN_NAMESPACE
@@ -96,9 +97,9 @@
     Returns the service availability error state.
 */
 
-QtMediaServices::AvailabilityError QMediaObject::availabilityError() const
+QtMultimedia::AvailabilityError QMediaObject::availabilityError() const
 {
-    return QtMediaServices::ServiceMissingError;
+    return QtMultimedia::ServiceMissingError;
 }
 
 /*!
@@ -136,17 +137,35 @@
 }
 
 /*!
-  \internal
 */
-void QMediaObject::bind(QObject*)
+bool QMediaObject::bind(QObject *object)
 {
+    QMediaBindableInterface *helper = qobject_cast<QMediaBindableInterface*>(object);
+    if (!helper)
+        return false;
+
+    QMediaObject *currentObject = helper->mediaObject();
+
+    if (currentObject == this)
+        return true;
+
+    if (currentObject)
+        currentObject->unbind(object);
+
+    return helper->setMediaObject(this);
 }
 
 /*!
-  \internal
 */
-void QMediaObject::unbind(QObject*)
+void QMediaObject::unbind(QObject *object)
 {
+    QMediaBindableInterface *helper = qobject_cast<QMediaBindableInterface*>(object);
+
+    Q_ASSERT(helper);
+    Q_ASSERT(helper->mediaObject() == this);
+
+    if (helper && helper->mediaObject() == this)
+        helper->setMediaObject(0);
 }
 
 
@@ -281,31 +300,9 @@
 */
 
 /*!
-    \property QMediaObject::metaDataWritable
-    \brief whether a media object's meta-data is writable.
-
-    If this is true the meta-data is writable, otherwise the meta-data is read-only.
-*/
-
-bool QMediaObject::isMetaDataWritable() const
-{
-    Q_D(const QMediaObject);
-
-    return d->metaDataControl
-            ? d->metaDataControl->isWritable()
-            : false;
-}
-
-/*!
-    \fn QMediaObject::metaDataWritableChanged(bool writable)
-
-    Signals that the \a writable state of a media object's meta-data has changed.
-*/
-
-/*!
     Returns the value associated with a meta-data \a key.
 */
-QVariant QMediaObject::metaData(QtMediaServices::MetaData key) const
+QVariant QMediaObject::metaData(QtMultimedia::MetaData key) const
 {
     Q_D(const QMediaObject);
 
@@ -315,26 +312,15 @@
 }
 
 /*!
-    Sets a \a value for a meta-data \a key.
-*/
-void QMediaObject::setMetaData(QtMediaServices::MetaData key, const QVariant &value)
-{
-    Q_D(QMediaObject);
-
-    if (d->metaDataControl)
-        d->metaDataControl->setMetaData(key, value);
-}
-
-/*!
     Returns a list of keys there is meta-data available for.
 */
-QList<QtMediaServices::MetaData> QMediaObject::availableMetaData() const
+QList<QtMultimedia::MetaData> QMediaObject::availableMetaData() const
 {
     Q_D(const QMediaObject);
 
     return d->metaDataControl
             ? d->metaDataControl->availableMetaData()
-            : QList<QtMediaServices::MetaData>();
+            : QList<QtMultimedia::MetaData>();
 }
 
 /*!
@@ -359,20 +345,6 @@
 }
 
 /*!
-    Sets a \a value for a meta-data \a key.
-
-    The naming and type of extended meta-data is not standardized, so the values and meaning
-    of keys may vary between backends.
-*/
-void QMediaObject::setExtendedMetaData(const QString &key, const QVariant &value)
-{
-    Q_D(QMediaObject);
-
-    if (d->metaDataControl)
-        d->metaDataControl->setExtendedMetaData(key, value);
-}
-
-/*!
     Returns a list of keys there is extended meta-data available for.
 */
 QStringList QMediaObject::availableExtendedMetaData() const
@@ -390,17 +362,14 @@
     Q_D(QMediaObject);
 
     if (d->service != 0) {
-        d->metaDataControl =
-            qobject_cast<QMetaDataControl*>(d->service->control(QMetaDataControl_iid));
+        d->metaDataControl = qobject_cast<QMetaDataReaderControl*>(
+                d->service->requestControl(QMetaDataReaderControl_iid));
 
         if (d->metaDataControl) {
             connect(d->metaDataControl, SIGNAL(metaDataChanged()), SIGNAL(metaDataChanged()));
             connect(d->metaDataControl,
                     SIGNAL(metaDataAvailableChanged(bool)),
                     SIGNAL(metaDataAvailableChanged(bool)));
-            connect(d->metaDataControl,
-                    SIGNAL(writableChanged(bool)),
-                    SIGNAL(metaDataWritableChanged(bool)));
         }
     }
 }