williamr@2
|
1 |
// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
|
williamr@2
|
2 |
// All rights reserved.
|
williamr@2
|
3 |
// This component and the accompanying materials are made available
|
williamr@2
|
4 |
// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
|
williamr@2
|
5 |
// which accompanies this distribution, and is available
|
williamr@2
|
6 |
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
|
williamr@2
|
7 |
//
|
williamr@2
|
8 |
// Initial Contributors:
|
williamr@2
|
9 |
// Nokia Corporation - initial contribution.
|
williamr@2
|
10 |
//
|
williamr@2
|
11 |
// Contributors:
|
williamr@2
|
12 |
//
|
williamr@2
|
13 |
// Description:
|
williamr@2
|
14 |
//
|
williamr@2
|
15 |
|
williamr@2
|
16 |
|
williamr@2
|
17 |
|
williamr@2
|
18 |
/**
|
williamr@2
|
19 |
@file
|
williamr@2
|
20 |
@internalComponent
|
williamr@2
|
21 |
*/
|
williamr@2
|
22 |
|
williamr@2
|
23 |
#ifndef __EIKNFYSV_H__
|
williamr@2
|
24 |
#define __EIKNFYSV_H__
|
williamr@2
|
25 |
|
williamr@2
|
26 |
#include <e32base.h>
|
williamr@2
|
27 |
#include <w32std.h>
|
williamr@2
|
28 |
#include <eiknotapi.h>
|
williamr@2
|
29 |
#include <uikon/eiksvfty.h>
|
williamr@2
|
30 |
|
williamr@2
|
31 |
#include <ecom/ecom.h>
|
williamr@2
|
32 |
|
williamr@2
|
33 |
//
|
williamr@2
|
34 |
// class CEikServNotifyServer
|
williamr@2
|
35 |
//
|
williamr@2
|
36 |
|
williamr@2
|
37 |
class CEikSrvNotifierManager;
|
williamr@2
|
38 |
class CEikServNotifyAlert;
|
williamr@2
|
39 |
class MEikSrvNotifierBase2;
|
williamr@2
|
40 |
class CChannelMonitor;
|
williamr@2
|
41 |
class CActivityMonitor;
|
williamr@2
|
42 |
class CEikNotifierQueue;
|
williamr@2
|
43 |
class CEikServNotifySession;
|
williamr@2
|
44 |
class TNotifierSecureInfo;
|
williamr@2
|
45 |
|
williamr@2
|
46 |
class MEikInfoMsgWin;
|
williamr@2
|
47 |
|
williamr@2
|
48 |
/**
|
williamr@2
|
49 |
@internalComponent
|
williamr@2
|
50 |
*/
|
williamr@2
|
51 |
NONSHARABLE_CLASS(TNotifierMessageInfo)
|
williamr@2
|
52 |
{
|
williamr@2
|
53 |
public:
|
williamr@2
|
54 |
TNotifierMessageInfo(const RMessage2& aMessage, CEikServNotifySession& aEikServNotifySession);
|
williamr@2
|
55 |
private:
|
williamr@2
|
56 |
TNotifierMessageInfo();
|
williamr@2
|
57 |
public:
|
williamr@2
|
58 |
RMessage2 iMessage;
|
williamr@2
|
59 |
CEikServNotifySession& iEikServNotifySession;
|
williamr@2
|
60 |
};
|
williamr@2
|
61 |
|
williamr@2
|
62 |
/**
|
williamr@2
|
63 |
@internalComponent
|
williamr@2
|
64 |
*/
|
williamr@2
|
65 |
NONSHARABLE_CLASS(TNotifierSecureInfo)
|
williamr@2
|
66 |
{
|
williamr@2
|
67 |
public:
|
williamr@2
|
68 |
TNotifierSecureInfo(const TUid aNotifierUid, const TSecureId aSecureId);
|
williamr@2
|
69 |
public:
|
williamr@2
|
70 |
TUid iNotifierUid;
|
williamr@2
|
71 |
TSecureId iSecureId;
|
williamr@2
|
72 |
};
|
williamr@2
|
73 |
|
williamr@2
|
74 |
/** @internalComponent */
|
williamr@2
|
75 |
typedef RArray<const TNotifierMessageInfo> RNotifierMessageInfoQueue;
|
williamr@2
|
76 |
/** @internalComponent */
|
williamr@2
|
77 |
typedef RArray<const TNotifierSecureInfo> RNotifierSecureInfoQueue;
|
williamr@2
|
78 |
|
williamr@2
|
79 |
/**
|
williamr@2
|
80 |
@internalComponent
|
williamr@2
|
81 |
*/
|
williamr@2
|
82 |
NONSHARABLE_CLASS(CEikServNotifyServer) : public CPolicyServer
|
williamr@2
|
83 |
{
|
williamr@2
|
84 |
public:
|
williamr@2
|
85 |
IMPORT_C static CEikServNotifyServer* NewL(MEikServNotifyAlert* aAlert);
|
williamr@2
|
86 |
IMPORT_C ~CEikServNotifyServer();
|
williamr@2
|
87 |
IMPORT_C void StartL();
|
williamr@2
|
88 |
public:
|
williamr@2
|
89 |
IMPORT_C void DisplayNotifier(const TDesC& aTitle, const TDesC& aLabel, const TDesC& aBut1, const TDesC& aBut2, MEikNotifyAlertCompletionObserver* aObserver);
|
williamr@2
|
90 |
IMPORT_C void DisplayInfoPrint(const TDesC& aDes);
|
williamr@2
|
91 |
inline CEikSrvNotifierManager* Manager() const;
|
williamr@2
|
92 |
inline RNotifierMessageInfoQueue& AsyncMessageQueue() { return iAsyncMessageQueue; }
|
williamr@2
|
93 |
inline RNotifierSecureInfoQueue& AsyncSecureInfoQueue() { return iAsyncSecureInfoQueue; }
|
williamr@2
|
94 |
public:
|
williamr@2
|
95 |
void SetIsExiting();
|
williamr@2
|
96 |
TBool IsExiting() const;
|
williamr@2
|
97 |
private:
|
williamr@2
|
98 |
CEikServNotifyServer(TInt aPriority, MEikServNotifyAlert* aAlert);
|
williamr@2
|
99 |
void ConstructL();
|
williamr@2
|
100 |
TCustomResult CustomSecurityCheckL(const RMessage2& aMsg, TInt& aAction, TSecurityInfo& aMissing);
|
williamr@2
|
101 |
private: // from CServer2
|
williamr@2
|
102 |
CSession2* NewSessionL(const TVersion &aVersion, const RMessage2& aMessage) const;
|
williamr@2
|
103 |
private:
|
williamr@2
|
104 |
MEikServNotifyAlert* iAlert;
|
williamr@2
|
105 |
MEikInfoMsgWin* iInfoMsg;
|
williamr@2
|
106 |
RWindowGroup iInfoMsgGroupWin;
|
williamr@2
|
107 |
CEikSrvNotifierManager* iManager;
|
williamr@2
|
108 |
TBool iExiting;
|
williamr@2
|
109 |
RNotifierMessageInfoQueue iAsyncMessageQueue;
|
williamr@2
|
110 |
RNotifierSecureInfoQueue iAsyncSecureInfoQueue;
|
williamr@2
|
111 |
};
|
williamr@2
|
112 |
|
williamr@2
|
113 |
//
|
williamr@2
|
114 |
// class CEikServNotifySession
|
williamr@2
|
115 |
//
|
williamr@2
|
116 |
|
williamr@2
|
117 |
/**
|
williamr@2
|
118 |
@internalComponent
|
williamr@2
|
119 |
*/
|
williamr@2
|
120 |
NONSHARABLE_CLASS(CEikServNotifySession) : public CSession2, public MEikNotifyAlertCompletionObserver
|
williamr@2
|
121 |
{
|
williamr@2
|
122 |
public:
|
williamr@2
|
123 |
static CEikServNotifySession* NewL();
|
williamr@2
|
124 |
~CEikServNotifySession();
|
williamr@2
|
125 |
public: // from CSession
|
williamr@2
|
126 |
void HandleAlertCompletion(const TInt aButtonVal);
|
williamr@2
|
127 |
public: // from CSession2
|
williamr@2
|
128 |
void ServiceL(const RMessage2 &aMessage);
|
williamr@2
|
129 |
private:
|
williamr@2
|
130 |
CEikServNotifySession();
|
williamr@2
|
131 |
void ConstructL();
|
williamr@2
|
132 |
void DisplayAlert(const RMessage2& aMessage);
|
williamr@2
|
133 |
void PrepareDisplayAlert();
|
williamr@2
|
134 |
void DisplayNextPendingAlert();
|
williamr@2
|
135 |
void DisplayInfoMsg(const RMessage2& aMessage);
|
williamr@2
|
136 |
void StartNotifierL(const RMessage2& aMessage);
|
williamr@2
|
137 |
void UpdateNotifierL(const RMessage2& aMessage);
|
williamr@2
|
138 |
void StartNotifierAndGetResponseL(const RMessage2& aMessage,TBool& aCleanupComplete);
|
williamr@2
|
139 |
CEikServNotifyServer& Server() const {return *static_cast<CEikServNotifyServer*>( const_cast<CServer2*>(CSession2::Server()) );}
|
williamr@2
|
140 |
static HBufC8* GetRemoteInputBufferLC(const RMessage2& aMessage, TInt aSlot);
|
williamr@2
|
141 |
void UpdateNotifierAndGetResponseL(const RMessage2& aMessage);
|
williamr@2
|
142 |
TInt NotifierCancel(const RMessage2 &aMessage);
|
williamr@2
|
143 |
private:
|
williamr@2
|
144 |
const CEikServNotifyServer* iServer;
|
williamr@2
|
145 |
TInt iClientId;
|
williamr@2
|
146 |
TInt iLengthOfFirstLineOfMessage;
|
williamr@2
|
147 |
TInt iLengthOfSecondLineOfMessage;
|
williamr@2
|
148 |
TInt iLengthOfFirstButtonOfMessage;
|
williamr@2
|
149 |
TInt iLengthOfSecondButtonOfMessage;
|
williamr@2
|
150 |
TInt iLengthOfCombinedBuffer;
|
williamr@2
|
151 |
HBufC* iBuffer;
|
williamr@2
|
152 |
private:
|
williamr@2
|
153 |
NONSHARABLE_CLASS(CEikSrvPendingAlert) : public CActive
|
williamr@2
|
154 |
{
|
williamr@2
|
155 |
public:
|
williamr@2
|
156 |
CEikSrvPendingAlert(CEikServNotifySession& aEikServNotifySession);
|
williamr@2
|
157 |
~CEikSrvPendingAlert();
|
williamr@2
|
158 |
public:
|
williamr@2
|
159 |
void TriggerNext();
|
williamr@2
|
160 |
private: // from CActive
|
williamr@2
|
161 |
void RunL();
|
williamr@2
|
162 |
void DoCancel();
|
williamr@2
|
163 |
private:
|
williamr@2
|
164 |
CEikServNotifySession& iEikServNotifySession;
|
williamr@2
|
165 |
};
|
williamr@2
|
166 |
private:
|
williamr@2
|
167 |
CEikSrvPendingAlert* iEikSrvPendingAlert;
|
williamr@2
|
168 |
public:
|
williamr@2
|
169 |
friend class CEikSrvPendingAlert;
|
williamr@2
|
170 |
};
|
williamr@2
|
171 |
|
williamr@2
|
172 |
|
williamr@2
|
173 |
//
|
williamr@2
|
174 |
// class CEikSrvNotifierWrapper
|
williamr@2
|
175 |
//
|
williamr@2
|
176 |
|
williamr@2
|
177 |
|
williamr@2
|
178 |
/**
|
williamr@2
|
179 |
@internalComponent
|
williamr@2
|
180 |
*/
|
williamr@2
|
181 |
NONSHARABLE_CLASS(CEikSrvNotifierWrapper) : public CBase
|
williamr@2
|
182 |
{
|
williamr@2
|
183 |
public:
|
williamr@2
|
184 |
CEikSrvNotifierWrapper(MEikSrvNotifierBase2* aNotifier);
|
williamr@2
|
185 |
~CEikSrvNotifierWrapper();
|
williamr@2
|
186 |
void RegisterNotifierL();
|
williamr@2
|
187 |
public:
|
williamr@2
|
188 |
MEikSrvNotifierBase2* iNotifier;
|
williamr@2
|
189 |
MEikSrvNotifierBase2::TNotifierInfo iInfo;
|
williamr@2
|
190 |
TUid iDestructorKey;
|
williamr@2
|
191 |
TUid iPlugInDllUid;
|
williamr@2
|
192 |
TBool iIsReadyForRemoval;
|
williamr@2
|
193 |
};
|
williamr@2
|
194 |
|
williamr@2
|
195 |
//
|
williamr@2
|
196 |
// class CEikSrvNotifierRemover
|
williamr@2
|
197 |
//
|
williamr@2
|
198 |
|
williamr@2
|
199 |
/**
|
williamr@2
|
200 |
@internalComponent
|
williamr@2
|
201 |
*/
|
williamr@2
|
202 |
NONSHARABLE_CLASS(CEikSrvNotifierRemover) : public CActive
|
williamr@2
|
203 |
{
|
williamr@2
|
204 |
public:
|
williamr@2
|
205 |
static CEikSrvNotifierRemover* NewL();
|
williamr@2
|
206 |
void Start(CEikSrvNotifierManager* aManager, CArrayPtr<CEikSrvNotifierWrapper>* aObservedList);
|
williamr@2
|
207 |
~CEikSrvNotifierRemover();
|
williamr@2
|
208 |
private:
|
williamr@2
|
209 |
CEikSrvNotifierRemover();
|
williamr@2
|
210 |
private:
|
williamr@2
|
211 |
// from CActive
|
williamr@2
|
212 |
void RunL();
|
williamr@2
|
213 |
void DoCancel();
|
williamr@2
|
214 |
public:
|
williamr@2
|
215 |
CEikSrvNotifierManager* iManager;
|
williamr@2
|
216 |
CArrayPtr<CEikSrvNotifierWrapper>* iObservedList;
|
williamr@2
|
217 |
};
|
williamr@2
|
218 |
|
williamr@2
|
219 |
|
williamr@2
|
220 |
/**
|
williamr@2
|
221 |
@internalComponent
|
williamr@2
|
222 |
*/
|
williamr@2
|
223 |
NONSHARABLE_CLASS(CEikNotifierQueue) : public CBase
|
williamr@2
|
224 |
{
|
williamr@2
|
225 |
public:
|
williamr@2
|
226 |
class CQueueItem;
|
williamr@2
|
227 |
public:
|
williamr@2
|
228 |
static CEikNotifierQueue* NewL();
|
williamr@2
|
229 |
inline void QueueItemL(CEikNotifierQueue::CQueueItem* aItem);
|
williamr@2
|
230 |
CQueueItem* FetchItem(TUid aChannel);
|
williamr@2
|
231 |
TBool IsAlreadyQueued(TUid aNotifier,TUid aChannel) const;
|
williamr@2
|
232 |
void RemoveClient(TInt aClientId);
|
williamr@2
|
233 |
TInt GetHighestQueuePriority(TUid aChannel);
|
williamr@2
|
234 |
inline TInt Count() const;
|
williamr@2
|
235 |
const CQueueItem& At(TInt aIndex) const;
|
williamr@2
|
236 |
void RemoveNotifier(TUid aNotifierUid);
|
williamr@2
|
237 |
public:
|
williamr@2
|
238 |
NONSHARABLE_CLASS(CQueueItem) : public CBase
|
williamr@2
|
239 |
{
|
williamr@2
|
240 |
public:
|
williamr@2
|
241 |
static CQueueItem* NewLC(const MEikSrvNotifierBase2::TNotifierInfo& aInfo, TInt aClientId, const TDesC8& aBuffer, const RMessage2& aMessage, TInt aReplySlot);
|
williamr@2
|
242 |
~CQueueItem();
|
williamr@2
|
243 |
inline const TDesC8& Buffer() const {return *iBuffer;}
|
williamr@2
|
244 |
private:
|
williamr@2
|
245 |
CQueueItem(const MEikSrvNotifierBase2::TNotifierInfo& aInfo, TInt aClientId, const RMessage2& aMessage, TInt aReplySlot);
|
williamr@2
|
246 |
void ConstructL(const TDesC8& aBuffer);
|
williamr@2
|
247 |
public:
|
williamr@2
|
248 |
const MEikSrvNotifierBase2::TNotifierInfo iInfo;
|
williamr@2
|
249 |
const TInt iClientId;
|
williamr@2
|
250 |
const RMessage2 iMessage;
|
williamr@2
|
251 |
TInt iReplySlot;
|
williamr@2
|
252 |
private:
|
williamr@2
|
253 |
HBufC8* iBuffer;
|
williamr@2
|
254 |
};
|
williamr@2
|
255 |
private:
|
williamr@2
|
256 |
inline CEikNotifierQueue();
|
williamr@2
|
257 |
private:
|
williamr@2
|
258 |
CArrayPtrFlat<CQueueItem> iQueue;
|
williamr@2
|
259 |
};
|
williamr@2
|
260 |
|
williamr@2
|
261 |
class MNotifierStarter;
|
williamr@2
|
262 |
class MNotifierUpdater;
|
williamr@2
|
263 |
class CDiscoverNewImplementation;
|
williamr@2
|
264 |
class CPluginTrack;
|
williamr@2
|
265 |
|
williamr@2
|
266 |
/**
|
williamr@2
|
267 |
@internalComponent
|
williamr@2
|
268 |
*/
|
williamr@2
|
269 |
NONSHARABLE_CLASS(CEikSrvNotifierManager) : public CBase, public MEikSrvNotifierManager
|
williamr@2
|
270 |
{
|
williamr@2
|
271 |
public:
|
williamr@2
|
272 |
static CEikSrvNotifierManager* NewL();
|
williamr@2
|
273 |
~CEikSrvNotifierManager();
|
williamr@2
|
274 |
void NotifierStartL(TUid aNotifierUid,const TDesC8& aBuffer,TDes8* aResponse,TInt aClientId);
|
williamr@2
|
275 |
TInt NotifierUpdateL(TUid aNotifierUid,const TDesC8& aBuffer,TDes8* aResponse,TInt aClientId);
|
williamr@2
|
276 |
TInt NotifierCancel(TUid aNotifierUid);
|
williamr@2
|
277 |
void NotifierStartAndGetResponseL(TUid aNotifierUid,const TDesC8& aBuffer,TInt aReplySlot,
|
williamr@2
|
278 |
const RMessage2& aMessage,TInt aClientId,TBool& aCleanupComplete);
|
williamr@2
|
279 |
void HandleClientExit(TInt aClientId);
|
williamr@2
|
280 |
void NotifierStartAndGetResponseL(TUid aNotifierUid,TUid aChannelUid,const TDesC8& aBuffer,TInt aReplySlot,
|
williamr@2
|
281 |
const RMessage2& aMessage,TInt aClientId,TBool& aCleanupComplete);
|
williamr@2
|
282 |
void HandleScreenDeviceChangedL();
|
williamr@2
|
283 |
void RegisterSingleNotifierFromTransientPlugInL(TUid aPlugInUid, TUid aNotifierUid);
|
williamr@2
|
284 |
void NotifierUpdateAndGetResponseL(TUid aNotifierUid,const TDesC8& aBuffer,TInt aReplySlot,
|
williamr@2
|
285 |
const RMessage2& aMessage,TInt aClientId);
|
williamr@2
|
286 |
public:
|
williamr@2
|
287 |
void RegisterL();
|
williamr@2
|
288 |
void CheckForEcomPluginInstallUninstall();
|
williamr@2
|
289 |
public: // from MEikSrvNotifierManager
|
williamr@2
|
290 |
void StartNotifierL(TUid aNotifierUid,const TDesC8& aBuffer,TDes8& aResponse);
|
williamr@2
|
291 |
void CancelNotifier(TUid aNotifierUid);
|
williamr@2
|
292 |
void UpdateNotifierL(TUid aNotifierUid,const TDesC8& aBuffer,TDes8& aResponse);
|
williamr@2
|
293 |
private:
|
williamr@2
|
294 |
void DoAddPlugInL(const TDesC& aPath,const TDesC& aFileName,const TUidType& aUidType);
|
williamr@2
|
295 |
void TryAddNotifiersFromNotifierArrayL(CArrayPtr<CEikSrvNotifierWrapper>* aNotifierArray, TInt& aRollBackChannels);
|
williamr@2
|
296 |
CEikSrvNotifierManager();
|
williamr@2
|
297 |
void ConstructL();
|
williamr@2
|
298 |
void StartNextFromQueue(TUid aChannel);
|
williamr@2
|
299 |
void DoStartQueuedItemLD(CEikNotifierQueue::CQueueItem* aItem);
|
williamr@2
|
300 |
TBool NotifierHandlesScreenMode(MEikSrvNotifierBase2* aNotifier);
|
williamr@2
|
301 |
CArrayPtr<CEikSrvNotifierWrapper>* TryLoadPlugInL(TUid aPlugInUid);
|
williamr@2
|
302 |
TBool TryLoadPlugInFromSpecifiedDriveL(RFs& aFs, TUid aPlugInUid, TInt aDriveIndex, CArrayPtr<CEikSrvNotifierWrapper>*& aNotifierArray);
|
williamr@2
|
303 |
CArrayPtr<CEikSrvNotifierWrapper>* LoadPlugInAndPopulateNotifierArrayL(const TDesC& aPath, const TDesC& aFileName, const TUidType& aUidType);
|
williamr@2
|
304 |
TInt QueueNotifierForPossibleRemoval(TUid aNotifierUid);
|
williamr@2
|
305 |
CArrayPtr<CEikSrvNotifierWrapper>* CreateNotifierArrayFromPlugInArrayL(CArrayPtr<MEikSrvNotifierBase2>* aPlugInArray, const TUidType& aUidType);
|
williamr@2
|
306 |
void UpdateHighestPriorityNotifiersOnThisChannelOfTheirPausingOrResuming(TUid aChannelUid, TUid aHighestPriorityNotifierOnThisChannelUid, const TDesC8& aBuffer);
|
williamr@2
|
307 |
void TryFindAndRegisterNotifierFromPlugInDllL(TUid aNotifierUid);
|
williamr@2
|
308 |
void LookForNotifierInObservedListL(TUid aNotifierUid, TUid aChannelUid, RArray<TInt>& aNotifierPositions);
|
williamr@2
|
309 |
void DoNotifierStartL(MNotifierStarter& aNotifierStarter, TBool& aCleanupComplete, TUid aNotifierUid, TUid aChannelUid, const TDesC8& aBuffer, TDes8* aResponse, TInt aClientId);
|
williamr@2
|
310 |
TInt DoNotifierUpdateL(MNotifierUpdater& aNotifierStarter, TUid aNotifierUid, const TDesC8& aBuffer, TDes8* aResponse, TInt aClientId);
|
williamr@2
|
311 |
private:
|
williamr@2
|
312 |
void DoAddPlugInL(TUid aUid);
|
williamr@2
|
313 |
CArrayPtr<CEikSrvNotifierWrapper>* LoadPlugInAndPopulateNotifierArrayL(TUid aUid);
|
williamr@2
|
314 |
void UnloadEComPlugInImplementation(TInt aIndex);
|
williamr@2
|
315 |
TBool IsImplementationRemoved(TUid aImplementationUid, RImplInfoPtrArray& aPlugInArray);
|
williamr@2
|
316 |
TBool IsImplementationAdded(TUid aImplementationUid);
|
williamr@2
|
317 |
private:
|
williamr@2
|
318 |
CArrayPtr<CEikSrvNotifierWrapper>* iObservedList;
|
williamr@2
|
319 |
CChannelMonitor* iChannelMonitor;
|
williamr@2
|
320 |
CActivityMonitor* iActivityMonitor;
|
williamr@2
|
321 |
CEikNotifierQueue* iQueue;
|
williamr@2
|
322 |
CEikSrvNotifierRemover* iNotifierRemover;
|
williamr@2
|
323 |
CDiscoverNewImplementation* iDiscoverNewImplementation;
|
williamr@2
|
324 |
RPointerArray <CPluginTrack> iPluginUidList;
|
williamr@2
|
325 |
};
|
williamr@2
|
326 |
|
williamr@2
|
327 |
|
williamr@2
|
328 |
/**
|
williamr@2
|
329 |
@internalComponent
|
williamr@2
|
330 |
*/
|
williamr@2
|
331 |
NONSHARABLE_CLASS(CChannelMonitor) : public CBase
|
williamr@2
|
332 |
{
|
williamr@2
|
333 |
public:
|
williamr@2
|
334 |
static CChannelMonitor* NewL();
|
williamr@2
|
335 |
inline void AddNewChannelL(TUid aChannel);
|
williamr@2
|
336 |
void DeleteChannel(TInt aIndex);
|
williamr@2
|
337 |
TInt NumberOfChannels() const;
|
williamr@2
|
338 |
TBool AlreadyHasChannel(TUid aChannel) const;
|
williamr@2
|
339 |
TInt ActivityLevel(TUid aChannel) const;
|
williamr@2
|
340 |
void UpdateChannel(TUid aChannel, TInt aLevel);
|
williamr@2
|
341 |
private:
|
williamr@2
|
342 |
CChannelMonitor();
|
williamr@2
|
343 |
private:
|
williamr@2
|
344 |
/**
|
williamr@2
|
345 |
@internalComponent
|
williamr@2
|
346 |
*/
|
williamr@2
|
347 |
NONSHARABLE_CLASS(TChannelActivity)
|
williamr@2
|
348 |
{
|
williamr@2
|
349 |
public:
|
williamr@2
|
350 |
inline TChannelActivity(TUid aChannel, TInt aHighestPriorityRunning);
|
williamr@2
|
351 |
public:
|
williamr@2
|
352 |
TUid iChannel;
|
williamr@2
|
353 |
TInt iHighestPriorityRunning;
|
williamr@2
|
354 |
};
|
williamr@2
|
355 |
private:
|
williamr@2
|
356 |
CArrayFixFlat<TChannelActivity> iMonitor;
|
williamr@2
|
357 |
};
|
williamr@2
|
358 |
|
williamr@2
|
359 |
|
williamr@2
|
360 |
/**
|
williamr@2
|
361 |
@internalComponent
|
williamr@2
|
362 |
*/
|
williamr@2
|
363 |
NONSHARABLE_CLASS(CActivityMonitor) : public CBase
|
williamr@2
|
364 |
{
|
williamr@2
|
365 |
public:
|
williamr@2
|
366 |
static CActivityMonitor* NewL();
|
williamr@2
|
367 |
~CActivityMonitor();
|
williamr@2
|
368 |
void AddL(const MEikSrvNotifierBase2::TNotifierInfo& aInfo, TInt aClientId);
|
williamr@2
|
369 |
void Remove(TUid aNotifierUid, TInt aClientId);
|
williamr@2
|
370 |
void RemoveNotifier(TUid aNotifierUid, TUid aChannel);
|
williamr@2
|
371 |
void RemoveClient(TInt aClientId);
|
williamr@2
|
372 |
TBool IsNotifierActive(TUid aNotifierUid,TUid aChannel) const;
|
williamr@2
|
373 |
TBool IsChannelActive(TUid aChannel, TUid& aNotifier,MEikSrvNotifierBase2::TNotifierPriority& aHighestPriority) const;
|
williamr@2
|
374 |
TBool IsClientPresent(TUid aNotifierUid, TUid aChannel, TInt aClientId) const;
|
williamr@2
|
375 |
TBool NotifierForClient(TUid& aNotifier, TInt aClientId) const;
|
williamr@2
|
376 |
private:
|
williamr@2
|
377 |
CActivityMonitor();
|
williamr@2
|
378 |
TInt Find(TUid aNotifierUid) const;
|
williamr@2
|
379 |
TInt Find(TUid aNotifierUid, TUid aChannel) const;
|
williamr@2
|
380 |
private:
|
williamr@2
|
381 |
/**
|
williamr@2
|
382 |
@internalComponent
|
williamr@2
|
383 |
*/
|
williamr@2
|
384 |
NONSHARABLE_CLASS(CNotifierActivity) : public CBase
|
williamr@2
|
385 |
{
|
williamr@2
|
386 |
public:
|
williamr@2
|
387 |
static CNotifierActivity* NewLC(const MEikSrvNotifierBase2::TNotifierInfo& aInfo, TInt aClientId);
|
williamr@2
|
388 |
~CNotifierActivity();
|
williamr@2
|
389 |
TInt Find(TInt aClientId) const;
|
williamr@2
|
390 |
private:
|
williamr@2
|
391 |
CNotifierActivity(const MEikSrvNotifierBase2::TNotifierInfo& aInfo);
|
williamr@2
|
392 |
void ConstructL(TInt aClientId);
|
williamr@2
|
393 |
public:
|
williamr@2
|
394 |
const MEikSrvNotifierBase2::TNotifierInfo iInfo;
|
williamr@2
|
395 |
CArrayFixFlat<TInt> iClientArray;
|
williamr@2
|
396 |
};
|
williamr@2
|
397 |
private:
|
williamr@2
|
398 |
CArrayPtrFlat<CNotifierActivity> iMonitor;
|
williamr@2
|
399 |
};
|
williamr@2
|
400 |
|
williamr@2
|
401 |
|
williamr@2
|
402 |
inline CChannelMonitor::TChannelActivity::TChannelActivity(TUid aChannel, TInt aHighestPriorityRunning)
|
williamr@2
|
403 |
:iChannel(aChannel), iHighestPriorityRunning(aHighestPriorityRunning)
|
williamr@2
|
404 |
{}
|
williamr@2
|
405 |
|
williamr@2
|
406 |
inline void CChannelMonitor::AddNewChannelL(TUid aChannel)
|
williamr@2
|
407 |
{iMonitor.AppendL(TChannelActivity(aChannel,0));}
|
williamr@2
|
408 |
|
williamr@2
|
409 |
inline CEikSrvNotifierManager* CEikServNotifyServer::Manager() const
|
williamr@2
|
410 |
{return iManager;}
|
williamr@2
|
411 |
|
williamr@2
|
412 |
inline void CEikNotifierQueue::QueueItemL(CEikNotifierQueue::CQueueItem* aItem)
|
williamr@2
|
413 |
{iQueue.AppendL(aItem);}
|
williamr@2
|
414 |
|
williamr@2
|
415 |
inline TInt CEikNotifierQueue::Count() const
|
williamr@2
|
416 |
{return iQueue.Count();}
|
williamr@2
|
417 |
|
williamr@2
|
418 |
inline CEikNotifierQueue::CEikNotifierQueue()
|
williamr@2
|
419 |
:iQueue(3)
|
williamr@2
|
420 |
{}
|
williamr@2
|
421 |
|
williamr@2
|
422 |
|
williamr@2
|
423 |
#endif // __EIKNFYSV_H__
|