activityfw/storage/client/src/afstorageclient_p.cpp
author hgs
Mon, 13 Sep 2010 13:26:33 +0300
changeset 116 305818acdca4
parent 107 b34d53f6acdf
child 119 50e220be30d1
permissions -rw-r--r--
201036
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
107
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:
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
#include "afstorageclient_p.h"
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include <fbs.h>
hgs
parents:
diff changeset
    20
#include <s32mem.h>
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include "afasyncrequest_p.h"
hgs
parents:
diff changeset
    23
#include "afstorageglobals.h"
hgs
parents:
diff changeset
    24
#include "afentry.h"
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    27
/**
hgs
parents:
diff changeset
    28
 * Two-phase constructor. Create and initialize instance
hgs
parents:
diff changeset
    29
 * @return entry instance
hgs
parents:
diff changeset
    30
 */
hgs
parents:
diff changeset
    31
CAfStorageClientPrivate *CAfStorageClientPrivate::NewL(MAfAsyncRequestObserver &observer)
hgs
parents:
diff changeset
    32
{
hgs
parents:
diff changeset
    33
    CAfStorageClientPrivate *self = CAfStorageClientPrivate::NewLC(observer);
hgs
parents:
diff changeset
    34
    CleanupStack::Pop(self);
hgs
parents:
diff changeset
    35
    return self;
hgs
parents:
diff changeset
    36
}
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    39
/**
hgs
parents:
diff changeset
    40
 * Two-phase constructor. Create, initialize and push instance into cleanup stack
hgs
parents:
diff changeset
    41
 * @return entry instance
hgs
parents:
diff changeset
    42
 */
hgs
parents:
diff changeset
    43
CAfStorageClientPrivate *CAfStorageClientPrivate::NewLC(MAfAsyncRequestObserver &observer)
hgs
parents:
diff changeset
    44
{
hgs
parents:
diff changeset
    45
    CAfStorageClientPrivate *self = new (ELeave) CAfStorageClientPrivate(observer);
hgs
parents:
diff changeset
    46
    CleanupStack::PushL(self);
hgs
parents:
diff changeset
    47
    self->ConstructL();
hgs
parents:
diff changeset
    48
    return self;
hgs
parents:
diff changeset
    49
}    
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    52
/**
hgs
parents:
diff changeset
    53
 * Destructor
hgs
parents:
diff changeset
    54
 */
hgs
parents:
diff changeset
    55
CAfStorageClientPrivate::~CAfStorageClientPrivate()
hgs
parents:
diff changeset
    56
{
hgs
parents:
diff changeset
    57
    mImplementation.Close();
hgs
parents:
diff changeset
    58
}
hgs
parents:
diff changeset
    59
    
hgs
parents:
diff changeset
    60
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    61
/**
hgs
parents:
diff changeset
    62
 * Constructor
hgs
parents:
diff changeset
    63
 */
hgs
parents:
diff changeset
    64
CAfStorageClientPrivate::CAfStorageClientPrivate(MAfAsyncRequestObserver &observer) : mImplementation(observer)
hgs
parents:
diff changeset
    65
{
hgs
parents:
diff changeset
    66
}
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    69
/**
hgs
parents:
diff changeset
    70
 * 2nd phase of construction
hgs
parents:
diff changeset
    71
 */
hgs
parents:
diff changeset
    72
void CAfStorageClientPrivate::ConstructL()
hgs
parents:
diff changeset
    73
{
hgs
parents:
diff changeset
    74
    mImplementation.connectL();
hgs
parents:
diff changeset
    75
}
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    78
/**
hgs
parents:
diff changeset
    79
 * Function implementation
hgs
parents:
diff changeset
    80
 * @see AfStorageClient::addActivity(const CAfEntry &,const QPixmap&)
hgs
parents:
diff changeset
    81
 */
hgs
parents:
diff changeset
    82
int CAfStorageClientPrivate::addActivity(const CAfEntry &entry, TInt imageHandle)
hgs
parents:
diff changeset
    83
{
hgs
parents:
diff changeset
    84
    return execute(AddActivity, entry, imageHandle);
hgs
parents:
diff changeset
    85
}
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    88
/**
hgs
parents:
diff changeset
    89
 * Function implementation
hgs
parents:
diff changeset
    90
 * @see AfStorageClient::updateActivity(const CAfEntry &,const QPixmap&)
hgs
parents:
diff changeset
    91
 */
hgs
parents:
diff changeset
    92
int CAfStorageClientPrivate::updateActivity(const CAfEntry &entry, TInt imageHandle)
hgs
parents:
diff changeset
    93
{
hgs
parents:
diff changeset
    94
    return execute(UpdateActivity, entry, imageHandle);
hgs
parents:
diff changeset
    95
}
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    98
/**
hgs
parents:
diff changeset
    99
 * Function implementation
hgs
parents:
diff changeset
   100
 * @see AfStorageClient::saveActivity(const CAfEntry &,const QPixmap&)
hgs
parents:
diff changeset
   101
 */
