phonebookui/pbkcommonui/src/cntmycardview.cpp
changeset 31 2a11b5b00470
parent 27 de1630741fbe
child 37 fd64c38c277d
equal deleted inserted replaced
27:de1630741fbe 31:2a11b5b00470
    14 * Description:  
    14 * Description:  
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include "cntmycardview.h"
    18 #include "cntmycardview.h"
       
    19 #include "cntfetchcontactsview.h"
    19 #include "qtpbkglobal.h"
    20 #include "qtpbkglobal.h"
    20 #include <hbpushbutton.h>
    21 #include <hbpushbutton.h>
    21 #include <hbaction.h>
    22 #include <hbaction.h>
    22 #include <hbview.h>
    23 #include <hbview.h>
    23 #include <hbmainwindow.h>
    24 #include <hbmainwindow.h>
    24 
    25 
    25 const char *CNT_MYCARD_UI_XML = ":/xml/contacts_mc.docml";
    26 const char *CNT_MYCARD_UI_XML = ":/xml/contacts_mc.docml";
    26 
    27 
    27 CntMyCardView::CntMyCardView() :
    28 CntMyCardView::CntMyCardView() :
    28     mContact(NULL),
    29     mContact(NULL),
    29     mViewManager(NULL)
    30     mViewManager(NULL),
       
    31     mFetchView(NULL)
    30 {
    32 {
    31     bool ok = false;
    33     bool ok = false;
    32     mDocumentLoader.load(CNT_MYCARD_UI_XML, &ok);
    34     mDocumentLoader.load(CNT_MYCARD_UI_XML, &ok);
    33 
    35 
    34     if (ok)
    36     if (ok)
    49 {
    51 {
    50     mView->deleteLater();
    52     mView->deleteLater();
    51     
    53     
    52     delete mContact;
    54     delete mContact;
    53     mContact = 0;
    55     mContact = 0;
       
    56     
       
    57     delete mFetchView;
       
    58     mFetchView = NULL;
    54 }
    59 }
    55 
    60 
    56 /*!
    61 /*!
    57 Activates a previous view
    62 Activates a previous view
    58 */
    63 */
    65 /*
    70 /*
    66 Activates a default view
    71 Activates a default view
    67 */
    72 */
    68 void CntMyCardView::activate(CntAbstractViewManager* aMgr, const CntViewParameters aArgs)
    73 void CntMyCardView::activate(CntAbstractViewManager* aMgr, const CntViewParameters aArgs)
    69 {
    74 {
       
    75     mViewManager = aMgr;
       
    76     
    70     if (mView->navigationAction() != mSoftkey)
    77     if (mView->navigationAction() != mSoftkey)
    71         mView->setNavigationAction(mSoftkey);
    78         mView->setNavigationAction(mSoftkey);
    72     
    79     
    73     HbMainWindow* window = mView->mainWindow();
    80     HbMainWindow* window = mView->mainWindow();
    74     connect(window, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(setOrientation(Qt::Orientation)));
    81     connect(window, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(setOrientation(Qt::Orientation)));
    75     setOrientation(window->orientation());
    82     setOrientation(window->orientation());
    76     
    83     
    77     mContact = new QContact(aArgs.value(ESelectedContact).value<QContact>());
    84     mContact = new QContact(aArgs.value(ESelectedContact).value<QContact>());
    78     mViewManager = aMgr;
       
    79     
       
    80     HbPushButton *newButton = static_cast<HbPushButton*>(mDocumentLoader.findWidget(QString("cnt_button_new")));
    85     HbPushButton *newButton = static_cast<HbPushButton*>(mDocumentLoader.findWidget(QString("cnt_button_new")));
    81     connect(newButton, SIGNAL(clicked()), this, SLOT(openNameEditor()));
    86     connect(newButton, SIGNAL(clicked()), this, SLOT(openNameEditor()));
    82 
    87 
    83     HbPushButton *chooseButton = static_cast<HbPushButton*>(mDocumentLoader.findWidget(QString("cnt_button_choose")));
    88     HbPushButton *chooseButton = static_cast<HbPushButton*>(mDocumentLoader.findWidget(QString("cnt_button_choose")));
    84     connect(chooseButton, SIGNAL(clicked()), this, SLOT(openMyCardSelectionView()));
    89     connect(chooseButton, SIGNAL(clicked()), this, SLOT(openMyCardSelectionView()));
    89 
    94 
    90     if (mViewManager->contactManager( SYMBIAN_BACKEND )->contactIds(filter).isEmpty())
    95     if (mViewManager->contactManager( SYMBIAN_BACKEND )->contactIds(filter).isEmpty())
    91     {
    96     {
    92         chooseButton->setEnabled(false);
    97         chooseButton->setEnabled(false);
    93     }
    98     }
       
    99     
       
   100     mFetchView = new CntFetchContacts(mViewManager->contactManager( SYMBIAN_BACKEND ));
       
   101     connect(mFetchView, SIGNAL(clicked()), this, SLOT(handleMultiCardSelection()));
    94 }
   102 }
    95 
   103 
    96 void CntMyCardView::deactivate()
   104 void CntMyCardView::deactivate()
    97 {
   105 {
    98 
   106 
   115 /*!
   123 /*!
   116 Opens the name detail editor view
   124 Opens the name detail editor view
   117 */
   125 */
   118 void CntMyCardView::openNameEditor()
   126 void CntMyCardView::openNameEditor()
   119 {
   127 {
   120     //create a new my card contact
       
   121     QContactManager* mgr = mViewManager->contactManager( SYMBIAN_BACKEND );
       
   122     mgr->saveContact(mContact);
       
   123     mgr->setSelfContactId(mContact->localId());
       
   124     //open the contact editor
       
   125     CntViewParameters viewParameters;
   128     CntViewParameters viewParameters;
   126     viewParameters.insert(EViewId, editView);
   129     viewParameters.insert(EViewId, editView);
       
   130     viewParameters.insert(EMyCard, "myCard" );
       
   131     
   127     QVariant var;
   132     QVariant var;
   128     var.setValue(*mContact);
   133     var.setValue(*mContact);
   129     viewParameters.insert(ESelectedContact, var);
   134     viewParameters.insert(ESelectedContact, var);
   130     mViewManager->changeView(viewParameters);
   135     mViewManager->changeView(viewParameters);
   131 }
   136 }
   133 /*!
   138 /*!
   134 Opens the my card selection view
   139 Opens the my card selection view
   135 */
   140 */
   136 void CntMyCardView::openMyCardSelectionView()
   141 void CntMyCardView::openMyCardSelectionView()
   137 {
   142 {
       
   143     // Display a list of contacts to choose a mycard from.
       
   144     mFetchView->setDetails(hbTrId("txt_phob_subtitle_my_card"),hbTrId("Save"));
       
   145     QSet<QContactLocalId> emptyContactsSet;
       
   146     mFetchView->displayContacts(CntFetchContacts::popup,
       
   147                                 HbAbstractItemView::SingleSelection,
       
   148                                 emptyContactsSet);
       
   149 }
       
   150 
       
   151 void CntMyCardView::handleMultiCardSelection()
       
   152 {
       
   153     QContactManager* manager = mViewManager->contactManager( SYMBIAN_BACKEND );
       
   154 
       
   155     QSet<QContactLocalId> selectedContacts = mFetchView->getSelectedContacts();
       
   156 
       
   157     if ( !mFetchView->wasCanceled() && !selectedContacts.isEmpty() ) {
       
   158         QList<QContactLocalId> selectedContactsList = selectedContacts.values();
       
   159         manager->setSelfContactId(selectedContactsList.front());
       
   160     }
       
   161     
   138     CntViewParameters viewParameters;
   162     CntViewParameters viewParameters;
   139     viewParameters.insert(EViewId, myCardSelectionView);
   163     viewParameters.insert(EViewId, namesView);
   140     mViewManager->changeView(viewParameters);
   164     mViewManager->changeView(viewParameters);
   141 }
   165 }
   142 
   166 
   143 // EOF
   167 // EOF