contentstorage/casoftwareregistry/src/casoftwareregistry.cpp
author hgs
Fri, 14 May 2010 17:24:44 +0300
changeset 94 dbb8300717f7
child 98 d2f833ab7940
permissions -rw-r--r--
201019
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
94
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
 * All rights reserved.
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
 *
hgs
parents:
diff changeset
     9
 * Initial Contributors:
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
 *
hgs
parents:
diff changeset
    12
 * Contributors:
hgs
parents:
diff changeset
    13
 *
hgs
parents:
diff changeset
    14
 * Description:  ?Description
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
 */
hgs
parents:
diff changeset
    17
#include <QtGlobal>
hgs
parents:
diff changeset
    18
#include <QMetaType>
hgs
parents:
diff changeset
    19
#include <QString>
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include "casoftwareregistry.h"
hgs
parents:
diff changeset
    23
#include "casoftwareregistry_p.h"
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
// ======== MEMBER FUNCTIONS ========
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
/*!
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
 \class CaSoftwareRegistry.
hgs
parents:
diff changeset
    31
 \brief This class provides access to USIF provided data and converting
hgs
parents:
diff changeset
    32
 them from Symbian to Qt types.
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
 CaSoftwareRegistry class provides a factory method which returns smart pointer
hgs
parents:
diff changeset
    35
 to CaSoftwareRegistry instnce to ensure
hgs
parents:
diff changeset
    36
 automatical memory cleanup once the reference count drops to 0.
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
 \code
hgs
parents:
diff changeset
    39
 QSharedPointer<CaSoftwareRegistry> service = CaSoftwareRegistry::create();
hgs
parents:
diff changeset
    40
 \endcode
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
 Subsequent calls to CaSoftwareRegistry::create() may return pointers to different
hgs
parents:
diff changeset
    43
 instances. It is a case when between the calls instance counter of the created
hgs
parents:
diff changeset
    44
 object dropped to 0 and it was deleted.
hgs
parents:
diff changeset
    45
 
hgs
parents:
diff changeset
    46
 */
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
/*! \typedef typedef QHash<QString, QString> DetailMap;
hgs
parents:
diff changeset
    49
 * Defines map type for component details.
hgs
parents:
diff changeset
    50
 * 
hgs
parents:
diff changeset
    51
 */
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
/*!
hgs
parents:
diff changeset
    54
 \var CaSoftwareRegistryPrivate::m_q
hgs
parents:
diff changeset
    55
 Points to the CaSoftwareRegistry instance that uses this private implementation.
hgs
parents:
diff changeset
    56
 */
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
// Initialization of a static member variable.
hgs
parents:
diff changeset
    60
QWeakPointer<CaSoftwareRegistry> CaSoftwareRegistry::m_instance = 
hgs
parents:
diff changeset
    61
    QWeakPointer<CaSoftwareRegistry>();
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
/*!
hgs
parents:
diff changeset
    65
 Constructor.
hgs
parents:
diff changeset
    66
 \param parent pointer to a parent. It defaults to NULL.
hgs
parents:
diff changeset
    67
 */
hgs
parents:
diff changeset
    68
CaSoftwareRegistry::CaSoftwareRegistry(QObject *parent) :
hgs
parents:
diff changeset
    69
    QObject(parent), m_d(new CaSoftwareRegistryPrivate(this))
hgs
parents:
diff changeset
    70
{
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
}
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
/*!
hgs
parents:
diff changeset
    75
 Returns a pointer to an instance of the CaSoftwareRegistry class.
hgs
parents:
diff changeset
    76
 \retval A pointer to an instance of the CaSoftwareRegistry class.
hgs
parents:
diff changeset
    77
 */
hgs
parents:
diff changeset
    78
QSharedPointer<CaSoftwareRegistry> CaSoftwareRegistry::create()
hgs
parents:
diff changeset
    79
{
hgs
parents:
diff changeset
    80
    QSharedPointer<CaSoftwareRegistry> service(m_instance);
hgs
parents:
diff changeset
    81
    if (!service) {
hgs
parents:
diff changeset
    82
        service = QSharedPointer<CaSoftwareRegistry>(new CaSoftwareRegistry);
hgs
parents:
diff changeset
    83
        m_instance = service.toWeakRef();
hgs
parents:
diff changeset
    84
    }
hgs
parents:
diff changeset
    85
    return service;
hgs
parents:
diff changeset
    86
}
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
/*!
hgs
parents:
diff changeset
    89
 Destructor.
hgs
parents:
diff changeset
    90
 */
