Hi,

I'm trying to set some proxy settings for a QML application - it's not
working as expected.  I'm unsure the API is being used correctly, can
someone check my code makes sense?
There are 3 files: main.cpp, MyNetworkAccessManagerFactory.h and
MyNetworkAccessManagerFactory.cpp

I'm using qt 4.7 and followed the documentation (
http://doc.qt.nokia.com/4.7-snapshot/qdeclarativenetworkaccessmanagerfactory.html)
when writing the code.  The method
MyNetworkAccessManagerFactory::create(QObject* parent) does get called when
the QML document is loaded using the QDeclarativeView, so the framework is
definitely picking up the new proxy settings.

The questions I have are:

1. Is the implementation of MyNetworkAccessManagerFactory::create correct?
I assumed because I was subclassing from a class with 'factory' in its name,
that it was ok to return the same pointer to NetworkAccessManager.

2. How do I know if the method that calls "create" takes ownership of the
returned pointer or not?  I assumed it didn't, hence cleaning up in
~MyNetworkAccessManagerFactory();

3. Is there anything obviously wrong with the way I'm using the
NetworkAccessManager?


main.cpp
=======
/*------------------ start ------------------*/
QApplication app(argc, argv);

QDeclarativeView view;
QDeclarativeEngine* engine = view.engine();

MyNetworkAccessManagerFactory* namf = new MyNetworkAccessManagerFactory();

engine->setNetworkAccessManagerFactory(namf);

view.setSource(QUrl("mainwindow.qml"));
view.show();

return app.exec();
/*------------------ finish ------------------*/


MyNetworkAccessManagerFactory.h
===========================
class MyNetworkAccessManagerFactory : public
QDeclarativeNetworkAccessManagerFactory
{
public:
     MyNetworkAccessManagerFactory();
     ~MyNetworkAccessManagerFactory();

public:
    QNetworkAccessManager* create ( QObject * parent );

private:
    QNetworkAccessManager* nam;
};


MyNetworkAccessManagerFactory.cpp
=============================
MyNetworkAccessManagerFactory::MyNetworkAccessManagerFactory() : nam(NULL)
{
}

MyNetworkAccessManagerFactory::~MyNetworkAccessManagerFactory()
{
delete nam;
}

QNetworkAccessManager* MyNetworkAccessManagerFactory::create ( QObject*
parent )
{
    if (nam == NULL)
    {
        QNetworkProxy proxy;
        proxy.setHostName("my.proxy.com");
        proxy.setPort(3128);

        QNetworkProxy::setApplicationProxy(proxy);

        nam = new QNetworkAccessManager(parent);
        nam->setProxy(proxy);
    }
return nam;
}

--
Regards
Jack
_______________________________________________
Qt-qml mailing list
Qt-qml@trolltech.com
http://lists.trolltech.com/mailman/listinfo/qt-qml

Reply via email to