phonebookui/pbkcommonui/src/cntimageeditorview.cpp
changeset 27 de1630741fbe
parent 25 76a2435edfd4
child 31 2a11b5b00470
--- a/phonebookui/pbkcommonui/src/cntimageeditorview.cpp	Fri Apr 16 14:53:18 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntimageeditorview.cpp	Mon May 03 12:24:20 2010 +0300
@@ -16,6 +16,7 @@
 */
 
 #include "cntimageeditorview.h"
+#include "cntimageutility.h"
 
 #include <hblabel.h>
 #include <xqaiwrequest.h>
@@ -39,17 +40,13 @@
 Constructor
 */
 CntImageEditorView::CntImageEditorView() :
-        mContact(0),
-        mAvatar(0),
-        mImageLabel(0),
-        mRequest(0),
-        mThumbnailManager(0),
-        mView(0),
-        mSoftkey(0),
-        mRemoveImage(0),
-        mViewManager(0),
-        mListView(0),
-        mModel(0)
+        mContact(NULL),
+        mAvatar(NULL),
+        mImageLabel(NULL),
+        mRequest(NULL),
+        mViewManager(NULL),
+        mListView(NULL),
+        mModel(NULL)
 {
     bool ok = false;
     mDocumentLoader.load(CNT_IMAGE_XML, &ok);
@@ -76,7 +73,7 @@
     mThumbnailManager->setMode(ThumbnailManager::Default);
     mThumbnailManager->setQualityPreference(ThumbnailManager::OptimizeForQuality);
     mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailLarge);
-	
+    
     connect( mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void*, int, int)),
         this, SLOT(thumbnailReady(QPixmap, void*, int, int)) );
 }
@@ -103,7 +100,7 @@
 /*!
 Called when activating the view
 */
-void CntImageEditorView::activate( CntAbstractViewManager* aMgr, const CntViewParameters& aArgs )
+void CntImageEditorView::activate( CntAbstractViewManager* aMgr, const CntViewParameters aArgs )
 {
     if (mView->navigationAction() != mSoftkey)
         mView->setNavigationAction(mSoftkey);
@@ -112,31 +109,29 @@
     connect(window, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(setOrientation(Qt::Orientation)));
     setOrientation(window->orientation());    
     
-    mContact = new QContact(aArgs.selectedContact());
+    mContact = new QContact(aArgs.value(ESelectedContact).value<QContact>());
     mViewManager = aMgr;
 
     // set the correct image if the contact already has an image set
     mImageLabel = static_cast<HbLabel*>(mDocumentLoader.findWidget(QString("cnt_image_label")));
     QList<QContactAvatar> details = mContact->details<QContactAvatar>();
-
     if (details.count() > 0)
-    {
-        for (int i = 0;i < details.count();i++)
         {
-            if (details.at(i).subType() == QContactAvatar::SubTypeImage)
+        for (int i = 0;i < details.count();i++)
             {
-                mAvatar = new QContactAvatar(details.at(i));
-                mThumbnailManager->getThumbnail(mAvatar->avatar());
-                break;
+                if (details.at(i).imageUrl().isValid())
+                    {
+                    mAvatar = new QContactAvatar(details.at(i));
+                    mThumbnailManager->getThumbnail(mAvatar->imageUrl().toString());
+                    break;
+                    }
             }
         }
-    }
     else
-    {
+        {
         mAvatar = new QContactAvatar();
-        mAvatar->setSubType(QContactAvatar::SubTypeImage);
         mRemoveImage->setEnabled(false);
-    }
+        }
     
     // set up the list
     mListView = static_cast<HbListView*>(mDocumentLoader.findWidget(QString("cnt_listview")));
@@ -150,6 +145,7 @@
     mListView->itemPrototypes().first()->setDefaultFrame(frame);
     
     mListView->listItemPrototype()->setGraphicsSize(HbListViewItem::LargeIcon);
+    mListView->setUniformItemSizes(true);
     
     mModel = new QStandardItemModel();
     populateModel(mModel);
@@ -192,7 +188,7 @@
         delete mRequest;
         mRequest = 0;
     }
-
+    
     mRequest = mAppManager.create(FETCHER_SERVICE, FETCHER_INTERFACE, FETCHER_OPERATION, false);
     if ( mRequest ) 
     {
@@ -208,22 +204,30 @@
 {
     mContact->saveDetail(mAvatar);
 
-    if (mAvatar->avatar().isEmpty())
+    if ( mAvatar->imageUrl().isEmpty())
     {
         mContact->removeDetail(mAvatar);
     }
     
     CntViewParameters args;
-    args.setSelectedContact( *mContact );
+    QVariant var;
+    var.setValue(*mContact);
+    args.insert(ESelectedContact, var);
     mViewManager->back( args );
 }
 
 void CntImageEditorView::removeImage()
 {
-    mAvatar->setAvatar(QString());
-    mImageLabel->clear();
-    mImageLabel->setIcon(HbIcon("qtg_large_avatar"));
-    mRemoveImage->setEnabled(false);
+    int err;
+    CntImageUtility imageUtility;
+    if(!mAvatar->imageUrl().isEmpty()
+       && imageUtility.removeImage(mAvatar->imageUrl().toString(),err))
+    {
+        mAvatar->setImageUrl(QUrl());
+        mImageLabel->clear();
+        mImageLabel->setIcon(HbIcon("qtg_large_avatar"));
+        mRemoveImage->setEnabled(false);
+    }
 }
 
 /*!
@@ -231,11 +235,22 @@
 */
 void CntImageEditorView::handleImageChange(const QVariant &value)
 {
-    if (value.canConvert<QString>())
+    if(value.canConvert<QString>())
     {
-        mAvatar->setAvatar(value.toString());
-        mThumbnailManager->getThumbnail(value.toString());
-        mRemoveImage->setEnabled(true);
+        CntImageUtility imageUtility;
+        int err;
+        QString imagepath;
+        
+        if(imageUtility.createImage(value.toString(),imagepath,err))
+        {
+            // If image exists, delete
+            if(!mAvatar->imageUrl().isEmpty())
+                imageUtility.removeImage(mAvatar->imageUrl().toString(),err);
+            
+            mAvatar->setImageUrl(QUrl(imagepath));
+            mThumbnailManager->getThumbnail(imagepath);
+            mRemoveImage->setEnabled(true);
+        }
     }
 }