qtinternetradio/irqnwkinfoobserver/src/irqnwkinfoobserver.cpp
changeset 0 09774dfdd46b
child 14 896e9dbc5f19
equal deleted inserted replaced
-1:000000000000 0:09774dfdd46b
       
     1 /*
       
     2 * Copyright (c) 2009 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 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 #include "irqnwkinfoobserver.h"
       
    18 #include "irqnwkinfoobserverimpl.h"
       
    19 
       
    20 // ---------------------------------------------------------------------------
       
    21 // IRQNwkInfoObserver::openInstance()
       
    22 // Static function to get a singleton instance of IRQNwkInfoObserver
       
    23 // ---------------------------------------------------------------------------
       
    24 //
       
    25 EXPORT_C IRQNwkInfoObserver* IRQNwkInfoObserver::openInstance()
       
    26 {
       
    27     // Get singleton instance
       
    28     IRQNwkInfoObserver* nwkInfoObserver =
       
    29                            reinterpret_cast<IRQNwkInfoObserver*>(Dll::Tls());
       
    30 
       
    31     if(NULL == nwkInfoObserver)
       
    32     {
       
    33         TRAPD(error, nwkInfoObserver = createInstanceL());
       
    34         if (KErrNone != error)
       
    35         {
       
    36             delete nwkInfoObserver;
       
    37             nwkInfoObserver = NULL;
       
    38             Dll::SetTls(NULL);
       
    39         }
       
    40     }
       
    41     else
       
    42     {
       
    43         nwkInfoObserver->iSingletonInstances++;
       
    44     }
       
    45 
       
    46     return nwkInfoObserver;
       
    47 }
       
    48 
       
    49 // ---------------------------------------------------------------------------
       
    50 // IRQNwkInfoObserver::closeInstance()
       
    51 // Close a singleton instance of IRQNwkInfoObserver
       
    52 // ---------------------------------------------------------------------------
       
    53 //
       
    54 EXPORT_C void IRQNwkInfoObserver::closeInstance()
       
    55 {
       
    56     iSingletonInstances--;
       
    57 
       
    58     if (0 == iSingletonInstances)
       
    59     {
       
    60         Dll::SetTls(NULL);
       
    61         delete this;
       
    62     }
       
    63 }
       
    64 
       
    65 
       
    66 // ---------------------------------------------------------------------------
       
    67 // Constructor
       
    68 // ---------------------------------------------------------------------------
       
    69 //
       
    70 IRQNwkInfoObserver::IRQNwkInfoObserver():iBody(NULL),
       
    71                                          iSingletonInstances(0)
       
    72 {
       
    73     
       
    74 }
       
    75 
       
    76 // ---------------------------------------------------------------------------
       
    77 // Destructor
       
    78 // ---------------------------------------------------------------------------
       
    79 //
       
    80 IRQNwkInfoObserver::~IRQNwkInfoObserver()
       
    81 {
       
    82     stopMonitorNwkInfo();
       
    83     
       
    84     delete iBody;
       
    85     iBody = NULL;
       
    86 }
       
    87 
       
    88 // ---------------------------------------------------------------------------
       
    89 // IRQNwkInfoObserver::createInstanceL()
       
    90 // Creates IRQNwkInfoObserver instance
       
    91 // @return IRQNwkInfoObserver*
       
    92 // ---------------------------------------------------------------------------
       
    93 //
       
    94 IRQNwkInfoObserver* IRQNwkInfoObserver::createInstanceL()
       
    95 {
       
    96     IRQNwkInfoObserver* nwkInfoObserver = new (ELeave) IRQNwkInfoObserver();
       
    97     nwkInfoObserver->constructL();
       
    98     User::LeaveIfError(Dll::SetTls(nwkInfoObserver));
       
    99     nwkInfoObserver->iSingletonInstances = 1;
       
   100 
       
   101     return nwkInfoObserver;
       
   102 }
       
   103 
       
   104 // ---------------------------------------------------------------------------
       
   105 // IRQNwkInfoObserver::constructL()
       
   106 // Two-Phase Constructor.
       
   107 // ---------------------------------------------------------------------------
       
   108 //
       
   109 void IRQNwkInfoObserver::constructL()
       
   110 {
       
   111     iBody = IRQNwkInfoObserverImpl::NewL(this);
       
   112 }
       
   113 
       
   114 // ---------------------------------------------------------------------------
       
   115 // IRQNwkInfoObserver::startMonitorNwkInfo()
       
   116 // start monitoring network info change
       
   117 // ---------------------------------------------------------------------------
       
   118 //
       
   119 EXPORT_C void IRQNwkInfoObserver::startMonitorNwkInfo()
       
   120 {
       
   121     if(iBody)
       
   122     {
       
   123         iBody->startNwkInfoMonitor();
       
   124     }
       
   125 }
       
   126 
       
   127 // ---------------------------------------------------------------------------
       
   128 // IRQNwkInfoObserver::stopMonitorNwkInfo()
       
   129 // stop monitoring network info change
       
   130 // ---------------------------------------------------------------------------
       
   131 //
       
   132 EXPORT_C void IRQNwkInfoObserver::stopMonitorNwkInfo()
       
   133 {
       
   134     if(iBody)
       
   135     {
       
   136         iBody->Cancel();
       
   137     }
       
   138 }
       
   139 
       
   140 // ---------------------------------------------------------------------------
       
   141 // From MIRQNwkInfoUpdate.
       
   142 // ---------------------------------------------------------------------------
       
   143 //
       
   144 void IRQNwkInfoObserver::updateCurrentNwkInfo(const QString &aCurrentNwkMCC, const QString &aCurrentNwkMNC)
       
   145 {
       
   146     emit currentNwkChanged(aCurrentNwkMCC,aCurrentNwkMNC);
       
   147 }
       
   148 
       
   149 
       
   150 // ---------------------------------------------------------------------------
       
   151 // From MIRQNwkInfoUpdate.
       
   152 // ---------------------------------------------------------------------------
       
   153 //
       
   154 void IRQNwkInfoObserver::updateHomeNwkInfo(const QString &aHomeNetworkMCC, const QString &aHomeNetworkMNC)
       
   155 {
       
   156     emit homeNwkChanged(aHomeNetworkMCC,aHomeNetworkMNC);
       
   157 }