QMessageStore, если я правильно понял, уже не используется, вместо него QMessageManager.
Я наваял нижеприведенный код, вроде бы должно работать, ан нет. При попытке отправить СМС выводится сообщение:
"Сбщ. SMS. Уже используется!"
И предлагается сохранить СМС в черновики или удалить.
Если заменить OutboxFolder на InboxFolder, то входящие смски отлавливаются (правда сигнал о приходе СМС успевает прозвучать), видимо истина где-то рядом совсем.
Что я не так делаю?
Code:
void Dialog::on_StartBtn_clicked()
{
// Manager for listening messages
m_manager = new QMessageManager(this);
// Listen new added messages
connect(m_manager,
SIGNAL(messageAdded(const QMessageId&,
const QMessageManager::NotificationFilterIdSet&)),
this,
SLOT(messageAdded(const QMessageId&,
const QMessageManager::NotificationFilterIdSet&)));
m_notifFilterSet.insert(m_manager->registerNotificationFilter(
QMessageFilter::byType(QMessage::Sms) &
QMessageFilter::byStandardFolder(QMessage::OutboxFolder)));
}
void Dialog::messageAdded(const QMessageId& id,
const QMessageManager::NotificationFilterIdSet& matchingFilterIds)
{
// Message added...
if (matchingFilterIds.contains(m_notifFilterSet)) {
// ...and it fits into our filters, lets process it
m_messageId = id;
QTimer::singleShot(0, this, SLOT(processIncomingSMS()));
}
}
void Dialog::processIncomingSMS()
{
QMessage message = m_manager->message(m_messageId);
QString messageString = message.textContent();
QString messageAdresat = message.to().at(0).addressee();
if(messageAdresat=="+79161233434")
{
m_manager->removeMessage(m_messageId);
connect(&service, SIGNAL(stateChanged(QMessageService::State)), this, SLOT(stateChanged(QMessageService::State)));
MySendSMS(messageString+"My text", messageAdresat);
}
}