examples/Telephony/ETel3rdPartyExample/SuppleServices/CFlightModeInfo.cpp

00001 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
00002 // All rights reserved.
00003 // This component and the accompanying materials are made available
00004 // under the terms of "Eclipse Public License v1.0"
00005 // which accompanies this distribution, and is available
00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
00007 //
00008 // Initial Contributors:
00009 // Nokia Corporation - initial contribution.
00010 //
00011 // Contributors:
00012 //
00013 // Description:
00014 //
00015 
00016 
00017 #include "CFlightModeInfo.h"
00018 
00026 CFlightModeInfo* CFlightModeInfo::NewL(MExecAsync* aController)
00027         {
00028         CFlightModeInfo* self = new(ELeave) CFlightModeInfo(aController);
00029         CleanupStack::PushL(self);
00030         self->ConstructL();
00031         CleanupStack::Pop(self);
00032         return self;
00033         }
00034 
00039 CFlightModeInfo::~CFlightModeInfo()
00040         {
00041         Cancel();
00042         }
00043 
00047 void CFlightModeInfo::DoStartRequestL()
00048         {
00049         iRequestNotify = EFalse;
00050         
00051         // Retrieves the current flight mode status
00052         iTelephony->GetFlightMode(iStatus, iFlightModeV1Pckg);
00053         SetActive();
00054         }
00055 
00061 CFlightModeInfo::CFlightModeInfo(MExecAsync* aController)
00062         : CISVAPIAsync(aController, KFlightModeInfo),
00063           iFlightModeV1Pckg(iFlightModeV1)
00064         {
00065         // Empty method
00066         }
00067 
00071 void CFlightModeInfo::ConstructL()
00072         {
00073         // Empty method
00074         }
00075 
00079 void CFlightModeInfo::RunL()
00080         {
00081         if(iStatus != KErrNone)
00082                 {
00083                 iConsole->Printf(KError);
00084                 
00085                 // Print the error status code
00086                 iConsole->Printf(_L("%d\n"), iStatus.Int());
00087                 }
00088         else
00089                 {
00090                 if (iRequestNotify)
00091                 {
00092                 iConsole->Printf(_L("~*THIS IS A NOTIFICATION*~\n"));
00093                 }
00094                 switch (iFlightModeV1.iFlightModeStatus)
00095                         {
00096                 case CTelephony::EFlightModeOff:
00097                         iConsole->Printf(_L("FlightStatus Off, you can make a call!\n"));
00098                         RequestNotificationL();
00099                         ExampleNotify();
00100                         break;
00101                 case CTelephony::EFlightModeOn:
00102                         iConsole->Printf(_L("FlightStatus On, you cannot make calls!\n"));
00103                         RequestNotificationL();
00104                         break;
00105                 default:
00106                         iConsole->Printf(KError);
00107                         }
00108                 }
00109         }
00110 
00114 void CFlightModeInfo::DoRequestNotificationL()
00115 {
00116         // Panic if this object is already performing an asynchronous operation.
00117         // Application will panic if you call SetActive() on an already active object.
00118         _LIT( KNotifyPanic, "CFlightModeInfo Notify Method" );
00119         __ASSERT_ALWAYS( !IsActive(), User::Panic( KNotifyPanic, 1 ));
00120         iRequestNotify = ETrue;
00121         
00122         // Registers interest in receiving change notifications for events.
00123         iTelephony->NotifyChange(       iStatus,
00124                                                                 CTelephony::EFlightModeChange,
00125                                                                 iFlightModeV1Pckg );
00126         SetActive();
00127 }
00128 
00132 void CFlightModeInfo::DoCancel()
00133         {
00134         // Cancels an outstanding asynchronous request.
00135         iTelephony->CancelAsync(CTelephony::EFlightModeChangeCancel);
00136         }

Generated by  doxygen 1.6.2