applicationmanagement/server/src/AMDeploymentComponent.cpp
author hgs
Tue, 13 Jul 2010 04:01:20 +0530
changeset 47 d316aecb87fd
child 52 6e38e48ee756
permissions -rw-r--r--
201025_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     1
/*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     2
 * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     3
 * All rights reserved.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     8
 *
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     9
 * Initial Contributors:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    11
 *
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    12
 * Contributors:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    13
 *
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    14
 * Description: Implementation of applicationmanagement components
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    15
 *
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    16
 */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    17
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    18
#include <e32debug.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    19
#include <s32mem.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    20
#include <featmgr.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    21
#include <ssl.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    22
#include <APGCLI.H>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    23
#include <APMREC.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    24
#include <APMSTD.H>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    25
#ifdef __SERIES60_30__
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    26
#include <CMenuClient.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    27
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    28
#include "amsmlhelper.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    29
#include "amprivateCRKeys.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    30
#include "AMDeploymentComponent.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    31
#include "debug.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    32
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    33
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    34
using namespace NApplicationManagement;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    35
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    36
_LIT8( KAMDCDataSuffix, "_D.txt");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    37
_LIT8( KAMDCMetaDataSuffix, "_M.txt");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    38
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    39
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    40
/***************************************************
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    41
 // CDeploymentComponent
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    42
 ***************************************************/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    43
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    44
CDeploymentComponent* CDeploymentComponent::NewLC(TInt aInternalId,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    45
        const TDCUserId &aUserId)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    46
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    47
    CDeploymentComponent *self = new ( ELeave ) CDeploymentComponent( aInternalId );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    48
    CleanupStack::PushL(self) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    49
    self->ConstructL(aUserId) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    50
    return self;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    51
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    52
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    53
CDeploymentComponent* CDeploymentComponent::NewL(TInt aInternalId,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    54
        const TDCUserId &aUserId)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    55
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    56
    CDeploymentComponent *self = NewLC(aInternalId, aUserId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    57
    CleanupStack::Pop(self) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    58
    return self;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    59
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    60
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    61
CDeploymentComponent* CDeploymentComponent::LoadLC(TInt aInternalId,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    62
        const TDesC8 &aBuffer)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    63
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    64
    CDeploymentComponent *self = new ( ELeave ) CDeploymentComponent(aInternalId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    65
    CleanupStack::PushL(self) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    66
    self->ConstructLoadL(aBuffer) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    67
    return self;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    68
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    69
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    70
CDeploymentComponent* CDeploymentComponent::LoadL(TInt aInternalId,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    71
        const TDesC8 &aBuffer)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    72
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    73
    CDeploymentComponent *self = LoadLC(aInternalId, aBuffer);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    74
    CleanupStack::Pop(self) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    75
    return self;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    76
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    77
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    78
CDeploymentComponent::CDeploymentComponent(TInt aInternalId) :
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    79
iInternalId(aInternalId), iPkgVersion( 3), iOwner( -1),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    80
iOwnerProfile( -1)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    81
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    82
        iUninstallOpts.iKillApp = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    83
        SwiUI::TInstallOptions &opts = iInstallOpts.iOptions;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    84
        opts.iUpgrade = SwiUI::EPolicyNotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    85
        opts.iOptionalItems = SwiUI::EPolicyNotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    86
        opts.iOCSP = SwiUI::EPolicyNotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    87
        opts.iIgnoreOCSPWarnings = SwiUI::EPolicyNotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    88
        //    iIgnoreOtherWarnings = SwiUI::EPolicyNotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    89
        opts.iUntrusted = SwiUI::EPolicyNotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    90
        opts.iPackageInfo = SwiUI::EPolicyNotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    91
        opts.iCapabilities = SwiUI::EPolicyNotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    92
        opts.iKillApp = SwiUI::EPolicyNotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    93
        opts.iOverwrite = SwiUI::EPolicyNotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    94
        opts.iDownload = SwiUI::EPolicyNotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    95
        opts.iDrive = SwiUI::EPolicyNotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    96
        opts.iLang = ELangNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    97
        opts.iUsePhoneLang = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    98
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    99
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   100
CDeploymentComponent::~CDeploymentComponent()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   101
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   102
    RDEBUG8_3( "CDeploymentComponent::~CDeploymentComponent 0x%X - 0x%X",
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   103
            reinterpret_cast<TUint>(this), reinterpret_cast<TUint>(this)+sizeof( CDeploymentComponent ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   104
    delete iData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   105
    iData = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   106
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   107
    delete iMetaData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   108
    iMetaData = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   109
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   110
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   111
CDeploymentComponent &CDeploymentComponent::operator=( const CDeploymentComponent &aData )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   112
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   113
    if( &aData != this )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   114
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   115
        *iData = aData.Data();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   116
        *iMetaData = aData.MetaData();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   117
        iId = aData.ComponentId();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   118
        iName = aData.ComponentName();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   119
        iVersion = aData.iVersion;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   120
        iState = aData.State();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   121
        iInternalId = aData.InternalId();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   122
        iUid = aData.Uid();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   123
        iUserId = aData.iUserId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   124
        iOwner = aData.iOwner;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   125
        iInstallOpts = aData.InstallOpts();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   126
        iPkgID = aData.PkgId();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   127
        iDescription = aData.Description();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   128
        iPkgIDRef = aData.PkgIDRef();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   129
        iPkgType = aData.PkgType();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   130
        iRemovableApp = aData.AppRemovable();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   131
        iDriveSelection = aData.DriveSelected();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   132
        iComponentId = aData.iComponentId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   133
        iInstallOptsSet = aData.InstallOptsSet();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   134
        iPkgVersion = aData.iPkgVersion;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   135
        iDownloadStatus = aData.iDownloadStatus;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   136
        iDownloadURI = aData.iDownloadURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   137
        iUninstallOpts = aData.UninstallOpts();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   138
        iOwnerProfile = aData.OwnerProfile();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   139
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   140
    return *this;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   141
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   142
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   143
void CDeploymentComponent::PersistL(CRepository &aRepository) const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   144
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   145
    CBufBase *buf = CBufFlat::NewL( 32);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   146
    CleanupStack::PushL(buf);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   147
    TInt length(SerializedFormLength() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   148
    buf->ExpandL(0, length+1);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   149
    TPtr8 p3(buf->Ptr(0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   150
    RDesWriteStream stream(p3);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   151
    TInt len(SerializedFormL(stream) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   152
    TBuf8< NCentralRepositoryConstants::KMaxBinaryLength> tbuf;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   153
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   154
    TInt err(aRepository.Get(iInternalId, tbuf) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   155
    if (err == KErrNotFound)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   156
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   157
        err = aRepository.Create(iInternalId, buf->Ptr(0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   158
        RDEBUG_3( "CDeploymentComponent::PersistL:  Created %d to centrep with status %d", iInternalId, err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   159
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   160
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   161
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   162
        User::LeaveIfError(err) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   163
        err = aRepository.Set(iInternalId, buf->Ptr(0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   164
        RDEBUG_3( "CDeploymentComponent::PersistL:  Persisted %d to centrep with status %d", iInternalId, err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   165
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   166
    User::LeaveIfError(err) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   167
    CleanupStack::PopAndDestroy(buf);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   168
    RFs fs;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   169
    User::LeaveIfError(fs.Connect() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   170
    CleanupClosePushL(fs);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   171
    iData->PersistL(fs);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   172
    iMetaData->PersistL(fs);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   173
    CleanupStack::PopAndDestroy( &fs) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   174
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   175
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   176
void CDeploymentComponent::CopyStateTo(TDeploymentComponent &aInfo) const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   177
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   178
    aInfo.iId = iId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   179
    aInfo.iName = iName;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   180
    aInfo.iVersion = iVersion;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   181
    aInfo.iDescription = iDescription;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   182
    aInfo.iPkgID = iPkgID;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   183
    aInfo.iPkgIDRef = iPkgIDRef;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   184
    aInfo.iPkgType = iPkgType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   185
    aInfo.iState = iState;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   186
    aInfo.iOldState = iOldState;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   187
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   188
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   189
TBool CDeploymentComponent::IsJavaMimeL(const TDesC8& aMime)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   190
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   191
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   192
    FeatureManager::InitializeLibL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   193
    TBool supported = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   194
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   195
    if (FeatureManager::FeatureSupported(KFeatureIdJavaMIDP20) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   196
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   197
        supported = ((aMime == SwiUI::KJarMIMEType || aMime
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   198
                == SwiUI::KJadMIMEType || aMime == SwiUI::KJarxMIMEType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   199
                || aMime == SwiUI::KJavaMIMEType) ? ETrue : EFalse );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   200
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   201
    FeatureManager::UnInitializeLib();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   202
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   203
    return supported;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   204
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   205
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   206
TBool CDeploymentComponent::IsSisMimeL(const TDesC8& aMime)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   207
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   208
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   209
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   210
    TBool supported = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   211
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   212
    supported = ((aMime == SwiUI::KSisxMimeType || aMime
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   213
                == SwiUI::KSisMimeType || aMime == SwiUI::KPipMimeType) ? ETrue : EFalse );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   214
   
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   215
    return supported;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   216
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   217
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   218
void CDeploymentComponent::ConstructL(const TDCUserId &aUserId)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   219
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   220
    iUserId = aUserId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   221
    RFs fs;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   222
    User::LeaveIfError(fs.Connect() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   223
    CleanupClosePushL(fs);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   224
    TInt e(fs.CreatePrivatePath(KDefaultDrive) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   225
    User::LeaveIfError(e);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   226
    TBuf<30> privatePath;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   227
    fs.PrivatePath(privatePath);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   228
    CleanupStack::PopAndDestroy( &fs);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   229
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   230
    TInt privPathLength(privatePath.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   231
    TBuf8<10> buf;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   232
    buf.NumFixedWidth(iInternalId, EHex, 10);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   233
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   234
    TBuf8 <30> path;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   235
    path.Copy(privatePath);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   236
    HBufC8 *afilename = HBufC8::NewLC(privPathLength + 10 + KAMDCDataSuffix().Length());
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   237
    *afilename = path;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   238
    TPtr8 afn(afilename->Des() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   239
    afn.Append(buf);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   240
    afn.Append(KAMDCDataSuffix) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   241
    iData = CDeploymentComponentData::NewL(CDeploymentComponentData::EData,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   242
            KNullDesC8, KNullDesC8, afn);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   243
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   244
    afn.Replace(privPathLength + 10, KAMDCMetaDataSuffix().Length(), KAMDCMetaDataSuffix);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   245
    iMetaData = CDeploymentComponentData::NewL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   246
            CDeploymentComponentData::EMetaData, KNullDesC8, KNullDesC8, afn);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   247
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   248
    CleanupStack::PopAndDestroy(afilename);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   249
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   250
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   251
TInt CDeploymentComponent::SerializedFormLength() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   252
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   253
    //   0			1		2		3		4		5			6			7	8			9			10		11
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   254
    // iUserId , iState, iPkgVer, iUid, iIdLen, iNameLen, iVersLen, iDownState, iOwner, iOldState ,iDownUriLen, iInstallOptsset
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   255
    return (20*4)+iUserId.Length() + iId.Length() + iName.Length()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   256
            + iVersion.Length() +
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   257
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   258
    iMidletName.Length() + iMideltVendorName.Length()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   259
            + iMidletVersion.Length()+ iDownloadURI.Length()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   260
            + iDescription.Length()+ iPkgID.Length()+iPkgIDRef.Length()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   261
            +iPkgType.Length()+ sizeof(iRemovableApp)+sizeof(iDriveSelection)+sizeof(iComponentId) + iData->SerializedFormLength()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   262
            + iMetaData->SerializedFormLength() + sizeof(TAMInstallOptions);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   263
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   264
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   265
TInt CDeploymentComponent::SerializedFormL(RWriteStream &aBuffer) const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   266
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   267
#ifdef _DEBUG
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   268
    RDEBUG_2( "Offset before uint: %d", aBuffer.Sink()->TellL( MStreamBuf::EWrite ).Offset() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   269
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   270
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   271
    aBuffer.WriteUint32L(iPkgVersion);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   272
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   273
#ifdef _DEBUG
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   274
    RDEBUG_2( "Offset after uint: %d" , aBuffer.Sink()->TellL( MStreamBuf::EWrite ).Offset() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   275
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   276
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   277
    aBuffer.WriteUint32L(iState);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   278
    aBuffer.WriteUint32L(iStatus);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   279
    aBuffer.WriteUint32L(iUid.iUid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   280
    aBuffer.WriteUint32L(iUserId.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   281
    aBuffer.WriteL(iUserId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   282
    aBuffer.WriteUint32L(iId.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   283
    aBuffer.WriteL(iId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   284
    aBuffer.WriteUint32L(iName.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   285
    aBuffer.WriteL(iName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   286
    aBuffer.WriteUint32L(iVersion.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   287
    aBuffer.WriteL(iVersion);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   288
    aBuffer.WriteUint32L(iMidletName.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   289
    aBuffer.WriteL(iMidletName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   290
    aBuffer.WriteUint32L(iMideltVendorName.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   291
    aBuffer.WriteL(iMideltVendorName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   292
    aBuffer.WriteUint32L(iMidletVersion.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   293
    aBuffer.WriteL(iMidletVersion);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   294
    aBuffer.WriteInt32L(iDownloadStatus);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   295
    aBuffer.WriteInt32L(iOwner);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   296
    aBuffer.WriteUint32L(iOldState);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   297
    aBuffer.WriteUint32L(iDownloadURI.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   298
    aBuffer.WriteL(iDownloadURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   299
    aBuffer.WriteUint32L(iDescription.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   300
    aBuffer.WriteL(iDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   301
    aBuffer.WriteUint32L(iPkgID.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   302
    aBuffer.WriteL(iPkgID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   303
    aBuffer.WriteUint32L(iPkgIDRef.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   304
    aBuffer.WriteL(iPkgIDRef);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   305
    aBuffer.WriteUint32L(iPkgType.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   306
    aBuffer.WriteL(iPkgType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   307
    aBuffer.WriteUint32L(iRemovableApp);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   308
    aBuffer.WriteUint32L(iDriveSelection);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   309
    aBuffer.WriteInt32L(iComponentId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   310
    iData->SerializedFormL(aBuffer);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   311
    iMetaData->SerializedFormL(aBuffer);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   312
    aBuffer.WriteUint32L(iInstallOptsSet);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   313
    TPckg<TAMInstallOptions> opts(iInstallOpts);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   314
    aBuffer.WriteL(opts);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   315
    return aBuffer.Sink()->TellL( MStreamBuf::EWrite ).Offset();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   316
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   317
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   318
void CDeploymentComponent::ConstructLoadL(const TDesC8 &aBuffer)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   319
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   320
    RDEBUG( "CDeploymentComponent::ConstructLoadL ");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   321
    TDeploymentComponent aRes;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   322
    TMimeType aType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   323
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   324
    RDesReadStream stream(aBuffer);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   325
    iPkgVersion = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   326
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   327
    iState = static_cast<TDeploymentComponentState>(stream.ReadUint32L() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   328
    iStatus = static_cast<TSCOMOStatusNodeStates>(stream.ReadUint32L() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   329
    iUid.iUid = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   330
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   331
    TUint32 len(stream.ReadUint32L() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   332
    stream.ReadL(iUserId, len);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   333
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   334
    len = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   335
    stream.ReadL(iId, len);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   336
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   337
    len = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   338
    stream.ReadL(iName, len);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   339
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   340
    len = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   341
    stream.ReadL(iVersion, len);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   342
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   343
    len = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   344
    stream.ReadL(iMidletName, len);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   345
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   346
    len = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   347
    stream.ReadL(iMideltVendorName, len);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   348
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   349
    len = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   350
    stream.ReadL(iMidletVersion, len);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   351
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   352
    iDownloadStatus = stream.ReadInt32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   353
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   354
    if (iPkgVersion > 1)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   355
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   356
        iOwner = stream.ReadInt32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   357
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   358
    if (iPkgVersion > 2)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   359
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   360
        iOldState = TDeploymentComponentState(stream.ReadUint32L() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   361
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   362
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   363
    len = stream.ReadUint32L() ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   364
    stream.ReadL(iDownloadURI, len);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   365
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   366
    len = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   367
    stream.ReadL(iDescription, len);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   368
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   369
    len = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   370
    stream.ReadL(iPkgID, len);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   371
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   372
    len = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   373
    stream.ReadL(iPkgIDRef, len);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   374
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   375
    len = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   376
    stream.ReadL(iPkgType, len);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   377
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   378
    iRemovableApp = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   379
    iDriveSelection = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   380
    iComponentId = stream.ReadInt32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   381
    iData = CDeploymentComponentData::LoadL(stream);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   382
    iMetaData = CDeploymentComponentData::LoadL(stream);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   383
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   384
    //using namespace SwiUI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   385
    iInstallOptsSet = stream.ReadUint32L();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   386
    TAMInstallOptionsPckg opts(iInstallOpts);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   387
    stream.ReadL(opts, opts.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   388
    RDEBUG( "CDeploymentComponent::ConstructLoadL end");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   389
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   390
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   391
CDeploymentComponentData &CDeploymentComponent::Data()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   392
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   393
    return *iData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   394
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   395
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   396
const CDeploymentComponentData &CDeploymentComponent::Data() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   397
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   398
    return *iData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   399
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   400
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   401
CDeploymentComponentData &CDeploymentComponent::MetaData()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   402
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   403
    return *iMetaData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   404
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   405
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   406
const CDeploymentComponentData &CDeploymentComponent::MetaData() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   407
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   408
    return *iMetaData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   409
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   410
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   411
const TAMInstallOptions &CDeploymentComponent::InstallOpts() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   412
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   413
    return iInstallOpts;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   414
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   415
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   416
const SwiUI::TUninstallOptions &CDeploymentComponent::UninstallOpts() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   417
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   418
    return iUninstallOpts;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   419
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   420
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   421
TBool CDeploymentComponent::InstallOptsSet() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   422
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   423
    return iInstallOptsSet;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   424
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   425
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   426
TBool CDeploymentComponent::AppRemovable() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   427
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   428
    return iRemovableApp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   429
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   430
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   431
TBool CDeploymentComponent::DriveSelected() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   432
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   433
        return iDriveSelection;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   434
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   435
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   436
TInt CDeploymentComponent::GetComponentId() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   437
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   438
        return iComponentId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   439
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   440
void CDeploymentComponent::SetMetaDataL(const TDesC8 &aMimeType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   441
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   442
    iMetaData->DataFileName();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   443
    iMetaData->SetDataL(aMimeType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   444
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   445
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   446
void CDeploymentComponent::SetMetaDataL(const TDesC8 &aMetaData,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   447
        const TDesC8 &aMimeType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   448
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   449
    iMetaData->SetDataL(aMetaData, aMimeType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   450
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   451
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   452
void CDeploymentComponent::SetAppRemovableStatus(const TBool &aRemovable)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   453
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   454
    iRemovableApp = aRemovable;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   455
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   456
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   457
void CDeploymentComponent::SetDriveSelectionStatus(const TBool &aDriveSelection)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   458
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   459
    iDriveSelection = aDriveSelection;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   460
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   461
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   462
void CDeploymentComponent::SetInstallOptsL(const TDesC8 &aInstallOpts)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   463
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   464
    using namespace SwiUI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   465
    if (aInstallOpts != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   466
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   467
        RDEBUG8_2( "CDeploymentComponent::SetInstallOptsL: '%S'", &aInstallOpts );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   468
        TInt tmpIAP(iInstallOpts.iIAP);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   469
        TAMInstallOptionsPckg pckg(iInstallOpts);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   470
        pckg.Copy(aInstallOpts);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   471
        iInstallOptsSet= ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   472
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   473
        if (iInstallOpts.iIAP == -1 && tmpIAP > -1)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   474
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   475
            RDEBUG8_2( "CDeploymentComponent::SetInstallOptsL: using IAPid %d", tmpIAP );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   476
            iInstallOpts.iIAP = tmpIAP;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   477
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   478
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   479
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   480
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   481
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   482
void CDeploymentComponent::ResetDataL(RFs &aFs)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   483
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   484
    iData->ResetData(aFs);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   485
    iMetaData->ResetData(aFs);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   486
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   487
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   488
void CDeploymentComponent::SetAttr(TDes8 &aAttr, const TDesC8 &aNewVal) const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   489
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   490
    if (aNewVal.Length() > aAttr.MaxLength() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   491
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   492
        aAttr = aNewVal.Left(aAttr.MaxLength() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   493
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   494
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   495
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   496
        aAttr = aNewVal;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   497
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   498
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   499
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   500
void CDeploymentComponent::SetIdL(const TDesC8 &aId)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   501
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   502
    SetAttr(iId, aId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   503
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   504
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   505
void CDeploymentComponent::SetNameL(const TDesC8 &aName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   506
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   507
    if (iName != aName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   508
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   509
        SetAttr(iName, aName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   510
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   511
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   512
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   513
void CDeploymentComponent::SetVersionL(const TDesC8 &aVersion)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   514
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   515
    SetAttr(iVersion, aVersion);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   516
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   517
void CDeploymentComponent::SetMimeTypeL( const TDesC8 &aMimeType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   518
{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   519
	iData->SetMimeTypeL(aMimeType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   520
}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   521
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   522
void CDeploymentComponent::SetDescriptionL(const TDesC8 &aDescription)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   523
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   524
    SetAttr(iDescription, aDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   525
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   526
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   527
void CDeploymentComponent::SetPkgIDL(const TDesC8 &aPkgID)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   528
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   529
    // PkgID and PkgIDRef should be same and Get done on PkgID
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   530
    // when state is in Download or Delivered and PkgIDRef is
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   531
    // returned when state is in Deployed state
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   532
    SetAttr(iPkgID, aPkgID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   533
    SetAttr(iPkgIDRef, aPkgID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   534
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   535
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   536
void CDeploymentComponent::SetPkgTypeL(const TDesC8 &aPkgType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   537
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   538
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   539
    SetAttr(iPkgType, aPkgType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   540
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   541
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   542
void CDeploymentComponent::SetMidletNameL(const TDesC8 &aMidletName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   543
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   544
    SetAttr(iMidletName, aMidletName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   545
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   546
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   547
void CDeploymentComponent::SetMidletVendorL(const TDesC8 &aMidletVendor)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   548
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   549
    SetAttr(iMideltVendorName, aMidletVendor);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   550
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   551
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   552
void CDeploymentComponent::SetMidletVersionL(const TDesC8 &aMidletVersion)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   553
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   554
    SetAttr(iMidletVersion, aMidletVersion);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   555
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   556
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   557
void CDeploymentComponent::SetUid(const TUid aUid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   558
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   559
    RDEBUG8_2("CDeploymentComponent::SetUid 0x%x", aUid.iUid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   560
    iUid = aUid;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   561
    iId.Zero();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   562
    if (iUid != TUid::Null() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   563
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   564
        iId.AppendNumFixedWidth(iUid.iUid, EHex, 8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   565
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   566
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   567
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   568
void CDeploymentComponent::SetOwnerProfile(TSmlProfileId aOwnerProfile)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   569
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   570
    iOwnerProfile = aOwnerProfile;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   571
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   572
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   573
TInt CDeploymentComponent::SetState(const TDeploymentComponentState &aState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   574
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   575
    RDEBUG_2( "CDeploymentComponent::SetState - set to state (%d)", aState );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   576
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   577
    TInt ret(KErrNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   578
    iOldState = iState;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   579
    iState = aState;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   580
#ifdef __SERIES60_30__
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   581
    if( iState != iOldState && iState != EDCSDownload && iState != EDCSDelivered )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   582
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   583
        if ( iUid != TUid::Null() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   584
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   585
            RMenuServSession ses;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   586
            TBool visible( EFalse );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   587
            if ( iState == EDCSActive )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   588
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   589
                visible = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   590
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   591
            TRAP( ret, ses.SetApplicationVisibilityL( iUid.iUid, visible ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   592
            if (ret != KErrNone )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   593
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   594
                RDEBUG_2( "CDeploymentComponent::SetState - failed to set visiblity %d", ret );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   595
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   596
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   597
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   598
                RDEBUG_2( "CDeploymentComponent::SetState - Set visiblity to %d", visible );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   599
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   600
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   601
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   602
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   603
            RDEBUG( "CDeploymentComponent::SetState - No need to set visibility to null uid" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   604
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   605
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   606
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   607
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   608
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   609
        RDEBUG( "CDeploymentComponent::SetState - No need to change visibility " );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   610
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   611
#endif	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   612
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   613
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   614
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   615
void CDeploymentComponent::SetStatusNode(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   616
        const TSCOMOStatusNodeStates &aStatus) const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   617
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   618
    iStatus = aStatus;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   619
    CRepository *repository=NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   620
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   621
    TRAPD( erx, repository = CRepository::NewL ( KCRUidPrivateApplicationManagementKeys ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   622
    ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   623
    if (erx!=KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   624
        return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   625
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   626
    TRAPD(err, PersistL(*repository))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   627
    ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   628
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   629
    delete repository;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   630
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   631
    if (err!=KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   632
        return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   633
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   634
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   635
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   636
void CDeploymentComponent::Set(const TDeploymentComponent &aInfo)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   637
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   638
    iId = aInfo.iId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   639
    iName = aInfo.iId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   640
    iVersion = aInfo.iVersion;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   641
    iDescription = aInfo.iDescription;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   642
    iPkgID = aInfo.iPkgID;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   643
    iPkgIDRef = aInfo.iPkgIDRef;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   644
    iPkgType = aInfo.iPkgType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   645
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   646
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   647
void CDeploymentComponent::SetDownloadURIL(const TDesC8 &aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   648
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   649
    if (iState == EDCSDownload)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   650
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   651
        iDownloadURI = aURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   652
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   653
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   654
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   655
        RDEBUG_2( "CDeploymentComponent::SetDownloadURIL: ERROR Illegal state: %d", iState );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   656
        User::Leave(KErrNotSupported) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   657
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   658
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   659
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   660
void CDeploymentComponent::SetDownloadTarget(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   661
        const TDownloadTarget& aDownloadTarget)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   662
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   663
    RDEBUG_2("CDeploymentComponent::SetDownloadTarget: (%d)", aDownloadTarget);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   664
    iDownloadTarget = aDownloadTarget;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   665
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   666
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   667
void CDeploymentComponent::SetDataL(const TDesC8 &aData,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   668
        const TDesC8 &aMimeType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   669
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   670
    iUid = iData->SetDataL(aData, aMimeType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   671
    iId.Zero();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   672
    if (iUid != TUid::Null() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   673
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   674
        iId.AppendNumFixedWidth(iUid.iUid, EHex, 8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   675
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   676
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   677
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   678
void CDeploymentComponent::SetDataL(const TDesC &aFileName,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   679
        const TDesC8 &aMimeType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   680
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   681
    SetUid(iData->SetDataL(aFileName, aMimeType) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   682
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   683
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   684
void CDeploymentComponent::SetDataL(const TDesC8 &aMimeType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   685
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   686
    SetUid(iData->SetDataL(aMimeType) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   687
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   688
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   689
// ----------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   690
// CDeploymentComponent::StatusUpdateL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   691
// ----------------------------------------------------------------------------------------	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   692
void CDeploymentComponent::StatusUpdateL(TInt aNewStatus)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   693
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   694
    RDEBUG( "CDeploymentComponent::StatusUpdateL : begin");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   695
    RDEBUG_2( "CDeploymentComponent::StatusUpdateL %d", aNewStatus );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   696
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   697
    if (State() == EDCSDownload)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   698
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   699
        iDownloadStatus = aNewStatus;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   700
        RDEBUG_2( "CDeploymentComponent::StatusUpdate: Set status to: %d", iDownloadStatus );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   701
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   702
        if (DownloadFailed() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   703
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   704
            SetStatusNode(EDownload_DownloadFailed);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   705
            RDEBUG8_2( "CDeploymentComponent::StatusUpdate: ERROR Failed to download URI: '%S' ", &iDownloadURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   706
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   707
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   708
        if (iCallback)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   709
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   710
            iCallback->DownloadComplete( this, iDownloadStatus);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   711
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   712
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   713
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   714
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   715
        RDEBUG_2( "CDeploymentComponent::StatusUpdate: ERROR Illegal state: %d", State() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   716
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   717
    RDEBUG( "CDeploymentComponent::StatusUpdateL : end");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   718
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   719
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   720
// ----------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   721
// CDeploymentComponent::SuccessStatusUpdateL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   722
// ----------------------------------------------------------------------------------------	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   723
void CDeploymentComponent::SuccessStatusUpdateL(const TDesC &aDlFileName,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   724
        const TDesC8& aDlMimeType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   725
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   726
    RDEBUG( "CDeploymentComponent::SuccessStatusUpdateL : start");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   727
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   728
   
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   729
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   730
    TBuf<256> FileType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   731
    TBuf8<256> FileType8;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   732
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   733
    RApaLsSession RSession;      
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   734
    if(RSession.Connect() == KErrNone)        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   735
        {  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   736
        TUid uid;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   737
        TDataType datatype;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   738
        RSession.AppForDocument(aDlFileName,uid, datatype );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   739
         
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   740
        FileType.Copy(datatype.Des()); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   741
        RDEBUG_2( "CDeploymentComponent::Pkg Id: %d ", uid.iUid);  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   742
        RDEBUG_2( "CDeploymentComponent::Pkg MIME: '%S' ", &FileType);  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   743
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   744
    RSession.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   745
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   746
    FileType8.Copy(FileType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   747
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   748
    SetDataL(aDlFileName, FileType8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   749
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   750
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   751
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   752
    //SetDataL(FileType8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   753
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   754
    RDEBUG8_2( "CDeploymentComponent::Pkg MIME: '%S' ", &FileType8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   755
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   756
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   757
    // Set PkgID same as MiME type of downloaded content
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   758
    SetPkgTypeL(FileType8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   759
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   760
    CDeploymentComponent* conflict( NULL);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   761
    TBool dlOk(ETrue);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   762
    if (iUid != TUid::Null() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   763
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   764
        __ASSERT_DEBUG( iCallback, User::Invariant() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   765
        if (iCallback->UidExistsL(iUid, conflict, this) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   766
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   767
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   768
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   769
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   770
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   771
        RDEBUG( "CDeploymentComponent::StatusUpdateL - WARNING cannot detect uid" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   772
        if (IsJavaMimeL(FileType8) ||IsSisMimeL(FileType8) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   773
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   774
            RDEBUG( "CDeploymentComponent::StatusUpdateL - Ignoring prev warning because it's java" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   775
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   776
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   777
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   778
            dlOk = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   779
            //The Operation has been rejected because the device does not support this MIME type.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   780
            iDownloadStatus = KStatusUnSupportedEnvironment;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   781
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   782
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   783
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   784
    if (dlOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   785
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   786
        /*for Predefined static node, append static node name with Internal ID before 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   787
         * moving to delivered state to avoid duplicates
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   788
         */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   789
        TBuf8<256> staticnode;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   790
        TInt staticnodeenabled = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   791
        CRepository* cenrep = CRepository::NewLC( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   792
        cenrep->Get( KAMDownloadPredefinedNode, staticnode ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   793
        cenrep->Get( KAMStaticNodeEnabled, staticnodeenabled );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   794
        CleanupStack::PopAndDestroy(); //cenrep
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   795
        if (iUserId.Compare(staticnode) == 0 && staticnodeenabled)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   796
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   797
            iUserId.Append(*IntToDes8LC(iInternalId));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   798
            CleanupStack::PopAndDestroy(); // for IntToDes8LC()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   799
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   800
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   801
        //Reset the value of DownloadStatus for success update
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   802
        iDownloadStatus = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   803
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   804
        SetState(EDCSDelivered);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   805
        SetStatusNode(EIdle);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   806
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   807
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   808
    if (iCallback)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   809
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   810
        iCallback->DownloadComplete( this, iDownloadStatus);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   811
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   812
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   813
    RDEBUG( "CDeploymentComponent::SuccessStatusUpdateL : end");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   814
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   815
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   816
const TSmlProfileId& CDeploymentComponent::OwnerProfile() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   817
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   818
    return iOwnerProfile;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   819
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   820
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   821
const TDesC8& CDeploymentComponent::MimeType() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   822
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   823
    if (iMetaData->MimeType().Length() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   824
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   825
        return iMetaData->MimeType();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   826
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   827
    return iData->MimeType();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   828
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   829
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   830
TBool CDeploymentComponent::DownloadFailed() const // http or symbian error
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   831
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   832
    return (iDownloadStatus >= 400 || iDownloadStatus < 0) ? ETrue : EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   833
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   834
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   835
TInt CDeploymentComponent::DownloadStatus() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   836
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   837
    return iDownloadStatus;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   838
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   839
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   840
void CDeploymentComponent::DestroyL(CRepository &aRepository)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   841
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   842
    TDeploymentComponentState st(State() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   843
    if ( !(st == EDCSActive || st == EDCSInactive))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   844
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   845
        RFs fs;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   846
        User::LeaveIfError(fs.Connect() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   847
        CleanupClosePushL(fs);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   848
        iMetaData->DestroyL(fs);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   849
        iData->DestroyL(fs);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   850
        CleanupStack::PopAndDestroy( &fs) ;// fs
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   851
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   852
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   853
    TInt err(aRepository.Delete(iInternalId) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   854
    RDEBUG_3( "CDeploymentComponent::DestroyL:  Deleting %d in centrep resulted with status %d", iInternalId, err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   855
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   856
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   857
void CDeploymentComponent::SetOwner(const TInt &aInfo)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   858
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   859
    iOwner = aInfo;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   860
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   861
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   862
void CDeploymentComponent::SetComponentId(const TInt &aComponentId)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   863
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   864
    iComponentId = aComponentId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   865
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   866
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   867
void CDeploymentComponent::SetIAPL(const TInt aIap)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   868
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   869
    RDEBUG8_2( "CDeploymentComponent::SetIAPL: %d ", aIap );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   870
    iInstallOpts.iIAP = aIap;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   871
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   872
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   873
TInt CDeploymentComponent::GetIAP() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   874
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   875
    return iInstallOpts.iIAP;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   876
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   877
HBufC8* CDeploymentComponent::IntToDes8LC(const TInt aLuid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   878
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   879
    HBufC8* buf = HBufC8::NewLC( 10); //10 = max length of 32bit integer
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   880
    TPtr8 ptrBuf = buf->Des();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   881
    ptrBuf.Num(aLuid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   882
    return buf;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   883
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   884
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   885
//  End of File