qthighway/xqserviceutil/src/xqservicemetadata/xqaiwinterfacedescriptor.cpp
branchRCL_3
changeset 10 cd2778e5acfe
parent 9 5d007b20cfd0
child 11 19a54be74e5e
--- a/qthighway/xqserviceutil/src/xqservicemetadata/xqaiwinterfacedescriptor.cpp	Tue Aug 31 16:02:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,455 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Lesser General Public License as published by
-* the Free Software Foundation, version 2.1 of the License.
-* 
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public License
-* along with this program.  If not, 
-* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
-*
-* Description:
-*
-*/
-
-#include "xqservicelog.h"
-#include <xqaiwinterfacedescriptor_p.h>
-#include <xqaiwinterfacedescriptor.h>
-#ifndef QT_NO_DATASTREAM
-#include <qdatastream.h>
-#endif
-
-#include <QDebug>
-
-//QT_BEGIN_NAMESPACE
-
-/*!
-    \class XQAiwInterfaceDescriptor
-    \brief The XQAiwInterfaceDescriptor class identifies a service implementation.
-
-    A service can implement multiple interfaces and each interface can have multiple implementations. 
-    The XQAiwInterfaceDescriptor class enscapsulates this information, as illustrated
-    by the diagram below.
-
-    \image XQAiwInterfaceDescriptor.png Service-Interface-Implementation
-
-    The major version tag indicates the interface version and the minor version tag identifies the implementation
-    version. Subsequent versions of the same interface must be binary compatible to previous versions 
-    of the same interface. 
-
-    In the above example service A and B implement the interface \i com.nokia.qt.x.
-    In fact Service A provides two different implementations for the very same interface. 
-    This is indicated by the changed minor version number. Although Service B is 
-    using the same interface it's implementation actually utilizes the second version of
-    the interface \i com.nokia.qt.x. Binary compatibility guarantees that clients 
-    who know version 1 can utilize version 2. If an existing interface has to be changed
-    in a non-compatible way a new interface (name) is required.
-
-    \section1 Namespaces
-
-    A XQAiwInterfaceDescriptor (the quadruble of service name, 
-    interface name, interface version and implementation version) uniquely 
-    identifies a service implementation on a device. Interface names follow 
-    the java namespace convention.
-    
-    The namespace \i com.nokia.qt.* is reserved for future Qt development.
-
-    \sa QServiceFilter, QServiceManager
-*/
-
-/*!
-    \enum XQAiwInterfaceDescriptor::PropertyKey
-
-    This enum describes the possible property types which can be attached
-    to a XQAiwInterfaceDescriptor.
-*/
-
-/*! \var XQAiwInterfaceDescriptor::PropertyKey  XQAiwInterfaceDescriptor::Capabilities
-    
-    The capabilities property is a QStringList and
-    describes the capabilities that a service client
-    would require to use the service if capability 
-    checks are enforced.
-*/
-
-/*! \var XQAiwInterfaceDescriptor::PropertyKey  XQAiwInterfaceDescriptor::Location
-    
-    This property points to the location
-    where the plug-in providing this service is stored.
-    If the service is plug-in based the location is the
-    name and/or path of the plugin.
-*/
-
-/*! \var XQAiwInterfaceDescriptor::PropertyKey  XQAiwInterfaceDescriptor::ServiceDescription
-    
-    This property provides a general description for
-    the service.
-*/
-
-/*! \var XQAiwInterfaceDescriptor::PropertyKey  XQAiwInterfaceDescriptor::InterfaceDescription
-    
-    This property provides a description for the interface 
-    implementation.
-*/
-
-/*! \var XQAiwInterfaceDescriptor::PropertyKey  XQAiwInterfaceDescriptor::ImplementationId
-
-    Extension: settable property, contains implementation id
-*/
-
-/*!
-    Creates a new XQAiwInterfaceDescriptor.
-*/
-XQAiwInterfaceDescriptor::XQAiwInterfaceDescriptor()
-    :  d(0)
-{
-  XQSERVICE_DEBUG_PRINT("XQAiwInterfaceDescriptor");
-  // Memory allocated in assigment operator !!!
-}
-
-/*!
-    Destroys the XQAiwInterfaceDescriptor object.
-*/
-XQAiwInterfaceDescriptor::~XQAiwInterfaceDescriptor()
-{
-    XQSERVICE_DEBUG_PRINT("~XQAiwInterfaceDescriptor");
-    if (d)
-        delete d;
-}
-
-/*!
-    Creates a copy of XQAiwInterfaceDescriptor contained in \a other.
-    \param other Reference to the other XQAiwInterfaceDescriptor object, from
-                 which new object will be created
-*/
-XQAiwInterfaceDescriptor::XQAiwInterfaceDescriptor(const XQAiwInterfaceDescriptor& other)
-    : d(0)
-{
-    (*this) = other; //use assignment operator
-}
-
-
-/*!
-    Copies the content of the XQAiwInterfaceDescriptor object contained 
-    in \a other into this one.
-    \param other Reference to XQAiwInterfaceDescriptor object, from which content will be copied
-*/
-XQAiwInterfaceDescriptor& XQAiwInterfaceDescriptor::operator=(const XQAiwInterfaceDescriptor& other)
-{
-    XQSERVICE_DEBUG_PRINT("XQAiwInterfaceDescriptor: operator=");
-    if ( !other.isValid() ) {
-        XQSERVICE_DEBUG_PRINT("other is invalid !!!");
-        if (d) 
-            delete d;
-        d = 0;
-        return *this;  // Create empty descriptor
-    }
-    if (!d)
-        d = new XQAiwInterfaceDescriptorPrivate;
-    (*d) = *(other.d);
-    XQSERVICE_DEBUG_PRINT("XQAiwInterfaceDescriptor: operator= done");
-    return *this;
-}
-
-/*!
-    Compares a XQAiwInterfaceDescriptor to \a other.
-    \param other Reference to XQAiwInterfaceDescriptor object, which will be compared
-                 to this one.
-    \return True if both instances are equal, false otherwise.
-*/
-bool XQAiwInterfaceDescriptor::operator==(const XQAiwInterfaceDescriptor& other) const
-{
-    XQSERVICE_DEBUG_PRINT("XQAiwInterfaceDescriptor: operator==");
-    
-    if (! (isValid() && other.isValid()) )
-        return false;
-
-    if (!d)
-        return false;
-
-    if ((*d) == *(other.d))
-    {
-        XQSERVICE_DEBUG_PRINT("== true");
-        return true;
-    }
-    
-    XQSERVICE_DEBUG_PRINT("== false");
-    return false;
-}
-
-/*!
-    \fn bool XQAiwInterfaceDescriptor::operator!=(const XQAiwInterfaceDescriptor& other) const
-
-    Compares a XQAiwInterfaceDescriptor to \a other. Returns true
-    if they are not equal and false otherwise.
-    \param other Reference to XQAiwInterfaceDescriptor object, which will be compared
-                 to this one.
-    \return False if both instances are equal, true otherwise.
-*/
-
-/*!
-    Checks if the descriptor is valid.
-    \return True if this descriptor is valid, false otherwise
-*/
-bool XQAiwInterfaceDescriptor::isValid() const
-{
-    XQSERVICE_DEBUG_PRINT("XQAiwInterfaceDescriptor:isValid");
-    if (d)
-    {
-        XQSERVICE_DEBUG_PRINT("isValid=yes");
-        return true;
-    }
-    XQSERVICE_DEBUG_PRINT("isValid=false");
-    return false;
-}
-
-/*!
-    Checks if this implementation is provided for all users on the system.
-    \return True if this implementation is provided for all users on the system,
-            false otherwise
-
-    \sa QServiceManager::Scope
-*/
-bool XQAiwInterfaceDescriptor::inSystemScope() const
-{
-    return d ? d->systemScope : false;
-}
-
-/*!
-    Gets the name of service that provides this implementation.
-    \return Name of service
-*/
-QString XQAiwInterfaceDescriptor::serviceName() const
-{
-    return d ? d->serviceName : QString();
-}
-
-/*!
-    Gets the name of the interface that is implemented.
-    \return Name of the interface
-*/
-QString XQAiwInterfaceDescriptor::interfaceName() const
-{
-    return d ? d->interfaceName : QString();
-}
-
-
-/*!
-    Gets the version of the interface. 
-    Subsequent versions of an interface are binary compatible 
-    to previous versions of the same interface. If an intcerface 
-    is broken it must use a new interface name.
-    \return Interface version as integer value
-*/
-int XQAiwInterfaceDescriptor::majorVersion() const
-{
-    return d ? d->major : -1;
-}
-
-/*!
-    Gets the version of the implementation.
-    \return Implementation version as integer value
-*/
-int XQAiwInterfaceDescriptor::minorVersion() const
-{
-    return d ? d->minor : -1;
-}
-
-/*!
-    Gets the value for the property.
-    \param key Key of the property
-    \return Value of the property, invalid QVariant if does not exist
-*/
-QVariant XQAiwInterfaceDescriptor::property(XQAiwInterfaceDescriptor::PropertyKey key) const
-{
-    if (d)
-    {
-        return d->properties.value(key);
-    }
-    return QVariant();
-}
-
-/*!
-    Extension:
-    Sets given property. To be used by service management only.
-*/
-bool XQAiwInterfaceDescriptor::setProperty(XQAiwInterfaceDescriptor::PropertyKey key, const QVariant value )
-{
-    XQSERVICE_DEBUG_PRINT("XQAiwInterfaceDescriptor::setPropery %d", key);
-    if (key < ImplementationId)
-    {
-        return false;  // Do not allow changing other properties
-    }
-    
-    if (!d)
-        d = new XQAiwInterfaceDescriptorPrivate;  // Ensure allocation
-    
-    if (d)
-    {
-        d->properties[key] = value;
-        return true;
-    }
-    return false;
-}
-
-
-/*!
-    Gets the value for the property.
-    \param key Key of the custom property
-    \return Value of the custom property, invalid null if does not exist
-*/
-QString XQAiwInterfaceDescriptor::customProperty(const QString& key) const
-{
-    XQSERVICE_DEBUG_PRINT("XQAiwInterfaceDescriptor::customProperty %s", qPrintable(key));
-    QString val;
-    if (d)
-    {
-        val = d->customProperties[key];
-    }
-    XQSERVICE_DEBUG_PRINT("XQAiwInterfaceDescriptor::customProperty value %s", qPrintable(val));
-    
-    return val;
-}
-
-/*!
-    Gets list of custom property keys.
-    \return list of custom property keys
-*/
-QStringList XQAiwInterfaceDescriptor::customPropertyKeys() const
-{
-    XQSERVICE_DEBUG_PRINT("XQAiwInterfaceDescriptor::customPropertyKeys");
-    if (d)
-    {
-        return d->customProperties.keys();
-    }
-
-    return QStringList();
-}
-
-#ifndef QT_NO_DEBUG_STREAM
-QDebug operator<<(QDebug dbg, const XQAiwInterfaceDescriptor &desc)
-{
-    if (desc.isValid()) {
-        QString interface = QString("%1 %2.%3").arg(desc.interfaceName())
-                .arg(desc.majorVersion() < 0 ? '?' : desc.majorVersion())
-                .arg(desc.minorVersion() < 0 ? '?' : desc.minorVersion());
-        dbg.nospace() << "XQAiwInterfaceDescriptor(";
-        dbg.nospace() << "service=" << desc.serviceName() << ", ";
-        dbg.nospace() << "interface=" << interface;
-        dbg.nospace() << ")";
-    } else {
-        dbg.nospace() << "XQAiwInterfaceDescriptor(invalid)";
-    }
-    return dbg.space();
-}
-#endif
-
-#ifndef QT_NO_DATASTREAM
-
-QDataStream &operator<<(QDataStream &out, const XQAiwInterfaceDescriptor::PropertyKey &k)
-{
-    out << qint8(k);
-    return out;
-}
-
-QDataStream &operator>>(QDataStream &in, XQAiwInterfaceDescriptor::PropertyKey &k)
-{
-    quint8 key;
-    in >> key;
-    k = (XQAiwInterfaceDescriptor::PropertyKey)key;
-    return in;
-}
-/*! 
-    \fn QDataStream &operator<<(QDataStream &out, const XQAiwInterfaceDescriptor &dc)
-    \relates XQAiwInterfaceDescriptor
-
-    Writes service interface descriptor \a dc to the stream \a out and returns a reference
-    to the stream.
-    \param out Stream to write to
-    \param dc Interface descriptor written to stream
-    \return Reference to the stream
-*/
-
-QDataStream &operator<<(QDataStream &out, const XQAiwInterfaceDescriptor &dc)
-{
-    const quint32 magicNumber = 0x77AFAFA;
-    const quint16 majorVersion = 1;
-    const quint16 minorVersion = 0;
-    const qint8 valid = dc.isValid();
-    out << magicNumber << majorVersion << minorVersion;
-    out << valid;
-    if (valid) {
-       out << dc.d->serviceName; 
-       out << dc.d->interfaceName;
-       out << dc.d->major;
-       out << dc.d->minor;
-       out << dc.d->properties;
-       out << dc.d->customProperties;
-       out << dc.d->systemScope;
-    }
-    return out;
-}
-
-/*!
-    \fn QDataStream &operator>>(QDataStream &in, XQAiwInterfaceDescriptor &dc)
-    \relates XQAiwInterfaceDescriptor
-
-    Reads a service interface descriptor into \a dc from the stream \a in and returns a
-    reference to the stream.
-    \param in Stream to read from
-    \param dc Interface descriptor read from stream
-    \return Reference to the stream
-*/
-QDataStream &operator>>(QDataStream &in, XQAiwInterfaceDescriptor &dc)
-{
-    const quint32 magicNumber = 0x77AFAFA;
-    quint32 storedMagicNumber;
-    in >> storedMagicNumber;
-    if (storedMagicNumber != magicNumber) {
-        qWarning() << "Datastream doesn't provide searialized XQAiwInterfaceDescriptor";
-        return in;
-    }
-    
-    const quint16 currentMajorVersion = 1;
-    quint16 majorVersion = 0;
-    quint16 minorVersion = 0;
-
-    in >> majorVersion >> minorVersion;
-    if (majorVersion != currentMajorVersion) {
-        qWarning() << "Unknown serialization format for XQAiwInterfaceDescriptor.";
-        return in;
-    }
-    //Allow all minor versions.
-
-    qint8 valid;
-    in >> valid;
-    if (valid) {
-        if (!dc.isValid())
-            dc.d = new XQAiwInterfaceDescriptorPrivate;
-        in >> dc.d->serviceName;
-        in >> dc.d->interfaceName;
-        in >> dc.d->major;
-        in >> dc.d->minor;
-        in >> dc.d->properties;
-        in >> dc.d->customProperties;
-        in >> dc.d->systemScope;
-    } else { //input stream contains invalid descriptor
-        //use assignment operator
-        dc = XQAiwInterfaceDescriptor();
-    }
-
-    return in;
-}
-#endif //QT_NO_DATASTREAM
-
-
-
-//QT_END_NAMESPACE
-