Change code from QT5 to QT6
-
wrote on 23 Jan 2024, 07:43 last edited by
Hello everyone. This piece of my code is in c++ to send sms on android. How can I fix the following errors?
my c++ code:
#include "SmsSender.h"
#include <QDebug>
SmsSender::SmsSender():
QObject(), Singleton<SmsSender>(),
_nextMsgId(0), _sendingMsgs(),
_nbMsgs(0), _nbSent(0), _nbDelivered(0), _nbErrors(0)
{}SmsSender::~SmsSender()
{
qDeleteAll(_sendingMsgs);
}#if defined (Q_OS_ANDROID)
#include <QJniObject>
#include <QtCore/qjniobject.h>
#include <QtCore/qcoreapplication.h>
#include <QtCore/private/qandroidextras_p.h>
#endif
void SmsSender::sendText(const QString &destMobile, const QString &msg)
{
#ifdef DEBUG
LogService::sendLog("in da cpp: sending text to "+destMobile+ ": " +msg);
#endif
if (msg.isEmpty())
{
_error("SmsSender won't send an empty msg...");
return;
}#if defined (Q_OS_ANDROID)
auto result = QtAndroidPrivate::checkPermission(QString("android.permission.SEND_SMS"));
if(result == QtAndroidPrivate::Denied){
_log("don't have android.permission.SEND_SMS");auto resultHash = QtAndroidPrivate::requestPermissions(QStringList({"android.permission.SEND_SMS"})); if(resultHash["android.permission.SEND_SMS"] == QtAndroidPrivate::Denied) { _error("couldn't get android.permission.SEND_SMS"); return; } } QJniObject myPhoneNumber = QJniObject::fromString(destMobile); QJniObject myTextMessage = QJniObject::fromString(msg); jint msgId = ++_nextMsgId; ++_nbMsgs; _sendingMsgs.insert(msgId, new SmsStatus(msgId)); QJniObject::callStaticMethod<void>("sendMessage", "(ILjava/lang/String;Ljava/lang/String;)V", msgId, myPhoneNumber.object<jstring>(), myTextMessage.object<jstring>());
#else
Q_UNUSED(destMobile)
Q_UNUSED(msg)
_error("Sending text is only working on an Android device!...");
#endif
}void SmsSender::msgParts(int msgId, int nbParts)
{
_sendingMsgs[msgId]->nbParts = nbParts;
_log(tr("Message #%1 has %2 parts").arg(msgId).arg(nbParts));
}void SmsSender::msgSent(int msgId, bool success)
{
if (success)
++_sendingMsgs[msgId]->nbSent.first;
else
++_sendingMsgs[msgId]->nbSent.second;if (_sendingMsgs[msgId]->allPartsSent()) { _sendingMsgs[msgId]->state = MSG_STATE::SENT; QString msgStatus; int nbMsgErrors = _sendingMsgs[msgId]->nbSent.second; if (nbMsgErrors == 0) { ++_nbSent; msgStatus = tr("successfully"); } else { ++_nbErrors; msgStatus = tr("with %1 errors").arg(nbMsgErrors); } _log(tr("Message #%1 has been sent %2").arg(msgId).arg(msgStatus));
#if defined (Q_OS_ANDROID)
QJniObject msgSent = QJniObject::fromString("MSG SENT");
QJniObject::callStaticMethod<void>("popup",
"(Ljava/lang/String;)V",
msgSent.object<jstring>());
#endif}
}
void SmsSender::msgDelivered(int msgId, bool success)
{
if (success)
++_sendingMsgs[msgId]->nbDelivered.first;
else
++_sendingMsgs[msgId]->nbDelivered.second;if (_sendingMsgs[msgId]->allPartsDelivered()) { _sendingMsgs[msgId]->state = MSG_STATE::DELIVERED; QString msgStatus; int nbMsgErrors = _sendingMsgs[msgId]->nbDelivered.second; if (nbMsgErrors == 0) { ++_nbDelivered; msgStatus = tr("successfully"); } else { ++_nbErrors; msgStatus = tr("with %1 errors").arg(nbMsgErrors); } _log(tr("Message #%1 has been delivered %2").arg(msgId).arg(msgStatus));
#if defined (Q_OS_ANDROID)
QJniObject msgSent = QJniObject::fromString("MSG DELIVERED");
QJniObject::callStaticMethod<void>("popup",
"(Ljava/lang/String;)V",
msgSent.object<jstring>());
#endif
}
}void SmsSender::_log(const QString &txt)
{
qDebug() << txt;
emit log(txt);
}void SmsSender::_error(const QString &txt)
{
qCritical() << txt;
emit error(txt);
}errors:
C:\Users\Ha_Sa\Documents\sendsms\SmsSender.cpp:36: error: invalid operands to binary expression ('QFutureQtAndroidPrivate::PermissionResult' and 'QtAndroidPrivate::PermissionResult')
..\sendsms\SmsSender.cpp:36:15: error: invalid operands to binary expression ('QFutureQtAndroidPrivate::PermissionResult' and 'QtAndroidPrivate::PermissionResult')
if(result == QtAndroidPrivate::Denied){^
-
Hello everyone. This piece of my code is in c++ to send sms on android. How can I fix the following errors?
my c++ code:
#include "SmsSender.h"
#include <QDebug>
SmsSender::SmsSender():
QObject(), Singleton<SmsSender>(),
_nextMsgId(0), _sendingMsgs(),
_nbMsgs(0), _nbSent(0), _nbDelivered(0), _nbErrors(0)
{}SmsSender::~SmsSender()
{
qDeleteAll(_sendingMsgs);
}#if defined (Q_OS_ANDROID)
#include <QJniObject>
#include <QtCore/qjniobject.h>
#include <QtCore/qcoreapplication.h>
#include <QtCore/private/qandroidextras_p.h>
#endif
void SmsSender::sendText(const QString &destMobile, const QString &msg)
{
#ifdef DEBUG
LogService::sendLog("in da cpp: sending text to "+destMobile+ ": " +msg);
#endif
if (msg.isEmpty())
{
_error("SmsSender won't send an empty msg...");
return;
}#if defined (Q_OS_ANDROID)
auto result = QtAndroidPrivate::checkPermission(QString("android.permission.SEND_SMS"));
if(result == QtAndroidPrivate::Denied){
_log("don't have android.permission.SEND_SMS");auto resultHash = QtAndroidPrivate::requestPermissions(QStringList({"android.permission.SEND_SMS"})); if(resultHash["android.permission.SEND_SMS"] == QtAndroidPrivate::Denied) { _error("couldn't get android.permission.SEND_SMS"); return; } } QJniObject myPhoneNumber = QJniObject::fromString(destMobile); QJniObject myTextMessage = QJniObject::fromString(msg); jint msgId = ++_nextMsgId; ++_nbMsgs; _sendingMsgs.insert(msgId, new SmsStatus(msgId)); QJniObject::callStaticMethod<void>("sendMessage", "(ILjava/lang/String;Ljava/lang/String;)V", msgId, myPhoneNumber.object<jstring>(), myTextMessage.object<jstring>());
#else
Q_UNUSED(destMobile)
Q_UNUSED(msg)
_error("Sending text is only working on an Android device!...");
#endif
}void SmsSender::msgParts(int msgId, int nbParts)
{
_sendingMsgs[msgId]->nbParts = nbParts;
_log(tr("Message #%1 has %2 parts").arg(msgId).arg(nbParts));
}void SmsSender::msgSent(int msgId, bool success)
{
if (success)
++_sendingMsgs[msgId]->nbSent.first;
else
++_sendingMsgs[msgId]->nbSent.second;if (_sendingMsgs[msgId]->allPartsSent()) { _sendingMsgs[msgId]->state = MSG_STATE::SENT; QString msgStatus; int nbMsgErrors = _sendingMsgs[msgId]->nbSent.second; if (nbMsgErrors == 0) { ++_nbSent; msgStatus = tr("successfully"); } else { ++_nbErrors; msgStatus = tr("with %1 errors").arg(nbMsgErrors); } _log(tr("Message #%1 has been sent %2").arg(msgId).arg(msgStatus));
#if defined (Q_OS_ANDROID)
QJniObject msgSent = QJniObject::fromString("MSG SENT");
QJniObject::callStaticMethod<void>("popup",
"(Ljava/lang/String;)V",
msgSent.object<jstring>());
#endif}
}
void SmsSender::msgDelivered(int msgId, bool success)
{
if (success)
++_sendingMsgs[msgId]->nbDelivered.first;
else
++_sendingMsgs[msgId]->nbDelivered.second;if (_sendingMsgs[msgId]->allPartsDelivered()) { _sendingMsgs[msgId]->state = MSG_STATE::DELIVERED; QString msgStatus; int nbMsgErrors = _sendingMsgs[msgId]->nbDelivered.second; if (nbMsgErrors == 0) { ++_nbDelivered; msgStatus = tr("successfully"); } else { ++_nbErrors; msgStatus = tr("with %1 errors").arg(nbMsgErrors); } _log(tr("Message #%1 has been delivered %2").arg(msgId).arg(msgStatus));
#if defined (Q_OS_ANDROID)
QJniObject msgSent = QJniObject::fromString("MSG DELIVERED");
QJniObject::callStaticMethod<void>("popup",
"(Ljava/lang/String;)V",
msgSent.object<jstring>());
#endif
}
}void SmsSender::_log(const QString &txt)
{
qDebug() << txt;
emit log(txt);
}void SmsSender::_error(const QString &txt)
{
qCritical() << txt;
emit error(txt);
}errors:
C:\Users\Ha_Sa\Documents\sendsms\SmsSender.cpp:36: error: invalid operands to binary expression ('QFutureQtAndroidPrivate::PermissionResult' and 'QtAndroidPrivate::PermissionResult')
..\sendsms\SmsSender.cpp:36:15: error: invalid operands to binary expression ('QFutureQtAndroidPrivate::PermissionResult' and 'QtAndroidPrivate::PermissionResult')
if(result == QtAndroidPrivate::Denied){^
@Hamed_S
Please format the code for better readability, either by using ``` at the beginning of each block, or by using the </> symbol.
1/2