deviceupdatesui/deviceupdates/src/dmadvancedview.cpp
author hgs
Fri, 17 Sep 2010 19:58:05 +0530
changeset 62 03849bd79877
parent 56 a9afc3a8dbfa
child 67 fdbfe0a95492
permissions -rw-r--r--
201037


/*
* Copyright (c) 2002-2005 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:  Methods for DmAdvancedView.
*
*/
#include <hbnamespace.h>
#include "dmadvancedview.h"
#include "dmfotaview.h"
#include "serversettingsview.h"
#include "customviewitem.h"

DmAdvancedView::DmAdvancedView(HbMainWindow *mainWindow,DMFotaView *mainView, DmInfo *info, QGraphicsItem *parent):HbView(parent),
    bluetooth(":/icons/qgn_prop_sml_bt.svg"),
    internet(":/icons/qgn_prop_sml_http.svg"), 
    defaultprofileicon(":/icons/qtg_large_avatar.svg")                
    {
    qDebug("omadm DeviceManagerUi::DmAdvancedView >>");
    iMainWindow = mainWindow;
    serverSetView = NULL;
    iMainView = mainView;
    if(info==NULL)
        {
        dminfo = new DmInfo(this);
        }
    else 
        dminfo = info;
    currentdefaultprofile = -1;
    currentview = 0;
    connectionRequested = false;    
    backbehaviorset = false;
    currentselecteditem = -1;
    qDebug("omadm DeviceManagerUi::DmAdvancedView >>");
    }

DmAdvancedView::~DmAdvancedView()
    {
    qDebug("omadm DmAdvancedView::~DmAdvancedView");
    if(docmlLoader)
        delete docmlLoader;  
    if(dminfo)
        delete dminfo;
    qDebug("omadm DmAdvancedView::~DmAdvancedView end"); 
    }

void DmAdvancedView::handleLongPress(HbAbstractViewItem* item , QPointF coOrdinates)
    {
    qDebug("omadm DeviceManagerUi::handleLongPress >>");
    if(connectionRequested)
        return;
    if (item)
        {
        modelItem = model->itemFromIndex(item->modelIndex());
        currentselecteditem = modelItem->row();
        if(currentselecteditem == dminfo->profilescount())//Button item pressed
            return;
        HbMenu *csmenu = new HbMenu();
        csmenu->setAttribute( Qt::WA_DeleteOnClose);
        HbAction *defaultprofileAction = 0;
        HbAction *deleteaction = 0;
        HbAction *connectaction = 0;
        if (!dminfo->Isdefaultprofile(currentselecteditem))
            {
            defaultprofileAction = csmenu->addAction(hbTrId(
                    "txt_device_update_menu_set_as_default"));
            connect(defaultprofileAction, SIGNAL(triggered()), this,
                    SLOT(defaultMenuItemSelected()));
            }
        if (!dminfo->Isprofilelocked(currentselecteditem) && 
                     dminfo->isProfileDeleteAllowed(currentselecteditem) )
            {
            deleteaction = csmenu->addAction(hbTrId(
                    "txt_device_update_menu_delete"));
            connect(deleteaction, SIGNAL(triggered()), this,
                    SLOT(deleteMenuItemSelected()));
            }
        connectaction = csmenu->addAction(hbTrId(
                "txt_device_update_menu_connect"));
        connect(connectaction, SIGNAL(triggered()), this,
                SLOT(connectMenuItemSelected()));
        csmenu->setPreferredPos(coOrdinates);
        csmenu->open();
        }
    qDebug("omadm DeviceManagerUi::handleLongPress >>");
    }


void DmAdvancedView::handleClicked(QModelIndex index)
    {
    qDebug("omadm DeviceManagerUi::handleClicked >>");
    if(connectionRequested)
        return;
	int itemnum = 0;
    QStandardItem *selectedItem = model->itemFromIndex(index);
    itemnum = selectedItem->row();	        
     if(itemnum == dminfo->profilescount())//Button item pressed
        {
    qDebug("omadm create new server profile button clicked");
        return;
        }
  //Stop listening DB events for profile addition
    dminfo->DisableDbNotifications(true);                
    if(itemnum >= 0 && !dminfo->Isprofilelocked(itemnum))
        {        
        //read profile items
        QStringList itemdata;
        bool sessmode = 0;
        QStringList iaplist;
        int curriap = 0;
        int portnum = 0;
        bool nwauth = false ;
        dminfo->getProfiledata(itemnum, itemdata, sessmode,iaplist,curriap,portnum, nwauth);	
        QString editserverprof(itemdata[0]);
        if(!serverSetView)
            {
            serverSetView = new ServerSettingsView(iMainWindow, this , editserverprof);
            }
        else // view already created
            {
            //Just update the setting items as per this profile            
            serverSetView->makeviewItemsVisible(editserverprof);		  
            }        
        serverSetView->setProfileValues(itemdata,sessmode,iaplist,curriap,portnum,nwauth);
        iMainWindow->setCurrentView(serverSetView);
  
        }
    qDebug("omadm DeviceManagerUi::handleClicked >>");
    }