hgs
parents:
diff changeset
   102
int CAfStorageClientPrivate::saveActivity(const CAfEntry &entry, TInt imageHandle)
hgs
parents:
diff changeset
   103
{
hgs
parents:
diff changeset
   104
    return execute(SaveActivity, entry, imageHandle);
hgs
parents:
diff changeset
   105
}
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   108
/**
hgs
parents:
diff changeset
   109
 * Function implementation
hgs
parents:
diff changeset
   110
 * @see AfStorageClient::removeActivity(const CAfEntry &)
hgs
parents:
diff changeset
   111
 */
hgs
parents:
diff changeset
   112
int CAfStorageClientPrivate::removeActivity(const CAfEntry &entry)
hgs
parents:
diff changeset
   113
{
hgs
parents:
diff changeset
   114
    return execute(RemoveActivity, entry, -1);
hgs
parents:
diff changeset
   115
}
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   118
/**
hgs
parents:
diff changeset
   119
 * Function implementation
hgs
parents:
diff changeset
   120
 * @see AfStorageClient::removeApplicationActivities(const CAfEntry &)
hgs
parents:
diff changeset
   121
 */
hgs
parents:
diff changeset
   122
int CAfStorageClientPrivate::removeApplicationActivities(const CAfEntry &entry)
hgs
parents:
diff changeset
   123
{
hgs
parents:
diff changeset
   124
    return execute(RemoveApplicationActivities, entry, -1);
hgs
parents:
diff changeset
   125
}
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   128
/**
hgs
parents:
diff changeset
   129
 * Function implementation
hgs
parents:
diff changeset
   130
 * @see AfStorageClient::activities(RPointerArray<CAfEntry> &)
hgs
parents:
diff changeset
   131
 */
116
hgs
parents: 107
diff changeset
   132
int CAfStorageClientPrivate::activities(RPointerArray<CAfEntry> &results, TInt limit)
107
hgs
parents:
diff changeset
   133
{
hgs
parents:
diff changeset
   134
    CAfEntry *entry = CAfEntry::NewL();
116
hgs
parents: 107
diff changeset
   135
    TInt result = execute(Activities, results, *entry, limit);
107
hgs
parents:
diff changeset
   136
    delete entry;
hgs
parents:
diff changeset
   137
    return result;
hgs
parents:
diff changeset
   138
}
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   141
/**
hgs
parents:
diff changeset
   142
 * Function implementation
hgs
parents:
diff changeset
   143
 * @see AfStorageClient::applicationActivities(RPointerArray<CAfEntry> &, const CAfEntry &)
hgs
parents:
diff changeset
   144
 */
hgs
parents:
diff changeset
   145
int CAfStorageClientPrivate::applicationActivities(RPointerArray<CAfEntry> &results, const CAfEntry &templateEntry)
hgs
parents:
diff changeset
   146
{
hgs
parents:
diff changeset
   147
    return execute(ApplicationActivities, results, templateEntry);
hgs
parents:
diff changeset
   148
}
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   151
/**
hgs
parents:
diff changeset
   152
 * Function implementation
hgs
parents:
diff changeset
   153
 * @see AfStorageClient::activityData(CAfEntry &, const CAfEntry &)
hgs
parents:
diff changeset
   154
 */
hgs
parents:
diff changeset
   155
int CAfStorageClientPrivate::activityData(CAfEntry *&resultEntry, const CAfEntry &templateEntry)
hgs
parents:
diff changeset
   156
{   
hgs
parents:
diff changeset
   157
    RPointerArray<CAfEntry> results;
hgs
parents:
diff changeset
   158
    int errNo(execute(ApplicationActivity, results, templateEntry));
hgs
parents:
diff changeset
   159
    if (KErrNone == errNo && results.Count() > 0) {
hgs
parents:
diff changeset
   160
        resultEntry = results[0];
hgs
parents:
diff changeset
   161
        results.Remove(0);
hgs
parents:
diff changeset
   162
    }
hgs
parents:
diff changeset
   163
    results.ResetAndDestroy();
hgs
parents:
diff changeset
   164
    return errNo;
hgs
parents:
diff changeset
   165
}
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   168
/**
hgs
parents:
diff changeset
   169
 * Function implementation
hgs
parents:
diff changeset
   170
 * @see AfStorageClient::waitActivity()
hgs
parents:
diff changeset
   171
 */
hgs
parents:
diff changeset
   172
