equal
deleted
inserted
replaced
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 //--------------------------------------------------------------- |