phonebookui/cntcommonui/views/cntimportsview.cpp
changeset 72 6abfb1094884
child 81 640d30f4fb64
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/cntcommonui/views/cntimportsview.cpp	Tue Sep 21 17:07:25 2010 +0300
@@ -0,0 +1,311 @@
+/*
+* Copyright (c) 2009 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:  
+*
+*/
+
+#include <QString.h>
+
+#include "cntimportsview.h"
+#include "cntglobal.h"
+
+#include "cntsimengine.h"
+
+#include <hbpushbutton.h>
+#include <hbaction.h>
+#include <hbview.h>
+#include <hbmenu.h>
+#include <hbframebackground.h>
+#include <QStandardItemModel>
+#include <hbmainwindow.h>
+#include <hblabel.h>
+#include <hblistview.h>
+#include <QTimer>
+#include <hbnotificationdialog.h>
+#include <hbmessagebox.h>
+#include <hbprogressbar.h>
+#include <QGraphicsLinearLayout>
+#include <hbframebackground.h>
+#include <hbabstractviewitem.h>
+#include <hbextendedlocale.h>
+#include <hbparameterlengthlimiter.h>
+#include <hblistviewitem.h>
+#include <hbstringutil.h>
+#include <QCoreApplication>
+#include <hbdevicenotificationdialog.h>
+#include <cntdebug.h>
+
+const char *CNT_IMPORT_UI_XML = ":/xml/contacts_sim.docml";
+
+CntImportsView::CntImportsView() : mViewManager(0),
+    mSimEngine(0),
+    mListView(0),
+    mView(0),
+    mSoftkey(0),
+    mModel(0),
+    mImportSimPopup(0),
+    mEngine(0)
+{
+    CNT_ENTRY
+    CNT_LOG_ARGS(QString("All bools reset"));
+    bool ok = false;
+    mDocumentLoader.load(CNT_IMPORT_UI_XML, &ok);
+
+    if (ok)
+    {
+        mView = static_cast<HbView*>(mDocumentLoader.findWidget(QString("view")));
+    }
+    else
+    {
+        qFatal("Unable to read :/xml/contacts_sim.docml");
+    }
+    
+    mSimEngine = new CntSimEngine(*this, *mView);
+
+    //back button
+    mSoftkey = new HbAction(Hb::BackNaviAction, mView);
+    connect(mSoftkey, SIGNAL(triggered()), this, SLOT(showPreviousView()));
+    connect(mSimEngine, SIGNAL(showNamesView()), this, SLOT(showPreviousView()));
+    connect(mSimEngine, SIGNAL(closePopup()), this, SLOT(closeImportPopup()));
+    CNT_EXIT
+      
+}
+
+void CntImportsView::deactivate()
+{
+}
+
+   
+CntImportsView::~CntImportsView()
+{
+    CNT_ENTRY
+    mView->deleteLater();
+    delete mModel;
+    delete mSimEngine;
+    CNT_EXIT
+}
+
+/*!
+Activates a previous view
+*/
+void CntImportsView::showPreviousView()
+{
+    CNT_ENTRY
+    CntViewParameters args;
+    mViewManager->back(args);
+    CNT_EXIT
+}
+
+void CntImportsView::closeImportPopup()
+{
+    CNT_ENTRY
+    if (mImportSimPopup != NULL)
+    {
+        mImportSimPopup->close();
+        mImportSimPopup = NULL;     // Dilaog is deleted on close()
+    }
+    CNT_EXIT
+}
+
+/*
+Activates a default view
+*/
+void CntImportsView::activate(const CntViewParameters aArgs)
+{
+    CNT_ENTRY
+   Q_UNUSED(aArgs);
+    //back button
+          
+    if (mView->navigationAction() != mSoftkey)
+    {
+        mView->setNavigationAction(mSoftkey);
+    }
+            
+    mViewManager = &mEngine->viewManager();  
+    QContactManager *ContactSymbianManager = &mEngine->contactManager(SYMBIAN_BACKEND);
+ 
+    mModel = new QStandardItemModel();
+
+    mSimEngine->init(*mEngine);
+    
+    mListView = static_cast<HbListView*>(mDocumentLoader.findWidget(QString("listView")));
+    
+    HbFrameBackground frame;
+    frame.setFrameGraphicsName("qtg_fr_list_normal");
+    frame.setFrameType(HbFrameDrawer::NinePieces);
+    mListView->itemPrototypes().first()->setDefaultFrame(frame);
+    mListView->listItemPrototype()->setStretchingStyle(HbListViewItem::StretchLandscape);
+    mListView->setUniformItemSizes(true);
+    
+    connect(mListView, SIGNAL(activated (const QModelIndex&)),
+                                      this,  SLOT(onListViewActivated(const QModelIndex&)));
+       
+    
+    QStandardItem *importItem = new QStandardItem();
+    QStringList simList;
+        
+    mSimEngine->checkEntries(simList, *importItem);
+    
+    importItem->setData(simList, Qt::DisplayRole);
+    importItem->setData(HbIcon("qtg_large_sim"), Qt::DecorationRole);   
+     
+    mModel->insertRow(0,importItem);
+        
+    mListView->setModel(mModel);
+    mListView->setSelectionMode(HbAbstractItemView::NoSelection);
+    connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(userCancelsImport()));
+    CNT_EXIT
+}
+
+
+void CntImportsView::onListViewActivated(const QModelIndex &index)
+{
+    CNT_ENTRY
+    int row = index.row();
+    if ( row == 0 ) // row 0 has "Imports from SIM" 
+    {
+       if (!mSimEngine->startSimImport())
+       {
+           //show error note
+           mSimEngine->simInfoErrorMessage(KErrAccessDenied);
+       }
+       else
+       {
+           //start popup and progress
+           showWaitNote();
+       }
+    }        
+    CNT_EXIT
+    
+ }
+
+void CntImportsView::showWaitNote()
+{
+    CNT_ENTRY
+    mImportSimPopup = new HbDialog();    
+    mImportSimPopup->setDismissPolicy(HbPopup::NoDismiss);
+    mImportSimPopup->setTimeout(HbPopup::NoTimeout);
+    mImportSimPopup->setBackgroundFaded(true);
+    mImportSimPopup->setAttribute(Qt::WA_DeleteOnClose, true);
+    
+    HbLabel *headingLabel = new HbLabel(mImportSimPopup);
+    headingLabel->setPlainText(hbTrId("txt_phob_title_import_contacts")); 
+    mImportSimPopup->setHeadingWidget(headingLabel);
+    
+    QGraphicsLinearLayout *containerLayout = new QGraphicsLinearLayout(Qt::Vertical);
+    containerLayout->setContentsMargins(0, 0, 0, 0);
+    containerLayout->setSpacing(10);
+    
+    HbLabel *icon = new HbLabel(mImportSimPopup);
+    icon->setIcon(HbIcon("qtg_large_sim"));  
+    
+    HbLabel *simText= new HbLabel(mImportSimPopup);
+    simText->setPlainText(hbTrId("txt_phob_info_importing_contacts_from_sim")); 
+    simText->setTextWrapping(Hb::TextWordWrap);
+    simText->setElideMode(Qt::ElideNone);
+    
+    HbProgressBar *progressBar = new HbProgressBar(mImportSimPopup);
+    progressBar->setRange(0,0); 
+    
+    HbPushButton *stopButton = new HbPushButton(mImportSimPopup);
+    stopButton->setText(hbTrId("txt_phob_button_cancel"));
+    connect(stopButton, SIGNAL(clicked()), mSimEngine, SLOT(stopSimImport()));
+    
+    QGraphicsLinearLayout *containerLayout1 = new QGraphicsLinearLayout(Qt::Horizontal);
+    containerLayout1->addItem(icon);
+    containerLayout1->addItem(simText);
+    
+    QGraphicsWidget *containerWidget = new QGraphicsWidget;    
+    containerLayout->addItem(containerLayout1);
+    containerLayout->addItem(progressBar);
+    containerLayout->addItem(stopButton);  
+    containerWidget->setLayout(containerLayout);
+    mImportSimPopup->setContentWidget(containerWidget);
+    mImportSimPopup->open();
+    CNT_EXIT
+}
+
+void CntImportsView::setPreferredDetails( QContact *aContact )
+{
+    CNT_ENTRY
+    mSimEngine->setPreferredDetails(*aContact);
+    CNT_EXIT
+}
+
+
+void CntImportsView::userCancelsImport()
+{   
+    CNT_ENTRY
+    QString results;
+    
+    if(mSimEngine->userCancelsImport(results))
+    {
+        HbDeviceNotificationDialog::notification(QString(),results);
+    }
+    CNT_EXIT
+}
+
+
+void CntImportsView::setListBoxItemText(QString& aPrimary, QString& aSecondary)
+{
+    CNT_ENTRY
+    QList<QStandardItem*> importItems = mModel->takeRow(0);
+    QStandardItem* importItem = NULL;
+    if (importItems.count() > 0) {
+        importItem = importItems.at(0);
+    }
+    
+    if (importItem != NULL)
+    {
+        QStringList simList;
+        
+        simList << aPrimary;
+        simList << aSecondary;
+        
+        importItem->setData(simList, Qt::DisplayRole);
+        importItem->setData(HbIcon("qtg_large_sim"), Qt::DecorationRole);
+        mModel->insertRow(0, importItem);
+        mListView->reset();
+    }
+    CNT_EXIT
+}
+
+void CntImportsView::setListBoxItemEnabled(bool aEnabled)
+{
+    CNT_ENTRY
+    QList<QStandardItem*> importItems = mModel->takeRow(0);
+    QStandardItem* importItem = NULL;
+    if ( !importItems.isEmpty() )
+    {
+       importItem = importItems.first();
+    }
+    
+    if (importItem != NULL)
+    {
+       importItem->setEnabled(aEnabled);
+    }
+    CNT_EXIT
+}
+
+QContactManager *CntImportsView::contactSymbianManager()
+{
+    if (mSimEngine)
+    {
+        return mSimEngine->contactSymbianManager();
+    }
+    
+    return NULL;
+}
+
+// EOF