author | Santosh V Patil <santosh.v.patil@nokia.com> |
Wed, 30 Jun 2010 11:01:26 +0530 | |
branch | ADM |
changeset 48 | 364021cecc90 |
permissions | -rw-r--r-- |
48
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
1 |
/* |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
2 |
* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
3 |
* All rights reserved. |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
4 |
* This component and the accompanying materials are made available |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
5 |
* under the terms of "Eclipse Public License v1.0" |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
6 |
* which accompanies this distribution, and is available |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
8 |
* |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
9 |
* Initial Contributors: |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
10 |
* Nokia Corporation - initial contribution. |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
11 |
* |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
12 |
* Contributors: |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
13 |
* |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
14 |
* Description: |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
15 |
* Declares the CXmlParser class for ADM application. |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
16 |
* |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
17 |
* |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
18 |
*/ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
19 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
20 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
21 |
#include "ADMSisParser.h" |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
22 |
#include "ADMPackageInfo.h" |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
23 |
#include <sisparser.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
24 |
#include <siscontents.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
25 |
#include <siscontroller.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
26 |
#include <sisinfo.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
27 |
#include <sisdependency.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
28 |
#include <sisuid.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
29 |
#include <sisversion.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
30 |
#include <sisprerequisites.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
31 |
#include <sisversionrange.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
32 |
#include <filesisdataprovider.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
33 |
#include <dessisdataprovider.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
34 |
#include <sisversionrange.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
35 |
#include <sisinstallblock.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
36 |
#include <sissupportedlanguages.h> |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
37 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
38 |
using namespace Swi; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
39 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
40 |
CSisParser* CSisParser::NewLC() |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
41 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
42 |
CSisParser* object = new ( ELeave ) CSisParser(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
43 |
CleanupStack::PushL( object ); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
44 |
object->ConstructL(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
45 |
return object; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
46 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
47 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
48 |
CSisParser* CSisParser::NewL() |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
49 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
50 |
CSisParser* object = CSisParser::NewLC(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
51 |
CleanupStack::Pop(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
52 |
return object; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
53 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
54 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
55 |
CSisParser::CSisParser() |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
56 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
57 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
58 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
59 |
CSisParser::~CSisParser() |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
60 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
61 |
iRfs.Close(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
62 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
63 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
64 |
void CSisParser::ConstructL() |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
65 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
66 |
User::LeaveIfError(iRfs.Connect()); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
67 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
68 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
69 |
//TODO: a http sis data provider would allow partial download? |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
70 |
CPackageInfo* CSisParser::GetDepContentsL(const TDesC& aDepFileName, CPackageInfo *packageInfo,CDepTree* mainTree) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
71 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
72 |
CFileSisDataProvider *provider = CFileSisDataProvider::NewLC(iRfs, aDepFileName); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
73 |
Sis::CContents* contents = Sis::Parser::ContentsL(*provider); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
74 |
CleanupStack::PushL(contents); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
75 |
HBufC8* controllerpkg = contents->ReadControllerL(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
76 |
CleanupStack::PushL(controllerpkg); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
77 |
CDesDataProvider* controllerProvider= CDesDataProvider::NewLC(*controllerpkg); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
78 |
Sis::CController* controller = CController::NewLC(*controllerProvider); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
79 |
SetDependenciesL(packageInfo, mainTree, controller, aDepFileName); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
80 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
81 |
CleanupStack::PopAndDestroy(controller); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
82 |
CleanupStack::PopAndDestroy(controllerProvider); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
83 |
CleanupStack::PopAndDestroy(controllerpkg); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
84 |
CleanupStack::PopAndDestroy(contents); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
85 |
CleanupStack::PopAndDestroy(provider); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
86 |
return packageInfo; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
87 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
88 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
89 |
void CSisParser::SetDependenciesL(CPackageInfo *packageInfo,CDepTree* mainTree, Sis::CController* controller, const TDesC& aFileName) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
90 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
91 |
//have now extracted the controller (header information) from the sis file. |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
92 |
if(mainTree->IsDepTreeEmpty()) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
93 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
94 |
packageInfo = CPackageInfo::NewL(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
95 |
packageInfo->iPackageUid = controller->Info().Uid().Uid().iUid; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
96 |
packageInfo->iVendor = controller->Info().UniqueVendorName().Data().AllocL(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
97 |
packageInfo->iVersion = TVersion(controller->Info().Version().Major(), |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
98 |
controller->Info().Version().Minor(), |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
99 |
controller->Info().Version().Build()); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
100 |
SetLanguageSpecificNamesL(controller, packageInfo); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
101 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
102 |
packageInfo->iPackageStatus = EPackageRootToBeInstalled; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
103 |
//TODO: HACK - ADM expects to use iPackageName as a filename, SIS file contains only UIDs |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
104 |
packageInfo->iSisPackageName = aFileName.AllocL(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
105 |
//TODO: end HACK |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
106 |
mainTree->AddPackageInfo(packageInfo); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
107 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
108 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
109 |
//Get dependencies |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
110 |
const RPointerArray<Sis::CDependency> &deps(controller->Prerequisites().Dependencies()); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
111 |
for(TInt i=0;i<deps.Count();i++) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
112 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
113 |
const Sis::CDependency* dep(deps[i]); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
114 |
TUint32 uid = dep->Uid().Uid().iUid; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
115 |
CPackageInfo *dependentPackage = mainTree->LocatePackageInDepTree(uid); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
116 |
if(dependentPackage == NULL) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
117 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
118 |
dependentPackage = CPackageInfo::NewLC(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
119 |
dependentPackage->iPackageUid = dep->Uid().Uid().iUid; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
120 |
//TODO: HACK - ADM expects to use iPackageName as a filename, SIS file contains only UIDs |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
121 |
TBuf<8> uidBuf; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
122 |
uidBuf.Num(dependentPackage->iPackageUid, EHex); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
123 |
dependentPackage->iPackageName = uidBuf.AllocL(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
124 |
//TODO: end HACK |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
125 |
packageInfo->AddEdgeL(dependentPackage); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
126 |
mainTree->AddPackageInfo(dependentPackage); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
127 |
CleanupStack::Pop(dependentPackage); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
128 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
129 |
//embedded and outer sis may depend on different version of the same package - in this case, use the higher version number |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
130 |
const Sis::CVersion& ver = dep->VersionRange()->From(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
131 |
if(dependentPackage->iVersion.iMajor < ver.Major() || |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
132 |
(dependentPackage->iVersion.iMajor == ver.Major() && dependentPackage->iVersion.iMinor < ver.Minor()) || |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
133 |
(dependentPackage->iVersion.iMajor == ver.Major() && dependentPackage->iVersion.iMinor == ver.Minor() && dependentPackage->iVersion.iBuild < ver.Build())) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
134 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
135 |
dependentPackage->iVersion = TVersion(ver.Major(), |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
136 |
ver.Minor(), |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
137 |
ver.Build()); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
138 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
139 |
//also available : dependency names (localised list) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
140 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
141 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
142 |
//Get embedded SIS files' dependencies too |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
143 |
const RPointerArray<Sis::CController> &embedded = controller->InstallBlock().EmbeddedControllers(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
144 |
for(TInt i=0;i<embedded.Count();i++) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
145 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
146 |
SetDependenciesL(packageInfo, mainTree, embedded[i], KNullDesC); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
147 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
148 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
149 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
150 |
void CSisParser::SetLanguageSpecificNamesL(Sis::CController* aController, CPackageInfo* aPackageInfo) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
151 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
152 |
const Sis::CSupportedLanguages &lang = aController->SupportedLanguages(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
153 |
TLocale locale; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
154 |
TInt langIdx = KErrNotFound; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
155 |
// find the language index, so we can access the proper localised |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
156 |
// names in the sis package |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
157 |
for (TInt downgradeIdx = -1; downgradeIdx < 3; downgradeIdx++) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
158 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
159 |
// Go through the language downgrade path |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
160 |
// See the documentation of TLocale::LanguageDowngrade() |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
161 |
const TLanguage language = (downgradeIdx == -1) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
162 |
? User::Language() |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
163 |
: locale.LanguageDowngrade(downgradeIdx); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
164 |
if (language == ELangNone) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
165 |
break; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
166 |
for (TInt i = 0; i < lang.Count(); i++) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
167 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
168 |
if (lang[i] == language) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
169 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
170 |
langIdx = i; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
171 |
break; |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
172 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
173 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
174 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
175 |
const RPointerArray<Sis::CString>& names = aController->Info().Names(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
176 |
// also available: VendorNames() |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
177 |
|
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
178 |
// Set localised name for the package |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
179 |
// Sis package didn't contain localised name, use the default |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
180 |
if (langIdx != KErrNotFound) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
181 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
182 |
aPackageInfo->iPackageName = names[langIdx]->Data().AllocL(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
183 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
184 |
else if (names.Count() > 0) |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
185 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
186 |
aPackageInfo->iPackageName = names[0]->Data().AllocL(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
187 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
188 |
else |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
189 |
{ |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
190 |
aPackageInfo->iPackageName = KNullDesC().AllocL(); |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
191 |
} |
364021cecc90
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release
Santosh V Patil <santosh.v.patil@nokia.com>
parents:
diff
changeset
|
192 |
} |