messagingapp/msgui/unifiedviewer/src/univiewertextitem.cpp
changeset 27 e4592d119491
parent 25 84d9eb65b26f
child 47 5b14749788d7
equal deleted inserted replaced
25:84d9eb65b26f 27:e4592d119491
    16  * has in built logic for finding phone number, email, url.
    16  * has in built logic for finding phone number, email, url.
    17  *
    17  *
    18  */
    18  */
    19 
    19 
    20 #include "univiewertextitem.h"
    20 #include "univiewertextitem.h"
       
    21 #include "msgcontacthandler.h"
    21 
    22 
    22 #include <QRegExp>
    23 #include <QRegExp>
    23 #include <QGraphicsSceneMouseEvent>
    24 #include <QGraphicsSceneMouseEvent>
    24 #include <QApplication>
    25 #include <QApplication>
    25 #include <QClipboard>
    26 #include <QClipboard>
    26 #include <QTextBlock>
    27 #include <QTextBlock>
    27 
    28 
    28 #include <HbMenu>
    29 #include <HbMenu>
    29 #include <HbAction>
    30 #include <HbAction>
       
    31 #include <HbFrameItem>
    30 #include <cntservicescontact.h>
    32 #include <cntservicescontact.h>
    31 #include <qtcontacts.h>
       
    32 #include <XQServiceRequest.h>
    33 #include <XQServiceRequest.h>
    33 #include <xqaiwrequest.h>
    34 #include <xqaiwrequest.h>
    34 
    35 #include <xqappmgr.h>
    35 QTM_USE_NAMESPACE
    36 
    36 
    37 
    37 //consts
    38 //consts
    38 
    39 
    39 //regexp
    40 //regexp
    40 const QString NUMBER_PATTERN("(\\(|\\+|\\d)((?:\\d{2,})((?:[\\s-/.\\)\\()])*(?:(\\d+|\\))))*)|((\\*#)(?:\\d+(\\*|#)(?:\\d+#)?))");
    41 const QString NUMBER_PATTERN("(\\(|\\+|\\d)((?:\\d{2,})((?:[\\s-/.\\)\\()])*(?:(\\d+|\\))))*)|((\\*#)(?:\\d+(\\*|#)(?:\\d+#)?))");
    63 HbTextEdit(parent),
    64 HbTextEdit(parent),
    64 mFindOn(true),
    65 mFindOn(true),
    65 mCursorPos(-1)
    66 mCursorPos(-1)
    66 {
    67 {
    67     this->setReadOnly(true);
    68     this->setReadOnly(true);
       
    69     this->setScrollable(false);
    68     this->setCursorVisibility(Hb::TextCursorHidden);
    70     this->setCursorVisibility(Hb::TextCursorHidden);
       
    71     this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
       
    72     HbFrameItem *noBackground = new HbFrameItem(this);
       
    73     this->setBackgroundItem(noBackground);
    69 
    74 
    70     //inserting rules and patterns to map.
    75     //inserting rules and patterns to map.
    71     mRules.insert(NUMBER_RULE,NUMBER_PATTERN);
    76     mRules.insert(NUMBER_RULE,NUMBER_PATTERN);
    72     mRules.insert(EMAIL_RULE,EMAIL_PATTERN);
    77     mRules.insert(EMAIL_RULE,EMAIL_PATTERN);
    73     mRules.insert(URL_RULE,URL_PATTERN);
    78     mRules.insert(URL_RULE,URL_PATTERN);
   344 
   349 
   345         // Launch email editor
   350         // Launch email editor
   346         QString serviceName("com.nokia.services.commonemail");
   351         QString serviceName("com.nokia.services.commonemail");
   347         QString interfaceName("imessage.send");
   352         QString interfaceName("imessage.send");
   348         QString operation("send(QVariant)");
   353         QString operation("send(QVariant)");
   349         XQAiwRequest* request = mAppManager.create(serviceName, interfaceName, 
   354         XQApplicationManager appManager;
       
   355         XQAiwRequest* request = appManager.create(serviceName, interfaceName, 
   350 			operation, true); 
   356 			operation, true); 
   351         if ( request == NULL )
   357         if ( request == NULL )
   352             {
   358             {
   353             return;       
   359             return;       
   354             }
   360             }
   412         
   418         
   413         if(data.contains(QRegExp("^"+NUMBER_RULE)))
   419         if(data.contains(QRegExp("^"+NUMBER_RULE)))
   414         {
   420         {
   415             data.remove(NUMBER_RULE);
   421             data.remove(NUMBER_RULE);
   416     
   422     
   417             int contactId = resolveContactId(data, 
   423             int contactId = MsgContactHandler::resolveContactDisplayName(
   418                                              QContactPhoneNumber::DefinitionName,
   424                                          data, 
   419                                              QContactPhoneNumber::FieldNumber);
   425                                          QContactPhoneNumber::DefinitionName,
       
   426                                          QContactPhoneNumber::FieldNumber);
   420     
   427     
   421             if(contactId > 0)
   428             if(contactId > 0)
   422                 {
   429                 {
   423                 //open contact card
   430                 //open contact card
   424                 operation = QString("open(int)");
   431                 operation = QString("open(int)");
   437         }
   444         }
   438         else if(data.contains(QRegExp("^"+EMAIL_RULE)))
   445         else if(data.contains(QRegExp("^"+EMAIL_RULE)))
   439         {
   446         {
   440             data.remove(EMAIL_RULE);
   447             data.remove(EMAIL_RULE);
   441     
   448     
   442             int contactId = resolveContactId(data,
   449             int contactId = MsgContactHandler::resolveContactDisplayName(
   443                                              QContactEmailAddress::DefinitionName,
   450                     data,
   444                                              QContactEmailAddress::FieldEmailAddress);
   451                     QContactEmailAddress::DefinitionName,
       
   452                     QContactEmailAddress::FieldEmailAddress);
   445             
   453             
   446             if(contactId > 0)
   454             if(contactId > 0)
   447                 {
   455                 {
   448                 //open contact card
   456                 //open contact card
   449                 operation = QString("open(int)");
   457                 operation = QString("open(int)");
   464         
   472         
   465         //service stuff.
   473         //service stuff.
   466         QString serviceName("com.nokia.services.phonebookservices");
   474         QString serviceName("com.nokia.services.phonebookservices");
   467      
   475      
   468         XQAiwRequest* request;
   476         XQAiwRequest* request;
   469         request = mAppManager.create(serviceName, "Fetch", operation, true); // embedded
   477         XQApplicationManager appManager;
       
   478         request = appManager.create(serviceName, "Fetch", operation, true); // embedded
   470         if ( request == NULL )
   479         if ( request == NULL )
   471             {
   480             {
   472             return;       
   481             return;       
   473             }
   482             }
   474 
   483 
   498     
   507     
   499     if(request)
   508     if(request)
   500         {
   509         {
   501         delete request;
   510         delete request;
   502         }
   511         }
   503     }
       
   504 
       
   505 int UniViewerTextItem::resolveContactId(const QString& value,
       
   506                                         const QString& fieldName,
       
   507                                         const QString& fieldType)
       
   508     {
       
   509     int contactId = -1;
       
   510     
       
   511     QContactManager phonebookManager("symbian");
       
   512     
       
   513     QContactDetailFilter phoneFilter;
       
   514     phoneFilter.setDetailDefinitionName(fieldName, fieldType);
       
   515     phoneFilter.setValue(value);
       
   516     phoneFilter.setMatchFlags(QContactFilter::MatchEndsWith);
       
   517 
       
   518     QList<QContactSortOrder> sortOrder;
       
   519     QList<QContact> matchingContacts = phonebookManager.contacts(
       
   520             phoneFilter,
       
   521             sortOrder,
       
   522             QStringList());
       
   523 
       
   524     if ( matchingContacts.count() > 0 ) 
       
   525         {       
       
   526         contactId = matchingContacts.at(0).localId();;   
       
   527         }
       
   528     
       
   529     return contactId;
       
   530     }
   512     }
   531 
   513 
   532 void UniViewerTextItem::menuClosed()
   514 void UniViewerTextItem::menuClosed()
   533 {
   515 {
   534     highlightText(false);
   516     highlightText(false);
   563             {
   545             {
   564                 cursor.mergeCharFormat(mFormatNormal);
   546                 cursor.mergeCharFormat(mFormatNormal);
   565             }
   547             }
   566 
   548 
   567             cursor.clearSelection();
   549             cursor.clearSelection();
       
   550             break;
   568         }
   551         }
   569     }
   552     }
   570 }
   553 }
   571 
   554 
   572 //---------------------------------------------------------------
   555 //---------------------------------------------------------------