bool DmAdvancedView::displayItems()
    {    	
    qDebug("omadm DeviceManagerUi::displayItems >>");
    docmlLoader = new HbDocumentLoader;
    bool ok ;    
    docmlLoader->load( DOCML_FILE_NAME,  &ok  );
    if(ok)
    	{
        if(iMainWindow->orientation() == Qt::Vertical)
            docmlLoader->load( DOCML_FILE_NAME,  PORTRAIT,&ok  );
        else
            docmlLoader->load( DOCML_FILE_NAME, LANDSCAPE,&ok  );            
    	}
    else
    	{
    	 qDebug("omadm docml loading failed");
    	 return ok;
    	}
    if(ok)
        {        	
        connect(iMainWindow, SIGNAL(orientationChanged(Qt::Orientation)),
                this,  SLOT(reLayout(Qt::Orientation)));    
        viewwidget = qobject_cast<HbView *>(docmlLoader->findWidget( VIEW_NAME ) );    
        Q_ASSERT_X(viewwidget != 0, "OMADM View not found","Not found");        
        viewspecificmenu = new HbMenu();    
        help = viewspecificmenu->addAction(hbTrId("txt_common_menu_help")); 
        exit = viewspecificmenu->addAction(hbTrId("txt_common_menu_exit"));
        connect(exit, SIGNAL(triggered()), QCoreApplication::instance(), SLOT(quit()));
        setMenu(viewspecificmenu);            
        serversListGroup = qobject_cast<HbGroupBox *>(docmlLoader->findWidget( GROUP ) );
        serversListGroup->setHeading(hbTrId("txt_device_update_setlabel_device_update_services"));
        serversListGroup->setCollapsable( true );        
        connect(serversListGroup, SIGNAL(toggled(bool)), this, SLOT(serversListGroupClicked(bool)));
        otherDetailsGroup = qobject_cast<HbGroupBox *>(docmlLoader->findWidget( OTHERDETAILSGROUP ) );
        connect(otherDetailsGroup, SIGNAL(toggled(bool)), this, SLOT(otherDetailsGroupClicked(bool)));        
        otherDetailsGroup->setHeading(hbTrId("txt_device_update_setlabel_other_details"));
        otherDetailsGroup->setCollapsable( true );
        otherDetailsGroup->setCollapsed( true );                            
        list = qobject_cast<HbListView *>(docmlLoader->findWidget( LIST_NAME ) );

        list->listItemPrototype()->setGraphicsSize(HbListViewItem::LargeIcon);
        list->listItemPrototype()->setSecondaryTextRowCount(1,2);
        list->listItemPrototype()->setStretchingStyle(HbListViewItem::StretchLandscape);

        dminfo->refreshProfileList();    
        int IndicatorCount =dminfo->profilescount();
        model = new QStandardItemModel();   
        QList<HbAbstractViewItem *> prototypes ;
        prototypes.append(list->listItemPrototype());
        CustomViewItem *prototype2 = new CustomViewItem(this,list);
        prototypes.append(prototype2);
        list->setItemPrototypes(prototypes);
        list->setModel(model);
        int i;
        for (i = 0; IndicatorCount > 0 && i < IndicatorCount; ++i) {        
        QStringList liststr;
        bool lock = false;
        int icon = 0;
        int ret = dminfo->profileinfo(i,liststr,icon, lock);
        if(ret <= 0)
            {
            break;
            }
        QStandardItem* item ;    
        item = new QStandardItem();    
        HbIcon icon1;
        icon1.setIconName(":/icons/qgn_prop_sml_http.svg");
        HbIcon icon2;
        icon2.setIconName(":/icons/qgn_prop_sml_bt.svg");
        HbIcon icon3;
        icon3.setIconName(":/icons/qgn_indi_sett_protected_add.svg");   
        HbIcon defaultprofile;
        defaultprofile.setIconName(":/icons/qtg_large_avatar.svg");            
        QList<QVariant> Iconl;    
        if(icon == 0)//Internet
            Iconl.insert(0,icon1);
        else if(icon == 1)//Bluetooth
            Iconl.insert(0,icon2); 
        else 
            {
            Iconl.insert(0,defaultprofile);
            currentdefaultprofile = i;
            }
        icon = 0;
        if(lock)
            {
            Iconl.insert(1,icon3);
            lock = false; 
            }
        QVariant iconlist(Iconl);
        iconlist.setValue(Iconl);
        item->setData(liststr , Qt::DisplayRole);
        item->setData(iconlist , Qt::DecorationRole);
        model->setItem(i, item);    
        }        
        list->setItemRecycling(false);
        QStandardItem* customitem = new QStandardItem();
        customitem->setData(Hb::ItemType_Last + 1001,Hb::ItemTypeRole);
        model->setItem(i, customitem);
        connect(list, SIGNAL(longPressed(HbAbstractViewItem*,QPointF)),
                this,  SLOT(handleLongPress(HbAbstractViewItem*,QPointF)));
    
        connect(list, SIGNAL(activated(QModelIndex)), this, SLOT(handleClicked(QModelIndex)));            
        
        qDebug("omadm launching other details list");
        otherdetailslist = qobject_cast<HbListView *>(docmlLoader->findWidget( LISTOTHERDETAILS ) );    
        otherdetailslist->listItemPrototype()->setStretchingStyle(HbListViewItem::StretchLandscape);
		otherdetailslist->setLongPressEnabled(EFalse);
        qDebug("omadm launching other details list done");    
        mainCalltoUpdateView();                             
        label = qobject_cast<HbLabel *>(docmlLoader->findWidget(LABEL));        
        label->setPlainText(hbTrId("txt_device_update_subhead_advanced_device_updates"));        
        
        setWidget(viewwidget);        
        }
    else 
        {
        qDebug("omadm docml section loading failed");
        }    
    qDebug("omadm DeviceManagerUi::displayItems >>");
    return ok;
    }

