cbsatplugin/atmisccmdplugin/src/cbsettinghandler.cpp
branchRCL_3
changeset 16 b23265fb36da
child 32 19bd632b5100
equal deleted inserted replaced
14:f7fbeaeb166a 16:b23265fb36da
       
     1 /*
       
     2  * Copyright (c) 2010 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  * Initial Contributors:
       
     9  * Nokia Corporation - initial contribution.
       
    10  *
       
    11  * Contributors:
       
    12  * Description :
       
    13  *
       
    14  */
       
    15 
       
    16 #include "cbsettinghandler.h"
       
    17 
       
    18 #include "clckcommandhandler.h"
       
    19 #include "debug.h"
       
    20 
       
    21 /**
       
    22  * AO class for setting call barring(s)
       
    23  */
       
    24 CCBSettingHandler* CCBSettingHandler::NewL(RMobilePhone& aPhone)
       
    25     {
       
    26     TRACE_FUNC_ENTRY
       
    27     CCBSettingHandler* self = new(ELeave) CCBSettingHandler(aPhone);
       
    28     TRACE_FUNC_EXIT
       
    29     return self;
       
    30     }
       
    31       
       
    32 CCBSettingHandler::CCBSettingHandler(RMobilePhone& aPhone) :
       
    33     CActive(EPriorityNormal),
       
    34     iPhone(aPhone)
       
    35     {
       
    36     TRACE_FUNC_ENTRY
       
    37     CActiveScheduler::Add(this);
       
    38     TRACE_FUNC_EXIT
       
    39     }
       
    40 
       
    41 CCBSettingHandler::~CCBSettingHandler()
       
    42     {
       
    43     TRACE_FUNC_ENTRY
       
    44     Cancel();
       
    45     iClassArray.Close();
       
    46     TRACE_FUNC_EXIT
       
    47     }
       
    48 
       
    49 void CCBSettingHandler::Start(TRequestStatus& aReqStatus, TInt aInfoClass, 
       
    50         RMobilePhone::TMobilePhoneCBCondition aCondition,
       
    51         RMobilePhone::TMobilePhoneCBChangeV1* aCBInfo)
       
    52     {
       
    53     TRACE_FUNC_ENTRY
       
    54     
       
    55     iCBInfo = aCBInfo;
       
    56     iCondition = aCondition;
       
    57     aReqStatus = KRequestPending;
       
    58     iQueuedStatus = &aReqStatus;
       
    59     
       
    60     if ((aInfoClass & EInfoClassVoice) == EInfoClassVoice)
       
    61         {
       
    62         iClassArray.Append(RMobilePhone::ETelephony);
       
    63         }
       
    64    // TODO: confirm ECircuitDataService is not needed 
       
    65     if ((aInfoClass & EInfoClassData) == EInfoClassData)
       
    66         {
       
    67         iClassArray.Append(RMobilePhone::EAllBearer);
       
    68         }
       
    69     
       
    70     if ((aInfoClass & EInfoClassFax) == EInfoClassFax)
       
    71         {
       
    72         iClassArray.Append(RMobilePhone::EFaxService);
       
    73         }
       
    74     
       
    75     if ((aInfoClass & EInfoClassSMS) == EInfoClassSMS)
       
    76         {
       
    77         iClassArray.Append(RMobilePhone::EShortMessageService);
       
    78         }
       
    79 
       
    80     if ((aInfoClass & EInfoClassSyncData) == EInfoClassSyncData)
       
    81         {
       
    82         iClassArray.Append(RMobilePhone::ESyncData);
       
    83         }
       
    84 
       
    85     if ((aInfoClass & EInfoClassASyncData) == EInfoClassASyncData)
       
    86         {
       
    87         iClassArray.Append(RMobilePhone::EAsyncData);
       
    88         }
       
    89     
       
    90     if ((aInfoClass & EInfoClassPacketData) == EInfoClassPacketData)
       
    91         {
       
    92         iClassArray.Append(RMobilePhone::EPacketData);
       
    93         }
       
    94     
       
    95     if ((aInfoClass & EInfoClassPadAccess) == EInfoClassPadAccess)
       
    96         {
       
    97         iClassArray.Append(RMobilePhone::EPadAccess);
       
    98         }
       
    99     
       
   100     SetCBForServiceGroup();
       
   101     
       
   102     TRACE_FUNC_EXIT
       
   103     }
       
   104 
       
   105 void CCBSettingHandler::SetCBForServiceGroup()
       
   106     {
       
   107     TRACE_FUNC_ENTRY
       
   108     
       
   109     Trace(KDebugPrintD, "iClassArray.Count(): ", iClassArray.Count());
       
   110     if (iClassArray.Count() != 0)
       
   111         {
       
   112         iCBInfo->iServiceGroup = iClassArray[0];
       
   113         iPhone.SetCallBarringStatus(iStatus, iCondition, *iCBInfo);
       
   114         iClassArray.Remove(0);
       
   115         SetActive();
       
   116         }
       
   117     else
       
   118         {
       
   119         Complete(KErrNone);
       
   120         }
       
   121     TRACE_FUNC_EXIT
       
   122     }
       
   123 
       
   124 void CCBSettingHandler::RunL()
       
   125     {
       
   126     TRACE_FUNC_ENTRY
       
   127     
       
   128     Trace(KDebugPrintD, "iStatus.Int(): ", iStatus.Int());
       
   129     
       
   130     if (iStatus.Int() != KErrNone )
       
   131         {
       
   132         Complete(iStatus.Int());
       
   133         }
       
   134     else
       
   135         {
       
   136         SetCBForServiceGroup();
       
   137         }
       
   138     TRACE_FUNC_EXIT
       
   139     }
       
   140 
       
   141 void CCBSettingHandler::DoCancel()
       
   142     {
       
   143     TRACE_FUNC_ENTRY
       
   144     iPhone.CancelAsyncRequest(EMobilePhoneSetCallBarringStatus);
       
   145     
       
   146     Complete(KErrCancel);
       
   147 
       
   148     TRACE_FUNC_EXIT
       
   149     }
       
   150 
       
   151 void CCBSettingHandler::Complete(TInt aError)
       
   152     {
       
   153     if (iQueuedStatus != NULL)
       
   154         {
       
   155         User::RequestComplete(iQueuedStatus, aError);
       
   156         iQueuedStatus = NULL;
       
   157         }
       
   158     }