hgs
parents:
diff changeset
    91
CaSoftwareRegistry::~CaSoftwareRegistry()
hgs
parents:
diff changeset
    92
{
hgs
parents:
diff changeset
    93
    delete m_d;
hgs
parents:
diff changeset
    94
}
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
/*!
hgs
parents:
diff changeset
    97
 The method provides component details from USIF for a given component id.
hgs
parents:
diff changeset
    98
 \code
hgs
parents:
diff changeset
    99
 QSharedPointer<CaSoftwareRegistry> service = CaSoftwareRegistry::create();
hgs
parents:
diff changeset
   100
 CaSoftwareRegistry::DetailMap detailMap = service->entryDetails(5);
hgs
parents:
diff changeset
   101
 QString appName = detailMap[CaSoftwareRegistry::componentNameKey()];
hgs
parents:
diff changeset
   102
 \endcode
hgs
parents:
diff changeset
   103
 \param componentId Component id of the entry details are requested for.
hgs
parents:
diff changeset
   104
 \return Map of the component details if component id was greater than 0 or
hgs
parents:
diff changeset
   105
 empty map otherwise. 
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
 */
hgs
parents:
diff changeset
   108
CaSoftwareRegistry::DetailMap CaSoftwareRegistry::entryDetails(
hgs
parents:
diff changeset
   109
    int componentId) const
hgs
parents:
diff changeset
   110
{
hgs
parents:
diff changeset
   111
    return m_d->entryDetails(componentId);
hgs
parents:
diff changeset
   112
}
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
/*!
hgs
parents:
diff changeset
   115
 * \return Component name key in CaSoftwareRegistry::DetailMap.
hgs
parents:
diff changeset
   116
 */
hgs
parents:
diff changeset
   117
QString CaSoftwareRegistry::componentNameKey()
hgs
parents:
diff changeset
   118
{
hgs
parents:
diff changeset
   119
    static const QString key("name");
hgs
parents:
diff changeset
   120
    return key;
hgs
parents:
diff changeset
   121
}
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
/*!
hgs
parents:
diff changeset
   124
 * \return Component version key in CaSoftwareRegistry::DetailMap.
hgs
parents:
diff changeset
   125
 */
hgs
parents:
diff changeset
   126
QString CaSoftwareRegistry::componentVersionKey()
hgs
parents:
diff changeset
   127
{
hgs
parents:
diff changeset
   128
    static const QString key("version");
hgs
parents:
diff changeset
   129
    return key;
hgs
parents:
diff changeset
   130
}
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
/*!
hgs
parents:
diff changeset
   133
 * \return Component vendor key in CaSoftwareRegistry::DetailMap.
hgs
parents:
diff changeset
   134
 */
hgs
parents:
diff changeset
   135
QString CaSoftwareRegistry::componentVendorKey()
hgs
parents:
diff changeset
   136
{
hgs
parents:
diff changeset
   137
    static const QString key("vendor");
hgs
parents:
diff changeset
   138
    return key;
hgs
parents:
diff changeset
   139
}
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
/*!
hgs
parents:
diff changeset
   142
 * \return Component drive info key in CaSoftwareRegistry::DetailMap.
hgs
parents:
diff changeset
   143
 */
hgs
parents:
diff changeset
   144
QString CaSoftwareRegistry::componentDriveInfoKey()
hgs
parents:
diff changeset
   145
{
hgs
parents:
diff changeset
   146
    static const QString key("driveInfo");
hgs
parents:
diff changeset
   147
    return key;
hgs
parents:
diff changeset
   148
}
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
/*!
hgs
parents:
diff changeset
   151
 * \return Component size info key in CaSoftwareRegistry::DetailMap.
hgs
parents:
diff changeset
   152
 */
hgs
parents:
diff changeset
   153
QString CaSoftwareRegistry::componentSizeKey()
hgs
parents:
diff changeset
   154
{
hgs
parents:
diff changeset
   155
    static const QString key("size");
hgs
parents:
diff changeset
   156
    return key;
hgs
parents:
diff changeset
   157
}
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
/*!
hgs
parents:
diff changeset
   160
 * \return Component type key in CaSoftwareRegistry::DetailMap.
hgs
parents:
diff changeset
   161
 */
hgs
parents:
diff changeset
   162
QString CaSoftwareRegistry::componentTypeKey()
hgs
parents:
diff changeset
   163
{
hgs
parents:
diff changeset
   164
    static const QString key("type");
hgs
parents:
diff changeset
   165
    return key;
hgs
parents:
diff changeset
   166
}
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169