void DmAdvancedView::updateEarlierdefaultProfileIcon()
    {
    qDebug("omadm DeviceManagerUi::updateEarlierdefaultProfileIcon >>");
    if(currentdefaultprofile >= 0)
        {
        QStandardItem *earlierDefaultProfile = model->item(currentdefaultprofile);
        //Find the transport type & set the icon
        int transporttype = 0;
        dminfo->profileTransport(currentdefaultprofile,transporttype);
        if(transporttype == 0)//Internet
            {
            earlierDefaultProfile->setIcon(internet);
            }
        else
            {
            earlierDefaultProfile->setIcon(bluetooth);
            }        
        }
    qDebug("omadm DeviceManagerUi::updateEarlierdefaultProfileIcon >>");
    }

void DmAdvancedView::createNewProfile()
    {
    qDebug("omadm DeviceManagerUi::createNewProfile >>");
    if(dminfo->createNewprofile())
        {
        //Open server settings view    
        QString newserverprof(hbTrId("txt_device_update_setlabel_new_server_profile"));    
        if(!serverSetView)
            {
            serverSetView = new ServerSettingsView(iMainWindow, this, newserverprof);        
            }
        else // view already created
            {
            //Just update the setting items as per this profile                
            serverSetView->makeviewItemsVisible(newserverprof);       
            }
        QStringList serveritems;    
        serveritems<< "" <<"" <<"" <<"" <<""<<""<<""<<"";
        bool sessmode = true;
        bool nauth = true;
        QStringList apdata;        
        int currap =-1;
        int destap = 0;
        dminfo->getIaplist(apdata,currap,destap);    
        int portnum = 8080;    
        serverSetView->setProfileValues(serveritems,sessmode,apdata,currap,portnum,nauth);
        iMainWindow->setCurrentView(serverSetView);        
        }
    else // profile not getting created
        {
        qDebug("OMADM New server profile creation failed");
        }
    qDebug("omadm DeviceManagerUi::createNewProfile >>");
    }

void DmAdvancedView::saveProfile(QStringList& itemdata, bool& sessmode, QString& currap,unsigned int& portnum, bool& nauth )
    {
    qDebug("omadm DeviceManagerUi::saveProfile >>");
    dminfo->DisableDbNotifications(true);
    dminfo->saveProfile(itemdata,sessmode,currap,portnum,nauth);
    updateListview();
    dminfo->DisableDbNotifications(false);
    qDebug("omadm DeviceManagerUi::saveProfile >>");
    }

void DmAdvancedView::updateListview()
    {
    qDebug("omadm DeviceManagerUi::updateListview >>");
    model->clear();
    int IndicatorCount =dminfo->profilescount();    
    int i;
    for ( i = 0; IndicatorCount > 0 && i < IndicatorCount; ++i) {    
    QStringList liststr;
    bool lock = false;
    int icon = 0;
    int ret = dminfo->profileinfo(i,liststr,icon, lock);
    if(ret <= 0)
        {
        break;
        }    
    QStandardItem* item ;
    item = new QStandardItem();
    HbIcon icon1;
    icon1.setIconName(":/icons/qgn_prop_sml_http.svg");
    HbIcon icon2;
    icon2.setIconName(":/icons/qgn_prop_sml_bt.svg");
    HbIcon icon3;
    icon3.setIconName(":/icons/qgn_indi_sett_protected_add.svg");   
    HbIcon defaultprofile;
    defaultprofile.setIconName(":/icons/qtg_large_avatar.svg");    
    QList<QVariant> Iconl;
    if(icon == 0)//Internet
        Iconl.insert(0,icon1);
    else if(icon == 1)//Bluetooth
        Iconl.insert(0,icon2); 
    else //Default profile
        {
        Iconl.insert(0,defaultprofile);
        currentdefaultprofile = i;
        }
    icon = 0;
    if(lock)
        {
        Iconl.insert(1,icon3);
        lock = false; 
        }
    QVariant iconlist(Iconl);
    iconlist.setValue(Iconl);
    item->setData(liststr , Qt::DisplayRole);
    item->setData(iconlist , Qt::DecorationRole);
    model->setItem(i, item);    
    }    
    QStandardItem* item = new QStandardItem();
    item->setData(Hb::ItemType_Last + 1001,Hb::ItemTypeRole);
    model->setItem(i, item);
    }

