uifw/AknGlobalUI/OldStyleNotif/Src/OldStylePlugin.cpp
changeset 0 2f259fa3e83a
child 29 a8834a2e9a96
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AknGlobalUI/OldStyleNotif/Src/OldStylePlugin.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,206 @@
+/*
+* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Creates Avkon old style notifiers.
+*
+*/
+
+#include <eiknotapi.h>
+#include <AknNotifyStd.h>
+#include <MediatorEventProvider.h>
+#include "AknKeyLockNotifier.h"
+#include "AknNotifyPlugin.h"
+#include "AknSystemPopup.h"
+#include "AknSoftNotificationPlugin.h"
+#include "AknSystemListPopup.h"
+#include "aknsystemmsgpopup.h"
+#include "AknSystemListMsgPopup.h"
+#include "aknsystemconfirmationpopup.h"
+#include "aknsystemprogresspopup.h"
+
+const TInt KArrayGranularity = 3;
+
+GLDEF_C void Panic(TAknPanic aPanic)
+    {
+    _LIT(KPanicCat, "AknNotifyPlugin");
+    User::Panic(KPanicCat, aPanic);
+    }
+
+void CleanupArray(TAny* aArray)
+    {
+    CArrayPtrFlat<MEikSrvNotifierBase2>* subjects = 
+        static_cast<CArrayPtrFlat<MEikSrvNotifierBase2>*>(aArray);
+        
+    subjects->ResetAndDestroy();
+    delete subjects;
+    }
+
+CArrayPtr<MEikSrvNotifierBase2>* DoCreateNotifierArrayL()
+    {
+    CArrayPtrFlat<MEikSrvNotifierBase2>* subjects = 
+        new (ELeave)CArrayPtrFlat<MEikSrvNotifierBase2>(KArrayGranularity);
+        
+    CleanupStack::PushL(TCleanupItem(CleanupArray, subjects));
+
+    // ----------------------------
+    // Key lock notifier.
+    // ----------------------------
+    CAknKeyLockNotifierSubject* keyLockNotifier = CAknKeyLockNotifierSubject::NewL();
+    
+    CleanupStack::PushL(keyLockNotifier);
+    subjects->AppendL(keyLockNotifier);
+    CleanupStack::Pop(keyLockNotifier);
+
+    // ----------------------------
+    // Global note notifier.
+    // ----------------------------
+    CAknGlobalNoteSubject* globalNoteSubject = CAknGlobalNoteSubject::NewL(keyLockNotifier);
+    
+    CleanupStack::PushL(globalNoteSubject);
+    subjects->AppendL(globalNoteSubject);
+    CleanupStack::Pop(globalNoteSubject);
+    
+    // ----------------------------
+    // Soft note notifier.
+    // ----------------------------
+    CAknSoftNotificationSubject* softNotificationSubject = CAknSoftNotificationSubject::NewL(
+        keyLockNotifier, 
+        globalNoteSubject);
+        
+    CleanupStack::PushL(softNotificationSubject);
+    subjects->AppendL(softNotificationSubject);
+    CleanupStack::Pop(softNotificationSubject);
+
+    // ----------------------------
+    // Popup notifier.
+    // ----------------------------
+    CAknPopupNotifierSubject* popupNotifierSubject = CAknPopupNotifierSubject::NewL();
+    
+    CleanupStack::PushL(popupNotifierSubject);
+    subjects->AppendL(popupNotifierSubject);
+    CleanupStack::Pop(popupNotifierSubject);
+    
+    // =========================================================================
+    // Notifiers using CAknMediatorEvent.
+    // =========================================================================
+    CAknMediatorEvent* aknEvent = new (ELeave) CAknMediatorEvent();
+    CleanupStack::PushL(aknEvent);
+    
+#ifdef __COVER_DISPLAY  
+    aknEvent->iImpl = CMediatorEventProvider::NewL();
+#endif  
+
+    // ----------------------------
+    // Signal notifier.
+    // ----------------------------
+    CAknSignalNotifierSubject* signalNotifierSubject = CAknSignalNotifierSubject::NewL(aknEvent);
+    
+    CleanupStack::PushL(signalNotifierSubject);
+    subjects->AppendL(signalNotifierSubject);
+    CleanupStack::Pop(signalNotifierSubject);
+    
+    // ----------------------------
+    // Battery notifier.
+    // ----------------------------
+    CAknBatteryNotifierSubject* batteryNotifierSubject = CAknBatteryNotifierSubject::NewL(aknEvent);
+    
+    CleanupStack::PushL(batteryNotifierSubject);
+    subjects->AppendL(batteryNotifierSubject);
+    CleanupStack::Pop(batteryNotifierSubject);
+    
+    // ----------------------------
+    // Small indicator notifier.
+    // ----------------------------
+    CAknSmallIndicatorSubject* smallIndicatorSubject = CAknSmallIndicatorSubject::NewL(aknEvent);
+
+    CleanupStack::PushL(smallIndicatorSubject);
+    subjects->AppendL(smallIndicatorSubject);
+    CleanupStack::Pop(smallIndicatorSubject);
+    
+    // Mediator event not needed anymore.
+    CleanupStack::Pop(aknEvent); 
+    
+    // ----------------------------
+    // Incall bubble notifier.
+    // ----------------------------
+    CAknIncallBubbleSubject* incallBubbleSubject = CAknIncallBubbleSubject::NewL();
+    
+    CleanupStack::PushL(incallBubbleSubject);
+    subjects->AppendL(incallBubbleSubject);
+    CleanupStack::Pop(incallBubbleSubject);
+
+    // =========================================================================
+    // Traditional notifiers, moved here because of higher wg-priority (wouldn't
+    // require any capabilities otherwise).
+    // =========================================================================
+    
+    // ----------------------------
+    // Global list query.
+    // ----------------------------
+    CAknGlobalListQuerySubject* listQuerySubject = CAknGlobalListQuerySubject::NewL();
+    
+    CleanupStack::PushL(listQuerySubject);
+    subjects->AppendL(listQuerySubject);
+    CleanupStack::Pop(listQuerySubject);    
+    
+    // ----------------------------
+    // Global msg query.
+    // ----------------------------
+    CAknGlobalMsgQuerySubject* msgQuerySubject = CAknGlobalMsgQuerySubject::NewL();
+    
+    CleanupStack::PushL(msgQuerySubject);
+    subjects->AppendL(msgQuerySubject);
+    CleanupStack::Pop(msgQuerySubject);
+    
+    // ----------------------------
+    // Global confirmation query.
+    // ----------------------------
+    CAknGlobalConfirmationQuerySubject* confirmationQuerySubject = 
+        CAknGlobalConfirmationQuerySubject::NewL();
+    
+    CleanupStack::PushL(confirmationQuerySubject);
+    subjects->AppendL(confirmationQuerySubject);
+    CleanupStack::Pop(confirmationQuerySubject);
+    
+    // ----------------------------
+    // Global progress dialog.
+    // ----------------------------
+    CAknGlobalProgressDialogSubject* progressDialogSubject = 
+        CAknGlobalProgressDialogSubject::NewL();
+    
+    CleanupStack::PushL(progressDialogSubject);
+    subjects->AppendL(progressDialogSubject);
+    CleanupStack::Pop(progressDialogSubject);
+    
+    // ----------------------------
+    // Global list msg query.
+    // ----------------------------
+    CAknGlobalListMsgQuerySubject* listMsgQuerySubject = CAknGlobalListMsgQuerySubject::NewL();
+    
+    CleanupStack::PushL(listMsgQuerySubject);
+    subjects->AppendL(listMsgQuerySubject);
+    CleanupStack::Pop(listMsgQuerySubject);
+
+    CleanupStack::Pop(subjects);
+    return subjects;
+    }
+
+// Lib main entry point
+EXPORT_C CArrayPtr<MEikSrvNotifierBase2>* NotifierArray()
+    {
+    CArrayPtr<MEikSrvNotifierBase2>* subjects = NULL;
+    TRAP_IGNORE(subjects = DoCreateNotifierArrayL());
+    return subjects;
+    }
+
+// End of file