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 */ |
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) |
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 |