|
1 /* |
|
2 * Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: Implementation of CPEngPluginStatus |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 // Include Files |
|
20 #include <e32base.h> |
|
21 #include <e32svr.h> |
|
22 #include <f32file.h> |
|
23 #include <e32uid.h> |
|
24 |
|
25 #include "CPEngPluginStatus.h" |
|
26 #include "PresenceDebugPrint.h" |
|
27 |
|
28 |
|
29 |
|
30 // CONSTRUCTION |
|
31 // Static constructor |
|
32 CPEngPluginStatus* CPEngPluginStatus::NewL() |
|
33 { |
|
34 CPEngPluginStatus* self = CPEngPluginStatus::NewLC(); |
|
35 CleanupStack::Pop(); |
|
36 |
|
37 return self; |
|
38 } |
|
39 |
|
40 // Static constructor, leaves pointer to cleanup-stack |
|
41 CPEngPluginStatus* CPEngPluginStatus::NewLC() |
|
42 { |
|
43 CPEngPluginStatus* self = new( ELeave ) CPEngPluginStatus(); |
|
44 CleanupStack::PushL( self ); |
|
45 self->ConstructL(); |
|
46 return self; |
|
47 } |
|
48 |
|
49 // Destructor (virtual by CBase) |
|
50 CPEngPluginStatus::~CPEngPluginStatus() |
|
51 { |
|
52 iResults.Reset(); |
|
53 } |
|
54 |
|
55 // Default constructor, protected |
|
56 CPEngPluginStatus::CPEngPluginStatus() |
|
57 : iResults( 1 ) |
|
58 { |
|
59 } |
|
60 |
|
61 // Second phase construct |
|
62 void CPEngPluginStatus::ConstructL() |
|
63 { |
|
64 } |
|
65 |
|
66 TUint CPEngPluginStatus::Count() const |
|
67 { |
|
68 return iResults.Count(); |
|
69 } |
|
70 |
|
71 TUid CPEngPluginStatus::Uid( TUint aIndex ) const |
|
72 { |
|
73 return iResults[aIndex].iUid; |
|
74 } |
|
75 |
|
76 TPEngPluginStatusCode CPEngPluginStatus::Status( TUint aIndex ) const |
|
77 { |
|
78 return iResults[aIndex].iStatus; |
|
79 } |
|
80 |
|
81 TInt CPEngPluginStatus::Find( TUid aPluginUid ) const |
|
82 { |
|
83 TInt count = Count(); |
|
84 for ( TInt i( 0 ); i < count; i++ ) |
|
85 { |
|
86 if ( iResults[i].iUid == aPluginUid ) |
|
87 { |
|
88 return i; |
|
89 } |
|
90 } |
|
91 return KErrNotFound; |
|
92 } |
|
93 |
|
94 void CPEngPluginStatus::Close() |
|
95 { |
|
96 delete this; |
|
97 } |
|
98 |
|
99 void CPEngPluginStatus::AddResultL( TUid aUid, TPEngPluginStatusCode aStatus ) |
|
100 { |
|
101 TPEngPluginResult result( aUid, aStatus ); |
|
102 User::LeaveIfError( iResults.Append( result ) ); |
|
103 } |
|
104 |
|
105 void CPEngPluginStatus::Zero() |
|
106 { |
|
107 iResults.Reset(); |
|
108 } |
|
109 |
|
110 void CPEngPluginStatus::Remove( TUint aIndex ) |
|
111 { |
|
112 iResults.Remove( aIndex ); |
|
113 } |
|
114 |
|
115 void CPEngPluginStatus::AllocateSpaceForResultsL( TUint aCount ) |
|
116 { |
|
117 iResults.Reset(); |
|
118 |
|
119 TPEngPluginResult dummyResult( KNullUid, EPEngPlgLoaded ); |
|
120 |
|
121 while ( aCount-- > 0 ) |
|
122 { |
|
123 User::LeaveIfError( iResults.Append( dummyResult ) ); |
|
124 |
|
125 } |
|
126 } |
|
127 |
|
128 TPtr8 CPEngPluginStatus::Buffer( TUint aCount ) const |
|
129 { |
|
130 TInt count = aCount; |
|
131 if ( count == 0 ) |
|
132 { |
|
133 count = Count(); |
|
134 } |
|
135 return TPtr8( ( TUint8* )&iResults[0], sizeof( TPEngPluginResult ) * count, sizeof( TPEngPluginResult ) * count ); |
|
136 } |
|
137 |