diff --git a/common.pri b/common.pri index b4a4dce..cef5fe8 100644 --- a/common.pri +++ b/common.pri @@ -18,12 +18,13 @@ contains(CONFIG, easy_profiler){ !contains(CONFIG, qtscriptengine){ greaterThan(QT_MAJOR_VERSION, 4){ -greaterThan(QT_MINOR_VERSION, 5){ CONFIG *= qjsengine -} -lessThan(QT_MINOR_VERSION, 6){ - CONFIG *= qtscriptengine -} +#greaterThan(QT_MINOR_VERSION, 5){ +# CONFIG *= qjsengine +#} +#lessThan(QT_MINOR_VERSION, 6){ +# CONFIG *= qtscriptengine +#} } lessThan(QT_MAJOR_VERSION, 5){ CONFIG *= qtscriptengine diff --git a/include/lrglobal.h b/include/lrglobal.h index fdc35d4..b32d263 100644 --- a/include/lrglobal.h +++ b/include/lrglobal.h @@ -138,13 +138,12 @@ namespace Const{ #endif #ifdef USE_QJSENGINE - typedef QQmlEngine ScriptEngineType; + typedef QJSEngine ScriptEngineType; typedef QJSValue ScriptValueType; template - static inline QJSValue getCppOwnedJSValue(QJSEngine &e, T *p) + static inline QJSValue getJSValue(QJSEngine &e, T *p) { QJSValue res = e.newQObject(p); - QQmlEngine::setObjectOwnership(p, QQmlEngine::CppOwnership); return res; } #else diff --git a/limereport/lrglobal.h b/limereport/lrglobal.h index fdc35d4..b32d263 100644 --- a/limereport/lrglobal.h +++ b/limereport/lrglobal.h @@ -138,13 +138,12 @@ namespace Const{ #endif #ifdef USE_QJSENGINE - typedef QQmlEngine ScriptEngineType; + typedef QJSEngine ScriptEngineType; typedef QJSValue ScriptValueType; template - static inline QJSValue getCppOwnedJSValue(QJSEngine &e, T *p) + static inline QJSValue getJSValue(QJSEngine &e, T *p) { QJSValue res = e.newQObject(p); - QQmlEngine::setObjectOwnership(p, QQmlEngine::CppOwnership); return res; } #else diff --git a/limereport/lrreportdesignwidget.cpp b/limereport/lrreportdesignwidget.cpp index c32e608..96cd9eb 100644 --- a/limereport/lrreportdesignwidget.cpp +++ b/limereport/lrreportdesignwidget.cpp @@ -72,20 +72,15 @@ ReportDesignWidget::ReportDesignWidget(ReportEnginePrivateInterface* report, QMa mainLayout->addWidget(m_tabWidget); setLayout(mainLayout); -// if (!report) { -// m_report=new ReportEnginePrivate(this); -// m_report->setObjectName("report"); -// m_report->appendPage("page1"); -// } -// else { - m_report=report;//report->d_ptr; - if (!m_report->pageCount()) m_report->appendPage("page1"); -// } + m_report=report; + if (!m_report->pageCount()) m_report->appendPage("page1"); createTabs(); connect(dynamic_cast(m_report), SIGNAL(pagesLoadFinished()),this,SLOT(slotPagesLoadFinished())); - connect(dynamic_cast(m_report), SIGNAL(cleared()),this,SIGNAL(cleared())); + connect(dynamic_cast(m_report), SIGNAL(cleared()), this, SIGNAL(cleared())); + connect(dynamic_cast(m_report), SIGNAL(loaded()), this, SLOT(slotReportLoaded())); + connect(m_tabWidget, SIGNAL(currentChanged(int)), this, SLOT(slotCurrentTabChanged(int))); #ifdef HAVE_UI_LOADER connect(m_report->scriptContext(), SIGNAL(dialogDeleted(QString)), this, SLOT(slotDialogDeleted(QString))); @@ -250,6 +245,7 @@ void ReportDesignWidget::loadState(QSettings* settings) void ReportDesignWidget::createTabs(){ + m_tabWidget->clear(); int pageIndex = -1; for (int i = 0; ipageCount();++i){ QGraphicsView* view = new QGraphicsView(qobject_cast(this)); @@ -465,14 +461,13 @@ bool ReportDesignWidget::save() bool ReportDesignWidget::loadFromFile(const QString &fileName) { if (m_report->loadFromFile(fileName,false)){ - QByteArray editorState = m_scriptEditor->saveState(); - createTabs(); - //connectPage(m_report->pageAt(0)); - m_scriptEditor->setPlainText(m_report->scriptContext()->initScript()); - m_scriptEditor->restoreState(editorState); - emit loaded(); - m_dialogChanged = false; - return true; +// QByteArray editorState = m_scriptEditor->saveState(); +// createTabs(); +// m_scriptEditor->setPlainText(m_report->scriptContext()->initScript()); +// m_scriptEditor->restoreState(editorState); +// emit loaded(); +// m_dialogChanged = false; +// return true; } else { QMessageBox::critical(this,tr("Error"),tr("Wrong file format")); return false; @@ -843,6 +838,16 @@ void ReportDesignWidget::slotCurrentTabChanged(int index) if (view) view->centerOn(0,0); } +void ReportDesignWidget::slotReportLoaded() +{ + QByteArray editorState = m_scriptEditor->saveState(); + createTabs(); + m_scriptEditor->setPlainText(m_report->scriptContext()->initScript()); + m_scriptEditor->restoreState(editorState); + emit loaded(); + m_dialogChanged = false; +} + #ifdef HAVE_QTDESIGNER_INTEGRATION void ReportDesignWidget::addNewDialog() diff --git a/limereport/lrreportdesignwidget.h b/limereport/lrreportdesignwidget.h index 2887621..8e812dc 100644 --- a/limereport/lrreportdesignwidget.h +++ b/limereport/lrreportdesignwidget.h @@ -168,6 +168,7 @@ private slots: void slotDatasourceCollectionLoaded(const QString&); void slotSceneRectChanged(QRectF); void slotCurrentTabChanged(int index); + void slotReportLoaded(); #ifdef HAVE_QTDESIGNER_INTEGRATION void slotDialogChanged(QString); void slotDialogNameChanged(QString oldName, QString newName); diff --git a/limereport/lrreportengine.cpp b/limereport/lrreportengine.cpp index 5d57a65..53056db 100644 --- a/limereport/lrreportengine.cpp +++ b/limereport/lrreportengine.cpp @@ -67,6 +67,7 @@ #ifdef HAVE_STATIC_BUILD #include "lrfactoryinitializer.h" #endif + namespace LimeReport{ QSettings* ReportEngine::m_settings = 0; @@ -740,7 +741,11 @@ bool ReportEnginePrivate::loadFromFile(const QString &fileName, bool autoLoadPre m_fileWatcher->addPath( fileName ); } - return slotLoadFromFile( fileName ); + bool result = slotLoadFromFile( fileName ); + if (result) { + emit loaded(); + } + return result; } bool ReportEnginePrivate::loadFromByteArray(QByteArray* data, const QString &name){ @@ -752,6 +757,7 @@ bool ReportEnginePrivate::loadFromByteArray(QByteArray* data, const QString &nam if (reader->readItem(this)){ m_fileName = ""; m_reportName = name; + emit loaded(); return true; }; } @@ -768,6 +774,7 @@ bool ReportEnginePrivate::loadFromString(const QString &report, const QString &n if (reader->readItem(this)){ m_fileName = ""; m_reportName = name; + emit loaded(); return true; }; } @@ -1152,12 +1159,15 @@ ReportEngine::ReportEngine(QObject *parent) connect(d, SIGNAL(onSave()), this, SIGNAL(onSave())); connect(d, SIGNAL(onLoad(bool&)), this, SIGNAL(onLoad(bool&))); connect(d, SIGNAL(saveFinished()), this, SIGNAL(saveFinished())); + connect(d, SIGNAL(loaded()), this, SIGNAL(loaded())); + connect(d, SIGNAL(getAviableLanguages(QList*)), this, SIGNAL(getAviableLanguages(QList*))); connect(d, SIGNAL(currentDefaulLanguageChanged(QLocale::Language)), this, SIGNAL(currentDefaulLanguageChanged(QLocale::Language))); connect(d, SIGNAL(getCurrentDefaultLanguage()), this, SIGNAL(getCurrentDefaultLanguage())); + } ReportEngine::~ReportEngine() @@ -1204,7 +1214,7 @@ void ReportEngine::designReport() d->designReport(); } -ReportDesignWindowInterface*ReportEngine::getDesignerWindow() +ReportDesignWindowInterface* ReportEngine::getDesignerWindow() { Q_D(ReportEngine); return d->getDesignerWindow(); diff --git a/limereport/lrreportengine.h b/limereport/lrreportengine.h index e6db8d0..6eed25a 100644 --- a/limereport/lrreportengine.h +++ b/limereport/lrreportengine.h @@ -122,6 +122,7 @@ signals: void onLoad(bool& loaded); void onSave(); void saveFinished(); + void loaded(); void getAviableLanguages(QList* languages); void currentDefaulLanguageChanged(QLocale::Language); QLocale::Language getCurrentDefaultLanguage(); diff --git a/limereport/lrreportengine_p.h b/limereport/lrreportengine_p.h index 69fa30f..b3280d8 100644 --- a/limereport/lrreportengine_p.h +++ b/limereport/lrreportengine_p.h @@ -195,6 +195,7 @@ signals: void onLoad(bool& loaded); void onSave(); void saveFinished(); + void loaded(); void getAviableLanguages(QList* languages); void currentDefaulLanguageChanged(QLocale::Language); QLocale::Language getCurrentDefaultLanguage(); diff --git a/limereport/lrreportrender.cpp b/limereport/lrreportrender.cpp index 9ad41f2..a6679bf 100644 --- a/limereport/lrreportrender.cpp +++ b/limereport/lrreportrender.cpp @@ -299,7 +299,7 @@ void ReportRender::initRenderPage() ScriptEngineType* se = ScriptEngineManager::instance().scriptEngine(); #ifdef USE_QJSENGINE - svCurrentPage = getCppOwnedJSValue(*se, m_renderPageItem); + svCurrentPage = getJSValue(*se, m_renderPageItem); se->globalObject().setProperty("currentPage", svCurrentPage); #else svCurrentPage = se->globalObject().property("currentPage"); diff --git a/limereport/lrscriptenginemanager.cpp b/limereport/lrscriptenginemanager.cpp index 3b2385e..6dd5ea8 100644 --- a/limereport/lrscriptenginemanager.cpp +++ b/limereport/lrscriptenginemanager.cpp @@ -474,7 +474,7 @@ QString ScriptEngineManager::expandScripts(QString context, QVariant& varValue, ScriptValueType svThis; #ifdef USE_QJSENGINE - svThis = getCppOwnedJSValue(*se, reportItem); + svThis = getJSValue(*se, reportItem); se->globalObject().setProperty("THIS",svThis); #else svThis = se->globalObject().property("THIS"); @@ -1280,7 +1280,7 @@ void ScriptEngineContext::baseDesignIntfToScript(const QString& pageName, BaseDe ScriptEngineType* engine = ScriptEngineManager::instance().scriptEngine(); #ifdef USE_QJSENGINE - ScriptValueType sItem = getCppOwnedJSValue(*engine, item); + ScriptValueType sItem = getJSValue(*engine, item); QString on = item->patternName().compare(pageName) == 0 ? pageName : pageName+"_"+item->patternName(); engine->globalObject().setProperty(on, sItem); #else @@ -1303,7 +1303,7 @@ void ScriptEngineContext::qobjectToScript(const QString& name, QObject *item) { ScriptEngineType* engine = ScriptEngineManager::instance().scriptEngine(); #ifdef USE_QJSENGINE - ScriptValueType sItem = getCppOwnedJSValue(*engine, item); + ScriptValueType sItem = getJSValue(*engine, item); engine->globalObject().setProperty(name, sItem); #else ScriptValueType sItem = engine->globalObject().property(name);