homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/caservice.h
author hgs
Wed, 06 Oct 2010 16:06:24 +0300
changeset 97 66b5fe3c07fd
parent 90 3ac3aaebaee5
permissions -rw-r--r--
201039_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
90
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009 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: caservice.h
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
 */
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef CASERVICE_H
hgs
parents:
diff changeset
    19
#define CASERVICE_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <QObject>
hgs
parents:
diff changeset
    22
#include <QSharedPointer>
hgs
parents:
diff changeset
    23
#include <QMetaType>
hgs
parents:
diff changeset
    24
#include <QCoreApplication>
hgs
parents:
diff changeset
    25
#include <QString>
hgs
parents:
diff changeset
    26
#include <QDebug>
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
#include "caservice.h"
hgs
parents:
diff changeset
    29
#include "caquery.h"
hgs
parents:
diff changeset
    30
#include "caentry.h"
hgs
parents:
diff changeset
    31
#include "canotifier.h"
hgs
parents:
diff changeset
    32
#include "canotifierfilter.h"
hgs
parents:
diff changeset
    33
#include "cadefs.h"
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
typedef QList< QSharedPointer<CaEntry> > CaEntryList;
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
// mocks Content Storage's CaService
hgs
parents:
diff changeset
    38
class CaService: public QObject
hgs
parents:
diff changeset
    39
{
hgs
parents:
diff changeset
    40
    Q_OBJECT
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
    explicit CaService(QObject *parent = 0);
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
    ~CaService();
hgs
parents:
diff changeset
    45
public:
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
    static QSharedPointer<CaService> instance();
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
    // mock only those methods of original CaService that are used in the module
hgs
parents:
diff changeset
    51
    QSharedPointer<CaEntry> getEntry(int entryId) const;
hgs
parents:
diff changeset
    52
    QList< QSharedPointer<CaEntry> > getEntries(const CaQuery &query) const;
hgs
parents:
diff changeset
    53
    QList<int> getEntryIds(const CaQuery &query) const;
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
    QSharedPointer<CaEntry> createEntry(const CaEntry &entry) const;
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
    bool removeEntry(int entryId) const;
hgs
parents:
diff changeset
    58
    bool updateEntry(const CaEntry &entry) const;
hgs
parents:
diff changeset
    59
    bool touch(const CaEntry &entry) const;
hgs
parents:
diff changeset
    60
    bool removeEntryFromGroup(int groupId, int entryId) const;
hgs
parents:
diff changeset
    61
    bool appendEntryToGroup(int groupId, int entryId) const;
hgs
parents:
diff changeset
    62
    bool appendEntriesToGroup(int groupId,
hgs
parents:
diff changeset
    63
        const QList<int> &entryIdList) const;
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
    int executeCommand(int entryId, const QString &command = 
hgs
parents:
diff changeset
    66
        caCmdOpen, QObject* receiver = NULL, const char* member = NULL) const;
hgs
parents:
diff changeset
    67
    int executeCommand(const CaEntry &entry, const QString &command =
hgs
parents:
diff changeset
    68
        caCmdOpen, QObject* receiver = NULL, const char* member = NULL) const;
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
    
hgs
parents:
diff changeset
    71
    bool customSort(int groupId, QList<int> &entryIdList) const;
hgs
parents:
diff changeset
    72
    
hgs
parents:
diff changeset
    73
    CaNotifier * createNotifier(const CaNotifierFilter &filter) const;
hgs
parents:
diff changeset
    74
    
hgs
parents:
diff changeset
    75
    mutable int mGetEntryId;
hgs
parents:
diff changeset
    76
    mutable QSharedPointer<CaEntry> mGetEntryResult;
hgs
parents:
diff changeset
    77
    mutable CaQuery mGetEntriesQuery;
hgs
parents:
diff changeset
    78
    mutable QList< QSharedPointer<CaEntry> > mGetEntriesResult;
hgs
parents:
diff changeset
    79
    mutable CaQuery mGetEntryIdQuery;
hgs
parents:
diff changeset
    80
    mutable QList<int> mGetEntryIdsResult;
hgs
parents:
diff changeset
    81
    mutable CaEntry mCreatedEntry;
hgs
parents:
diff changeset
    82
    mutable QSharedPointer<CaEntry>mCreateEntryResult;
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
    mutable int mRemoveEntryId;
hgs
parents:
diff changeset
    85
    mutable bool mRemoveEntryForIdResult;
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
    mutable CaEntry mUpdateEntry;
hgs
parents:
diff changeset
    88
    mutable bool mUpdateEntryResult;
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
    mutable CaEntry mTouchEntry;
hgs
parents:
diff changeset
    91
    mutable QList<int> mTouchEntriesId;
hgs
parents:
diff changeset
    92
    mutable bool mTouchResult;
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
    mutable int mRemoveGroupId;
hgs
parents:
diff changeset
    95
    mutable int mRemoveEntryFromGroupId;
hgs
parents:
diff changeset
    96
    mutable bool mRemoveEntryFromGroupResult;
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
    mutable int mAppendGroupId;
hgs
parents:
diff changeset
    99
    mutable int mAppenEntryId;
hgs
parents:
diff changeset
   100
    mutable bool mAppendEntryToGroupResult;
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
    mutable int mAppendListGroupId;
hgs
parents:
diff changeset
   103
    mutable QList<int> mAppendEntryIdList;
hgs
parents:
diff changeset
   104
    mutable bool mAppendEntriesToGroupResult;
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
    mutable int mExecuteEntryId;
hgs
parents:
diff changeset
   107
    mutable QString mExecuteCommand;
hgs
parents:
diff changeset
   108
    mutable int mExecuteCommandResult;
hgs
parents:
diff changeset
   109
    
hgs
parents:
diff changeset
   110
    mutable CaEntry mExecuteEntry;
hgs
parents:
diff changeset
   111
    
hgs
parents:
diff changeset
   112
    mutable int mCustomSortGroupId;
hgs
parents:
diff changeset
   113
    mutable QList<int> mCustomSortEntryIdList;
hgs
parents:
diff changeset
   114
    mutable bool mCustomSortResult;
hgs
parents:
diff changeset
   115
    
hgs
parents:
diff changeset
   116
    mutable CaNotifierFilter mCreateNotifierFilter;
hgs
parents:
diff changeset
   117
    mutable CaNotifier *mCreateNotifierResult;
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
    // helper for tests, not belonging to CaService
hgs
parents:
diff changeset
   120
    void clear()
hgs
parents:
diff changeset
   121
    {
hgs
parents:
diff changeset
   122
        mGetEntryId = 0;
hgs
parents:
diff changeset
   123
        mGetEntryResult.clear();
hgs
parents:
diff changeset
   124
        mGetEntriesQuery.clear();
hgs
parents:
diff changeset
   125
        mGetEntriesResult.clear();
hgs
parents:
diff changeset
   126
        mGetEntryIdQuery.clear();
hgs
parents:
diff changeset
   127
        mGetEntryIdsResult.clear();
hgs
parents:
diff changeset
   128
        mCreatedEntry.clear();
hgs
parents:
diff changeset
   129
        mCreateEntryResult.clear();
hgs
parents:
diff changeset
   130
        mRemoveEntryId = 0;
hgs
parents:
diff changeset
   131
        mRemoveEntryForIdResult = false;
hgs
parents:
diff changeset
   132
        
hgs
parents:
diff changeset
   133
        mUpdateEntry.clear();
hgs
parents:
diff changeset
   134
        mUpdateEntryResult = false;
hgs
parents:
diff changeset
   135
        
hgs
parents:
diff changeset
   136
        mTouchEntry.clear();
hgs
parents:
diff changeset
   137
        mTouchEntriesId.clear();
hgs
parents:
diff changeset
   138
        mTouchResult = false;
hgs
parents:
diff changeset
   139
        
hgs
parents:
diff changeset
   140
        mRemoveGroupId = 0;
hgs
parents:
diff changeset
   141
        mRemoveEntryFromGroupId = 0;
hgs
parents:
diff changeset
   142
        mRemoveEntryFromGroupResult = false;
hgs
parents:
diff changeset
   143
        
hgs
parents:
diff changeset
   144
        mAppendGroupId = 0;
hgs
parents:
diff changeset
   145
        mAppenEntryId = 0;
hgs
parents:
diff changeset
   146
        mAppendEntryToGroupResult = false;
hgs
parents:
diff changeset
   147
        
hgs
parents:
diff changeset
   148
        mAppendListGroupId = 0;
hgs
parents:
diff changeset
   149
        mAppendEntryIdList.clear();
hgs
parents:
diff changeset
   150
        mAppendEntriesToGroupResult = false;
hgs
parents:
diff changeset
   151
        
hgs
parents:
diff changeset
   152
        mExecuteEntryId = 0;
hgs
parents:
diff changeset
   153
        mExecuteCommand.clear();
hgs
parents:
diff changeset
   154
        mExecuteCommandResult = -333;
hgs
parents:
diff changeset
   155
        
hgs
parents:
diff changeset
   156
        mCustomSortGroupId = 0;
hgs
parents:
diff changeset
   157
        mCustomSortEntryIdList.clear();
hgs
parents:
diff changeset
   158
        mCustomSortResult = false;
hgs
parents:
diff changeset
   159
        
hgs
parents:
diff changeset
   160
        mCreateNotifierFilter = CaNotifierFilter();
hgs
parents:
diff changeset
   161
        mCreateNotifierResult = 0;
hgs
parents:
diff changeset
   162
    }
hgs
parents:
diff changeset
   163
private:
hgs
parents:
diff changeset
   164
    Q_DISABLE_COPY(CaService)
hgs
parents:
diff changeset
   165
    friend class QtSharedPointer::ExternalRefCount<CaService>;
hgs
parents:
diff changeset
   166
};
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
inline CaService::CaService(QObject *parent) :
hgs
parents:
diff changeset
   169
        QObject(parent),
