MessageModel::StatusCode MessageModel::sendMessages(const QList<SendMessagesRecipient> &recipients, const QString &addressFrom) { QSet<QString> setAddress; if(recipients.empty()) return OK; // Pre-check input data for validity foreach(const SendMessagesRecipient &rcp, recipients) { if(!walletModel->validateAddress(rcp.address)) return InvalidAddress; if(rcp.message == "") return MessageCreationFailed; std::string sendTo = rcp.address.toStdString(); std::string pubkey = rcp.pubkey.toStdString(); std::string message = rcp.message.toStdString(); std::string addFrom = addressFrom.toStdString(); SecureMsgAddAddress(sendTo, pubkey); setAddress.insert(rcp.address); std::string sError; if (SecureMsgSend(addFrom, sendTo, message, sError) != 0) { QMessageBox::warning(NULL, tr("Send Secure Message"), tr("Send failed: %1.").arg(sError.c_str()), QMessageBox::Ok, QMessageBox::Ok); return FailedErrorShown; }; // Add addresses / update labels that we've sent to to the address book std::string strAddress = rcp.address.toStdString(); CTxDestination dest = CBitcoinAddress(strAddress).Get(); std::string strLabel = rcp.label.toStdString(); { LOCK(wallet->cs_wallet); std::map<CTxDestination, std::string>::iterator mi = wallet->mapAddressBook.find(dest); // Check if we have a new address or an updated label if (mi == wallet->mapAddressBook.end() || mi->second != strLabel) { wallet->SetAddressBookName(dest, strLabel); } } } if(recipients.size() > setAddress.size()) return DuplicateAddress; return OK; }
void MessagePage::on_sendButton_clicked() { if(!model) return; std::string sError; std::string sendTo = replyToAddress.toStdString(); std::string message = ui->messageEdit->toHtml().toStdString(); std::string addFrom = replyFromAddress.toStdString(); if (SecureMsgSend(addFrom, sendTo, message, sError) != 0) { QMessageBox::warning(NULL, tr("Send Secure Message"), tr("Send failed: %1.").arg(sError.c_str()), QMessageBox::Ok, QMessageBox::Ok); return; }; //ui->messageEdit->setMaximumHeight(30); ui->messageEdit->clear(); ui->listConversation->scrollToBottom(); }
MessageModel::StatusCode MessageModel::sendMessage(const QString &address, const QString &message, const QString &addressFrom) { if(!walletModel->validateAddress(address)) return InvalidAddress; if(message == "") return MessageCreationFailed; std::string sendTo = address.toStdString(); std::string msg = message.toStdString(); std::string from = addressFrom.toStdString(); std::string sError; if (SecureMsgSend(from, sendTo, msg, sError) != 0) { QMessageBox::warning(NULL, tr("Send Secure Message"), tr("Send failed: %1.").arg(sError.c_str()), QMessageBox::Ok, QMessageBox::Ok); return FailedErrorShown; }; return OK; }