*************** *** 22,27 **** #include #include #include #include #include #include --- 22,28 ---- #include #include #include + #include #include #include #include *************** *** 1471,1476 **** d->cv->qa_hist->addTo(&pm); } //if(link_test) { // pm.insertSeparator(); // pm.insertItem(tr("Link Test"), 13); --- 1472,1481 ---- d->cv->qa_hist->addTo(&pm); } + pm.insertItem(tr("Copy &JID to clipboard"), 27); + if (i->hasStatusMessage ()) + pm.insertItem(tr("Copy &status message to clipboard"), 28); + //if(link_test) { // pm.insertSeparator(); // pm.insertItem(tr("Link Test"), 13); *************** *** 1591,1596 **** connect(w, SIGNAL(setJid(const Jid &, const Status &)), SLOT(setStatusFromDialog(const Jid &, const Status &))); w->show(); } else if(x >= base_sendto && x < base_openurl) { int n = x - base_sendto; int res = n / 2; --- 1596,1617 ---- connect(w, SIGNAL(setJid(const Jid &, const Status &)), SLOT(setStatusFromDialog(const Jid &, const Status &))); w->show(); } + else if(x == 27) + { + QClipboard *clipboard = QApplication::clipboard(); + QString cliptext = i->giveContactJID (); + + clipboard->setText(cliptext, QClipboard::Clipboard); + clipboard->setText(cliptext, QClipboard::Selection); + } + else if(x == 28) + { + QClipboard *clipboard = QApplication::clipboard(); + QString cliptext = i->giveContactStatusMessage (); + + clipboard->setText(cliptext, QClipboard::Clipboard); + clipboard->setText(cliptext, QClipboard::Selection); + } else if(x >= base_sendto && x < base_openurl) { int n = x - base_sendto; int res = n / 2; *************** *** 3887,3892 **** return &(d->urllist); } void ContactViewItem::dragEntered() { //printf("entered\n"); --- 3908,3932 ---- return &(d->urllist); } + bool ContactViewItem::hasStatusMessage () const + { + if (d->strStatus.isEmpty ()) + return false; + return true; + } + + QString ContactViewItem::giveContactJID () const + { + return d->u->jid().full(); + } + + QString ContactViewItem::giveContactStatusMessage () const + { + if (d->u->priority() != d->u->userResourceList().end()) + return (*d->u->priority()).status().status(); + return d->u->lastUnavailableStatus().status(); + } + void ContactViewItem::dragEntered() { //printf("entered\n");