hgs
parents:
diff changeset
   170
        mGetEntryId(0),
hgs
parents:
diff changeset
   171
        mRemoveEntryId(0),
hgs
parents:
diff changeset
   172
        mRemoveEntryForIdResult(false),
hgs
parents:
diff changeset
   173
        mUpdateEntryResult(false),
hgs
parents:
diff changeset
   174
        mTouchResult(false),
hgs
parents:
diff changeset
   175
        mRemoveGroupId(0),
hgs
parents:
diff changeset
   176
        mRemoveEntryFromGroupId(0),
hgs
parents:
diff changeset
   177
        mRemoveEntryFromGroupResult(false),
hgs
parents:
diff changeset
   178
        mAppendGroupId(0),
hgs
parents:
diff changeset
   179
        mAppenEntryId(0),
hgs
parents:
diff changeset
   180
        mAppendEntryToGroupResult(false),
hgs
parents:
diff changeset
   181
        mAppendListGroupId(0),
hgs
parents:
diff changeset
   182
        mAppendEntriesToGroupResult(false),
hgs
parents:
diff changeset
   183
        mExecuteEntryId(0),
hgs
parents:
diff changeset
   184
        mExecuteCommandResult(false),
hgs
parents:
diff changeset
   185
        mCustomSortGroupId(0),
