@@ -37,37 +37,9 @@ bool QWebViewCreator::CreateViewByClassName(const Logger& logger, const std::str
3737 }
3838 }
3939
40- if (NULL != handle) {
41- QWidget* widget = (dynamic_cast <QViewHandle*>(handle))->get ();
42- std::string objClassName (widget->metaObject ()->className ());
43-
44- if (NULL != widget) {
45- QEventLoop loop;
46- QRepaintEventFilter filter (widget);
47- QCheckPagePaint painter;
48- QObject::connect (&filter, SIGNAL (repainted ()), &loop, SLOT (quit ()));
49- QObject::connect (&filter, SIGNAL (repainted ()), &painter, SLOT (pagePainted ()));
50-
51- QTimer timer;
52- timer.setSingleShot (true );
53- QObject::connect (&timer, SIGNAL (timeout ()), &loop, SLOT (quit ()));
54- timer.start (500 );
55-
56- widget->installEventFilter (&filter);
57- widget->show ();
58- if (!painter.isPainting ())
59- loop.exec ();
60-
61- logger.Log (kInfoLogLevel , " QWebViewCreator created view ("
62- + objClassName +" ) by class name - " +className);
63-
64- *view = handle;
65-
66- return true ;
67- } else {
68- logger.Log (kSevereLogLevel , " QWebViewCreator, smth wrong." );
69- handle->Release ();
70- }
40+ if (NULL != handle && ShowView (logger, handle)) {
41+ *view = handle;
42+ return true ;
7143 }
7244
7345 // view was not created
@@ -77,65 +49,55 @@ bool QWebViewCreator::CreateViewByClassName(const Logger& logger, const std::str
7749bool QWebViewCreator::CreateViewForUrl (const Logger& logger, const std::string& url, ViewHandle** view) const {
7850 if (factory.empty ())
7951 return false ;
80-
81- QNetworkAccessManager *pmanager = new QNetworkAccessManager ();
82-
83- QContentTypeResolver *presolver = new QContentTypeResolver (pmanager);
84- std::string contentType;
85- scoped_ptr<Error> ignore_err (presolver->resolveContentType (url, contentType));
86- delete pmanager;
87- delete presolver;
88-
89- if (ignore_err != NULL ) {
52+
53+ Error* tmp_err = NULL ;
54+ if (!QWebViewUtil::isUrlSupported (url, &tmp_err)) {
55+ if (tmp_err) delete tmp_err;
9056 return false ;
9157 }
58+
59+ // get first found QWebView
60+ CreateViewMethod createMethod = factory.begin ()->second ;
61+ ViewHandle* handle = new QViewHandle (static_cast <QWidget*>(createMethod ()));
9262
93- QWebPage *pWebPage= new QWebPage ();
94- if (!pWebPage->supportsContentType (QString::fromStdString (contentType))) {
95- delete pWebPage;
96- return false ;
63+ if (NULL != handle && ShowView (logger, handle)) {
64+ *view = handle;
65+ return true ;
9766 }
98- delete pWebPage;
9967
100- ViewHandle* handle = NULL ;
101- // get first found QWebView
102- CreateViewMethod createMethod = factory.begin ()->second ;
103- handle = new QViewHandle (static_cast <QWidget*>(createMethod ()));
68+ return false ;
69+ }
10470
105- if (NULL != handle) {
106- QWidget* widget = (dynamic_cast <QViewHandle*>(handle))->get ();
107- std::string objClassName (widget->metaObject ()->className ());
71+ bool QWebViewCreator::ShowView (const Logger& logger, ViewHandle* viewHandle) const {
72+ QWidget* widget = (dynamic_cast <QViewHandle*>(viewHandle))->get ();
10873
109- if (NULL != widget) {
110- QEventLoop loop;
111- QRepaintEventFilter filter (widget);
112- QCheckPagePaint painter;
113- QObject::connect (&filter, SIGNAL (repainted ()), &loop, SLOT (quit ()));
114- QObject::connect (&filter, SIGNAL (repainted ()), &painter, SLOT (pagePainted ()));
115-
116- QTimer timer;
117- timer.setSingleShot (true );
118- QObject::connect (&timer, SIGNAL (timeout ()), &loop, SLOT (quit ()));
119- timer.start (500 );
120-
121- widget->installEventFilter (&filter);
122- widget->show ();
123- if (!painter.isPainting ())
124- loop.exec ();
74+ if (NULL != widget) {
75+ std::string objClassName (widget->metaObject ()->className ());
76+ QEventLoop loop;
77+ QRepaintEventFilter filter (widget);
78+ QCheckPagePaint painter;
79+ QObject::connect (&filter, SIGNAL (repainted ()), &loop, SLOT (quit ()));
80+ QObject::connect (&filter, SIGNAL (repainted ()), &painter, SLOT (pagePainted ()));
81+
82+ QTimer timer;
83+ timer.setSingleShot (true );
84+ QObject::connect (&timer, SIGNAL (timeout ()), &loop, SLOT (quit ()));
85+ timer.start (500 );
86+
87+ widget->installEventFilter (&filter);
88+ widget->show ();
89+ if (!painter.isPainting ())
90+ loop.exec ();
12591
126- logger.Log (kInfoLogLevel , " QWebViewCreator created view("
127- + objClassName + " ) by url - " + url);
128-
129- *view = handle;
92+ logger.Log (kInfoLogLevel , " QWebViewCreator created view(" + objClassName + " )." );
13093
131- return true ;
132- } else {
133- logger.Log (kSevereLogLevel , " QWebViewCreator, smth wrong." );
134- handle->Release ();
135- }
94+ return true ;
95+ } else {
96+ logger.Log (kSevereLogLevel , " QWebViewCreator, smth wrong." );
97+ viewHandle->Release ();
13698 }
13799
138- return false ;
100+ return false ;
139101}
140102
141103
0 commit comments