phonebookui/cntcommonui/views/cntimportsview.cpp
author hgs
Tue, 21 Sep 2010 17:07:25 +0300
changeset 72 6abfb1094884
child 81 640d30f4fb64
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
72
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include <QString.h>
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#include "cntimportsview.h"
hgs
parents:
diff changeset
    21
#include "cntglobal.h"
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include "cntsimengine.h"
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include <hbpushbutton.h>
hgs
parents:
diff changeset
    26
#include <hbaction.h>
hgs
parents:
diff changeset
    27
#include <hbview.h>
hgs
parents:
diff changeset
    28
#include <hbmenu.h>
hgs
parents:
diff changeset
    29
#include <hbframebackground.h>
hgs
parents:
diff changeset
    30
#include <QStandardItemModel>
hgs
parents:
diff changeset
    31
#include <hbmainwindow.h>
hgs
parents:
diff changeset
    32
#include <hblabel.h>
hgs
parents:
diff changeset
    33
#include <hblistview.h>
hgs
parents:
diff changeset
    34
#include <QTimer>
hgs
parents:
diff changeset
    35
#include <hbnotificationdialog.h>
hgs
parents:
diff changeset
    36
#include <hbmessagebox.h>
hgs
parents:
diff changeset
    37
#include <hbprogressbar.h>
hgs
parents:
diff changeset
    38
#include <QGraphicsLinearLayout>
hgs
parents:
diff changeset
    39
#include <hbframebackground.h>
hgs
parents:
diff changeset
    40
#include <hbabstractviewitem.h>
hgs
parents:
diff changeset
    41
#include <hbextendedlocale.h>
hgs
parents:
diff changeset
    42
#include <hbparameterlengthlimiter.h>
hgs
parents:
diff changeset
    43
#include <hblistviewitem.h>
hgs
parents:
diff changeset
    44
#include <hbstringutil.h>
hgs
parents:
diff changeset
    45
#include <QCoreApplication>
hgs
parents:
diff changeset
    46
#include <hbdevicenotificationdialog.h>
hgs
parents:
diff changeset
    47
#include <cntdebug.h>
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
const char *CNT_IMPORT_UI_XML = ":/xml/contacts_sim.docml";
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
CntImportsView::CntImportsView() : mViewManager(0),
hgs
parents:
diff changeset
    52
    mSimEngine(0),
hgs
parents:
diff changeset
    53
    mListView(0),
hgs
parents:
diff changeset
    54
    mView(0),
hgs
parents:
diff changeset
    55
    mSoftkey(0),
hgs
parents:
diff changeset
    56
    mModel(0),
hgs
parents:
diff changeset
    57
    mImportSimPopup(0),
hgs
parents:
diff changeset
    58
    mEngine(0)
hgs
parents:
diff changeset
    59
{
hgs
parents:
diff changeset
    60
    CNT_ENTRY
hgs
parents:
diff changeset
    61
    CNT_LOG_ARGS(QString("All bools reset"));
hgs
parents:
diff changeset
    62
    bool ok = false;
hgs
parents:
diff changeset
    63
    mDocumentLoader.load(CNT_IMPORT_UI_XML, &ok);
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
    if (ok)
hgs
parents:
diff changeset
    66
    {
hgs
parents:
diff changeset
    67
        mView = static_cast<HbView*>(mDocumentLoader.findWidget(QString("view")));
hgs
parents:
diff changeset
    68
    }
hgs
parents:
diff changeset
    69
    else
hgs
parents:
diff changeset
    70
    {
hgs
parents:
diff changeset
    71
        qFatal("Unable to read :/xml/contacts_sim.docml");
hgs
parents:
diff changeset
    72
    }
hgs
parents:
diff changeset
    73
    
hgs
parents:
diff changeset
    74
    mSimEngine = new CntSimEngine(*this, *mView);
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
    //back button
hgs
parents:
diff changeset
    77
    mSoftkey = new HbAction(Hb::BackNaviAction, mView);
hgs
parents:
diff changeset
    78
    connect(mSoftkey, SIGNAL(triggered()), this, SLOT(showPreviousView()));
hgs
parents:
diff changeset
    79
    connect(mSimEngine, SIGNAL(showNamesView()), this, SLOT(showPreviousView()));
hgs
parents:
diff changeset
    80
    connect(mSimEngine, SIGNAL(closePopup()), this, SLOT(closeImportPopup()));
hgs
parents:
diff changeset
    81
    CNT_EXIT
hgs
parents:
diff changeset
    82
      
hgs
parents:
diff changeset
    83
}
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
void CntImportsView::deactivate()
hgs
parents:
diff changeset
    86
{
hgs
parents:
diff changeset
    87
}
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
   