void DmAdvancedView::serversListGroupClicked(bool state)
    {
    qDebug("omadm DeviceManagerUi::serversListGroupClicked >>");
    Q_UNUSED(state);
    if(serversListGroup->isCollapsed())
        otherDetailsGroup->setCollapsed(false);
    else
        otherDetailsGroup->setCollapsed(true);
    qDebug("omadm DeviceManagerUi::serversListGroupClicked >>");
    }

void DmAdvancedView::otherDetailsGroupClicked(bool state)
    {
    qDebug("omadm DeviceManagerUi::otherDetailsGroupClicked >>");
    Q_UNUSED(state);
    if(otherDetailsGroup->isCollapsed())
        serversListGroup->setCollapsed(false);
    else
        serversListGroup->setCollapsed(true);
    qDebug("omadm DeviceManagerUi::otherDetailsGroupClicked >>");
    }

bool DmAdvancedView::checkServerId(QString& serverid)
    {
    qDebug("omadm DeviceManagerUi::CheckforUpdate >>");
    return dminfo->checksrvid(serverid);
    qDebug("omadm DeviceManagerUi::CheckforUpdate >>");
    }

void DmAdvancedView::reLayout(Qt::Orientation orientation)
    {   
    qDebug("OMADM servers view DmAdvancedView::reLayout <<");
    if(orientation == Qt::Horizontal)
        {
        qDebug("OMADM servers view landscape");
        docmlLoader->load(DOCML_FILE_NAME,LANDSCAPE); 
        }
    else
        {
        qDebug("OMADM servers view portrait");	        
        bool ok;
        docmlLoader->load( DOCML_FILE_NAME,  PORTRAIT, &ok  );
        }
    qDebug("OMADM servers view DmAdvancedView::reLayout >>");
    }

void DmAdvancedView::setBackBehavior()
    {
    qDebug("OMADM servers view DmAdvancedView::setBackBehavior <<");
    if (!backbehaviorset)
        {
        qDebug("OMADM servers view back behavior setting");
        backaction = new HbAction(Hb::BackNaviAction, this);
        connect(backaction, SIGNAL(triggered()), this,
                SLOT(backButtonClicked()));
        setNavigationAction(backaction);
        backbehaviorset = true;
        }
    qDebug("OMADM servers view back behavior setting done setBackBehavior >>");
    }

void DmAdvancedView::backButtonClicked()
    {    
    qDebug("OMADM servers view DmAdvancedView::backButtonClicked <<");
    QList <HbView*> views = iMainWindow->views();    
    if(iMainWindow->orientation()==Qt::Vertical)
            {
            iMainWindow->setCurrentView(views[0]);
            }
        else
            {
            iMainWindow->setCurrentView(views[1]);
            }    
    qDebug("OMADM servers view DmAdvancedView::backButtonClicked >>");
    }

