clientprovisioning/cpqtsp/src/CpQtSpView.cpp
changeset 30 d3981f4fe6a4
child 52 6e38e48ee756
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clientprovisioning/cpqtsp/src/CpQtSpView.cpp	Fri Jun 11 13:29:40 2010 +0300
@@ -0,0 +1,467 @@
+/*
+* Copyright (c) 2002 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: 
+*     Bio control for Provisioning documents.
+*
+*/
+
+#include <hbapplication.h>
+#include <hbtoolbar.h>
+#include <hbaction.h>
+#include <HbMenu.h>
+#include <HbTextItem>
+#include <HbFontSpec>
+#include <HbMessageBox>
+#include <QGraphicsLinearLayout>
+#include <xqserviceprovider.h>
+#include <xqservicerequest.h>
+#include <xqserviceutil.h>
+#include <e32base.h>
+#include <flogger.h>
+#include <CWPNameValue.h>
+#include <CWPEngine.h>
+#include <CpQtSpView.h>
+#include <CpQtSpMainWindow.h>
+#include <HbGroupBox>
+#include <HbListWidget>
+#include <HbListWidgetItem>
+#include <HbLabel>
+#include <MSVSTD.H>
+#include <SMSCLNT.H>
+#include <MTCLREG.H>
+#include <SMUTHDR.H>
+#include <QDateTime>
+#include "ProvisioningDebug.h"
+#include "ProvisioningUIDs.h"
+#include <CWPBioControl.h>
+const QString DATE_TIME_FORMAT("dd.MM.yy hh:mm");
+
+// ----------------------------------------------------------------------------
+// CpQtSpView::CpQtSpView
+// Description: Construtor
+// ----------------------------------------------------------------------------
+
+
+CpQtSpView::CpQtSpView(CpQtSp* service,CpQtSpMainWindow* ptr, QGraphicsItem *parent)
+    : HbView(parent), iServiceProvider(service), window(ptr)
+{ 
+       setTitle(hbTrId("txt_device_update_title_messaging"));
+       iViewStatus = true;
+       iOrientationFlag = false;
+}
+
+// ----------------------------------------------------------------------------
+// CpQtSpView::~CpQtSpView
+// Description: Destructor
+// ----------------------------------------------------------------------------
+
+
+CpQtSpView::~CpQtSpView()
+{
+}
+
+// ----------------------------------------------------------------------------
+// CpQtSpView::corruptMessageDialog
+// Description: Construction of view for provisioning message
+// ----------------------------------------------------------------------------
+
+void CpQtSpView::corruptMessageDialog(HbAction *action)
+{
+    HbMessageBox *dlg = static_cast<HbMessageBox*>(sender());
+    if(action == dlg->primaryAction())
+    {
+    window->closeWindow();
+    }   
+}
+// ----------------------------------------------------------------------------
+// CpQtSpView::constructView
+// Description: Construction of view for provisioning message
+// ----------------------------------------------------------------------------
+
+void CpQtSpView::constructView()
+{
+    iBio = iServiceProvider->returnBio();
+    TInt err( KErrNone );
+    TRAP(err, array = iBio->CollectItemsLC(); CleanupStack::Pop());
+   
+    if(err != KErrNone)
+    	{
+        array->ResetAndDestroy();
+        HbMessageBox *box = new HbMessageBox(hbTrId("txt_device_update_info_unable_to_open_message_f"));
+    	box->setAttribute(Qt::WA_DeleteOnClose);
+    	box->setTimeout(HbPopup::NoTimeout);
+    	box->open(this,SLOT(corruptMessageDialog(HbAction*)));        
+    	}
+    else
+        {
+        window->buildView();
+        }
+} 
+// ----------------------------------------------------------------------------
+// CpQtSpView::buildView
+// Description: Construction of view for provisioning message
+// ----------------------------------------------------------------------------
+
+bool CpQtSpView::buildView(QGraphicsLinearLayout* layout)
+{
+    //Gather information about provisioning message
+    TMsvId tmsvid = iServiceProvider->returnId();
+    CMsvSession* session = iServiceProvider->returnSession();
+    CMsvEntry* entry = session->GetEntryL(tmsvid);
+    entry->SetEntryL(tmsvid);
+    TMsvEntry index = entry->Entry();
+    
+    // Details about message sender    
+    TBufC<KLENGTH> details = index.iDetails;
+    QString fromStringName((QChar*)details.Ptr(),details.Length());
+    QString fromString = "From: ";    
+    QString from;
+    from.append(fromString);
+    from.append(fromStringName);
+    
+
+    
+    //Construction of group box
+    group = new HbGroupBox();
+    connect(group,SIGNAL(toggled(bool)),this,SLOT(expand()));
+    group->setHeading(fromStringName);            
+    HbLabel* label = new HbLabel(from);
+    group->setContentWidget(label);
+    group->setCollapsed(true);
+    orientationChanges();
+    layout->addItem(group);
+    iOrientationFlag = true;
+    //Message recieved time
+    _LIT(KUnixEpoch, "19700000:000000.000000");
+    QDateTime retTimeStamp;
+    TTime timeStamp = index.iDate;
+    TTime unixEpoch(KUnixEpoch);
+    TTimeIntervalSeconds seconds;
+    timeStamp.SecondsFrom(unixEpoch, seconds);
+    timeStamp.DaysFrom(unixEpoch);     
+    retTimeStamp.setTime_t(seconds.Int());
+    QString qtime = retTimeStamp.toString(DATE_TIME_FORMAT);      
+    HbTextItem* time = new HbTextItem(qtime,this);
+    layout->addItem(time);
+    
+    //Blank Line    
+    HbTextItem* blankLine = new HbTextItem("", this);    
+    layout->addItem(blankLine);    
+    
+    //Details about save message
+    QString cfgMsg = hbTrId("txt_device_update_dblist_configuration_message");
+    QString saveMsg = hbTrId("txt_device_update_dblist_product_code_val_save_to");
+    HbTextItem* mPrimaryItem1 = new HbTextItem(cfgMsg, this);
+    HbTextItem* mSecondaryItem2 = new HbTextItem(saveMsg, this);
+    
+    //Provisioning setting details
+    iPrimaryFont = new HbFontSpec(HbFontSpec::Primary);
+    iSecondaryFont = new HbFontSpec(HbFontSpec::Secondary);
+    
+    QFont font = iPrimaryFont->font();
+    mPrimaryItem1->setFont(font);
+            
+    font = iSecondaryFont->font();
+    mSecondaryItem2->setFont(font);
+    
+    layout->addItem(mPrimaryItem1);
+    layout->addItem(mSecondaryItem2);
+
+    
+    TBufC<KLENGTH> Name;
+    TBufC<KLENGTH> Value;    
+    HbTextItem* mPrimaryItem[100];
+    HbTextItem* mSecondaryItem[KLENGTH];
+    HbTextItem* mBlank[KLENGTH];
+    
+    QFont pfont = iPrimaryFont->font();
+    QFont sfont = iSecondaryFont->font();      
+    
+    
+	TBuf<KLENGTH> currentTitle(KNullDesC);
+	
+    for( TInt item = 0; item < array->Count(); item++ )
+    {  	
+    	CWPNameValue* pair = ((*array)[item]);
+    	Name = pair->Name();
+    	if(Name.Compare(currentTitle) !=0 )
+    	{
+    	QString qname((QChar*)Name.Ptr(),Name.Length());
+    	mPrimaryItem[item] = new HbTextItem(qname);    	
+    	mPrimaryItem[item]->setFont(pfont); 
+    	mBlank[item] = new HbTextItem("", this);
+    	mBlank[item]->setFont(pfont);    	
+    	layout->addItem(mBlank[item]);
+    	layout->addItem(mPrimaryItem[item]);
+    	currentTitle.Copy(Name);
+    	}
+    	    	
+    	Value = pair->Value();
+    	QString qvalue((QChar*)Value.Ptr(),Value.Length());   
+    	mSecondaryItem[item] = new HbTextItem(qvalue);
+    	mSecondaryItem[item]->setFont(sfont);
+    	layout->addItem(mSecondaryItem[item]);  
+   }
+
+    array->ResetAndDestroy();
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+// CpQtSpView::saveProvisoningMessage
+// Description: Saves the provisioning message
+// ----------------------------------------------------------------------------
+
+
+void CpQtSpView::saveProvisoningMessage()
+{
+    iBio->SaveSettingsL();
+}
+
+// ----------------------------------------------------------------------------
+// CpQtSpView::expand
+// Description: Alignement of groupbox according to orientation
+// ----------------------------------------------------------------------------
+
+
+void CpQtSpView::expand()
+	{
+    this->orientationChanges();	
+	}
+
+// ----------------------------------------------------------------------------
+// CpQtSpView::orientationChanges
+// Description: Group box orientation changes
+// ----------------------------------------------------------------------------
+
+void CpQtSpView::orientationChanges()
+    {
+    if(window->orientation() == Qt::Horizontal)
+       {   
+           if(!group->isCollapsed())
+           {
+             group->setMinimumSize(KLANDSCAPE,KEXPANDED);
+             group->setMaximumSize(KLANDSCAPE,KEXPANDED);            
+           }
+           else
+           {       
+             group->setMinimumSize(KLANDSCAPE,KCOLLAPSED);
+             group->setMaximumSize(KLANDSCAPE,KCOLLAPSED);               
+           }
+       }
+       else
+       {
+           if(!group->isCollapsed())
+           {
+             group->setMinimumSize(KPORTRAIT,KEXPANDED);
+             group->setMaximumSize(KPORTRAIT,KEXPANDED);         
+           }
+           else
+           {       
+             group->setMinimumSize(KPORTRAIT,KCOLLAPSED);
+             group->setMaximumSize(KPORTRAIT,KCOLLAPSED);                
+           }
+       }
+    }
+    
+// ----------------------------------------------------------------------------
+// CpQtSpView::getOrientationFlag
+// Description: Get the Orientation status
+// ----------------------------------------------------------------------------
+bool CpQtSpView::getOrientationFlag()
+    {
+    return iOrientationFlag;
+    }
+// ----------------------------------------------------------------------------
+// CpQtSpView::setHorizontal
+// Description: Landscape alignment
+// ----------------------------------------------------------------------------
+
+
+void CpQtSpView::setHorizontal()
+	{
+  	if(!group->isCollapsed())
+			{
+	  		group->setMinimumSize(KPORTRAIT,KEXPANDED);
+	  		group->setMaximumSize(KPORTRAIT,KEXPANDED);			
+		 	}
+			else
+			{		
+				group->setMinimumSize(KPORTRAIT,KCOLLAPSED);
+		   	group->setMaximumSize(KPORTRAIT,KCOLLAPSED);				
+			}
+	 
+	}
+
+// ----------------------------------------------------------------------------
+// CpQtSpView::setVertical
+// Description: Portrait alignment
+// ----------------------------------------------------------------------------
+
+
+void CpQtSpView::setVertical()
+	{
+  	if(!group->isCollapsed())
+			{
+	  		group->setMinimumSize(KLANDSCAPE,KEXPANDED);
+	  		group->setMaximumSize(KLANDSCAPE,KEXPANDED);			
+		 	}
+			else
+			{		
+				group->setMinimumSize(KLANDSCAPE,KCOLLAPSED);
+		   	group->setMaximumSize(KLANDSCAPE,KCOLLAPSED);				
+			}
+	}
+
+// ----------------------------------------------------------------------------
+// CpQtSpView::deleteMessage
+// Description: Deletion of provisioning message
+// ----------------------------------------------------------------------------
+
+
+void CpQtSpView::deleteMessage()
+{   
+    TMsvId entryID = iServiceProvider->returnId();
+    CMsvSession* session = iServiceProvider->returnSession();
+    CMsvEntry* entry = session->GetEntryL(entryID);
+    CleanupStack::PushL(entry);
+    entry->DeleteL(entryID);
+    CleanupStack::PopAndDestroy(entry);
+    window->close();
+}
+
+
+
+// ----------------------------------------------------------------------------
+// CpQtSpView::requestCompleted
+// Description: Framework call
+// ----------------------------------------------------------------------------
+
+void CpQtSpView::requestCompleted(const QVariant& /*value*/)
+{
+}
+
+// ----------------------------------------------------------------------------
+// CpQtSp::CpQtSp
+// Description: constructor
+// ----------------------------------------------------------------------------
+
+
+CpQtSp::CpQtSp(CpQtSpMainWindow *ptr, QObject* parent)
+: XQServiceProvider("com.nokia.services.MDM.Provisioning",parent)
+{  
+    window = ptr;
+    publishAll();
+}
+
+// ----------------------------------------------------------------------------
+// CpQtSp::~CpQtSp
+// Description: destructor
+// ----------------------------------------------------------------------------
+
+CpQtSp::~CpQtSp()
+{
+	delete iObserver;
+	delete iSession;
+	delete iBioCtrl;
+}
+
+// ----------------------------------------------------------------------------
+// CpQtSp::complete
+// Description: Framework call
+// ----------------------------------------------------------------------------
+
+void CpQtSp::complete()
+{
+   QString retvalue ="";
+   completeRequest(1,retvalue);
+}
+
+// ----------------------------------------------------------------------------
+// CpQtSp::ProcessMessage
+// Description: Messaging application calls this function via QTHighway
+// ----------------------------------------------------------------------------
+
+QString CpQtSp::ProcessMessage(const QString& tmsvid)
+{
+    iId = tmsvid.toInt();	
+    TMsvSelectionOrdering sort;    
+    sort.SetShowInvisibleEntries(ETrue); 
+    iObserver = new(ELeave) CObserver;
+    iSession = CMsvSession::OpenSyncL(*iObserver); 
+    iBioCtrl = CWPBioControl::NewL(iSession,iId,this); 
+    iBioCtrl->RestoreMsgL();
+    return "";
+}
+
+void CpQtSp::authenticationStatus()
+{
+    TInt ret = iBioCtrl->getAuth();    
+    switch(ret)
+    {
+		  case KAUTENTICATIONCANCEL:
+		  	{
+     		window->close();
+     		}
+     		break;
+     	
+     	case KAUTENTICATIONFAILURE:
+     		{     			
+     		CMsvEntry* entry = iSession->GetEntryL(iId);
+    		CleanupStack::PushL(entry);
+    		entry->DeleteL(iId);
+    		CleanupStack::PopAndDestroy(entry);
+    		window->close();
+    		}
+    		break;
+
+     	case KAUTENTICATIONSUCCESS:
+     		{
+     		iBioCtrl->updateAuthetication();
+    		emit showView();
+		    setCurrentRequestAsync();
+		  	}
+        break;
+    }    
+}
+
+// ----------------------------------------------------------------------------
+// CpQtSp::returnId
+// Description: used by CpQtSpView
+// ----------------------------------------------------------------------------
+
+TMsvId CpQtSp::returnId()
+{
+	return iId;
+}
+
+// ----------------------------------------------------------------------------
+// CpQtSp::returnSession
+// Description: used by CpQtSpView
+// ----------------------------------------------------------------------------
+
+CMsvSession* CpQtSp::returnSession()
+{
+  return iSession;
+}
+
+// ----------------------------------------------------------------------------
+// CpQtSp::returnBio
+// Description: used by CpQtSpView
+// ----------------------------------------------------------------------------
+
+CWPBioControl* CpQtSp::returnBio()
+	{
+		return iBioCtrl;
+	}