hgs
parents:
diff changeset
    90
CntImportsView::~CntImportsView()
hgs
parents:
diff changeset
    91
{
hgs
parents:
diff changeset
    92
    CNT_ENTRY
hgs
parents:
diff changeset
    93
    mView->deleteLater();
hgs
parents:
diff changeset
    94
    delete mModel;
hgs
parents:
diff changeset
    95
    delete mSimEngine;
hgs
parents:
diff changeset
    96
    CNT_EXIT
hgs
parents:
diff changeset
    97
}
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
/*!
hgs
parents:
diff changeset
   100
Activates a previous view
hgs
parents:
diff changeset
   101
*/
hgs
parents:
diff changeset
   102
void CntImportsView::showPreviousView()
hgs
parents:
diff changeset
   103
{
hgs
parents:
diff changeset
   104
    CNT_ENTRY
hgs
parents:
diff changeset
   105
    CntViewParameters args;
hgs
parents:
diff changeset
   106
    mViewManager->back(args);
hgs
parents:
diff changeset
   107
    CNT_EXIT
hgs
parents:
diff changeset
   108
}
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
void CntImportsView::closeImportPopup()
hgs
parents:
diff changeset
   111
{
hgs
parents:
diff changeset
   112
    CNT_ENTRY
hgs
parents:
diff changeset
   113
    if (mImportSimPopup != NULL)
hgs
parents:
diff changeset
   114
    {
hgs
parents:
diff changeset
   115
        mImportSimPopup->close();
hgs
parents:
diff changeset
   116
        mImportSimPopup = NULL;     // Dilaog is deleted on close()
hgs
parents:
diff changeset
   117
    }
hgs
parents:
diff changeset
   118
    CNT_EXIT
hgs
parents:
diff changeset
   119
}
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
/*
hgs
parents:
diff changeset
   122
Activates a default view
hgs
parents:
diff changeset
   123
*/
hgs
parents:
diff changeset
   124
