Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_auto_d_t_m_f_dialler_2_c_main_menu_8cpp_source.html
author Dominic Pinkman <dominic.pinkman@nokia.com>
Fri, 13 Aug 2010 16:47:46 +0100
changeset 14 578be2adaf3e
parent 6 43e37759235e
permissions -rw-r--r--
Week 32 contribution of PDK documentation content. See release notes for details. Fixes bug Bug 3582

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>TB9.2 Example Applications: examples/Telephony/ETel3rdPartyExample/AutoDTMFDialler/CMainMenu.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.2 -->
<h1>examples/Telephony/ETel3rdPartyExample/AutoDTMFDialler/CMainMenu.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).</span>
<a name="l00002"></a>00002 <span class="comment">// All rights reserved.</span>
<a name="l00003"></a>00003 <span class="comment">// This component and the accompanying materials are made available</span>
<a name="l00004"></a>00004 <span class="comment">// under the terms of &quot;Eclipse Public License v1.0&quot;</span>
<a name="l00005"></a>00005 <span class="comment">// which accompanies this distribution, and is available</span>
<a name="l00006"></a>00006 <span class="comment">// at the URL &quot;http://www.eclipse.org/legal/epl-v10.html&quot;.</span>
<a name="l00007"></a>00007 <span class="comment">//</span>
<a name="l00008"></a>00008 <span class="comment">// Initial Contributors:</span>
<a name="l00009"></a>00009 <span class="comment">// Nokia Corporation - initial contribution.</span>
<a name="l00010"></a>00010 <span class="comment">//</span>
<a name="l00011"></a>00011 <span class="comment">// Contributors:</span>
<a name="l00012"></a>00012 <span class="comment">//</span>
<a name="l00013"></a>00013 <span class="comment">// Description:</span>
<a name="l00014"></a>00014 <span class="comment">//</span>
<a name="l00015"></a>00015 
<a name="l00016"></a>00016 <span class="preprocessor">#include &quot;CMainMenu.h&quot;</span>
<a name="l00017"></a>00017 
<a name="l00024"></a><a class="code" href="class_c_main_menu.html#a8c87bb581a573b0168a6506de90d317c">00024</a> <a class="code" href="class_c_main_menu.html">CMainMenu</a>* <a class="code" href="class_c_main_menu.html#a8c87bb581a573b0168a6506de90d317c">CMainMenu::NewLC</a>(CConsoleBase&amp; aConsole)
<a name="l00025"></a>00025         {
<a name="l00026"></a>00026         <a class="code" href="class_c_main_menu.html">CMainMenu</a>* <span class="keyword">self</span> = <span class="keyword">new</span>(ELeave) <a class="code" href="class_c_main_menu.html">CMainMenu</a>(aConsole);
<a name="l00027"></a>00027         CleanupStack::PushL(<span class="keyword">self</span>);
<a name="l00028"></a>00028         <span class="keyword">self</span>-&gt;ConstructL();
<a name="l00029"></a>00029         <span class="keywordflow">return</span> <span class="keyword">self</span>;
<a name="l00030"></a>00030         }
<a name="l00031"></a>00031 
<a name="l00038"></a>00038 CMainMenu::CMainMenu(CConsoleBase&amp; aConsole)
<a name="l00039"></a>00039         : <a class="code" href="class_c_base_menu_async.html">CBaseMenuAsync</a>(aConsole)
<a name="l00040"></a>00040         , iCurrentTone(_L(<span class="stringliteral">&quot;&quot;</span>))
<a name="l00041"></a>00041         , iCurrentToneLog(_L(<span class="stringliteral">&quot;&quot;</span>))
<a name="l00042"></a>00042         , iTheNumber(KTheNumber)
<a name="l00043"></a>00043         {
<a name="l00044"></a>00044         iSingleString = ETrue;
<a name="l00045"></a>00045         }
<a name="l00046"></a>00046 
<a name="l00050"></a>00050 <span class="keywordtype">void</span> CMainMenu::ConstructL()
<a name="l00051"></a>00051         {
<a name="l00052"></a>00052         <a class="code" href="class_c_base_menu_async.html#af5592826e38a094a099bc8d8f317a9c7">CBaseMenuAsync::ConstructL</a>();
<a name="l00053"></a>00053         iPhoneId = <a class="code" href="class_c_phone_id.html#a693a1cb8932d02ec3c856c8c32f9a7ec">CPhoneId::NewL</a>(<span class="keyword">this</span>);
<a name="l00054"></a>00054 
<a name="l00055"></a>00055         iFlightModeInfo = <a class="code" href="class_c_flight_mode_info.html#ab7ef90e51e9bc5e3ef8ed01361e1c3c5">CFlightModeInfo::NewL</a>(<span class="keyword">this</span>);
<a name="l00056"></a>00056         iNetworkRegInfo = <a class="code" href="class_c_network_reg_info.html#ac48f97258f5d06a459de3fc2af2c4bb4">CNetworkRegInfo::NewL</a>(<span class="keyword">this</span>);
<a name="l00057"></a>00057 
<a name="l00058"></a>00058         iDialCall = <a class="code" href="class_c_dial_call.html#a77f2cdc72ec6c48f160ee3cb3f40fbc7">CDialCall::NewL</a>(<span class="keyword">this</span>);
<a name="l00059"></a>00059         iSendDTMF = <a class="code" href="class_c_send_d_t_m_f.html#a191da004f294b7359d43d31e3d9362a8">CSendDTMF::NewL</a>(<span class="keyword">this</span>);
<a name="l00060"></a>00060         iHangup = <a class="code" href="class_c_hangup.html#aa8a5bd8e1fc787f1c6960b2806f1b008">CHangup::NewL</a>(<span class="keyword">this</span>);
<a name="l00061"></a>00061         iLineStatus = <a class="code" href="class_c_line_status.html#abb01559ac22360110f5f364ba3b8c414">CLineStatus::NewL</a>(<span class="keyword">this</span>);
<a name="l00062"></a>00062         }
<a name="l00063"></a>00063 
<a name="l00067"></a><a class="code" href="class_c_main_menu.html#aee9838b9ed2e495bcef9a956c612464c">00067</a> <a class="code" href="class_c_main_menu.html#aee9838b9ed2e495bcef9a956c612464c">CMainMenu::~CMainMenu</a>()
<a name="l00068"></a>00068         {
<a name="l00069"></a>00069         <span class="keyword">delete</span> <a class="code" href="class_c_base_menu_async.html#a04349c8eb16bed8b19be8ca3c5a829ce">iTelephony</a>;
<a name="l00070"></a>00070         <span class="keyword">delete</span> iPhoneId;
<a name="l00071"></a>00071 
<a name="l00072"></a>00072         <span class="keyword">delete</span> iFlightModeInfo;
<a name="l00073"></a>00073         <span class="keyword">delete</span> iNetworkRegInfo;
<a name="l00074"></a>00074 
<a name="l00075"></a>00075         <span class="keyword">delete</span> iDialCall;
<a name="l00076"></a>00076         <span class="keyword">delete</span> iHangup;
<a name="l00077"></a>00077         <span class="keyword">delete</span> iSendDTMF;
<a name="l00078"></a>00078         <span class="keyword">delete</span> iCallStatus;
<a name="l00079"></a>00079         <span class="keyword">delete</span> iLineStatus;
<a name="l00080"></a>00080         }
<a name="l00081"></a>00081 
<a name="l00088"></a><a class="code" href="class_c_main_menu.html#a4294fa13e315f4d10eb8bf2073a72205">00088</a> <span class="keywordtype">void</span> <a class="code" href="class_c_base_menu_sync.html#a4a298d972f834e087aaaf4d7911eafc7">CMainMenu::ExecComplete</a>(TTelISVExampleType aDerivedType)
<a name="l00089"></a>00089         {
<a name="l00090"></a>00090         <span class="keywordflow">if</span>      (<a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a>==ESetNotifier || aDerivedType == KDialCall)
<a name="l00091"></a>00091                 {
<a name="l00092"></a>00092                 <span class="keywordflow">switch</span>(aDerivedType)
<a name="l00093"></a>00093                         {
<a name="l00094"></a>00094                 <span class="keywordflow">case</span> KSendDTMF:
<a name="l00095"></a>00095                         <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iSendDTMF;
<a name="l00096"></a>00096                         <span class="keywordflow">break</span>;
<a name="l00097"></a>00097                 <span class="keywordflow">case</span> KFlightModeInfo:
<a name="l00098"></a>00098                         <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iFlightModeInfo;
<a name="l00099"></a>00099                         <span class="keywordflow">break</span>;
<a name="l00100"></a>00100                 <span class="keywordflow">case</span> KNetworkRegInfo:
<a name="l00101"></a>00101                         <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iNetworkRegInfo;
<a name="l00102"></a>00102                         <span class="keywordflow">break</span>;
<a name="l00103"></a>00103                 <span class="keywordflow">case</span> KDialCall:
<a name="l00104"></a>00104                         <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iDialCall;
<a name="l00105"></a>00105                         <span class="keywordflow">break</span>;
<a name="l00106"></a>00106                 <span class="keywordflow">case</span> KHangup:
<a name="l00107"></a>00107                         <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iHangup;
<a name="l00108"></a>00108                         <span class="keywordflow">break</span>;
<a name="l00109"></a>00109                 <span class="keywordflow">case</span> KCallStatus:
<a name="l00110"></a>00110                         <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iCallStatus;
<a name="l00111"></a>00111                         <span class="keywordflow">break</span>;
<a name="l00112"></a>00112                 <span class="keywordflow">default</span>:
<a name="l00113"></a>00113                         <span class="keywordflow">break</span>;  
<a name="l00114"></a>00114                         }
<a name="l00115"></a>00115                 TRAPD(errNotify, <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a>-&gt;<a class="code" href="class_c_i_s_v_a_p_i_base.html#ab6f0b35112b18c2058f88ab35a9a68c7">RequestNotificationL</a>());
<a name="l00116"></a>00116                 <span class="keywordflow">if</span> (errNotify != KErrNone)
<a name="l00117"></a>00117                         {
<a name="l00118"></a>00118                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;Notification Request for TTelISVExampleType&quot;</span>));
<a name="l00119"></a>00119                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;%d left with error code &quot;</span>), aDerivedType);
<a name="l00120"></a>00120                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;%d\n&quot;</span>), errNotify);
<a name="l00121"></a>00121                         <span class="keywordflow">return</span>;
<a name="l00122"></a>00122                         }
<a name="l00123"></a>00123                         
<a name="l00124"></a>00124                 <span class="comment">// Check the type of iLastOperation to see</span>
<a name="l00125"></a>00125                 <span class="comment">// what it has been cast to.</span>
<a name="l00126"></a>00126                 <span class="keywordflow">switch</span>(<a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a>-&gt;<a class="code" href="class_c_i_s_v_a_p_i_base.html#a5f58d0283c6a33fc1c446c5770584700">GetExampleType</a>())
<a name="l00127"></a>00127                         {
<a name="l00128"></a>00128                 <span class="keywordflow">case</span> KFlightModeInfo:
<a name="l00129"></a>00129                         <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = EGetNetworkRegStatus;
<a name="l00130"></a>00130                         <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iNetworkRegInfo;
<a name="l00131"></a>00131                         SetActive();
<a name="l00132"></a>00132                         <a class="code" href="class_c_base_menu_async.html#a3fac170d8c1ca25c8b7fc38a571518f5">CompleteOwnRequest</a>(KErrNone);
<a name="l00133"></a>00133                         <span class="keywordflow">break</span>;
<a name="l00134"></a>00134                 <span class="keywordflow">case</span> KDialCall:
<a name="l00135"></a>00135                         iCallId = <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="class_c_dial_call.html">CDialCall</a>*<span class="keyword">&gt;</span>
<a name="l00136"></a>00136                                   (iDialCall)-&gt;iCallId;
<a name="l00137"></a>00137                         TRAPD(err,      iCallStatus = <a class="code" href="class_c_call_status.html#acd6e841da4cf8f5a963d18aac083848f">CCallStatus::NewL</a>(<span class="keyword">this</span>, iCallId));
<a name="l00138"></a>00138                         <span class="keywordflow">if</span> (err != KErrNone)
<a name="l00139"></a>00139                                 {
<a name="l00140"></a>00140                                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;CallStatus construction left &quot;</span>));
<a name="l00141"></a>00141                                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;with error code %d\n&quot;</span>), err);
<a name="l00142"></a>00142                                 <span class="keywordflow">return</span>;
<a name="l00143"></a>00143                                 }
<a name="l00144"></a>00144                         <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = EGetCallStatus;
<a name="l00145"></a>00145                         <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iCallStatus;
<a name="l00146"></a>00146                         SetActive();
<a name="l00147"></a>00147                         <a class="code" href="class_c_base_menu_async.html#a3fac170d8c1ca25c8b7fc38a571518f5">CompleteOwnRequest</a>(KErrNone);
<a name="l00148"></a>00148                         <span class="keywordflow">break</span>;
<a name="l00149"></a>00149                 <span class="keywordflow">case</span> KCallStatus:
<a name="l00150"></a>00150                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;ClearScreen();
<a name="l00151"></a>00151                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KMenuMsg);
<a name="l00152"></a>00152                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KDTMFQuestion);
<a name="l00153"></a>00153                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KiSingleString);
<a name="l00154"></a>00154                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KAsChar);
<a name="l00155"></a>00155                         GetInput();
<a name="l00156"></a>00156                         <span class="keywordflow">break</span>;
<a name="l00157"></a>00157                 <span class="keywordflow">case</span> KSendDTMF:
<a name="l00158"></a>00158                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;ClearScreen();
<a name="l00159"></a>00159                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KMenuMsg);
<a name="l00160"></a>00160                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KHangupMsg);
<a name="l00161"></a>00161                         GetInput();
<a name="l00162"></a>00162                         <span class="keywordflow">break</span>;
<a name="l00163"></a>00163                 <span class="keywordflow">default</span>:
<a name="l00164"></a>00164 
<a name="l00165"></a>00165                         <span class="keywordflow">break</span>;
<a name="l00166"></a>00166                         }
<a name="l00167"></a>00167                 }
<a name="l00168"></a>00168         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(aDerivedType == KPhoneId)
<a name="l00169"></a>00169                 {
<a name="l00170"></a>00170                 <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iFlightModeInfo;
<a name="l00171"></a>00171                 SetActive();
<a name="l00172"></a>00172                 <a class="code" href="class_c_base_menu_async.html#a3fac170d8c1ca25c8b7fc38a571518f5">CompleteOwnRequest</a>(KErrNone);
<a name="l00173"></a>00173                 }
<a name="l00174"></a>00174         }
<a name="l00175"></a>00175 
<a name="l00182"></a><a class="code" href="class_c_main_menu.html#aa37da4749bf31e5dbaf619668c7e0164">00182</a> <span class="keywordtype">void</span> <a class="code" href="class_c_main_menu.html#aa37da4749bf31e5dbaf619668c7e0164">CMainMenu::ExecNotify</a>(TTelISVExampleType aDerivedType)
<a name="l00183"></a>00183         {
<a name="l00184"></a>00184         <span class="keywordflow">switch</span>(aDerivedType)
<a name="l00185"></a>00185                 {
<a name="l00186"></a>00186         <span class="keywordflow">case</span> KNetworkRegInfo:
<a name="l00187"></a>00187                 TRAPD(err, iNetworkRegInfo-&gt;<a class="code" href="class_c_i_s_v_a_p_i_base.html#ab6f0b35112b18c2058f88ab35a9a68c7">RequestNotificationL</a>());
<a name="l00188"></a>00188                 <span class="keywordflow">if</span> (err != KErrNone)
<a name="l00189"></a>00189                         {
<a name="l00190"></a>00190                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;Request left with error code &quot;</span>));
<a name="l00191"></a>00191                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;%d\n&quot;</span>),err);
<a name="l00192"></a>00192                         <span class="keywordflow">return</span>;
<a name="l00193"></a>00193                         }
<a name="l00194"></a>00194                 <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = EGetLineStatus;
<a name="l00195"></a>00195                 <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iLineStatus;
<a name="l00196"></a>00196                 SetActive();
<a name="l00197"></a>00197                 <a class="code" href="class_c_base_menu_async.html#a3fac170d8c1ca25c8b7fc38a571518f5">CompleteOwnRequest</a>(KErrNone);
<a name="l00198"></a>00198                 <span class="keywordflow">break</span>;
<a name="l00199"></a>00199         <span class="keywordflow">case</span> KLineStatus:
<a name="l00200"></a>00200                 <span class="comment">// Waiting for dial request</span>
<a name="l00201"></a>00201                 TRAP(err, iLineStatus-&gt;<a class="code" href="class_c_i_s_v_a_p_i_base.html#ab6f0b35112b18c2058f88ab35a9a68c7">RequestNotificationL</a>());
<a name="l00202"></a>00202                 <span class="keywordflow">if</span> (err != KErrNone)
<a name="l00203"></a>00203                         {
<a name="l00204"></a>00204                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;Request left with error code &quot;</span>));
<a name="l00205"></a>00205                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;%d\n&quot;</span>),err);
<a name="l00206"></a>00206                         <span class="keywordflow">return</span>;
<a name="l00207"></a>00207                         }
<a name="l00208"></a>00208                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;ClearScreen();
<a name="l00209"></a>00209                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KMenuMsg);
<a name="l00210"></a>00210                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KDialMsg);
<a name="l00211"></a>00211                 GetInput();
<a name="l00212"></a>00212                 <span class="keywordflow">break</span>;
<a name="l00213"></a>00213         <span class="keywordflow">case</span> KCallStatus:
<a name="l00214"></a>00214                 <span class="keyword">delete</span> iCallStatus;
<a name="l00215"></a>00215                 iCallStatus = NULL;
<a name="l00216"></a>00216                 <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = EGetLineStatus;
<a name="l00217"></a>00217                 <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iLineStatus;
<a name="l00218"></a>00218                 SetActive();
<a name="l00219"></a>00219                 <a class="code" href="class_c_base_menu_async.html#a3fac170d8c1ca25c8b7fc38a571518f5">CompleteOwnRequest</a>(KErrNone);
<a name="l00220"></a>00220                 <span class="keywordflow">break</span>;
<a name="l00221"></a>00221         <span class="keywordflow">case</span> KSendDTMF:
<a name="l00222"></a>00222                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;ClearScreen();
<a name="l00223"></a>00223                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KMenuMsg);
<a name="l00224"></a>00224                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KAsChar);
<a name="l00225"></a>00225                 GetInput();
<a name="l00226"></a>00226                 <span class="keywordflow">break</span>;
<a name="l00227"></a>00227         <span class="keywordflow">default</span>:
<a name="l00228"></a>00228                 <span class="keywordflow">break</span>;
<a name="l00229"></a>00229                 }
<a name="l00230"></a>00230         }
<a name="l00231"></a>00231 
<a name="l00235"></a>00235 <span class="keywordtype">void</span> CMainMenu::RunL()
<a name="l00236"></a>00236         {
<a name="l00237"></a>00237         <span class="keywordflow">switch</span>(<a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a>)
<a name="l00238"></a>00238                 {
<a name="l00239"></a>00239         <span class="keywordflow">case</span> EStart:
<a name="l00240"></a>00240                 <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = EGetFlightModeInfo;
<a name="l00241"></a>00241                 <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iPhoneId;
<a name="l00242"></a>00242                 TRAPD(errPhone, <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a>-&gt;<a class="code" href="class_c_i_s_v_a_p_i_base.html#ae582ca026eb25869ea1e130fe16d2e79">StartRequestL</a>());
<a name="l00243"></a>00243                 <span class="keywordflow">if</span> (errPhone != KErrNone)
<a name="l00244"></a>00244                         {
<a name="l00245"></a>00245                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;Request left with error code &quot;</span>));
<a name="l00246"></a>00246                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;%d\n&quot;</span>), errPhone);
<a name="l00247"></a>00247                         <span class="keywordflow">return</span>;
<a name="l00248"></a>00248                         }
<a name="l00249"></a>00249                 <span class="keywordflow">break</span>;
<a name="l00250"></a>00250         <span class="keywordflow">case</span> EEnd:
<a name="l00251"></a>00251                 CActiveScheduler::Stop();
<a name="l00252"></a>00252                 <span class="keywordflow">break</span>;
<a name="l00253"></a>00253         <span class="keywordflow">case</span> EGetLineStatus:
<a name="l00254"></a>00254         <span class="keywordflow">case</span> EGetCallStatus:
<a name="l00255"></a>00255         <span class="keywordflow">case</span> EGetFlightModeInfo:
<a name="l00256"></a>00256         <span class="keywordflow">case</span> EGetNetworkRegStatus:
<a name="l00257"></a>00257                 <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = ESetNotifier;
<a name="l00258"></a>00258                 TRAPD(err, <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a>-&gt;<a class="code" href="class_c_i_s_v_a_p_i_base.html#ae582ca026eb25869ea1e130fe16d2e79">StartRequestL</a>());
<a name="l00259"></a>00259                 <span class="keywordflow">if</span> (err != KErrNone)
<a name="l00260"></a>00260                         {
<a name="l00261"></a>00261                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;Request left with error code &quot;</span>));
<a name="l00262"></a>00262                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;%d\n&quot;</span>), err);
<a name="l00263"></a>00263                         <span class="keywordflow">return</span>;
<a name="l00264"></a>00264                         }
<a name="l00265"></a>00265                 <span class="keywordflow">break</span>;
<a name="l00266"></a>00266         <span class="keywordflow">case</span> EHangup:
<a name="l00267"></a>00267                 <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = ESetNotifier;
<a name="l00268"></a>00268                 TRAPD(errArg, <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a>-&gt;<a class="code" href="class_c_i_s_v_a_p_i_base.html#ae582ca026eb25869ea1e130fe16d2e79">StartRequestL</a>(iCallId));
<a name="l00269"></a>00269                 <span class="keywordflow">if</span> (errArg != KErrNone)
<a name="l00270"></a>00270                         {
<a name="l00271"></a>00271                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;Request left with error code &quot;</span>));
<a name="l00272"></a>00272                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;%d\n&quot;</span>), errArg);
<a name="l00273"></a>00273                         <span class="keywordflow">return</span>;
<a name="l00274"></a>00274                         }
<a name="l00275"></a>00275                 <span class="keywordflow">break</span>;
<a name="l00276"></a>00276         <span class="keywordflow">case</span> EDialCall:
<a name="l00277"></a>00277                 <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = ESetNotifier;
<a name="l00278"></a>00278                 TRAPD(errArg3, <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a>-&gt;<a class="code" href="class_c_i_s_v_a_p_i_base.html#ae582ca026eb25869ea1e130fe16d2e79">StartRequestL</a>(KTheNumber));
<a name="l00279"></a>00279                 <span class="keywordflow">if</span> (errArg3 != KErrNone)
<a name="l00280"></a>00280                         {
<a name="l00281"></a>00281                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;Request left with error code &quot;</span>));
<a name="l00282"></a>00282                         <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;%d\n&quot;</span>), errArg3);
<a name="l00283"></a>00283                         <span class="keywordflow">return</span>;
<a name="l00284"></a>00284                         }
<a name="l00285"></a>00285                 <span class="keywordflow">break</span>;
<a name="l00286"></a>00286         <span class="keywordflow">case</span> ESendDTMF:
<a name="l00287"></a>00287                 <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = ESetNotifier;
<a name="l00288"></a>00288                 <span class="keywordflow">if</span> (iSingleString)
<a name="l00289"></a>00289                         {
<a name="l00290"></a>00290                         TRAPD(errArg2, <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a>-&gt;<a class="code" href="class_c_i_s_v_a_p_i_base.html#ae582ca026eb25869ea1e130fe16d2e79">StartRequestL</a>(iTheNumber))
<a name="l00291"></a>00291                         <span class="keywordflow">if</span> (errArg2 != KErrNone)
<a name="l00292"></a>00292                                 {
<a name="l00293"></a>00293                                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;Request left with error code &quot;</span>));
<a name="l00294"></a>00294                                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;%d\n&quot;</span>), errArg2);
<a name="l00295"></a>00295                                 <span class="keywordflow">return</span>;
<a name="l00296"></a>00296                                 }
<a name="l00297"></a>00297                         }
<a name="l00298"></a>00298                 <span class="keywordflow">else</span>
<a name="l00299"></a>00299                         {
<a name="l00300"></a>00300                         TRAPD(errArg2, <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a>-&gt;<a class="code" href="class_c_i_s_v_a_p_i_base.html#ae582ca026eb25869ea1e130fe16d2e79">StartRequestL</a>(iCurrentTone))
<a name="l00301"></a>00301                         <span class="keywordflow">if</span> (errArg2 != KErrNone)
<a name="l00302"></a>00302                                 {
<a name="l00303"></a>00303                                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;Request left with error code &quot;</span>));
<a name="l00304"></a>00304                                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;%d\n&quot;</span>), errArg2);
<a name="l00305"></a>00305                                 <span class="keywordflow">return</span>;
<a name="l00306"></a>00306                                 }
<a name="l00307"></a>00307                         }
<a name="l00308"></a>00308                 <span class="keywordflow">break</span>;
<a name="l00309"></a>00309         <span class="keywordflow">case</span> EWaitingForKeyPress:
<a name="l00310"></a>00310                 {
<a name="l00311"></a>00311                 TInt c = <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;KeyCode();
<a name="l00312"></a>00312                 <span class="keywordflow">switch</span>(c)
<a name="l00313"></a>00313                         {
<a name="l00314"></a>00314                 <span class="keywordflow">case</span> <span class="charliteral">&#39;E&#39;</span>:
<a name="l00315"></a>00315                 <span class="keywordflow">case</span> <span class="charliteral">&#39;e&#39;</span>:
<a name="l00316"></a>00316                 <span class="keywordflow">case</span> EKeyEscape:
<a name="l00317"></a>00317                 <span class="comment">// Cancel notifications</span>
<a name="l00318"></a>00318                         iNetworkRegInfo-&gt;Cancel();
<a name="l00319"></a>00319                         iFlightModeInfo-&gt;Cancel();
<a name="l00320"></a>00320                         <span class="keywordflow">if</span> (iCallStatus != NULL)
<a name="l00321"></a>00321                                 {
<a name="l00322"></a>00322                                 iCallStatus-&gt;Cancel();
<a name="l00323"></a>00323                                 }
<a name="l00324"></a>00324                         <span class="keywordflow">if</span> (iLineStatus-&gt;IsActive())
<a name="l00325"></a>00325                                 {
<a name="l00326"></a>00326                                 iLineStatus-&gt;Cancel();
<a name="l00327"></a>00327                                 }
<a name="l00328"></a>00328                         CActiveScheduler::Stop();
<a name="l00329"></a>00329                         <span class="keywordflow">break</span>;
<a name="l00330"></a>00330                 <span class="keywordflow">case</span> <span class="charliteral">&#39;D&#39;</span>:
<a name="l00331"></a>00331                 <span class="keywordflow">case</span> <span class="charliteral">&#39;d&#39;</span>:
<a name="l00332"></a>00332                         <span class="keywordflow">if</span> (iCallStatus == NULL)
<a name="l00333"></a>00333                                 {
<a name="l00334"></a>00334                                 <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = EDialCall;
<a name="l00335"></a>00335                                 <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iDialCall;
<a name="l00336"></a>00336                                 SetActive();
<a name="l00337"></a>00337                                 <a class="code" href="class_c_base_menu_async.html#a3fac170d8c1ca25c8b7fc38a571518f5">CompleteOwnRequest</a>(KErrNone);
<a name="l00338"></a>00338                                 <span class="keywordflow">break</span>;
<a name="l00339"></a>00339                                 }
<a name="l00340"></a>00340                         <span class="keywordflow">else</span>
<a name="l00341"></a>00341                                 {
<a name="l00342"></a>00342                                 <span class="comment">// Print correct menu</span>
<a name="l00343"></a>00343                                 GetInput();
<a name="l00344"></a>00344                                 <span class="keywordflow">break</span>;
<a name="l00345"></a>00345                                 }
<a name="l00346"></a>00346                 <span class="keywordflow">case</span> <span class="charliteral">&#39;H&#39;</span>:
<a name="l00347"></a>00347                 <span class="keywordflow">case</span> <span class="charliteral">&#39;h&#39;</span>:
<a name="l00348"></a>00348                         <span class="keywordflow">if</span> (iCallStatus != NULL)
<a name="l00349"></a>00349                                 {
<a name="l00350"></a>00350                                 iSingleString = ETrue;
<a name="l00351"></a>00351                                 <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = EHangup;
<a name="l00352"></a>00352                                 <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iHangup;
<a name="l00353"></a>00353                                 SetActive();
<a name="l00354"></a>00354                                 <a class="code" href="class_c_base_menu_async.html#a3fac170d8c1ca25c8b7fc38a571518f5">CompleteOwnRequest</a>(KErrNone);
<a name="l00355"></a>00355                                 <span class="keywordflow">break</span>;
<a name="l00356"></a>00356                                 }
<a name="l00357"></a>00357                         <span class="keywordflow">else</span>
<a name="l00358"></a>00358                                 {
<a name="l00359"></a>00359                                 <span class="comment">// Print correct menu</span>
<a name="l00360"></a>00360                                 GetInput();
<a name="l00361"></a>00361                                 <span class="keywordflow">break</span>;
<a name="l00362"></a>00362                                 }
<a name="l00363"></a>00363                 <span class="keywordflow">case</span> <span class="charliteral">&#39;S&#39;</span>:
<a name="l00364"></a>00364                 <span class="keywordflow">case</span> <span class="charliteral">&#39;s&#39;</span>:
<a name="l00365"></a>00365                         <span class="keywordflow">if</span> (iCallStatus != NULL &amp;&amp; iSingleString)
<a name="l00366"></a>00366                                 {
<a name="l00367"></a>00367                                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;Be Right Back\n&quot;</span>));
<a name="l00368"></a>00368                                 iSingleString = ETrue;
<a name="l00369"></a>00369                                 iCurrentToneLog.Append(iTheNumber);
<a name="l00370"></a>00370                                 iCurrentToneLog.Append(<span class="charliteral">&#39;#&#39;</span>);
<a name="l00371"></a>00371                                 <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = ESendDTMF;
<a name="l00372"></a>00372                                 <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iSendDTMF;
<a name="l00373"></a>00373                                 SetActive();
<a name="l00374"></a>00374                                 <a class="code" href="class_c_base_menu_async.html#a3fac170d8c1ca25c8b7fc38a571518f5">CompleteOwnRequest</a>(KErrNone);
<a name="l00375"></a>00375                                 <span class="keywordflow">break</span>;
<a name="l00376"></a>00376                                 }
<a name="l00377"></a>00377                         <span class="keywordflow">else</span>
<a name="l00378"></a>00378                                 {
<a name="l00379"></a>00379                                 <span class="comment">// Print correct menu</span>
<a name="l00380"></a>00380                                 GetInput();
<a name="l00381"></a>00381                                 <span class="keywordflow">break</span>;
<a name="l00382"></a>00382                                 }
<a name="l00383"></a>00383                 <span class="comment">// Send number</span>
<a name="l00384"></a>00384                 <span class="keywordflow">case</span> <span class="charliteral">&#39;0&#39;</span>:
<a name="l00385"></a>00385                 <span class="keywordflow">case</span> <span class="charliteral">&#39;1&#39;</span>:
<a name="l00386"></a>00386                 <span class="keywordflow">case</span> <span class="charliteral">&#39;2&#39;</span>:
<a name="l00387"></a>00387                 <span class="keywordflow">case</span> <span class="charliteral">&#39;3&#39;</span>:
<a name="l00388"></a>00388                 <span class="keywordflow">case</span> <span class="charliteral">&#39;4&#39;</span>:
<a name="l00389"></a>00389                 <span class="keywordflow">case</span> <span class="charliteral">&#39;5&#39;</span>:
<a name="l00390"></a>00390                 <span class="keywordflow">case</span> <span class="charliteral">&#39;6&#39;</span>:
<a name="l00391"></a>00391                 <span class="keywordflow">case</span> <span class="charliteral">&#39;7&#39;</span>:
<a name="l00392"></a>00392                 <span class="keywordflow">case</span> <span class="charliteral">&#39;8&#39;</span>:
<a name="l00393"></a>00393                 <span class="keywordflow">case</span> <span class="charliteral">&#39;9&#39;</span>:
<a name="l00394"></a>00394                 <span class="keywordflow">case</span> <span class="charliteral">&#39;*&#39;</span>:
<a name="l00395"></a>00395                         <span class="keywordflow">if</span> (iCallStatus != NULL)
<a name="l00396"></a>00396                                 {
<a name="l00397"></a>00397                                 iSingleString = EFalse;
<a name="l00398"></a>00398                                 iCurrentTone.Delete(0,1);
<a name="l00399"></a>00399                                 iCurrentTone.Append(c);
<a name="l00400"></a>00400                                 iCurrentToneLog.Append(iCurrentTone);
<a name="l00401"></a>00401                                 <a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> = ESendDTMF;
<a name="l00402"></a>00402                                 <a class="code" href="class_c_base_menu_async.html#a6bfb6f0e05a99a7371048f641f90ca88">iLastOperation</a> = iSendDTMF;
<a name="l00403"></a>00403                                 SetActive();
<a name="l00404"></a>00404                                 <a class="code" href="class_c_base_menu_async.html#a3fac170d8c1ca25c8b7fc38a571518f5">CompleteOwnRequest</a>(KErrNone);
<a name="l00405"></a>00405                                 <span class="keywordflow">break</span>;
<a name="l00406"></a>00406                                 }
<a name="l00407"></a>00407                         <span class="keywordflow">else</span>
<a name="l00408"></a>00408                                 {
<a name="l00409"></a>00409                                 <span class="comment">// Print correct menu</span>
<a name="l00410"></a>00410                                 GetInput();
<a name="l00411"></a>00411                                 <span class="keywordflow">break</span>;
<a name="l00412"></a>00412                                 }
<a name="l00413"></a>00413 
<a name="l00414"></a>00414                 <span class="keywordflow">case</span> <span class="charliteral">&#39;#&#39;</span>:
<a name="l00415"></a>00415                         <span class="keywordflow">if</span> (iCallStatus != NULL &amp;&amp; !iSingleString)
<a name="l00416"></a>00416                                 {
<a name="l00417"></a>00417                                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(_L(<span class="stringliteral">&quot;You sent &quot;</span>));
<a name="l00418"></a>00418                                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(iCurrentToneLog);
<a name="l00419"></a>00419                                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KNewLine);
<a name="l00420"></a>00420                                 iCurrentToneLog.Delete(0, iCurrentToneLog.Length());
<a name="l00421"></a>00421                                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KMenuMsg);
<a name="l00422"></a>00422                                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;Printf(KHangupMsg);
<a name="l00423"></a>00423                                 <span class="comment">// Key presses finished!</span>
<a name="l00424"></a>00424                                 <span class="comment">// Call is active, DTMF has been indicated to be</span>
<a name="l00425"></a>00425                                 <span class="comment">// finished as # character has been received.</span>
<a name="l00426"></a>00426                                 }
<a name="l00427"></a>00427                         <span class="keywordflow">else</span>
<a name="l00428"></a>00428                                 {
<a name="l00429"></a>00429                                 <span class="comment">// Print correct menu</span>
<a name="l00430"></a>00430                                 GetInput();
<a name="l00431"></a>00431                                 <span class="keywordflow">break</span>;
<a name="l00432"></a>00432                                 }
<a name="l00433"></a>00433                 <span class="keywordflow">default</span>:
<a name="l00434"></a>00434                         GetInput();
<a name="l00435"></a>00435                         }
<a name="l00436"></a>00436                 }
<a name="l00437"></a>00437                 <span class="keywordflow">break</span>;
<a name="l00438"></a>00438         <span class="keywordflow">default</span>:
<a name="l00439"></a>00439                 <span class="keywordflow">break</span>;
<a name="l00440"></a>00440                 }
<a name="l00441"></a>00441         }
<a name="l00442"></a>00442         
<a name="l00446"></a>00446 <span class="keywordtype">void</span> CMainMenu::DoCancel()
<a name="l00447"></a>00447         {
<a name="l00448"></a>00448         <span class="keywordflow">if</span>(<a class="code" href="class_c_base_menu_async.html#a22833931dad95ad360390ebd990f9015">iState</a> == EStart)
<a name="l00449"></a>00449                 {
<a name="l00450"></a>00450                 <a class="code" href="class_c_base_menu_async.html#a3fac170d8c1ca25c8b7fc38a571518f5">CompleteOwnRequest</a>(KErrCancel);
<a name="l00451"></a>00451                 }
<a name="l00452"></a>00452         <span class="keywordflow">else</span>
<a name="l00453"></a>00453                 {
<a name="l00454"></a>00454                 <a class="code" href="class_c_base_menu_async.html#a675a3d53fde921b957f88e6c2694b99e">iConsole</a>-&gt;ReadCancel();
<a name="l00455"></a>00455                 }
<a name="l00456"></a>00456         }
</pre></div></div>
<hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address>
</body>
</html>