void DmAdvancedView::addVersionInfo()
    {
    qDebug("OMADM servers view DmAdvancedView::addVersionInfo <<");
    QStringList liststr;
    QStandardItem* item;
    QString val;
    QString str;
    TInt runtimesupport(0);
        CRepository* cenrep = NULL;
        TRAPD( error, cenrep = CRepository::NewL( KCRUidNSmlDMSyncApp ) );  
        if(error)
           {     
           FLOG( "[OMADM] CNSmlDMFotaContainer::FormatListboxL() cenrep problem" );
           }    
        if ( cenrep )
           {
           cenrep->Get( KNsmlDmRuntimeVerSupport, runtimesupport );
           delete cenrep; cenrep = NULL;
           }
        //Browser version
        Swi::RSisRegistrySession sisses ;
        TInt r( sisses.Connect() );
        CleanupClosePushL( sisses );
        if (r== KErrNone && runtimesupport)
            {           
             Swi::RSisRegistryEntry sientry;
             TInt oerr = sientry.Open(sisses, browseruid);
             TVersion bversion;
             TBuf <255> browserversion;
             if(oerr == KErrNone)
                 {
                 TRAPD(err2,bversion= sientry.VersionL());     
                 if (err2 == KErrNone)
                     {
                     browserversion.AppendNum(bversion.iMajor);
                     browserversion.Append(_L("."));
                     browserversion.AppendNum(bversion.iMinor);
                     if( browserversion.Length()>0 )
                         {                                
                         str = QString::fromUtf16(browserversion.Ptr(), browserversion.Length());
                         item = new QStandardItem();
                         val = hbTrId("txt_device_update_dblist_browser_version");
                         liststr.clear();
                         liststr << val;
                         liststr << str;
                         item->setData(liststr , Qt::DisplayRole);
                         //m_otherdetailsmodel->setItem(i++, item);
                         m_otherdetailsmodel->appendRow(item);
                         }
                     }
                 }
            }
        
        //flash version
        if (r== KErrNone&& runtimesupport)
            {           
              Swi::RSisRegistryEntry sientry;
              TInt oerr = sientry.Open(sisses, flashuid);
              TVersion fversion;
              TBuf <255> flashversion;
              if(oerr == KErrNone)
                  {
                  TRAPD(err2,fversion= sientry.VersionL());         
                  if (err2 == KErrNone)
                      {
                      flashversion.AppendNum(fversion.iMajor);
                      flashversion.Append(_L("."));
                      flashversion.AppendNum(fversion.iMinor); 
                      if( flashversion.Length()>0 )
                          {                               
                          str = QString::fromUtf16(flashversion.Ptr(), flashversion.Length());
                          item = new QStandardItem();
                          val = hbTrId("txt_device_update_dblist_flash_version");
                          liststr.clear();
                          liststr << val;
                          liststr << str;
                          item->setData(liststr , Qt::DisplayRole);
                          //m_otherdetailsmodel->setItem(i++, item);
                          m_otherdetailsmodel->appendRow(item);
                          }                                   
                      }      
                  }
            }
               
         if (r== KErrNone&& runtimesupport)
             {            
              Swi::RSisRegistryEntry sientry;
              TInt oerr = sientry.Open(sisses, javauid);
              TVersion jversion;
              TBuf <255> javaversion;
              if(oerr == KErrNone)
                  {       
                  TRAPD(err2,jversion= sientry.VersionL());     
                  if (err2 == KErrNone)
                      {
                      javaversion.AppendNum(jversion.iMajor);
                      javaversion.Append(_L("."));
                      javaversion.AppendNum(jversion.iMinor);  
                      if( javaversion.Length()>0 )
                          { 
                          str = QString::fromUtf16(javaversion.Ptr(), javaversion.Length());
                          item = new QStandardItem();
                          val = hbTrId("txt_device_update_dblist_java_version");
                          liststr.clear();
                          liststr << val;
                          liststr << str;
                          item->setData(liststr , Qt::DisplayRole);
                          m_otherdetailsmodel->appendRow(item);
                          } 
                      }            
                  }            
             } 
        CleanupStack::PopAndDestroy(1);
        qDebug("OMADM servers view DmAdvancedView::addVersionInfo >>");
    }