void CntImportsView::activate(const CntViewParameters aArgs)
hgs
parents:
diff changeset
   125
{
hgs
parents:
diff changeset
   126
    CNT_ENTRY
hgs
parents:
diff changeset
   127
   Q_UNUSED(aArgs);
hgs
parents:
diff changeset
   128
    //back button
hgs
parents:
diff changeset
   129
          
hgs
parents:
diff changeset
   130
    if (mView->navigationAction() != mSoftkey)
hgs
parents:
diff changeset
   131
    {
hgs
parents:
diff changeset
   132
        mView->setNavigationAction(mSoftkey);
hgs
parents:
diff changeset
   133
    }
hgs
parents:
diff changeset
   134
            
hgs
parents:
diff changeset
   135
    mViewManager = &mEngine->viewManager();  
hgs
parents:
diff changeset
   136
    QContactManager *ContactSymbianManager = &mEngine->contactManager(SYMBIAN_BACKEND);
hgs
parents:
diff changeset
   137
 
hgs
parents:
diff changeset
   138
    mModel = new QStandardItemModel();
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
    mSimEngine->init(*mEngine);
hgs
parents:
diff changeset
   141
    
hgs
parents:
diff changeset
   142
    mListView = static_cast<HbListView*>(mDocumentLoader.findWidget(QString("listView")));
hgs
parents:
diff changeset
   143
    
hgs
parents:
diff changeset
   144
    HbFrameBackground frame;
hgs
parents:
diff changeset
   145
    frame.setFrameGraphicsName("qtg_fr_list_normal");
hgs
parents:
diff changeset
   146
    frame.setFrameType(HbFrameDrawer::NinePieces);
hgs
parents:
diff changeset
   147
    mListView->itemPrototypes().first()->setDefaultFrame(frame);
hgs
parents:
diff changeset
   148
    mListView->listItemPrototype()->setStretchingStyle(HbListViewItem::StretchLandscape);
hgs
parents:
diff changeset
   149
    mListView->setUniformItemSizes(true);
hgs
parents:
diff changeset
   150
    
hgs
parents:
diff changeset
   151
    connect(mListView, SIGNAL(activated (const QModelIndex&)),
hgs
parents:
diff changeset
   152
                                      this,  SLOT(onListViewActivated(const QModelIndex&)));
hgs
parents:
diff changeset
   153
       
hgs
parents:
diff changeset
   154
    
hgs
parents:
diff changeset
   155
    QStandardItem *importItem = new QStandardItem();
hgs
parents:
diff changeset
   156
    QStringList simList;
hgs
parents:
diff changeset
   157
        
hgs
parents:
diff changeset
   158
    mSimEngine->checkEntries(simList, *importItem);
hgs
parents:
diff changeset
   159
    
hgs
parents:
diff changeset
   160
    importItem->setData(simList, Qt::DisplayRole);
hgs
parents:
diff changeset
   161
    importItem->setData(HbIcon("qtg_large_sim"), Qt::DecorationRole);   
hgs
parents:
diff changeset
   162
     
hgs
parents:
diff changeset
   163
    mModel->insertRow(0,importItem);
hgs
parents:
diff changeset
   164
        
hgs
parents:
diff changeset
   165
    mListView->setModel(mModel);
hgs
parents:
diff changeset
   166
    mListView->setSelectionMode(HbAbstractItemView::NoSelection);
hgs
parents:
diff changeset
   167
    connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(userCancelsImport()));
hgs
parents:
diff changeset
   168
    CNT_EXIT
