bool ContactListEdit::isStoredContact() { if(_image_format.isValid()) { IMailProcessor::TRecipientPublicKey pk; decodePublicKey(_image_format, &pk); if(Utils::matchContact(pk, _clicked_contact)) return true; } return false; }
bool ContactListEdit::validateClickPosition(const QPoint& position, bool* isExistingContact, bts::addressbook::wallet_contact* foundContact) const { assert(isExistingContact != nullptr); assert(foundContact != nullptr); *isExistingContact = false; QPoint shiftedPos(position); shiftedPos += QPoint(2, 0); int current_position = document()->documentLayout()->hitTest(shiftedPos, Qt::ExactHit); if(current_position > -1) { QTextBlock current_block = document()->begin(); while(current_block.isValid()) { for(QTextBlock::iterator it = current_block.begin(); !(it.atEnd()); ++it) { QTextFragment current_fragment = it.fragment(); if(current_fragment.isValid() && current_fragment.contains(current_position)) { QTextFormat current_format = current_fragment.charFormat(); if(current_format.isImageFormat()) { QTextImageFormat imageFormat = current_format.toImageFormat(); IMailProcessor::TRecipientPublicKey pk; decodePublicKey(imageFormat, &pk); *isExistingContact = Utils::matchContact(pk, foundContact); return true; } } } current_block = current_block.next(); } } return false; }
void ContactListEdit::GetCollectedContacts(IMailProcessor::TRecipientPublicKeys* storage) const { assert(storage != nullptr); storage->reserve(10); QTextBlock block = document()->begin(); while(block.isValid()) { for(QTextBlock::iterator i = block.begin(); i != block.end(); ++i) { QTextCharFormat format = i.fragment().charFormat(); if(format.isImageFormat()) { QTextImageFormat imgF = format.toImageFormat(); IMailProcessor::TRecipientPublicKey pk; decodePublicKey(imgF, &pk); assert(pk.valid()); storage->push_back(pk); } } block = block.next(); } }