void DmAdvancedView::addOtherDetails()
    {
        qDebug("OMADM servers view DmAdvancedView::addOtherDetails >>");
        TRequestStatus status;
        QStringList liststr;
        QStandardItem* item;
        QString val;
        QString str;
        TInt error(iServer.Connect());
        if ( error != KErrNone )
        	return;
        iServer.GetPhoneInfo(0, info);
        error = imobPhone.Open(iServer, info.iName);
        if ( error != KErrNone )
        {
        	iServer.Close();
        	return;
        }
        //Bands supported
        
        RMobilePhone::TMobilePhoneNetworkInfoV1 nwInfov1;
        RMobilePhone::TMobilePhoneNetworkInfoV1Pckg nwInfov1Pckg(nwInfov1);                     
        imobPhone.GetCurrentNetwork(status, nwInfov1Pckg);
        User::WaitForRequest( status );
        status = KRequestPending;
        nwInfov1 = nwInfov1Pckg();
        NetworkBand(nwInfov1.iBandInfo, str);
        item = new QStandardItem();
        val = hbTrId("txt_deviceupdate_dblist_network_band_supported");
        liststr.clear();
        liststr << val;
        liststr << str;
        item->setData(liststr , Qt::DisplayRole);
        m_otherdetailsmodel->appendRow(item);
        
        //Packet Service
        
        TInt packetsrvc =0;
        RMobilePhone::TMobilePhoneNetworkInfoV5 nwInfov5;
        RMobilePhone::TMobilePhoneNetworkInfoV5Pckg nwInfov5Pckg(nwInfov5);
        imobPhone.GetCurrentNetwork( status, nwInfov5Pckg );
        User::WaitForRequest( status );
        status = KRequestPending;
        nwInfov5 = nwInfov5Pckg();
        
        if(nwInfov5.iHsdpaAvailableIndicator) packetsrvc =1;
        
        if(nwInfov5.iEgprsAvailableIndicator) packetsrvc =2;
        
        if(!packetsrvc)
        {
            RMobilePhone::TMobilePhoneNetworkInfoV8 nwInfov8;
            RMobilePhone::TMobilePhoneNetworkInfoV8Pckg nwInfov8Pckg(nwInfov8);
            imobPhone.GetCurrentNetwork( status, nwInfov8Pckg );
            User::WaitForRequest( status );
            status = KRequestPending;
            nwInfov8 = nwInfov8Pckg();
            if(nwInfov8.iHsupaAvailableIndicator) packetsrvc =3;
        }     
        liststr.clear();
        val = hbTrId("txt_deviceupdate_dblist_data_service_supported");
        liststr << val;
        item = new QStandardItem();
        PacketService(packetsrvc, str);
        liststr << str;
        item->setData(liststr , Qt::DisplayRole);
        m_otherdetailsmodel->appendRow(item);
                    
        // Ciphering
        
        liststr.clear();
        item = new QStandardItem();
        val = hbTrId("txt_deviceupdate_dblist_network_security_level");
        liststr << val;
        imobPhone.GetNetworkSecurityLevel(status,idispSecurity);
        User::WaitForRequest( status );
        NetworkCiphering(idispSecurity, str);
        liststr << str;
        item->setData(liststr, Qt::DisplayRole);
        m_otherdetailsmodel->appendRow(item);
        
        // WLAN MAC
        
        TUint KPhoneWlanSeparator (':');
        _LIT( KWLanMACDataFormat, "%02x");  
        // Fetch WLAN MAC address
        TBuf<KWlanMacAddrLength> address;
        RProperty::Get( KPSUidWlan, KPSWlanMacAddress, address );   
        // Format fetched address
        TBuf<KWlanMacAddrLength> wlanMACAddress;        
        for ( TInt i( 0 ); i < address.Length(); i++ )
            {
            // Set separator
            if( i > 0 )
                {
                wlanMACAddress.Append( KPhoneWlanSeparator );
                }
            // Set data
            TBuf<50> tmp;
            tmp.Format( KWLanMACDataFormat, address[i] );
            wlanMACAddress.Append( tmp );
            } 
        liststr.clear();
        item = new QStandardItem();
        val = hbTrId("txt_device_update_dblist_wlan_mac_address");
        liststr << val;
        str = QString::fromUtf16(wlanMACAddress.Ptr(), wlanMACAddress.Length());
        liststr << str;
        item->setData(liststr, Qt::DisplayRole);
        m_otherdetailsmodel->appendRow(item);
          
        // BT MAC
          
        TBuf<KBTAddrLength> addressBuffer;
        // Fetch from Cenrep
        CRepository* repository = NULL;
        TRAPD( err, repository = CRepository::NewL( KCRUidBluetoothLocalDeviceAddress ) );
        if ( err == KErrNone )
            {
            qDebug("KCRUidBluetoothLocalDeviceAddress errnone");
            err = repository->Get( KBTLocalDeviceAddress, addressBuffer );
            
            if (err == KErrNone)
                qDebug("KBTLocalDeviceAddress errnone");
            else
                qDebug("KBTLocalDeviceAddress Error");
                
            delete repository;
            }
        else
            {
                qDebug("KCRUidBluetoothLocalDeviceAddress Error openin cenrep");
            }
        liststr.clear();
        val = hbTrId("txt_device_update_dblist_bt_mac_address");
        liststr << val;
        item = new QStandardItem();
        str = QString::fromUtf16(addressBuffer.Ptr(), addressBuffer.Length());
        liststr << str;
        item->setData(liststr , Qt::DisplayRole);
        m_otherdetailsmodel->appendRow(item);
        
        imobPhone.Close();
        iServer.Close();

    }