hgs
parents:
diff changeset
   186
        mCustomSortResult(false),
hgs
parents:
diff changeset
   187
        mCreateNotifierResult(0)
hgs
parents:
diff changeset
   188
{
hgs
parents:
diff changeset
   189
}
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
inline QSharedPointer<CaService> CaService::instance()
hgs
parents:
diff changeset
   192
{
hgs
parents:
diff changeset
   193
    static QSharedPointer<CaService> service(new CaService);
hgs
parents:
diff changeset
   194
    return service;
hgs
parents:
diff changeset
   195
}
hgs
parents:
diff changeset
   196
hgs
parents:
diff changeset
   197
inline CaService::~CaService()
hgs
parents:
diff changeset
   198
{
hgs
parents:
diff changeset
   199
}
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
inline QSharedPointer<CaEntry> CaService::getEntry(int entryId) const
hgs
parents:
diff changeset
   202
{
hgs
parents:
diff changeset
   203
    mGetEntryId = entryId;
hgs
parents:
diff changeset
   204
    if (!mGetEntryResult.isNull()) {
hgs
parents:
diff changeset
   205
        mGetEntryResult->mIdResult = entryId;
hgs
parents:
diff changeset
   206
    }
hgs
parents:
diff changeset
   207
    return mGetEntryResult;
hgs
parents:
diff changeset
   208
}
hgs
parents:
diff changeset
   209
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
inline QList< QSharedPointer<CaEntry> > CaService::getEntries(const CaQuery &query) const
hgs
parents:
diff changeset
   212
{
hgs
parents:
diff changeset
   213
    mGetEntriesQuery = query;
hgs
parents:
diff changeset
   214
    return mGetEntriesResult;
hgs
parents:
diff changeset
   215
}
hgs
parents:
diff changeset
   216
