|
1 /* |
|
2 * Copyright (c) 2009 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: DCMO GenericControl implementation |
|
15 * |
|
16 */ |
|
17 |
|
18 #include <e32base.h> |
|
19 #include <centralrepository.h> |
|
20 #include "dcmogenericcontrol.h" |
|
21 #include "dcmoserver.h" |
|
22 #include "dcmoconst.h" |
|
23 #include "dcmodebug.h" |
|
24 |
|
25 const TInt KBufferSize = 30; |
|
26 // ---------------------------------------------------------------------------------------- |
|
27 // CDCMOGenericControl::CDCMOGenericControl() |
|
28 // ---------------------------------------------------------------------------------------- |
|
29 |
|
30 CDCMOGenericControl::CDCMOGenericControl() |
|
31 { |
|
32 RDEBUG("CDCMOGenericControl::CDCMOGenericControl"); |
|
33 } |
|
34 |
|
35 // ---------------------------------------------------------------------------------------- |
|
36 // CDCMOGenericControl::~CDCMOGenericControl() |
|
37 // ---------------------------------------------------------------------------------------- |
|
38 CDCMOGenericControl::~CDCMOGenericControl() |
|
39 { |
|
40 RDEBUG("CDCMOGenericControl::CDCMOGenericControl Destructor"); |
|
41 } |
|
42 |
|
43 // ---------------------------------------------------------------------------------------- |
|
44 // CDCMOGenericControl::~CDCMOGenericControl() |
|
45 // ---------------------------------------------------------------------------------------- |
|
46 TInt CDCMOGenericControl::GetGroupValueL(TDes& aStrValue) |
|
47 { |
|
48 RDEBUG("CDCMOGenericControl::GetGroupValueL(): begin"); |
|
49 TInt ret(-1); |
|
50 if(aStrValue.Match(KDCMOHardware()) == KErrNone ) |
|
51 ret = 0; |
|
52 else if( aStrValue.Match(KDCMOIO()) == KErrNone ) |
|
53 ret = 1; |
|
54 else if( aStrValue.Match(KDCMOConnectivity()) == KErrNone ) |
|
55 ret = 2; |
|
56 else if( aStrValue.Match(KDCMOSoftware()) == KErrNone ) |
|
57 ret = 3; |
|
58 else if( aStrValue.Match(KDCMOService()) == KErrNone ) |
|
59 ret = 4; |
|
60 |
|
61 RDEBUG("CDCMOGenericControl::GetGroupValueL(): end"); |
|
62 return ret; |
|
63 } |
|
64 |
|
65 // ---------------------------------------------------------------------------------------- |
|
66 // CDCMOGenericControl::GetIntAttributeL(TInt aCategotyNumber, TDCMONode aId, TInt& aValue) |
|
67 // ---------------------------------------------------------------------------------------- |
|
68 TDCMOStatus CDCMOGenericControl::GetIntAttributeL(TInt aCategotyNumber, TDCMONode aId, TInt& aValue) |
|
69 { |
|
70 RDEBUG("CDCMOGenericControl::GetIntAttributeL(): begin"); |
|
71 TDCMOStatus err(EDcmoFail); |
|
72 TInt reterr(-1); |
|
73 switch(aId) |
|
74 { |
|
75 case EGroup: |
|
76 { |
|
77 RDEBUG("CDCMOGenericControl::GetIntAttributeL(): In Group"); |
|
78 TBuf<KBufferSize> group; |
|
79 CRepository * centrep = CRepository::NewLC( KCRUidDCMOServer ); |
|
80 TUint32 centrepKey = aCategotyNumber + KDCMOGroupNumber; |
|
81 reterr = centrep->Get( centrepKey, group ); |
|
82 CleanupStack::PopAndDestroy( centrep ); |
|
83 aValue = GetGroupValueL(group); |
|
84 } |
|
85 break; |
|
86 |
|
87 case EAttached: |
|
88 { |
|
89 RDEBUG("CDCMOGenericControl::GetIntAttributeL(): In Attached"); |
|
90 aValue = 1; // Attached |
|
91 reterr = KErrNone; |
|
92 } |
|
93 break; |
|
94 case EEnabled: |
|
95 { |
|
96 RDEBUG("CDCMOGenericControl::GetIntAttributeL(): In Enabled"); |
|
97 CRepository * centrep = CRepository::NewLC( KCRUidDCMOServer ); |
|
98 TUint32 centrepKey = aCategotyNumber + KDCMOMainKeyNumber; |
|
99 TInt centrepMainKey, centrepActualKey; |
|
100 reterr = centrep->Get( centrepKey, centrepMainKey ); |
|
101 centrepKey = aCategotyNumber + KDCMOActualKeyNumber; |
|
102 reterr = centrep->Get( centrepKey, centrepActualKey ); |
|
103 TUid uidValue = {centrepMainKey}; |
|
104 CRepository* centrep1 = CRepository::NewLC( uidValue ); |
|
105 reterr = centrep1->Get( centrepActualKey, aValue ); |
|
106 if( !aCategotyNumber ) // for Camera |
|
107 { |
|
108 if(aValue == 0) |
|
109 { |
|
110 aValue = 1; |
|
111 } |
|
112 else if(aValue == 1) |
|
113 { |
|
114 aValue = 0; |
|
115 } |
|
116 } |
|
117 CleanupStack::PopAndDestroy( centrep1 ); |
|
118 CleanupStack::PopAndDestroy( centrep ); |
|
119 } |
|
120 break; |
|
121 |
|
122 case EDenyUserEnable: |
|
123 { |
|
124 RDEBUG("CDCMOGenericControl::GetIntAttributeL(): In DenyUserEnable"); |
|
125 aValue = 1; // DenyUserEnable |
|
126 reterr = KErrNone; |
|
127 } |
|
128 break; |
|
129 case ENotifyUser: |
|
130 { |
|
131 RDEBUG("CDCMOGenericControl::GetIntAttributeL(): In NotifyUser"); |
|
132 aValue = 1; // NotifyUser |
|
133 reterr = KErrNone; |
|
134 } |
|
135 break; |
|
136 default : |
|
137 { |
|
138 RDEBUG("CDCMOGenericControl::GetIntAttributeL(): Not Found"); |
|
139 err = EDcmoNotFound; |
|
140 } |
|
141 } |
|
142 if(reterr == KErrNone) |
|
143 err = EDcmoSuccess; |
|
144 RDEBUG("CDCMOGenericControl::GetIntAttributeL(): end"); |
|
145 return err; |
|
146 } |
|
147 |
|
148 // ---------------------------------------------------------------------------------------- |
|
149 // CDCMOGenericControl::GetStrAttributeL(TInt aCategotyNumber, TDCMONode aId, TDes& aStrValue) |
|
150 // ---------------------------------------------------------------------------------------- |
|
151 TDCMOStatus CDCMOGenericControl::GetStrAttributeL(TInt aCategotyNumber, TDCMONode aId, TDes& aStrValue) |
|
152 { |
|
153 RDEBUG("CDCMOGenericControl::GetStrAttributeL(): begin"); |
|
154 TDCMOStatus err(EDcmoFail); |
|
155 TInt reterr(-1); |
|
156 switch(aId) |
|
157 { |
|
158 case EProperty: |
|
159 { |
|
160 RDEBUG("CDCMOGenericControl::GetStrAttributeL(): In Property"); |
|
161 CRepository * centrep = CRepository::NewLC( KCRUidDCMOServer ); |
|
162 TUint32 centrepKey = aCategotyNumber + KDCMOPropertyNumber; |
|
163 reterr = centrep->Get( centrepKey, aStrValue ); |
|
164 CleanupStack::PopAndDestroy( centrep ); |
|
165 } |
|
166 break; |
|
167 |
|
168 case EDescription: |
|
169 { |
|
170 RDEBUG("CDCMOGenericControl::GetStrAttributeL(): In Description"); |
|
171 CRepository * centrep = CRepository::NewLC( KCRUidDCMOServer ); |
|
172 TUint32 centrepKey = aCategotyNumber + KDCMODescriptionNumber; |
|
173 reterr = centrep->Get( centrepKey, aStrValue ); |
|
174 CleanupStack::PopAndDestroy( centrep ); |
|
175 } |
|
176 break; |
|
177 default : |
|
178 { |
|
179 RDEBUG("CDCMOGenericControl::GetStrAttributeL(): Not Found"); |
|
180 err = EDcmoNotFound; |
|
181 } |
|
182 |
|
183 } |
|
184 if(reterr == KErrNone) |
|
185 err = EDcmoSuccess; |
|
186 |
|
187 RDEBUG("CDCMOGenericControl::GetStrAttributeL(): end"); |
|
188 return err; |
|
189 } |
|
190 |
|
191 // ---------------------------------------------------------------------------------------- |
|
192 // CDCMOGenericControl::SetIntAttributeL(TInt aCategotyNumber, TDCMONode aId, TInt aValue) |
|
193 // ---------------------------------------------------------------------------------------- |
|
194 TDCMOStatus CDCMOGenericControl::SetIntAttributeL(TInt aCategotyNumber, TDCMONode aId, TInt aValue) |
|
195 { |
|
196 RDEBUG("CDCMOGenericControl::SetIntAttributeL(): begin"); |
|
197 TDCMOStatus err(EDcmoFail); |
|
198 TInt reterr(-1); |
|
199 switch(aId) |
|
200 { |
|
201 case EDenyUserEnable: |
|
202 { |
|
203 RDEBUG("CDCMOGenericControl::SetIntAttributeL(): In DenyUserEnable"); |
|
204 err = EDcmoNotSupported; |
|
205 } |
|
206 break; |
|
207 case ENotifyUser: |
|
208 { |
|
209 RDEBUG("CDCMOGenericControl::SetIntAttributeL(): In NotifyUser"); |
|
210 err = EDcmoNotSupported; |
|
211 } |
|
212 break; |
|
213 case EEnable: |
|
214 { |
|
215 RDEBUG("CDCMOGenericControl::SetIntAttributeL(): In Enable"); |
|
216 if((aValue == 0)|| (aValue == 1)) |
|
217 { |
|
218 CRepository * centrep = CRepository::NewLC( KCRUidDCMOServer ); |
|
219 TUint32 centrepKey = aCategotyNumber + KDCMOMainKeyNumber; |
|
220 TInt centrepMainKey, centrepActualKey; |
|
221 reterr = centrep->Get( centrepKey, centrepMainKey ); |
|
222 centrepKey = aCategotyNumber + KDCMOActualKeyNumber; |
|
223 reterr = centrep->Get( centrepKey, centrepActualKey ); |
|
224 TUid uidValue = {centrepMainKey}; |
|
225 CRepository * centrep1 = CRepository::NewLC( uidValue ); |
|
226 if( aCategotyNumber == 0) // this is only if the category is Camera |
|
227 { |
|
228 if(aValue == 0) |
|
229 aValue = 1; |
|
230 else if (aValue == 1) |
|
231 aValue = 0; |
|
232 } |
|
233 reterr = centrep1->Set( centrepActualKey, aValue ); |
|
234 CleanupStack::PopAndDestroy( centrep1 ); |
|
235 CleanupStack::PopAndDestroy( centrep ); |
|
236 } |
|
237 } |
|
238 break; |
|
239 default : |
|
240 { |
|
241 RDEBUG("CDCMOGenericControl::SetIntAttributeL(): Not Found"); |
|
242 err = EDcmoNotFound; |
|
243 } |
|
244 } |
|
245 if(reterr == KErrNone) |
|
246 err = EDcmoSuccess; |
|
247 |
|
248 RDEBUG("CDCMOGenericControl::SetIntAttributeL(): end"); |
|
249 return err; |
|
250 } |
|
251 |
|
252 // ---------------------------------------------------------------------------------------- |
|
253 // CDCMOGenericControl::SetStrAttributeL(TInt /*aCategotyNumber*/, TDCMONode /*aId*/, const TDes& /*aStrValue*/) |
|
254 // ---------------------------------------------------------------------------------------- |
|
255 TDCMOStatus CDCMOGenericControl::SetStrAttributeL(TInt /*aCategotyNumber*/, TDCMONode /*aId*/, const TDes& /*aStrValue*/) |
|
256 { |
|
257 RDEBUG("CDCMOGenericControl::SetStrAttributeL(): begin"); |
|
258 TDCMOStatus err(EDcmoFail); |
|
259 err = EDcmoNotSupported; |
|
260 RDEBUG("CDCMOGenericControl::SetStrAttributeL(): end"); |
|
261 return err; |
|
262 } |