phonebookui/pbkcommonui/src/cntcontactcarddatacontainer.cpp
changeset 31 2a11b5b00470
parent 27 de1630741fbe
child 37 fd64c38c277d
equal deleted inserted replaced
27:de1630741fbe 31:2a11b5b00470
    18 #include "cntcontactcarddatacontainer.h"
    18 #include "cntcontactcarddatacontainer.h"
    19 #include "cntcontactcarddataitem.h"
    19 #include "cntcontactcarddataitem.h"
    20 #include <cntmaptileservice.h> //For fetching maptile
    20 #include <cntmaptileservice.h> //For fetching maptile
    21 
    21 
    22 #include <QPainter>
    22 #include <QPainter>
       
    23 #include <QList>
    23 #include <qtcontacts.h>
    24 #include <qtcontacts.h>
    24 #include <hbicon.h>
    25 #include <hbicon.h>
    25 #include <cntviewparams.h>
    26 #include <cntviewparams.h>
    26 
    27 
    27 #include "cntstringmapper.h"
    28 #include "cntstringmapper.h"
       
    29 
       
    30 /*!
       
    31 Compare function for CntContactCardDataItem
       
    32 */
       
    33 namespace
       
    34 {
       
    35     bool compareObjects(const CntContactCardDataItem *d1, const CntContactCardDataItem *d2)
       
    36     {   
       
    37         return d1->mPosition < d2->mPosition;
       
    38     }
       
    39 }
    28 
    40 
    29 /*!
    41 /*!
    30 Constructor
    42 Constructor
    31 */
    43 */
    32 CntContactCardDataContainer::CntContactCardDataContainer(QContact* contact, QObject *parent) : mContact(contact), mSeparatorIndex(-1)
    44 CntContactCardDataContainer::CntContactCardDataContainer(QContact* contact, QObject *parent) : mContact(contact), mSeparatorIndex(-1)
    70     for (int i = 0; i < details.count(); i++)
    82     for (int i = 0; i < details.count(); i++)
    71     { 
    83     { 
    72         if (availableActions.contains("call", Qt::CaseInsensitive) && supportsDetail("call", details[i]) && details[i].definitionName() == QContactPhoneNumber::DefinitionName)
    84         if (availableActions.contains("call", Qt::CaseInsensitive) && supportsDetail("call", details[i]) && details[i].definitionName() == QContactPhoneNumber::DefinitionName)
    73         {
    85         {
    74             QContactPhoneNumber number(details.at(i));
    86             QContactPhoneNumber number(details.at(i));
    75             QString title;
    87             
    76             QString icon;
    88             QString context = number.contexts().isEmpty() ? QString() : number.contexts().first();
    77             if (!number.contexts().isEmpty())
    89             QString subtype = number.subTypes().isEmpty() ? number.definitionName() : number.subTypes().first();
    78             {
       
    79                 title = mStringMapper.getContactCardListLocString(number.subTypes().first(), number.contexts().first());
       
    80                 icon = mStringMapper.getContactCardIconString(number.subTypes().first(), number.contexts().first());
       
    81             }
       
    82             else
       
    83             {
       
    84                 title = mStringMapper.getContactCardListLocString(number.subTypes().first(), QString());
       
    85                 icon = mStringMapper.getContactCardIconString(number.subTypes().first(), QString());
       
    86             }
       
    87              
    90              
    88             CntContactCardDataItem* dataItem = new CntContactCardDataItem(title, true);
    91             CntContactCardDataItem* dataItem = new CntContactCardDataItem(mStringMapper.getContactCardListLocString(subtype, context), itemCount(), true);
    89             dataItem->setAction("call");
    92             dataItem->setAction("call");
    90             dataItem->setValueText(number.number());
    93             dataItem->setValueText(number.number());
    91             dataItem->setIcon(HbIcon(icon));
    94             dataItem->setIcon(HbIcon(mStringMapper.getContactCardIconString(subtype, context)));
    92             dataItem->setContactDetail(number);
    95             dataItem->setContactDetail(number);
    93             mDataItemList.insert(itemCount(), dataItem);
    96             mDataItemList.insert(itemCount(), dataItem);
    94         }
    97         }
    95        
    98        
    96        if (availableActions.contains("message", Qt::CaseInsensitive) && supportsDetail("message", details[i]) && details[i].definitionName() == QContactPhoneNumber::DefinitionName)
    99         if (availableActions.contains("message", Qt::CaseInsensitive) && supportsDetail("message", details[i]) && details[i].definitionName() == QContactPhoneNumber::DefinitionName)
    97        {
   100         {
    98            QContactPhoneNumber number(details.at(i));
   101            QContactPhoneNumber number(details.at(i));
    99            CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_dblist_send_message"), true);
   102            CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_dblist_send_message"), itemCount(), true);
   100            dataItem->setAction("message");
   103            dataItem->setAction("message");
   101            dataItem->setValueText(number.number());
   104            dataItem->setValueText(number.number());
   102            QString icon;
   105            QString icon;
   103            if (number.contexts().isEmpty())
   106            if (number.contexts().isEmpty())
   104            {
   107            {
   117                icon = "qtg_large_message";
   120                icon = "qtg_large_message";
   118            }
   121            }
   119            dataItem->setIcon(HbIcon(icon));
   122            dataItem->setIcon(HbIcon(icon));
   120            dataItem->setContactDetail(number);
   123            dataItem->setContactDetail(number);
   121            mDataItemList.insert(itemCount(), dataItem);
   124            mDataItemList.insert(itemCount(), dataItem);
   122        }    
   125         }
   123     }
   126     }
   124     
       
   125     //email
   127     //email
   126     if (availableActions.contains("email", Qt::CaseInsensitive))
   128     if (availableActions.contains("email", Qt::CaseInsensitive))
   127     {
   129     {
   128         QList<QContactDetail> details = actionDetails("email", *mContact);
   130         QList<QContactDetail> details = actionDetails("email", *mContact);
   129         for (int i = 0; i < details.count(); i++)
   131         for (int i = 0; i < details.count(); i++)
   130         {   
   132         {
   131             if (details[i].definitionName() == QContactEmailAddress::DefinitionName)
   133             QContactEmailAddress email(details.at(i));
   132             {
   134             QString context = email.contexts().isEmpty() ? QString() : email.contexts().first();
   133                 QContactEmailAddress email(details.at(i));
   135                                   
   134                 QString title;
   136             CntContactCardDataItem* dataItem = new CntContactCardDataItem(mStringMapper.getContactCardListLocString(email.definitionName(), context), itemCount(), true);
   135                 QString icon;
   137             dataItem->setAction("email");
   136                 if (!email.contexts().isEmpty())
   138             dataItem->setValueText(email.emailAddress(), Qt::ElideLeft);
   137                 {
   139             dataItem->setIcon(HbIcon(mStringMapper.getContactCardIconString(email.definitionName(), context)));
   138                     title = mStringMapper.getContactCardListLocString(email.definitionName(), email.contexts().first());
   140             dataItem->setContactDetail(email);
   139                     icon = mStringMapper.getContactCardIconString(email.definitionName(), email.contexts().first());
   141             mDataItemList.insert(itemCount(), dataItem);  
   140                 }
   142         }
   141                 else
   143     }
   142                 {
   144     //url
   143                     title = mStringMapper.getContactCardListLocString(email.definitionName(), QString());
   145     QList<QContactUrl> urlDetails = mContact->details<QContactUrl>();
   144                     icon = mStringMapper.getContactCardIconString(email.definitionName(), QString());
   146     for (int i = 0; i < urlDetails.count(); i++)
   145                 }
   147     {
   146                  
   148         QContactUrl url(urlDetails.at(i));
   147                 CntContactCardDataItem* dataItem = new CntContactCardDataItem(title, true);
   149         QString context = url.contexts().isEmpty() ? QString() : url.contexts().first();
   148                 dataItem->setAction("email");
   150         
   149                 dataItem->setValueText(email.emailAddress(), Qt::ElideLeft);
   151         CntContactCardDataItem* dataItem = new CntContactCardDataItem(mStringMapper.getContactCardListLocString(url.definitionName(), context), itemCount(), true);
   150                 dataItem->setIcon(HbIcon(icon));
   152         dataItem->setAction("url");
   151                 dataItem->setContactDetail(email);
   153         dataItem->setValueText(url.url());
   152                 mDataItemList.insert(itemCount(), dataItem);
   154         dataItem->setIcon(HbIcon(mStringMapper.getContactCardIconString(url.definitionName(), context)));
   153             }
   155         dataItem->setContactDetail(url);
   154         }
   156         mDataItemList.insert(itemCount(), dataItem);     
   155     }
   157     }
   156 }
   158 }
   157 
   159 
   158 /*!
   160 /*!
   159 Initialize group details which includes actions.
   161 Initialize group details which includes actions.
   164     QContactPhoneNumber confCallNumber = mContact->detail<QContactPhoneNumber>();
   166     QContactPhoneNumber confCallNumber = mContact->detail<QContactPhoneNumber>();
   165     
   167     
   166     //call
   168     //call
   167     if (confCallNumber.number() != NULL)
   169     if (confCallNumber.number() != NULL)
   168     {
   170     {
   169         CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_dblist_conference_call"), true);
   171         CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_dblist_conference_call"), itemCount(), true);
   170         dataItem->setAction("call");
   172         dataItem->setAction("call");
   171         dataItem->setValueText(confCallNumber.number());
   173         dataItem->setValueText(confCallNumber.number());
   172         dataItem->setIcon(HbIcon("qtg_large_call_group"));
   174         dataItem->setIcon(HbIcon("qtg_large_call_group"));
   173         dataItem->setContactDetail(confCallNumber);  
   175         dataItem->setContactDetail(confCallNumber);  
   174         mDataItemList.insert(itemCount(), dataItem);
   176         mDataItemList.insert(itemCount(), dataItem);
   175     }
   177     }
   176     
   178     
   177     //message
   179     //message
   178     CntContactCardDataItem* dataMessageItem = new CntContactCardDataItem(hbTrId("txt_phob_dblist_send_val_members"), true);
   180     CntContactCardDataItem* dataMessageItem = new CntContactCardDataItem(hbTrId("txt_phob_dblist_send_val_members"), itemCount(), true);
   179     dataMessageItem->setAction("message");
   181     dataMessageItem->setAction("message");
   180     dataMessageItem->setValueText(confCallNumber.number());
   182     dataMessageItem->setValueText(confCallNumber.number());
   181     dataMessageItem->setIcon(HbIcon("qtg_large_message"));
   183     dataMessageItem->setIcon(HbIcon("qtg_large_message"));
   182     dataMessageItem->setContactDetail(confCallNumber);  
   184     dataMessageItem->setContactDetail(confCallNumber);  
   183     mDataItemList.insert(itemCount(), dataMessageItem);
   185     mDataItemList.insert(itemCount(), dataMessageItem);
   184     
   186     
   185     //email
   187     //email
   186     CntContactCardDataItem* dataEmailItem = new CntContactCardDataItem(hbTrId("txt_phob_dblist_email"), true);
   188     CntContactCardDataItem* dataEmailItem = new CntContactCardDataItem(hbTrId("txt_phob_dblist_email"), itemCount(), true);
   187     dataEmailItem->setAction("email");
   189     dataEmailItem->setAction("email");
   188     dataEmailItem->setValueText(confCallNumber.number());
   190     dataEmailItem->setValueText(confCallNumber.number());
   189     dataEmailItem->setIcon(HbIcon("qtg_large_email"));
   191     dataEmailItem->setIcon(HbIcon("qtg_large_email"));
   190     dataEmailItem->setContactDetail(confCallNumber);  
   192     dataEmailItem->setContactDetail(confCallNumber);  
   191     mDataItemList.insert(itemCount(), dataEmailItem);
   193     mDataItemList.insert(itemCount(), dataEmailItem);
   194 /*!
   196 /*!
   195 Initialize contact details which not include actions.
   197 Initialize contact details which not include actions.
   196 */
   198 */
   197 void CntContactCardDataContainer::initializeDetailsData()
   199 void CntContactCardDataContainer::initializeDetailsData()
   198 {
   200 {
       
   201     //sip & internet call
       
   202     QList<QContactOnlineAccount> onlinedDetails = mContact->details<QContactOnlineAccount>();
       
   203     for (int i = 0; i < onlinedDetails.count(); i++)
       
   204     {
       
   205         QContactOnlineAccount online(onlinedDetails.at(i));
       
   206         QString context = online.contexts().isEmpty() ? QString() : online.contexts().first();
       
   207         QString subtype = online.subTypes().isEmpty() ? online.definitionName() : online.subTypes().first();
       
   208               
       
   209         CntContactCardDataItem* dataItem = new CntContactCardDataItem(mStringMapper.getContactCardListLocString(subtype, context), itemCount(), false);
       
   210         dataItem->setValueText(online.accountUri());
       
   211         dataItem->setContactDetail(online);  
       
   212         addSeparator(itemCount());
       
   213         mDataItemList.insert(itemCount(), dataItem);
       
   214     }
       
   215     
       
   216     //address
   199     QString contextHome(QContactAddress::ContextHome.operator QString());
   217     QString contextHome(QContactAddress::ContextHome.operator QString());
   200     QString contextWork(QContactAddress::ContextWork.operator QString());
   218     QString contextWork(QContactAddress::ContextWork.operator QString());
   201     CntMapTileService::ContactAddressType sourceAddressType;  
   219     CntMapTileService::ContactAddressType sourceAddressType;  
   202     mLocationFeatureEnabled = CntMapTileService::isLocationFeatureEnabled() ;
   220     mLocationFeatureEnabled = CntMapTileService::isLocationFeatureEnabled() ;
   203     //address
   221 
   204     QList<QContactAddress> addressDetails = mContact->details<QContactAddress>();
   222     QList<QContactAddress> addressDetails = mContact->details<QContactAddress>();
   205     for (int i = 0; i < addressDetails.count(); i++)
   223     for (int i = 0; i < addressDetails.count(); i++)
   206     {
   224     {
   207         sourceAddressType = CntMapTileService::AddressPreference;
   225         sourceAddressType = CntMapTileService::AddressPreference;
   208         QVariantList addressList;
   226         QVariantList addressList;
   223             {
   241             {
   224                 sourceAddressType = CntMapTileService::AddressWork;
   242                 sourceAddressType = CntMapTileService::AddressWork;
   225                 title = hbTrId("txt_phob_formlabel_address_work");
   243                 title = hbTrId("txt_phob_formlabel_address_work");
   226             }
   244             }
   227         }
   245         }
   228         CntContactCardDataItem* dataItem = new CntContactCardDataItem(title, false);
   246         CntContactCardDataItem* dataItem = new CntContactCardDataItem(title, itemCount(), false);
   229         
   247         
   230         QStringList address;
   248         QStringList address;
   231         if (!addressDetails[i].street().isEmpty())
   249         if (!addressDetails[i].street().isEmpty())
   232             address.append(addressDetails[i].street());
   250             address.append(addressDetails[i].street());
   233         if (!addressDetails[i].postcode().isEmpty())
   251         if (!addressDetails[i].postcode().isEmpty())
   263                 //Display the maptile image
   281                 //Display the maptile image
   264                 HbIcon icon(imageFile);
   282                 HbIcon icon(imageFile);
   265                 QIcon mapTileIcon;
   283                 QIcon mapTileIcon;
   266                 
   284                 
   267                 QPainter painter;
   285                 QPainter painter;
   268                 QPixmap baloon(":/icons/pin.png");                
   286                 QPixmap baloon( HbIcon("qtg_small_location").pixmap() );                
   269                 QPixmap map(icon.pixmap());
   287                 QPixmap map(icon.pixmap());
   270 
   288 
   271                 //Display pin image in the center of maptile image
   289                 //Display pin image in the center of maptile image
   272                 painter.begin(&map);
   290                 painter.begin(&map);
   273                 painter.drawPixmap((map.width()/2), 
   291                 painter.drawPixmap( ( map.width()/2 ) - ( baloon.width()/ 2 ), 
   274                                ((map.height()/2)-(baloon.height())), baloon);
   292                                (( map.height()/2 )-( baloon.height())), baloon );
       
   293                
   275                 painter.end();
   294                 painter.end();
   276                 mapTileIcon.addPixmap(map);
   295                 mapTileIcon.addPixmap(map);
   277                                 
   296                                 
   278                 addSeparator(itemCount());
   297                 addSeparator(itemCount());
   279                 
   298                 
   280                 CntContactCardDataItem* dataItem = new CntContactCardDataItem(QString(), false);
   299                 CntContactCardDataItem* dataItem = new CntContactCardDataItem(QString(), itemCount(), false);
   281                 dataItem->setIcon(HbIcon(mapTileIcon));
   300                 dataItem->setIcon(HbIcon(mapTileIcon));
   282                 mDataItemList.insert(itemCount(), dataItem);
   301                 mDataItemList.insert(itemCount(), dataItem);
   283 		    }
   302 		    }
   284         }
   303         }
   285     } 
   304     } 
   286     
   305     
       
   306     //company
       
   307     QList<QContactOrganization> organizationDetails = mContact->details<QContactOrganization>();
       
   308     for (int i = 0; i < organizationDetails.count(); i++)
       
   309     {
       
   310         CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_company_details"), itemCount(), false);
       
   311         QStringList companyList;
       
   312         companyList << organizationDetails[i].title() << organizationDetails[i].name() << organizationDetails[i].department();
       
   313         dataItem->setValueText(companyList.join(" ").trimmed());
       
   314         dataItem->setContactDetail(organizationDetails[i]);  
       
   315         addSeparator(itemCount());
       
   316         mDataItemList.insert(itemCount(), dataItem);
       
   317     }
       
   318             
   287     //birthday
   319     //birthday
   288     QList<QContactBirthday> birthdayDetails = mContact->details<QContactBirthday>();
   320     QList<QContactBirthday> birthdayDetails = mContact->details<QContactBirthday>();
   289     for (int i = 0; i < birthdayDetails.count(); i++)
   321     for (int i = 0; i < birthdayDetails.count(); i++)
   290     {
   322     {
   291         CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_birthday"), false);
   323         CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_birthday"), itemCount(), false);
   292         dataItem->setValueText(birthdayDetails[i].date().toString("dd MMMM yyyy"));
   324         dataItem->setValueText(birthdayDetails[i].date().toString("dd MMMM yyyy"));
   293         dataItem->setContactDetail(birthdayDetails[i]);  
   325         dataItem->setContactDetail(birthdayDetails[i]);  
   294         addSeparator(itemCount());
   326         addSeparator(itemCount());
   295         mDataItemList.insert(itemCount(), dataItem);
   327         mDataItemList.insert(itemCount(), dataItem);
   296     }
   328     }
   297 
   329 
   298     //anniversary
   330     //anniversary
   299     QList<QContactAnniversary> anniversaryDetails = mContact->details<QContactAnniversary>();
   331     QList<QContactAnniversary> anniversaryDetails = mContact->details<QContactAnniversary>();
   300     for (int i = 0; i < anniversaryDetails.count(); i++)
   332     for (int i = 0; i < anniversaryDetails.count(); i++)
   301     {
   333     {
   302         CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_anniversary"), false);
   334         CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_anniversary"), itemCount(), false);
   303         dataItem->setValueText(anniversaryDetails[i].originalDate().toString("dd MMMM yyyy"));
   335         dataItem->setValueText(anniversaryDetails[i].originalDate().toString("dd MMMM yyyy"));
   304         dataItem->setContactDetail(anniversaryDetails[i]);  
   336         dataItem->setContactDetail(anniversaryDetails[i]);  
   305         addSeparator(itemCount());
   337         addSeparator(itemCount());
   306         mDataItemList.insert(itemCount(), dataItem);
   338         mDataItemList.insert(itemCount(), dataItem);
   307     }
   339     }
   310     QList<QContactRingtone> ringtoneDetails = mContact->details<QContactRingtone>();
   342     QList<QContactRingtone> ringtoneDetails = mContact->details<QContactRingtone>();
   311     for (int i = 0; i < ringtoneDetails.count(); i++)
   343     for (int i = 0; i < ringtoneDetails.count(); i++)
   312     {
   344     {
   313         if (!ringtoneDetails.at(i).audioRingtoneUrl().isEmpty())
   345         if (!ringtoneDetails.at(i).audioRingtoneUrl().isEmpty())
   314         {
   346         {
   315             CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_ringing_tone"), false);
   347             CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_ringing_tone"), itemCount(), false);
   316             dataItem->setValueText(ringtoneDetails[i].audioRingtoneUrl().toString());
   348             dataItem->setValueText(ringtoneDetails[i].audioRingtoneUrl().toString());
   317             dataItem->setContactDetail(ringtoneDetails[i]);  
   349             dataItem->setContactDetail(ringtoneDetails[i]);  
   318             addSeparator(itemCount());
   350             addSeparator(itemCount());
   319             mDataItemList.insert(itemCount(), dataItem);
   351             mDataItemList.insert(itemCount(), dataItem);
   320             break;
   352             break;
   323 
   355 
   324     //note
   356     //note
   325     QList<QContactNote> noteDetails = mContact->details<QContactNote>();
   357     QList<QContactNote> noteDetails = mContact->details<QContactNote>();
   326     for (int i = 0; i < noteDetails.count(); i++)
   358     for (int i = 0; i < noteDetails.count(); i++)
   327     {
   359     {
   328         CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_note"), false);
   360         CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_note"), itemCount(), false);
   329         dataItem->setValueText(noteDetails[i].note());
   361         dataItem->setValueText(noteDetails[i].note());
   330         dataItem->setContactDetail(noteDetails[i]);  
   362         dataItem->setContactDetail(noteDetails[i]);  
   331         addSeparator(itemCount());
   363         addSeparator(itemCount());
   332         mDataItemList.insert(itemCount(), dataItem);
   364         mDataItemList.insert(itemCount(), dataItem);
   333     }
   365     }
   334 
   366 
   335     //family details
   367     //family details
   336     QList<QContactFamily> familyDetails = mContact->details<QContactFamily>();
   368     QList<QContactFamily> familyDetails = mContact->details<QContactFamily>();
   337     for (int i = 0; i < familyDetails.count(); i++)
   369     for (int i = 0; i < familyDetails.count(); i++)
   338     {
   370     {
   339         CntContactCardDataItem* dataSpouseItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_spouse"), false);
   371         CntContactCardDataItem* dataSpouseItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_spouse"), itemCount(), false);
   340         dataSpouseItem->setValueText(familyDetails[i].spouse());
   372         dataSpouseItem->setValueText(familyDetails[i].spouse());
   341         dataSpouseItem->setContactDetail(familyDetails[i]);  
   373         dataSpouseItem->setContactDetail(familyDetails[i]);  
   342         addSeparator(itemCount());
   374         addSeparator(itemCount());
   343         mDataItemList.insert(itemCount(), dataSpouseItem);
   375         mDataItemList.insert(itemCount(), dataSpouseItem);
   344         
   376         
   345         CntContactCardDataItem* dataChildrenItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_children"), false);
   377         CntContactCardDataItem* dataChildrenItem = new CntContactCardDataItem(hbTrId("txt_phob_formlabel_children"), itemCount(), false);
   346         dataChildrenItem->setValueText(familyDetails[i].children().join(", "));
   378         dataChildrenItem->setValueText(familyDetails[i].children().join(", "));
   347         dataChildrenItem->setContactDetail(familyDetails[i]);  
   379         dataChildrenItem->setContactDetail(familyDetails[i]);  
   348         addSeparator(itemCount());
   380         addSeparator(itemCount());
   349         mDataItemList.insert(itemCount(), dataChildrenItem);
   381         mDataItemList.insert(itemCount(), dataChildrenItem);
   350     }
   382     }
   354 Returns true if contactDetails contains spesific action.
   386 Returns true if contactDetails contains spesific action.
   355 */
   387 */
   356 bool CntContactCardDataContainer::supportsDetail(const QString &actionName, const QContactDetail &contactDetail)
   388 bool CntContactCardDataContainer::supportsDetail(const QString &actionName, const QContactDetail &contactDetail)
   357 {    
   389 {    
   358     QList<QContactActionDescriptor> actionDescriptors = QContactAction::actionDescriptors(actionName, "symbian");
   390     QList<QContactActionDescriptor> actionDescriptors = QContactAction::actionDescriptors(actionName, "symbian");
       
   391     if (actionDescriptors.isEmpty())
       
   392     {
       
   393         return false;
       
   394     }
       
   395     
   359     QContactAction* contactAction = QContactAction::action(actionDescriptors.first());
   396     QContactAction* contactAction = QContactAction::action(actionDescriptors.first());
   360     
       
   361     bool isSupportDetail = contactAction->isDetailSupported(contactDetail);
   397     bool isSupportDetail = contactAction->isDetailSupported(contactDetail);
   362     
   398     
   363     delete contactAction;
   399     delete contactAction;
   364     
   400     
   365     return isSupportDetail;
   401     return isSupportDetail;
   369 Returns the list of details which current action support.
   405 Returns the list of details which current action support.
   370 */
   406 */
   371 QList<QContactDetail> CntContactCardDataContainer::actionDetails(const QString &actionName, const QContact &contact)
   407 QList<QContactDetail> CntContactCardDataContainer::actionDetails(const QString &actionName, const QContact &contact)
   372 {
   408 {
   373     QList<QContactActionDescriptor> actionDescriptors = QContactAction::actionDescriptors(actionName, "symbian");
   409     QList<QContactActionDescriptor> actionDescriptors = QContactAction::actionDescriptors(actionName, "symbian");
   374     QContactAction* contactAction = QContactAction::action(actionDescriptors.first());
   410     if (actionDescriptors.isEmpty())
   375 
   411     {
       
   412        return QList<QContactDetail>();
       
   413     }
       
   414     
       
   415     QContactAction* contactAction = QContactAction::action(actionDescriptors.first()); 
   376     QList<QContactDetail> details = contactAction->supportedDetails(contact);
   416     QList<QContactDetail> details = contactAction->supportedDetails(contact);
   377 
   417 
   378     delete contactAction;
   418     delete contactAction;
   379 
   419 
   380     return details;
   420     return details;
   401 void CntContactCardDataContainer::addSeparator(int index)
   441 void CntContactCardDataContainer::addSeparator(int index)
   402 {
   442 {
   403     if (mSeparatorIndex == -1)
   443     if (mSeparatorIndex == -1)
   404     {
   444     {
   405         mSeparatorIndex = index;
   445         mSeparatorIndex = index;
   406         CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_subtitle_details"), false);
   446         CntContactCardDataItem* dataItem = new CntContactCardDataItem(hbTrId("txt_phob_subtitle_details"), itemCount(), false);
   407         mDataItemList.insert(itemCount(), dataItem);
   447         mDataItemList.insert(itemCount(), dataItem);
   408     }
   448     }
   409 }
   449 }
   410 
   450 
   411 /*!
   451 /*!
   414 int CntContactCardDataContainer::itemCount() const
   454 int CntContactCardDataContainer::itemCount() const
   415 {
   455 {
   416     return mDataItemList.count();
   456     return mDataItemList.count();
   417 }
   457 }
   418 
   458 
       
   459 /*!
       
   460 Sort data item list by position number
       
   461 */
       
   462 void CntContactCardDataContainer::sortDataItems()
       
   463 {
       
   464     qStableSort(mDataItemList.begin(), mDataItemList.end(), compareObjects);
       
   465 }
       
   466 
       
   467 
       
   468