hgs
parents:
diff changeset
   217
inline QList<int> CaService::getEntryIds(const CaQuery &query) const
hgs
parents:
diff changeset
   218
{
hgs
parents:
diff changeset
   219
    mGetEntryIdQuery = query;
hgs
parents:
diff changeset
   220
    return mGetEntryIdsResult;
hgs
parents:
diff changeset
   221
}
hgs
parents:
diff changeset
   222
hgs
parents:
diff changeset
   223
inline QSharedPointer<CaEntry> CaService::createEntry(const CaEntry &entry) const
hgs
parents:
diff changeset
   224
{
hgs
parents:
diff changeset
   225
    mCreatedEntry = entry;
hgs
parents:
diff changeset
   226
    return mCreateEntryResult;
hgs
parents:
diff changeset
   227
}
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
inline bool CaService::removeEntry(int entryId) const
hgs
parents:
diff changeset
   230
{
hgs
parents:
diff changeset
   231
    mRemoveEntryId = entryId;
hgs
parents:
diff changeset
   232
    return mRemoveEntryForIdResult;
hgs
parents:
diff changeset
   233
}
hgs
parents:
diff changeset
   234
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236
inline bool CaService::updateEntry(const CaEntry &entry) const
hgs
parents:
diff changeset
   237
{
hgs
parents:
diff changeset
   238
    mUpdateEntry = entry;
hgs
parents:
diff changeset
   239
    return mUpdateEntryResult;
hgs
parents:
diff changeset
   240
}
hgs
parents:
diff changeset
   241
hgs
parents:
diff changeset
   242
inline bool CaService::touch(const CaEntry &entry) const
hgs
parents:
diff changeset
   243
{
hgs
parents:
diff changeset
   244
    if (entry.flags() & RemovableEntryFlag &&
hgs
parents:
diff changeset
   245
        (entry.flags() & UsedEntryFlag) == 0 &&
hgs
parents:
diff changeset
   246
        entry.role() == ItemEntryRole &&
hgs
parents:
diff changeset
   247
        entry.entryTypeName() != QString("package")) { //packageTypeName
hgs
parents:
diff changeset
   248
        mTouchEntry = entry;
hgs
parents:
diff changeset
   249
        mTouchEntriesId.append(entry.id());
hgs
parents:
diff changeset
   250
        return mTouchResult;
hgs
parents:
diff changeset
   251
    } else {
hgs
parents:
diff changeset
   252
        return true;
hgs
parents:
diff changeset
   253
    }
hgs
parents:
diff changeset
   254
}
hgs
parents:
diff changeset
   255
hgs
parents:
diff changeset
   256