hgs
parents:
diff changeset
   169
}
hgs
parents:
diff changeset
   170
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
void CntImportsView::onListViewActivated(const QModelIndex &index)
hgs
parents:
diff changeset
   173
{
hgs
parents:
diff changeset
   174
    CNT_ENTRY
hgs
parents:
diff changeset
   175
    int row = index.row();
hgs
parents:
diff changeset
   176
    if ( row == 0 ) // row 0 has "Imports from SIM" 
hgs
parents:
diff changeset
   177
    {
hgs
parents:
diff changeset
   178
       if (!mSimEngine->startSimImport())
hgs
parents:
diff changeset
   179
       {
hgs
parents:
diff changeset
   180
           //show error note
hgs
parents:
diff changeset
   181
           mSimEngine->simInfoErrorMessage(KErrAccessDenied);
hgs
parents:
diff changeset
   182
       }
hgs
parents:
diff changeset
   183
       else
hgs
parents:
diff changeset
   184
       {
hgs
parents:
diff changeset
   185
           //start popup and progress
hgs
parents:
diff changeset
   186
           showWaitNote();
hgs
parents:
diff changeset
   187
       }
hgs
parents:
diff changeset
   188
    }        
hgs
parents:
diff changeset
   189
    CNT_EXIT
hgs
parents:
diff changeset
   190
    
hgs
parents:
diff changeset
   191
 }
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
void CntImportsView::showWaitNote()
hgs
parents:
diff changeset
   194
{
hgs
parents:
diff changeset
   195
    CNT_ENTRY
hgs
parents:
diff changeset
   196
    mImportSimPopup = new HbDialog();    
hgs
parents:
diff changeset
   197
    mImportSimPopup->setDismissPolicy(HbPopup::NoDismiss);
hgs
parents:
diff changeset
   198
    mImportSimPopup->setTimeout(HbPopup::NoTimeout);
hgs
parents:
diff changeset
   199
    mImportSimPopup->setBackgroundFaded(true);
hgs
parents:
diff changeset
   200
    mImportSimPopup->setAttribute(Qt::WA_DeleteOnClose, true);
hgs
parents:
diff changeset
   201
    
hgs
parents:
diff changeset
   202
    HbLabel *headingLabel = new HbLabel(mImportSimPopup);
hgs
parents:
diff changeset
   203
    headingLabel->setPlainText(hbTrId("txt_phob_title_import_contacts")); 
hgs
parents:
diff changeset
   204
    mImportSimPopup->setHeadingWidget(headingLabel);
hgs
parents:
diff changeset
   205
    
hgs
parents:
diff changeset
   206
    QGraphicsLinearLayout *containerLayout = new QGraphicsLinearLayout(Qt::Vertical);
hgs
parents:
diff changeset
   207
    containerLayout->setContentsMargins(0, 0, 0, 0);
hgs
parents:
diff changeset
   208
    containerLayout->setSpacing(10);
hgs
parents:
diff changeset
   209
    
hgs
parents:
diff changeset
   210
    HbLabel *icon = new HbLabel(mImportSimPopup);
hgs
parents:
diff changeset
   211
    icon->setIcon(HbIcon("qtg_large_sim"));  
hgs
parents:
diff changeset
   212
    
hgs
parents:
diff changeset
   213
    HbLabel *simText= new HbLabel(mImportSimPopup);
hgs
parents:
diff changeset
   214
    simText->setPlainText(hbTrId("txt_phob_info_importing_contacts_from_sim")); 
hgs
parents:
diff changeset
   215
    simText->setTextWrapping(Hb::TextWordWrap);
hgs
parents:
diff changeset
   216
    simText->setElideMode(Qt::ElideNone);
hgs
parents:
diff changeset
   217
    
hgs
parents:
diff changeset
   218
    HbProgressBar *progressBar = new HbProgressBar(mImportSimPopup);
hgs
parents:
diff changeset
   219
    progressBar->setRange(0,0); 
hgs
parents:
diff changeset
   220
    
hgs
parents:
diff changeset
   221
    HbPushButton *stopButton = new HbPushButton(mImportSimPopup);
hgs
parents:
diff changeset
   222
    stopButton->setText(hbTrId("txt_phob_button_cancel"));
hgs
parents:
diff changeset
   223
    connect(stopButton, SIGNAL(clicked()), mSimEngine, SLOT(stopSimImport()));
hgs
parents:
diff changeset
   224
    
hgs
parents:
diff changeset
   225
    QGraphicsLinearLayout *containerLayout1 = new QGraphicsLinearLayout(Qt::Horizontal);
hgs
parents:
diff changeset
   226
    containerLayout1->addItem(icon);
hgs
parents:
diff changeset
   227
    containerLayout1->addItem(simText);
hgs
parents:
diff changeset
   228
    
hgs
parents:
diff changeset
   229
    QGraphicsWidget *containerWidget = new QGraphicsWidget;    
hgs
parents:
diff changeset
   230
    containerLayout->addItem(containerLayout1);
hgs
parents:
diff changeset
   231
    containerLayout->addItem(progressBar);
hgs
parents:
diff changeset
   232
    containerLayout->addItem(stopButton);  
hgs
parents:
diff changeset
   233
    containerWidget->setLayout(containerLayout);
hgs
parents:
diff changeset
   234
    mImportSimPopup->setContentWidget(containerWidget);
hgs
parents:
diff changeset
   235
    mImportSimPopup->open();
hgs
parents:
diff changeset
   236
    CNT_EXIT
hgs
parents:
diff changeset
   237
}
hgs
parents:
diff changeset
   238
hgs
parents:
diff changeset
   239
void CntImportsView::setPreferredDetails( QContact *aContact )
hgs
parents:
diff changeset
   240
{
hgs
parents:
diff changeset
   241
    CNT_ENTRY
hgs
parents:
diff changeset
   242
    mSimEngine->setPreferredDetails(*aContact);
hgs
parents:
diff changeset
   243
    CNT_EXIT
hgs
parents:
diff changeset
   244
}
hgs
parents:
diff changeset
   245
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
void CntImportsView::userCancelsImport()
hgs
parents:
diff changeset
   248
{   
hgs
parents:
diff changeset
   249
    CNT_ENTRY
hgs
parents:
diff changeset
   250
    QString results;
hgs
parents:
diff changeset
   251
    
hgs
parents:
diff changeset
   252
    if(mSimEngine->userCancelsImport(results))
hgs
parents:
diff changeset
   253
    {
hgs
parents:
diff changeset
   254
        HbDeviceNotificationDialog::notification(QString(),results);
hgs
parents:
diff changeset
   255
    }
hgs
parents:
diff changeset
   256
    CNT_EXIT
hgs
parents:
diff changeset
   257
}
hgs
parents:
diff changeset
   258