void DmAdvancedView::mainCalltoUpdateView()
{   
    qDebug("OMADM servers view DmAdvancedView::mainCalltoUpdateView >>");
    m_otherdetailsmodel = new QStandardItemModel();
    TInt i=0;
    
    QStringList liststr;
    QStandardItem* item;
    QString val;
    QString str;
    //1. Device Updated

    
    addVersionInfo();
    
    addOtherDetails();

    //sw version date
    TBuf< KSysUtilVersionTextLength > swversiondate;
    TBuf< KSysUtilVersionTextLength > version;
    version.Zero();
    swversiondate.Zero();
    if( SysUtil::GetSWVersion(version)==KErrNone)
        {
        TInt len= version.Length();
        TInt pos1 = version.Find(KSmlEOL);
             if( pos1 != KErrNotFound && len > pos1 )
                {
                 TBuf<KSysUtilVersionTextLength> version1;
                 version1.Zero();
                 version1.Append( version.Right( len-pos1-1 ));
                 len= version1.Length();
                 pos1 = version1.Find(KSmlEOL);
                 if( pos1 != KErrNotFound  && len > pos1 )
                     {
                     swversiondate.Append(version1.Left( pos1 ));
                     }
                }
            val = hbTrId("txt_device_update_dblist_sw_version_date");
            item = new QStandardItem();
            str = QString::fromUtf16(swversiondate.Ptr(), swversiondate.Length());
            liststr.clear();
            liststr << val;
            liststr << str;
            item->setData(liststr , Qt::DisplayRole);
            m_otherdetailsmodel->appendRow(item);
            }
            
    //Custom version and date
    //SysVersionInfo::TVersionInfoType x = SysVersionInfo::EOPVersion;
    TBuf< KNSmlMaxTextLength64 >  customsw;
    TBuf< KNSmlMaxTextLength64 >  customswdate;
    version.Zero();
    if( SysVersionInfo::GetVersionInfo(SysVersionInfo::EOPVersion,version) == KErrNone )
      {
         TInt len= version.Length();
         TInt pos1 = version.Find(KSmlEOL);
         if( pos1 != KErrNotFound  && len > pos1 )
          {        
          customsw.Append( version.Left(pos1));
          customswdate.Append( version.Right( len-pos1-1 ));         
          }
      } 
    
    if(customsw.Length()>0)
        {
        str = QString::fromUtf16(customsw.Ptr(), customsw.Length());
        item = new QStandardItem();
        val = hbTrId("txt_device_update_dblist_custom_version");
        liststr.clear();
        liststr << val;
        liststr << str;
        item->setData(liststr , Qt::DisplayRole);
        m_otherdetailsmodel->appendRow(item);
        }
    if(customswdate.Length()>0)
        {
        str = QString::fromUtf16(customswdate.Ptr(), customswdate.Length());
        item = new QStandardItem();
        val = hbTrId("txt_device_update_dblist_custom_version_date");
        liststr.clear();
        liststr << val;
        liststr << str;
        item->setData(liststr , Qt::DisplayRole);
        m_otherdetailsmodel->appendRow(item);
        }
    
    TBuf<KSysUtilVersionTextLength> Langversion; 
    TBuf<KSysUtilVersionTextLength> lversion;
    if( SysUtil::GetLangVersion(Langversion ) == KErrNone )
      {
        str = QString::fromUtf16(Langversion.Ptr(), Langversion.Length());
        item = new QStandardItem();
        val = hbTrId("txt_device_update_dblist_language_set");
        liststr.clear();
        liststr << val;
        liststr << str;
        item->setData(liststr , Qt::DisplayRole);
        m_otherdetailsmodel->appendRow(item);
      }
    

    //lang variant version
    Langversion.Zero();
    if( SysUtil::GetLangSWVersion(Langversion ) == KErrNone )
        {
        int len = Langversion.Length();
        TInt pos1 = Langversion.Find( KSmlEOL );
        if( pos1 != KErrNotFound && len > pos1 )
            {
            lversion.Zero();
            lversion.Append( Langversion.Left( pos1 ) );
            }
         str = QString::fromUtf16(lversion.Ptr(), lversion.Length());
         item = new QStandardItem();
         val = hbTrId("txt_device_update_dblist_language_variant_version");
         liststr.clear();
         liststr << val;
         liststr << str;
         item->setData(liststr , Qt::DisplayRole);
         m_otherdetailsmodel->appendRow(item);
        }
     
    otherdetailslist->setModel(m_otherdetailsmodel);
    qDebug("OMADM servers view DmAdvancedView::mainCalltoUpdateView <<");
		
}

void DmAdvancedView::PacketService(TInt val, QString& string)
    {
    qDebug("OMADM servers view DmAdvancedView::PacketService >>");
     switch (val)
         {
         case (0):
                 string = hbTrId("txt_deviceupdate_dblist_data_srvce_suppo_val_GPRS");
                 break;
         case (1):
                 string = hbTrId("txt_deviceupdate_dblist_data_srvce_suppo_val_HSDPA");
                 break;
         case (2):
                 string = hbTrId("txt_deviceupdate_dblist_data_srvce_suppo_val_HSUPA");
                 break;
         case (3):
                 string = hbTrId("txt_deviceupdate_dblist_data_srvce_suppo_val_EGPRS");
                 break;
         case (4):
                 string = hbTrId("txt_deviceupdate_dblist_ntwrk_secu_lvl_val_CDMA");
                 break;
         case (5):
         default :
                 string = hbTrId("txt_deviceupdate_dblist_data_srvce_suppo_val_Unknow");
                 break;
         }
     qDebug("OMADM servers view DmAdvancedView::PacketService <<");
     }