inline bool CaService::removeEntryFromGroup(int groupId, int entryId) const
hgs
parents:
diff changeset
   257
{
hgs
parents:
diff changeset
   258
    mRemoveGroupId = groupId;
hgs
parents:
diff changeset
   259
    mRemoveEntryFromGroupId = entryId;
hgs
parents:
diff changeset
   260
    return mRemoveEntryFromGroupResult;
hgs
parents:
diff changeset
   261
}
hgs
parents:
diff changeset
   262
hgs
parents:
diff changeset
   263
inline bool CaService::appendEntryToGroup(int groupId, int entryId) const
hgs
parents:
diff changeset
   264
{
hgs
parents:
diff changeset
   265
    mAppendGroupId = groupId;
hgs
parents:
diff changeset
   266
    mAppenEntryId = entryId;
hgs
parents:
diff changeset
   267
    return mAppendEntryToGroupResult;
hgs
parents:
diff changeset
   268
}
hgs
parents:
diff changeset
   269
hgs
parents:
diff changeset
   270
inline bool CaService::appendEntriesToGroup(int groupId,
hgs
parents:
diff changeset
   271
                                     const QList<int> &entryIdList) const
hgs
parents:
diff changeset
   272
{
hgs
parents:
diff changeset
   273
    mAppendListGroupId = groupId;
hgs
parents:
diff changeset
   274
    mAppendEntryIdList = entryIdList;
hgs
parents:
diff changeset
   275
    return mAppendEntriesToGroupResult;
hgs
parents:
diff changeset
   276
}
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
inline int CaService::executeCommand(int entryId, const QString &command, 
hgs
parents:
diff changeset
   279
        QObject* receiver, const char* member) const
hgs
parents:
diff changeset
   280
{
hgs
parents:
diff changeset
   281
    Q_UNUSED(receiver);
hgs
parents:
diff changeset
   282
    Q_UNUSED(member);
hgs
parents:
diff changeset
   283
    mExecuteEntryId = entryId;
hgs
parents:
diff changeset
   284
    mExecuteCommand = command;
hgs
parents:
diff changeset
   285
    return mExecuteCommandResult;
hgs
parents:
diff changeset
   286
}
hgs
parents:
diff changeset
   287
hgs
parents:
diff changeset
   288
inline int CaService::executeCommand(const CaEntry &entry, const QString &command, 
hgs
parents:
diff changeset
   289
        QObject* receiver, const char* member) const
hgs
parents:
diff changeset
   290
{
hgs
parents:
diff changeset
   291
    Q_UNUSED(receiver);
hgs
parents:
diff changeset
   292
    Q_UNUSED(member);
hgs
parents:
diff changeset
   293
    mExecuteEntry = entry;
hgs
parents:
diff changeset
   294
    mExecuteCommand = command;
hgs
parents:
diff changeset
   295
    return mExecuteCommandResult;
hgs
parents:
diff changeset
   296
}
hgs
parents:
diff changeset
   297
hgs
parents:
diff changeset
   298
inline bool CaService::customSort(int groupId, QList<int> &entryIdList) const
hgs
parents:
diff changeset
   299
{
hgs
parents:
diff changeset
   300
    mCustomSortGroupId = groupId;
hgs
parents:
diff changeset
   301
    mCustomSortEntryIdList = entryIdList;
hgs
parents:
diff changeset
   302
    return mCustomSortResult;
hgs
parents:
diff changeset
   303
}
hgs
parents:
diff changeset
   304
hgs
parents:
diff changeset
   305
inline CaNotifier * CaService::createNotifier(const CaNotifierFilter &filter) const
hgs
parents:
diff changeset
   306
{
hgs
parents:
diff changeset
   307
    mCreateNotifierFilter = filter;
hgs
parents:
diff changeset
   308
    return mCreateNotifierResult;
hgs
parents:
diff changeset
   309
}
hgs
parents:
diff changeset
   310
    
hgs
parents:
diff changeset
   311
hgs
parents:
diff changeset
   312
#endif // CASERVICE_H