Just require ints instead of QNetworkAccessManager::Operation enum

The sip conversion code fails with enums under qt 6
This commit is contained in:
Nyall Dawson 2025-03-19 13:09:59 +10:00
parent 9b96cfde8b
commit 6953aec591
4 changed files with 16 additions and 14 deletions

View File

@ -394,14 +394,14 @@ It should return the desired operation and request data as a tuple, transforming
QString id;
Py_XINCREF( a0 );
Py_BEGIN_ALLOW_THREADS
id = QgsNetworkAccessManager::setAdvancedRequestPreprocessor( [a0]( QNetworkRequest *reqArg, QNetworkAccessManager::Operation &op, QByteArray *data )
id = QgsNetworkAccessManager::setAdvancedRequestPreprocessor( [a0]( QNetworkRequest *reqArg, int &op, QByteArray *data )
{
SIP_BLOCK_THREADS
PyObject *requestObj = sipConvertFromType( reqArg, sipType_QNetworkRequest, NULL );
PyObject *postDataObj = sipConvertFromType( new QByteArray( *data ), sipType_QByteArray, Py_None );
PyObject *result = sipCallMethod( NULL, a0, "RiR", requestObj, static_cast<int>( op ), postDataObj );
PyObject *result = sipCallMethod( NULL, a0, "RiR", requestObj, op, postDataObj );
Py_XDECREF( requestObj );
Py_XDECREF( postDataObj );
@ -412,7 +412,7 @@ It should return the desired operation and request data as a tuple, transforming
PyObject *opObj = PyTuple_GetItem( result, 0 );
if ( opObj && PyLong_Check( opObj ) )
{
op = static_cast<QNetworkAccessManager::Operation>( PyLong_AsLong( opObj ) );
op = static_cast<int>( PyLong_AsLong( opObj ) );
}
PyObject *dataObj = PyTuple_GetItem( result, 1 );
if ( dataObj && dataObj != Py_None )

View File

@ -394,14 +394,14 @@ It should return the desired operation and request data as a tuple, transforming
QString id;
Py_XINCREF( a0 );
Py_BEGIN_ALLOW_THREADS
id = QgsNetworkAccessManager::setAdvancedRequestPreprocessor( [a0]( QNetworkRequest *reqArg, QNetworkAccessManager::Operation &op, QByteArray *data )
id = QgsNetworkAccessManager::setAdvancedRequestPreprocessor( [a0]( QNetworkRequest *reqArg, int &op, QByteArray *data )
{
SIP_BLOCK_THREADS
PyObject *requestObj = sipConvertFromType( reqArg, sipType_QNetworkRequest, NULL );
PyObject *postDataObj = sipConvertFromType( new QByteArray( *data ), sipType_QByteArray, Py_None );
PyObject *result = sipCallMethod( NULL, a0, "RiR", requestObj, static_cast<int>( op ), postDataObj );
PyObject *result = sipCallMethod( NULL, a0, "RiR", requestObj, op, postDataObj );
Py_XDECREF( requestObj );
Py_XDECREF( postDataObj );
@ -412,7 +412,7 @@ It should return the desired operation and request data as a tuple, transforming
PyObject *opObj = PyTuple_GetItem( result, 0 );
if ( opObj && PyLong_Check( opObj ) )
{
op = static_cast<QNetworkAccessManager::Operation>( PyLong_AsLong( opObj ) );
op = static_cast<int>( PyLong_AsLong( opObj ) );
}
PyObject *dataObj = PyTuple_GetItem( result, 1 );
if ( dataObj && dataObj != Py_None )

View File

@ -57,7 +57,7 @@ const QgsSettingsEntryInteger *QgsNetworkAccessManager::settingsNetworkTimeout =
QgsNetworkAccessManager *QgsNetworkAccessManager::sMainNAM = nullptr;
static std::vector< std::pair< QString, std::function< void( QNetworkRequest * ) > > > sCustomPreprocessors;
static std::vector< std::pair< QString, std::function< void( QNetworkRequest *, QNetworkAccessManager::Operation &op, QByteArray *data ) > > > sCustomAdvancedPreprocessors;
static std::vector< std::pair< QString, std::function< void( QNetworkRequest *, int &op, QByteArray *data ) > > > sCustomAdvancedPreprocessors;
static std::vector< std::pair< QString, std::function< void( const QNetworkRequest &, QNetworkReply * ) > > > sCustomReplyPreprocessors;
/// @cond PRIVATE
@ -357,7 +357,9 @@ QNetworkReply *QgsNetworkAccessManager::createRequest( QNetworkAccessManager::Op
for ( const auto &preprocessor : sCustomAdvancedPreprocessors )
{
preprocessor.second( pReq, op, &content );
int intOp = static_cast< int >( op );
preprocessor.second( pReq, intOp, &content );
op = static_cast< QNetworkAccessManager::Operation >( intOp );
}
emit requestAboutToBeCreated( QgsNetworkRequestParameters( op, req, requestId, content ) );
@ -835,14 +837,14 @@ bool QgsNetworkAccessManager::removeRequestPreprocessor( const QString &id )
bool QgsNetworkAccessManager::removeAdvancedRequestPreprocessor( const QString &id )
{
const size_t prevCount = sCustomAdvancedPreprocessors.size();
sCustomAdvancedPreprocessors.erase( std::remove_if( sCustomAdvancedPreprocessors.begin(), sCustomAdvancedPreprocessors.end(), [id]( std::pair< QString, std::function< void( QNetworkRequest *, QNetworkAccessManager::Operation &, QByteArray * ) > > &a )
sCustomAdvancedPreprocessors.erase( std::remove_if( sCustomAdvancedPreprocessors.begin(), sCustomAdvancedPreprocessors.end(), [id]( std::pair< QString, std::function< void( QNetworkRequest *, int &, QByteArray * ) > > &a )
{
return a.first == id;
} ), sCustomAdvancedPreprocessors.end() );
return prevCount != sCustomAdvancedPreprocessors.size();
}
QString QgsNetworkAccessManager::setAdvancedRequestPreprocessor( const std::function<void ( QNetworkRequest *, QNetworkAccessManager::Operation &, QByteArray * )> &processor )
QString QgsNetworkAccessManager::setAdvancedRequestPreprocessor( const std::function<void ( QNetworkRequest *, int &, QByteArray * )> &processor )
{
QString id = QUuid::createUuid().toString();
sCustomAdvancedPreprocessors.emplace_back( std::make_pair( id, processor ) );

View File

@ -583,7 +583,7 @@ class CORE_EXPORT QgsNetworkAccessManager : public QNetworkAccessManager
* \since QGIS 3.44
*/
#ifndef SIP_RUN
static QString setAdvancedRequestPreprocessor( const std::function< void( QNetworkRequest *, QNetworkAccessManager::Operation &op, QByteArray *data )> &processor );
static QString setAdvancedRequestPreprocessor( const std::function< void( QNetworkRequest *, int &op, QByteArray *data )> &processor );
#else
static QString setAdvancedRequestPreprocessor( SIP_PYCALLABLE / AllowNone / );
% MethodCode
@ -591,14 +591,14 @@ class CORE_EXPORT QgsNetworkAccessManager : public QNetworkAccessManager
QString id;
Py_XINCREF( a0 );
Py_BEGIN_ALLOW_THREADS
id = QgsNetworkAccessManager::setAdvancedRequestPreprocessor( [a0]( QNetworkRequest *reqArg, QNetworkAccessManager::Operation &op, QByteArray *data )
id = QgsNetworkAccessManager::setAdvancedRequestPreprocessor( [a0]( QNetworkRequest *reqArg, int &op, QByteArray *data )
{
SIP_BLOCK_THREADS
PyObject *requestObj = sipConvertFromType( reqArg, sipType_QNetworkRequest, NULL );
PyObject *postDataObj = sipConvertFromType( new QByteArray( *data ), sipType_QByteArray, Py_None );
PyObject *result = sipCallMethod( NULL, a0, "RiR", requestObj, static_cast<int>( op ), postDataObj );
PyObject *result = sipCallMethod( NULL, a0, "RiR", requestObj, op, postDataObj );
Py_XDECREF( requestObj );
Py_XDECREF( postDataObj );
@ -609,7 +609,7 @@ class CORE_EXPORT QgsNetworkAccessManager : public QNetworkAccessManager
PyObject *opObj = PyTuple_GetItem( result, 0 );
if ( opObj && PyLong_Check( opObj ) )
{
op = static_cast<QNetworkAccessManager::Operation>( PyLong_AsLong( opObj ) );
op = static_cast<int>( PyLong_AsLong( opObj ) );
}
PyObject *dataObj = PyTuple_GetItem( result, 1 );
if ( dataObj && dataObj != Py_None )