deviceupdatesui/deviceupdates/src/dmfotaview.cpp
changeset 18 7d11f9a6646f
child 24 408f75ba5bc2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deviceupdatesui/deviceupdates/src/dmfotaview.cpp	Fri Apr 16 14:53:31 2010 +0300
@@ -0,0 +1,413 @@
+/*
+* 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 DmFotaView.
+*
+*/
+
+#include <hbmainwindow.h>
+#include <hbpushbutton.h>
+#include <hbaction.h>
+#include <hbdialog.h>
+#include <sysutil.h>
+#include <hbscrollarea.h>
+#include <etel.h>
+#include <featmgr.h>
+#include <etelmm.h>
+#include <centralrepository.h>
+#include <sysversioninfo.h>
+#include "nsmldmsyncprivatecrkeys.h"
+#include "dmadvancedview.h"
+#include "dmfotaview.h"
+// ============================ MEMBER FUNCTIONS ===============================
+    
+// -----------------------------------------------------------------------------
+// DMFotaView::DMFotaView
+// -----------------------------------------------------------------------------
+//
+DMFotaView::DMFotaView(HbMainWindow *mainWindow):
+    mMainWindow(mainWindow),profilesView(NULL)
+{
+    fotaPortraitView=0;
+    fotaLandscapeView=0;
+}
+
+// -----------------------------------------------------------------------------
+// DMFotaView::~DMFotaView
+// 
+// -----------------------------------------------------------------------------
+//
+DMFotaView::~DMFotaView()
+{ 
+}
+
+// -----------------------------------------------------------------------------
+// DMFotaView::addFotaView
+// Creates and adds the Fota Portrait and Landscape View
+// -----------------------------------------------------------------------------
+//
+bool DMFotaView::addFotaView()
+    {
+    connect( mMainWindow, SIGNAL( orientationChanged(Qt::Orientation) ), this, SLOT( readSection(Qt::Orientation) ) );
+        
+    bool ok = false;
+    QString val,val2;
+    loader.load(":/xml/devman.docml", &ok);
+    ok = false;
+    loader2.load(":/xml/devman.docml", &ok);
+    // Exit if the file format is invalid
+    Q_ASSERT_X(ok, "Device Manager", "Invalid docml file");
+    
+    ok=false;
+    loader.load(":/xml/devman.docml","Portrait", &ok);
+    ok=false;
+    loader2.load(":/xml/devman.docml","Landscape", &ok);
+   
+    // Load the view by name from the xml file
+    fotaPortraitView = qobject_cast<HbView*>(loader.findWidget("p:view"));
+    fotaLandscapeView = qobject_cast<HbView*>(loader2.findWidget("l:view"));
+
+
+    HbAction *help = qobject_cast<HbAction*> (loader.findObject("help")); 
+    help->setText(QString("txt_common_menu_help"));
+    QObject::connect(help, SIGNAL(triggered()), this, SLOT(OnHelp()));
+    HbAction *exit = qobject_cast<HbAction*> (loader.findObject("exit"));
+    exit->setText(QString("txt_common_menu_exit"));
+    QObject::connect(exit, SIGNAL(triggered()), this, SLOT(OnExit()));
+
+    help = qobject_cast<HbAction*>(loader2.findObject("help"));
+    help->setText(QString("txt_common_menu_help"));
+    QObject::connect(help, SIGNAL(triggered()), this, SLOT(OnHelp()));
+    exit = qobject_cast<HbAction*>( loader2.findObject("exit"));
+    exit->setText(QString("txt_common_menu_exit"));
+    QObject::connect(exit, SIGNAL(triggered()), this, SLOT(OnExit()));
+    
+    mSoftKeyBackAction = new HbAction(Hb::BackAction ,this);
+    mSoftKeyBackAction->setText("Back");
+    connect(mSoftKeyBackAction, SIGNAL(triggered()), this, SLOT(backtoMainWindow()));
+        
+    
+    i=0;
+    QString str;
+    //Setting title text
+    label = qobject_cast<HbLabel*> (loader.findWidget("p:title"));
+    label2 = qobject_cast<HbLabel*> (loader2.findWidget("l:title"));
+    val = hbTrId("txt_device_update_subhead_device_updates");
+    label->setPlainText(val);
+    label2->setPlainText(val);
+    
+    //Setting help text for update button
+    label = qobject_cast<HbLabel*> (loader.findWidget("p:updatelabel"));
+    label2 = qobject_cast<HbLabel*> (loader2.findWidget("l:updatelabel"));
+    val = hbTrId("txt_device_update_setlabel_to_update_your_device_s");
+    label->setPlainText(val);
+    label2->setPlainText(val);
+    
+    HbScrollArea* area = qobject_cast<HbScrollArea*> (loader.findWidget("scrollArea"));
+    area->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOn);
+    
+    
+    list1 << "label" << "label_1" << "label_2" << "label_3" << "label_4" << "label_5" << "label_6"<<"label_7"<<"label_8"<<"label_9"<<"label_10"<<"label_11";
+    list2 << "label_13" << "label_14" << "label_15" << "label_16" << "label_17" << "label_18" << "label_19"<<"label_20"<<"label_21"<<"label_22"<<"label_23"<<"label_24";
+
+
+    //Product Release
+    TBuf< 1024 > prodrelease;
+    prodrelease.Zero();
+    if(SysUtil::GetPRInformation(prodrelease)==KErrNone)
+        {
+        val = hbTrId("txt_device_update_dblist_product_release");
+        str = QString::fromUtf16(prodrelease.Ptr(), prodrelease.Length());
+        FormatList(val,str);
+        }
+    
+    //Software version
+    
+    TBuf< KSysUtilVersionTextLength > swversion;
+    TBuf< KSysUtilVersionTextLength > swversiondate;
+    TBuf< KSysUtilVersionTextLength > typedesignator;
+    TBuf< KSysUtilVersionTextLength > version;
+    swversion.Zero();
+    version.Zero();
+    typedesignator.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();
+                 swversion.Append( version.Left(pos1));
+                 version1.Append( version.Right( len-pos1-1 ));
+                 len= version1.Length();
+                 pos1 = version1.Find(KSmlEOL);
+                 if( pos1 != KErrNotFound  && len > pos1 )
+                     {
+                     swversiondate.Append(version1.Left( pos1 ));
+                     version.Zero();
+                     version.Append( version1.Right( len-pos1-1 ));
+                     len= version.Length();
+                     pos1 = version.Find(KSmlEOL);
+                     if( pos1 != KErrNotFound  && len > pos1 )
+                         {
+                         typedesignator.Append(version.Left(pos1));         
+                         }
+                     }
+                }
+            val = hbTrId("txt_device_update_dblist_software_version");
+            str = QString::fromUtf16(swversion.Ptr(), swversion.Length());
+            FormatList(val,str);
+            }
+
+    //Model
+    RTelServer telServer;
+    User::LeaveIfError( telServer.Connect() );
+    RTelServer::TPhoneInfo teleinfo;
+    User::LeaveIfError( telServer.GetPhoneInfo( 0, teleinfo ) );
+    RMobilePhone phone;
+    User::LeaveIfError( phone.Open( telServer, teleinfo.iName ) );
+    User::LeaveIfError(phone.Initialise()); 
+    TUint32 teleidentityCaps;
+    phone.GetIdentityCaps( teleidentityCaps );
+    RMobilePhone::TMobilePhoneIdentityV1 telid;
+    TRequestStatus status;
+    phone.GetPhoneId( status, telid );
+    User::WaitForRequest( status );
+    TBuf <50> imei;
+    if (status==KErrNone)
+    {
+    TBuf<100> phoneName;
+    phoneName.Copy( telid.iModel );
+    imei.Copy(telid.iSerialNumber);
+    if( phoneName.Length()>0 )
+        {
+        val = hbTrId("txt_device_update_dblist_model");
+        str = QString::fromUtf16(phoneName.Ptr(), phoneName.Length());
+        FormatList(val,str);
+        }
+    }
+    phone.Close();
+    telServer.Close();
+
+    //type
+    if(typedesignator.Length()>0)
+        {
+        val = hbTrId("txt_device_update_dblist_type");
+        str = QString::fromUtf16(typedesignator.Ptr(), typedesignator.Length());
+        FormatList(val,str);
+        }
+      
+    //Product Code
+       /* TInt runtimesupport(0);
+        CRepository* cenrep = NULL;
+        TRAPD( error, cenrep = CRepository::NewL( KCRUidNSmlDMSyncApp ) );  
+        if(error)
+            {
+            runtimesupport=1;
+            }
+        if ( cenrep )
+                {
+                cenrep->Get( KNsmlDmRuntimeVerSupport, runtimesupport );
+                delete cenrep; cenrep = NULL;
+                }
+          if(runtimesupport)
+          { */
+         TBuf<KSysUtilVersionTextLength> productcode;
+         productcode.Zero();
+         TInt error = SysVersionInfo::GetVersionInfo(SysVersionInfo::EProductCode, productcode);
+         if(error ==KErrNone )
+         {            
+             if( productcode.Length()>0 )
+             {        
+             val = hbTrId("txt_device_update_dblist_product_code");
+             str = QString::fromUtf16(productcode.Ptr(), productcode.Length());  
+             FormatList(val,str);
+             }                    
+        }
+
+    //IMEI   
+    if(imei.Length()>0)
+        {
+        val = hbTrId("txt_device_update_dblist_imei");
+        str = QString::fromUtf16(imei.Ptr(), imei.Length()); 
+        FormatList(val,str);
+        }
+
+    
+    val = hbTrId("txt_device_update_button_update");
+    HbPushButton *updateButton = qobject_cast<HbPushButton*>(loader.findWidget("p:update"));
+    updateButton->setText(val);
+    QObject::connect(updateButton, SIGNAL(clicked()), this, SLOT(CheckforUpdate()));
+    updateButton = qobject_cast<HbPushButton*>(loader2.findWidget("l:update"));
+    updateButton->setText(val);
+    QObject::connect(updateButton, SIGNAL(clicked()), this, SLOT(CheckforUpdate()));
+    
+    val = hbTrId("txt_device_update_button_advanced");
+    HbPushButton *advancedButton = qobject_cast<HbPushButton*>(loader.findWidget("p:advanced")); 
+    advancedButton->setText(val);
+    QObject::connect(advancedButton, SIGNAL(clicked()), this, SLOT(AdvancedDeviceManager()));
+    advancedButton = qobject_cast<HbPushButton*>(loader2.findWidget("l:advanced"));
+    advancedButton->setText(val);
+    QObject::connect(advancedButton, SIGNAL(clicked()), this, SLOT(AdvancedDeviceManager()));
+
+    
+    mMainWindow->addView(fotaPortraitView);
+    mMainWindow->addView(fotaLandscapeView);
+    
+    if(mMainWindow->orientation()==Qt::Vertical)
+            mMainWindow->setCurrentView(fotaPortraitView);
+        else
+            mMainWindow->setCurrentView(fotaLandscapeView);
+    return ETrue;
+    }
+
+// -----------------------------------------------------------------------------
+// DMFotaView::CheckforUpdate
+// Checks for updates from the default server
+// -----------------------------------------------------------------------------
+//
+void DMFotaView::CheckforUpdate()
+ {
+    // if(no default profile defined)
+    HbDocumentLoader loader;
+    bool ok = false;
+    loader.load(":/xml/updatedialog.docml", &ok);
+    QString val;
+    // Exit if the file format is invalid
+    Q_ASSERT_X(ok, "Device Manager", "Invalid docml file");
+    HbDialog* dialog = qobject_cast<HbDialog*>(loader.findWidget("UpdateDialog"));
+    
+    label=qobject_cast<HbLabel*>(loader.findWidget("DialogText"));
+    val = hbTrId("txt_device_update_info_no_server_configured_to_get");
+    label->setPlainText(val);
+    dialog->setDismissPolicy(HbPopup::TapAnywhere);
+    dialog->setTimeout(HbPopup::StandardTimeout);
+    dialog->setAttribute(Qt::WA_DeleteOnClose, true);
+    dialog->exec();
+    //Else connect
+    /*TInt iProfileId= 1000000;
+    iSession.OpenL();
+    profile.OpenL(iSession,iProfileId);
+    //openconnection
+    iSyncJob.CreateL( iSession, iProfileId );*/
+ }
+
+// -----------------------------------------------------------------------------
+// DMFotaView::AdvancedDeviceManager
+// Displays the Profiles view
+// -----------------------------------------------------------------------------
+//
+void DMFotaView::AdvancedDeviceManager()
+ {
+    
+    qDebug("omadm DeviceManagerUi::AdvancedDeviceManager");
+    if(!profilesView)
+        {
+    qDebug("omadm DeviceManagerUi::AdvancedDeviceManager 1");
+    profilesView = new DmAdvancedView(mMainWindow,this);
+    qDebug("omadm DeviceManagerUi::AdvancedDeviceManager 2");
+        bool loadingok = profilesView->displayItems();
+        if(loadingok)
+            {qDebug("omadm DeviceManagerUi::AdvancedDeviceManager 3");
+        mMainWindow->addView(profilesView);
+        qDebug("omadm DeviceManagerUi::AdvancedDeviceManager 4");
+        profilesView->setBackBehavior();  
+        qDebug("omadm DeviceManagerUi::AdvancedDeviceManager 5");
+        mMainWindow->setCurrentView(profilesView);
+        qDebug("omadm DeviceManagerUi::AdvancedDeviceManager 6");
+            }
+        else
+            {
+        qFatal("omadm Unable to read groupbox.docml");
+        
+            }
+        }
+    else
+        {
+        profilesView->setBackBehavior();                
+        mMainWindow->setCurrentView(profilesView);   
+        }
+ }
+
+// -----------------------------------------------------------------------------
+// DMFotaView::FormatList
+// Adds data to the details list
+// -----------------------------------------------------------------------------
+//
+void DMFotaView::FormatList(QString val,QString str)
+    {
+    label = qobject_cast<HbLabel*> (loader.findWidget(list1[i]));
+    label2 = qobject_cast<HbLabel*> (loader2.findWidget(list2[i++]));         
+    label3 = qobject_cast<HbLabel*> (loader.findWidget(list1[i]));
+    label4 = qobject_cast<HbLabel*> (loader2.findWidget(list2[i++]));
+    label->setPlainText(val);
+    label2->setPlainText(val);
+    label3->setPlainText(str);
+    label4->setPlainText(str);
+    label->setVisible(ETrue);
+    label2->setVisible(ETrue);
+    label3->setVisible(ETrue);
+    label4->setVisible(ETrue);
+    }
+// -----------------------------------------------------------------------------
+// DMFotaView::backtoMainWindow
+// Enables switching between views
+// -----------------------------------------------------------------------------
+//
+void DMFotaView::backtoMainWindow()
+    {
+        qApp->quit();
+    }
+
+// -----------------------------------------------------------------------------
+// DMFotaView::OnHelp
+// Displays Help contents
+// -----------------------------------------------------------------------------
+//
+void DMFotaView::OnHelp()
+{   
+}
+
+// -----------------------------------------------------------------------------
+// DMFotaView::OnExit
+// -----------------------------------------------------------------------------
+//
+void DMFotaView::OnExit()
+{
+    qApp->quit();
+}
+
+void DMFotaView::readSection( Qt::Orientation orientation )
+{
+    if(mMainWindow->currentView() == fotaPortraitView || mMainWindow->currentView() == fotaLandscapeView)
+        {
+        if( orientation == Qt::Vertical ) {
+        // reading "portrait" section
+        mMainWindow->setCurrentView(fotaPortraitView);
+        }
+     else {
+        // reading "landscape" section
+        mMainWindow->setCurrentView(fotaLandscapeView);
+         }
+        }
+    else if(mMainWindow->currentView()==profilesView)
+        {
+        profilesView->reLayout(orientation);
+        }
+
+}   
+
+
+