phonebookui/pbkcommonui/src/cntimageeditorview.cpp
changeset 50 77bc263e1626
parent 47 7cbcb2896f0e
child 53 e6aff7b69165
equal deleted inserted replaced
49:74b30151afd6 50:77bc263e1626
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include "cntimageeditorview.h"
    18 #include "cntimageeditorview.h"
    19 #include "cntimageutility.h"
    19 #include "cntimageutility.h"
       
    20 #include "cntsavemanager.h"
    20 
    21 
    21 #include <hblabel.h>
    22 #include <hblabel.h>
    22 #include <xqaiwrequest.h>
    23 #include <xqaiwrequest.h>
    23 #include <xqaiwdecl.h>
    24 #include <xqaiwdecl.h>
    24 
    25 
    25 #include "cntdebug.h"
    26 #include "cntdebug.h"
       
    27 #include "cntglobal.h"
    26 
    28 
    27 #include <thumbnailmanager_qt.h>
    29 #include <thumbnailmanager_qt.h>
    28 #include <hbaction.h>
    30 #include <hbaction.h>
    29 #include <hbview.h>
    31 #include <hbview.h>
    30 #include <hbmainwindow.h>
    32 #include <hbmainwindow.h>
    31 #include <hblistview.h>
    33 #include <hblistview.h>
    32 #include <hblistviewitem.h>
    34 #include <hblistviewitem.h>
    33 #include <hbframebackground.h>
    35 #include <hbframebackground.h>
       
    36 #include <hbdevicenotificationdialog.h>
       
    37 #include <hbparameterlengthlimiter.h>
    34 
    38 
    35 #include <QStandardItemModel>
    39 #include <QStandardItemModel>
       
    40 #include <QApplication>
    36 
    41 
    37 const char *CNT_IMAGE_XML = ":/xml/contacts_if.docml";
    42 const char *CNT_IMAGE_XML = ":/xml/contacts_if.docml";
    38 
    43 
    39 /*!
    44 /*!
    40 Constructor
    45 Constructor
    41 */
    46 */
    42 CntImageEditorView::CntImageEditorView() :
    47 CntImageEditorView::CntImageEditorView() :
    43         mContact(NULL),
    48     mContact(NULL),
    44         mAvatar(NULL),
    49     mAvatar(NULL),
    45         mImageLabel(NULL),
    50     mImageLabel(NULL),
    46         mRequest(NULL),
    51     mRequest(NULL),
    47         mViewManager(NULL),
    52     mViewManager(NULL),
    48         mListView(NULL),
    53     mListView(NULL),
    49         mModel(NULL)
    54     mModel(NULL),
       
    55     mSaveManager(NULL)
    50 {
    56 {
    51     bool ok = false;
    57     bool ok = false;
    52     mDocumentLoader.load(CNT_IMAGE_XML, &ok);
    58     mDocumentLoader.load(CNT_IMAGE_XML, &ok);
    53 
    59 
    54     if (ok)
    60     if (ok)
    74     mThumbnailManager->setQualityPreference(ThumbnailManager::OptimizeForQuality);
    80     mThumbnailManager->setQualityPreference(ThumbnailManager::OptimizeForQuality);
    75     mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailLarge);
    81     mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailLarge);
    76     
    82     
    77     connect( mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void*, int, int)),
    83     connect( mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void*, int, int)),
    78         this, SLOT(thumbnailReady(QPixmap, void*, int, int)) );
    84         this, SLOT(thumbnailReady(QPixmap, void*, int, int)) );
       
    85     
       
    86     // closing the application from task swapper or end key will cause the contact to be saved
       
    87     connect( qApp, SIGNAL(aboutToQuit()), this, SLOT(saveContact()));
    79 }
    88 }
    80 
    89 
    81 /*!
    90 /*!
    82 Destructor
    91 Destructor
    83 */
    92 */
    86     CNT_ENTRY
    95     CNT_ENTRY
    87     
    96     
    88     mView->deleteLater();
    97     mView->deleteLater();
    89 
    98 
    90     delete mAvatar;
    99     delete mAvatar;
    91     mAvatar = 0;
   100     mAvatar = NULL;
    92     delete mContact;
   101     delete mContact;
    93     mContact = 0;
   102     mContact = NULL;
    94     delete mRequest;
   103     delete mRequest;
    95     mRequest = 0;
   104     mRequest = NULL;
    96     delete mRemoveImage;
   105     delete mRemoveImage;
    97     mRemoveImage = 0;
   106     mRemoveImage = NULL;
    98     delete mModel;
   107     delete mModel;
    99     mModel = 0;
   108     mModel = NULL;
       
   109     delete mSaveManager;
       
   110     mSaveManager = NULL;
   100     
   111     
   101     CNT_EXIT
   112     CNT_EXIT
   102 }
   113 }
   103 
   114 
   104 /*!
   115 /*!
   118     connect(window, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(setOrientation(Qt::Orientation)));
   129     connect(window, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(setOrientation(Qt::Orientation)));
   119     setOrientation(window->orientation());
   130     setOrientation(window->orientation());
   120     }
   131     }
   121     
   132     
   122     mContact = new QContact(mArgs.value(ESelectedContact).value<QContact>());
   133     mContact = new QContact(mArgs.value(ESelectedContact).value<QContact>());
       
   134     
       
   135     QString myCard = mArgs.value( EMyCard ).toString();
       
   136     QContactLocalId localId = mContact->localId();
       
   137     QContactLocalId selfContactId = mViewManager->contactManager(SYMBIAN_BACKEND)->selfContactId();
       
   138     bool isMyCard = ( localId == selfContactId && localId != 0 ) || !myCard.isEmpty();
       
   139     
       
   140     if (isMyCard)
       
   141     {
       
   142         mSaveManager = new CntSaveManager(CntSaveManager::EMyCard);
       
   143     }
       
   144     else if (mContact->type() == QContactType::TypeGroup)
       
   145     {
       
   146         mSaveManager = new CntSaveManager(CntSaveManager::EGroup);
       
   147     }
       
   148     else
       
   149     {
       
   150         mSaveManager = new CntSaveManager();
       
   151     }
   123     
   152     
   124     // set the correct image if the contact already has an image set
   153     // set the correct image if the contact already has an image set
   125     mImageLabel = static_cast<HbLabel*>(mDocumentLoader.findWidget(QString("cnt_image_label")));
   154     mImageLabel = static_cast<HbLabel*>(mDocumentLoader.findWidget(QString("cnt_image_label")));
   126     QList<QContactAvatar> details = mContact->details<QContactAvatar>();
   155     QList<QContactAvatar> details = mContact->details<QContactAvatar>();
   127     if (details.count() > 0)
   156     if (details.count() > 0)
   194     {
   223     {
   195         delete mRequest;
   224         delete mRequest;
   196         mRequest = 0;
   225         mRequest = 0;
   197     }
   226     }
   198     
   227     
   199     mRequest = mAppManager.create(XQI_CAMERA_CAPTURE, "capture(int,QVariantMap)", false);
   228     mRequest = mAppManager.create(XQI_CAMERA_CAPTURE, XQOP_CAMERA_CAPTURE, false);
   200     if ( mRequest ) 
   229     if ( mRequest ) 
   201     {
   230     {
   202         int mode = 0; //image mode
   231         int mode = 0; //image mode
   203         
   232         
   204         QVariantMap map;
   233         QVariantMap map;
   383     }
   412     }
   384 }
   413 }
   385 
   414 
   386 void CntImageEditorView::handleError(int errorCode, const QString& errorMessage)
   415 void CntImageEditorView::handleError(int errorCode, const QString& errorMessage)
   387 {
   416 {
       
   417     Q_UNUSED(errorCode);
       
   418     Q_UNUSED(errorMessage);
   388     CNT_LOG_ARGS("error code = " << errorCode << "errorMessage=" << errorMessage)
   419     CNT_LOG_ARGS("error code = " << errorCode << "errorMessage=" << errorMessage)
   389 }
   420 }
   390 
   421 
       
   422 void CntImageEditorView::saveContact()
       
   423 {
       
   424     mContact->saveDetail(mAvatar);
       
   425 
       
   426     if ( mAvatar->imageUrl().isEmpty())
       
   427     {
       
   428         mContact->removeDetail(mAvatar);
       
   429     }
       
   430     
       
   431     QString name = mViewManager->contactManager(SYMBIAN_BACKEND)->synthesizedDisplayLabel(*mContact);
       
   432     
       
   433     if (name.isEmpty())
       
   434     {
       
   435         name = hbTrId("txt_phob_list_unnamed");
       
   436     }
       
   437     
       
   438     CntSaveManager::CntSaveResult result = mSaveManager->saveContact(mContact, mViewManager->contactManager(SYMBIAN_BACKEND));
       
   439     
       
   440     if (mContact->type() != QContactType::TypeGroup)
       
   441     {
       
   442         switch (result)
       
   443         {
       
   444         case CntSaveManager::ESaved:
       
   445             HbDeviceNotificationDialog::notification(QString(),HbParameterLengthLimiter(hbTrId("txt_phob_dpophead_contact_1_saved")).arg(name));
       
   446             break;
       
   447         case CntSaveManager::EUpdated:
       
   448             HbDeviceNotificationDialog::notification(QString(),HbParameterLengthLimiter(hbTrId("txt_phob_dpophead_contacts_1_updated")).arg(name));
       
   449             break;
       
   450         case CntSaveManager::EFailed:
       
   451             HbDeviceNotificationDialog::notification(QString(),hbTrId("SAVING FAILED!"));
       
   452             break;
       
   453         case CntSaveManager::EDeleted:
       
   454         case CntSaveManager::ENothingDone:
       
   455         default:
       
   456             break;
       
   457         }
       
   458     }
       
   459 }
       
   460