int CAfStorageClientPrivate::waitActivity()
hgs
parents:
diff changeset
   173
{
hgs
parents:
diff changeset
   174
    CAfEntry *entry = CAfEntry::NewL();
hgs
parents:
diff changeset
   175
    TInt result = execute(WaitActivity, *entry, -1);
hgs
parents:
diff changeset
   176
    delete entry;
hgs
parents:
diff changeset
   177
    return result;
hgs
parents:
diff changeset
   178
}
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   181
/**
hgs
parents:
diff changeset
   182
 * Function implementation
hgs
parents:
diff changeset
   183
 * @see AfStorageClient::getThumbnail(const TSize &size, const TDesC &imagePath, void *userData)
hgs
parents:
diff changeset
   184
 */
hgs
parents:
diff changeset
   185
int CAfStorageClientPrivate::getThumbnail(const TSize &size, const TDesC &imagePath, void *userData)
hgs
parents:
diff changeset
   186
{
hgs
parents:
diff changeset
   187
    TRAPD(errNo, mImplementation.getThumbnailL(size, imagePath, userData);)
hgs
parents:
diff changeset
   188
    return errNo;
hgs
parents:
diff changeset
   189
}
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   192
/**
hgs
parents:
diff changeset
   193
 * Function implementation
hgs
parents:
diff changeset
   194
 * @see AfStorageClient::notifyDataChange()
hgs
parents:
diff changeset
   195
 */
hgs
parents:
diff changeset
   196
int CAfStorageClientPrivate::notifyDataChange()
hgs
parents:
diff changeset
   197
{
hgs
parents:
diff changeset
   198
    CAfEntry *entry = CAfEntry::NewL();
hgs
parents:
diff changeset
   199
    TInt result = execute(NotifyChange, *entry, -1);
hgs
parents:
diff changeset
   200
    delete entry;
hgs
parents:
diff changeset
   201
    return result;
hgs
parents:
diff changeset
   202
}
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   205
/**
hgs
parents:
diff changeset
   206
 * Function implementation
hgs
parents:
diff changeset
   207
 * @see AfStorageClient::launchActivity(const CAfEntry &)
hgs
parents:
diff changeset
   208
 */
hgs
parents:
diff changeset
   209
int CAfStorageClientPrivate::launchActivity(const CAfEntry &templateEntry)
hgs
parents:
diff changeset
   210
{
hgs
parents:
diff changeset
   211
    return execute(LaunchActivity, templateEntry, -1);
hgs
parents:
diff changeset
   212
}
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   215
/**
hgs
parents:
diff changeset
   216
 * Function execute activity framework functinality and return results 
hgs
parents:
diff changeset
   217
 */
hgs
parents:
diff changeset
   218
int CAfStorageClientPrivate::execute(int function, const CAfEntry &sourceEntry, TInt imageHandle)
hgs
parents:
diff changeset
   219
{
hgs
parents:
diff changeset
   220
    TRAPD(errNo,
hgs
parents:
diff changeset
   221
        switch (function) {
hgs
parents:
diff changeset
   222
        case AddActivity:
hgs
parents:
diff changeset
   223
        case UpdateActivity:
hgs
parents:
diff changeset
   224
        case SaveActivity:
hgs
parents:
diff changeset
   225
        case RemoveActivity:
hgs
parents:
diff changeset
   226
        case RemoveApplicationActivities:
hgs
parents:
diff changeset
   227
        case LaunchActivity:
hgs
parents:
diff changeset
   228
            mImplementation.executeL(function, sourceEntry, imageHandle);
hgs
parents:
diff changeset
   229
            break;
hgs
parents:
diff changeset
   230
        
hgs
parents:
diff changeset
   231
        case WaitActivity:
hgs
parents:
diff changeset
   232
        case NotifyChange:
hgs
parents:
diff changeset
   233
            mImplementation.executeL(function);
hgs
parents:
diff changeset
   234
            break;
hgs
parents:
diff changeset
   235
        default:
hgs
parents:
diff changeset
   236
            User::Leave(KErrArgument);
hgs
parents:
diff changeset
   237
        }
hgs
parents:
diff changeset
   238
    )
hgs
parents:
diff changeset
   239
    return errNo;
hgs
parents:
diff changeset
   240
}
hgs
parents:
diff changeset
   241
hgs
parents:
diff changeset
   242
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   243
/**
hgs
parents:
diff changeset
   244
 * Function execute activity framework functinality and return results 
hgs
parents:
diff changeset
   245
 */
116
hgs
parents: 107
diff changeset
   246
int CAfStorageClientPrivate::execute(int function, RPointerArray<CAfEntry>& resultsList,const CAfEntry& templateEntry, int limit)
107
hgs
parents:
diff changeset
   247
{
116
hgs
parents: 107
diff changeset
   248
    TRAPD(errNo, mImplementation.executeL(function, resultsList, templateEntry, limit);)
107
hgs
parents:
diff changeset
   249
    return errNo;
hgs
parents:
diff changeset
   250
}