QMessage EventLoggerEngine::eventToMessage(RTComElEvent & ev) { QMessage message; if (!strcmp(ev.fld_service, "RTCOM_EL_SERVICE_SMS")) { message.setType(QMessage::Sms); } else if (!strcmp(ev.fld_service,"RTCOM_EL_SERVICE_CHAT")) { message.setType(QMessage::InstantMessage); } else { message.setType(QMessage::NoType); // Other type, as exampele voice Call }; message.setParentAccountId(QMessageAccountId(QString("y/Account/%1").arg(ev.fld_local_uid))); if (!ev.fld_is_read) { message.setStatus(QMessage::Read); }; message.setPriority(QMessage::NormalPriority); message.setDate(QDateTime::fromTime_t(ev.fld_start_time)); message.setReceivedDate(QDateTime::fromTime_t(ev.fld_start_time)); if (ev.fld_outgoing) QMessagePrivate::setStandardFolder(message,QMessage::SentFolder); else QMessagePrivate::setStandardFolder(message,QMessage::InboxFolder); // qDebug() << "event_type:" << ev.fld_event_type << ev.fld_event_type_id << "Outgoing:" << ev.fld_outgoing << " Folder:" << message.standardFolder(); if (ev.fld_outgoing) { // Outgoing message message.setFrom(QMessageAddress(QMessageAddress::Phone, QString(ev.fld_local_uid))); QMessagePrivate::setSenderName(message, QString(ev.fld_local_uid)); message.setTo(QMessageAddress(QMessageAddress::Phone, QString(ev.fld_remote_uid))); } else { // Incoming message message.setFrom(QMessageAddress(QMessageAddress::Phone, QString(ev.fld_remote_uid))); QMessagePrivate::setSenderName(message, QString(ev.fld_remote_uid)); QMessageAddressList messageAddresslist; messageAddresslist.append(QMessageAddress(QMessageAddress::Phone, QString(ev.fld_local_uid))); message.setTo(messageAddresslist); } message.setBody(QString::fromUtf8(ev.fld_free_text)); QMessagePrivate* privateMessage = QMessagePrivate::implementation(message); privateMessage->_id = QMessageId(QString("el")+QString::number(ev.fld_id)); privateMessage->_modified = false; // qDebug() << "id:" << message.id().toString() << "From:" << message.from().addressee() << "Text:" << message.textContent(); return message; }
QMessageAddressList MessagingHelper::stringToAddressList(const QString &astring) { QMessageAddressList ret; int i = 0; while(1) { QString str = astring.section(DELIMETER_EMAIL, i, i); i++; if (str.length()) { QMessageAddress address(QMessageAddress::Phone, str); ret.append(address); } else break; } return ret; }
QMessage EventLoggerEngine::message(const QMessageId& id) { QMessage message; // qDebug() << "EventLoggerEngine::getMessage id=" << id.toString(); RTComElEvent ev; bzero(&ev,sizeof(ev)); RTComElQuery *q=rtcom_el_query_new(el); rtcom_el_query_prepare(q,"id",id.toString().remove("el").toInt(),RTCOM_EL_OP_EQUAL,NULL); RTComElIter *iter=rtcom_el_get_events(el,q); g_object_unref(q); if(iter && rtcom_el_iter_first(iter)) { gboolean res=rtcom_el_iter_get_full(iter,&ev); if(res) { #if 0 printf("got event id=%d service_id=%d event_typ_id=%d\n\ local_uid=%s local_name=%s\n\ remote_uid=%s remote_name=%s remote_ebook_uid=%s\n\ channel=%s free_text=%s group_uid=%s\n\ service=%s event_type=%s\n\ additional_text=%s icon_name=%s pango_markup=%s\n", ev.fld_id,ev.fld_service_id,ev.fld_event_type_id, ev.fld_local_uid,ev.fld_local_name, ev.fld_remote_uid,ev.fld_remote_name,ev.fld_remote_ebook_uid, ev.fld_channel,ev.fld_free_text,ev.fld_group_uid, ev.fld_service,ev.fld_event_type, ev.fld_additional_text,ev.fld_icon_name,ev.fld_pango_markup); #endif if (!strcmp(ev.fld_service, "RTCOM_EL_SERVICE_SMS")) { message.setType(QMessage::Sms); } else if (!strcmp(ev.fld_service,"RTCOM_EL_SERVICE_CHAT")) { message.setType(QMessage::InstantMessage); } else { message.setType(QMessage::NoType); // Other type, as exampele voice Call }; //QMessageAccount account = TelepathyEngine::instance()->account(QMessageAccountId(QString("/y/Account%1").arg(ev.fld_local_uid))); message.setParentAccountId(QMessageAccountId(QString("/y/Account/%1").arg(ev.fld_local_uid))); if (!ev.fld_is_read) { message.setStatus(QMessage::Read); }; message.setPriority(QMessage::NormalPriority); message.setDate(QDateTime::fromTime_t(ev.fld_start_time)); message.setReceivedDate(QDateTime::fromTime_t(ev.fld_start_time)); if (ev.fld_outgoing) QMessagePrivate::setStandardFolder(message,QMessage::SentFolder); else QMessagePrivate::setStandardFolder(message,QMessage::InboxFolder); if (ev.fld_outgoing) { // Outgoing message message.setFrom(QMessageAddress(QMessageAddress::Phone, QString(ev.fld_local_uid))); QMessagePrivate::setSenderName(message, QString(ev.fld_local_uid)); message.setTo(QMessageAddress(QMessageAddress::Phone, QString(ev.fld_remote_uid))); } else { // Incoming message message.setFrom(QMessageAddress(QMessageAddress::Phone, QString(ev.fld_remote_uid))); QMessagePrivate::setSenderName(message, QString(ev.fld_remote_uid)); QMessageAddressList messageAddresslist; messageAddresslist.append(QMessageAddress(QMessageAddress::Phone, QString(ev.fld_local_uid))); message.setTo(messageAddresslist); } message.setBody(QString::fromUtf8(ev.fld_free_text)); QMessagePrivate* privateMessage = QMessagePrivate::implementation(message); privateMessage->_id = id; privateMessage->_modified = false; // qDebug() << "id:" << message.id().toString() << "From:" << message.from().addressee() << "Text:" << message.textContent(); }; };
void MessageSender::send() { //! [associate-account] QString accountName(accountCombo->currentText()); if (accountName.isEmpty()) { QMessageBox::warning(0, tr("Missing information"), tr("No account is selected for transmission")); return; } QMessage message; QPair<QMessage::Type, QMessageAccountId> details = accountDetails[accountName]; message.setType(details.first); message.setParentAccountId(details.second); //! [associate-account] //! [set-recipients] QString to(toEdit->text()); if (to.isEmpty()) { QMessageBox::warning(0, tr("Missing information"), tr("Please enter a recipient address")); return; } // Find the address type to use for this message QMessageAddress::Type addrType(message.type() == QMessage::Email ? QMessageAddress::Email : QMessageAddress::Phone); QMessageAddressList toList; foreach (const QString &item, to.split(QRegExp("\\s"), QString::SkipEmptyParts)) { toList.append(QMessageAddress(addrType, item)); } message.setTo(toList); //! [set-recipients] //! [set-properties] if (message.type() == QMessage::Email) { QString subject(subjectEdit->text()); if (subject.isEmpty()) { QMessageBox::warning(0, tr("Missing information"), tr("Please enter a subject")); return; } message.setSubject(subject); } QString text(textEdit->toPlainText()); if (text.isEmpty()) { QMessageBox::warning(0, tr("Missing information"), tr("Please enter a message")); return; } message.setBody(text); //! [set-properties] //! [add-attachments] if (message.type() != QMessage::Sms) { if (attachmentsList->count()) { QStringList paths; for (int i = 0; i < attachmentsList->count(); ++i) { paths.append(attachmentsList->item(i)->text()); } message.appendAttachments(paths); } } //! [add-attachments] //! [send-message] sendButton->setEnabled(false); if (service.send(message)) { sendId = message.id(); } else { sendButton->setEnabled(true); QMessageBox::warning(0, tr("Failed"), tr("Unable to send message")); } //! [send-message] }