diff -r 000000000000 -r 2f259fa3e83a uifw/AknGlobalUI/OldStyleNotif/Src/OldStylePlugin.cpp --- /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 +#include +#include +#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* subjects = + static_cast*>(aArray); + + subjects->ResetAndDestroy(); + delete subjects; + } + +CArrayPtr* DoCreateNotifierArrayL() + { + CArrayPtrFlat* subjects = + new (ELeave)CArrayPtrFlat(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* NotifierArray() + { + CArrayPtr* subjects = NULL; + TRAP_IGNORE(subjects = DoCreateNotifierArrayL()); + return subjects; + } + +// End of file