hgs
parents:
diff changeset
   259
hgs
parents:
diff changeset
   260
void CntImportsView::setListBoxItemText(QString& aPrimary, QString& aSecondary)
hgs
parents:
diff changeset
   261
{
hgs
parents:
diff changeset
   262
    CNT_ENTRY
hgs
parents:
diff changeset
   263
    QList<QStandardItem*> importItems = mModel->takeRow(0);
hgs
parents:
diff changeset
   264
    QStandardItem* importItem = NULL;
hgs
parents:
diff changeset
   265
    if (importItems.count() > 0) {
hgs
parents:
diff changeset
   266
        importItem = importItems.at(0);
hgs
parents:
diff changeset
   267
    }
hgs
parents:
diff changeset
   268
    
hgs
parents:
diff changeset
   269
    if (importItem != NULL)
hgs
parents:
diff changeset
   270
    {
hgs
parents:
diff changeset
   271
        QStringList simList;
hgs
parents:
diff changeset
   272
        
hgs
parents:
diff changeset
   273
        simList << aPrimary;
hgs
parents:
diff changeset
   274
        simList << aSecondary;
hgs
parents:
diff changeset
   275
        
hgs
parents:
diff changeset
   276
        importItem->setData(simList, Qt::DisplayRole);
hgs
parents:
diff changeset
   277
        importItem->setData(HbIcon("qtg_large_sim"), Qt::DecorationRole);
hgs
parents:
diff changeset
   278
        mModel->insertRow(0, importItem);
hgs
parents:
diff changeset
   279
        mListView->reset();
hgs
parents:
diff changeset
   280
    }
hgs
parents:
diff changeset
   281
    CNT_EXIT
hgs
parents:
diff changeset
   282
}
hgs
parents:
diff changeset
   283
hgs
parents:
diff changeset
   284
void CntImportsView::setListBoxItemEnabled(bool aEnabled)
hgs
parents:
diff changeset
   285
{
hgs
parents:
diff changeset
   286
    CNT_ENTRY
hgs
parents:
diff changeset
   287
    QList<QStandardItem*> importItems = mModel->takeRow(0);
hgs
parents:
diff changeset
   288
    QStandardItem* importItem = NULL;
hgs
parents:
diff changeset
   289
    if ( !importItems.isEmpty() )
hgs
parents:
diff changeset
   290
    {
hgs
parents:
diff changeset
   291
       importItem = importItems.first();
hgs
parents:
diff changeset
   292
    }
hgs
parents:
diff changeset
   293
    
hgs
parents:
diff changeset
   294
    if (importItem != NULL)
hgs
parents:
diff changeset
   295
    {
hgs
parents:
diff changeset
   296
       importItem->setEnabled(aEnabled);
hgs
parents:
diff changeset
   297
    }
hgs
parents:
diff changeset
   298
    CNT_EXIT
hgs
parents:
diff changeset
   299
}
hgs
parents:
diff changeset
   300
hgs
parents:
diff changeset
   301
QContactManager *CntImportsView::contactSymbianManager()
hgs
parents:
diff changeset
   302
{
hgs
parents:
diff changeset
   303
    if (mSimEngine)
hgs
parents:
diff changeset
   304
    {
hgs
parents:
diff changeset
   305
        return mSimEngine->contactSymbianManager();
hgs
parents:
diff changeset
   306
    }
hgs
parents:
diff changeset
   307
    
hgs
parents:
diff changeset
   308
    return NULL;
hgs
parents:
diff changeset
   309
}
hgs
parents:
diff changeset
   310
hgs
parents:
diff changeset
   311
// EOF