void DmAdvancedView::NetworkCiphering(RMobilePhone::TMobilePhoneNetworkSecurity val, QString& string)
    {
    qDebug("OMADM servers view DmAdvancedView::NetworkCiphering >>");
     switch (val)
         {
         case (RMobilePhone::ECipheringGSM):
                 string = hbTrId("txt_deviceupdate_dblist_ntwrk_secu_lvl_val_GSM");
                 break;
         case (RMobilePhone::ECipheringWCDMA):
                 string = hbTrId("txt_deviceupdate_dblist_ntwrk_secu_lvl_val_WCDMA");
                 break;
         case (RMobilePhone::ECipheringCDMA):
                 string = hbTrId("txt_deviceupdate_dblist_ntwrk_secu_lvl_val_CDMA");
                 break;
         case (RMobilePhone::ECipheringOff):
         default :
                 string = hbTrId("txt_deviceupdate_dblist_ntwrk_secu_lvl_val_none");
                 break;
         }
     qDebug("OMADM servers view DmAdvancedView::NetworkCiphering <<");
    }
    
void DmAdvancedView::NetworkBand(RMobilePhone::TMobilePhoneNetworkBandInfo val, QString& string)
    {
    qDebug("OMADM servers view DmAdvancedView::NetworkBand >>");
    switch (val)
        {
        case (RMobilePhone::E800BandA):
                string = hbTrId("txt_deviceupdate_dblist_netwrk_bnd_spp_val__800BA");
                break;
        case (RMobilePhone::E800BandB):
                string = hbTrId("txt_deviceupdate_dblist_netwrk_bnd_spp_val__800BB");
                break;
        case (RMobilePhone::E800BandC):
                string = hbTrId("txt_deviceupdate_dblist_netwrk_bnd_spp_val__800BC");
                break;
        case (RMobilePhone::E1900BandA):
                string = hbTrId("txt_deviceupdate_dblist_netwrk_bnd_spp_val__1900BA");
                break;
        case (RMobilePhone::E1900BandB):
                string = hbTrId("txt_deviceupdate_dblist_netwrk_bnd_spp_val__1900BB");
                break;
        case (RMobilePhone::E1900BandC):
                string = hbTrId("txt_deviceupdate_dblist_netwrk_bnd_spp_val__1900BC");
                break;
        case (RMobilePhone::E1900BandD):
                string = hbTrId("txt_deviceupdate_dblist_netwrk_bnd_spp_val__1900BD");
                break;
        case (RMobilePhone::E1900BandE):
                string = hbTrId("txt_deviceupdate_dblist_netwrk_bnd_spp_val__1900BE");
                break;
        case (RMobilePhone::E1900BandF):
                string = hbTrId("txt_deviceupdate_dblist_netwrk_bnd_spp_val__1900BF");
                break;
        case (RMobilePhone::EBandUnknown):
        default :
                string = hbTrId("txt_deviceupdate_dblist_netwrk_bnd_spp_val_unknown");
                break;
        }   
    qDebug("OMADM servers view DmAdvancedView::NetworkBand <<");
    }

void DmAdvancedView::syncCompleted(int jobstatus)
    {
    qDebug("OMADM servers view DmAdvancedView::syncCompleted >>");
    Q_UNUSED(jobstatus);
    connectionRequested = false;    
    updateListview();
    iMainView->enableButtons();
    qDebug("OMADM servers view DmAdvancedView::syncCompleted <<");
    }
	
void DmAdvancedView::defaultMenuItemSelected()
    {
    qDebug("OMADM servers view DmAdvancedView::defaultMenuItemSelected >>");
    dminfo->setDefaultProfile(currentselecteditem);
    updateEarlierdefaultProfileIcon();
    modelItem->setIcon(defaultprofileicon);
    currentdefaultprofile = currentselecteditem;
    qDebug("OMADM servers view DmAdvancedView::defaultMenuItemSelected <<");
    }

void DmAdvancedView::deleteMenuItemSelected()
    {
    qDebug("OMADM servers view DmAdvancedView::deleteMenuItemSelected >>");
    dminfo->DisableDbNotifications(true);
    //check currentdefaultprofile is current item
    if(currentselecteditem == currentdefaultprofile) // deleting default profile
        currentdefaultprofile = -1;
    if(dminfo->DeleteProfile(currentselecteditem) >=0 )
        {
    //Update the profile list
    model->removeRow(currentselecteditem);
        }
    dminfo->DisableDbNotifications(false);
    qDebug("OMADM servers view DmAdvancedView::deleteMenuItemSelected <<");
    }

void DmAdvancedView::connectMenuItemSelected()
    {
    qDebug("OMADM servers view DmAdvancedView::connectMenuItemSelected >>");
    iMainView->displayNoteAndDisableButtons();
    backButtonClicked();
    dminfo->synchronize(currentselecteditem);    
    connectionRequested = true;
    qDebug("OMADM servers view DmAdvancedView::connectMenuItemSelected <<");
    }