Version 1.4 initial commit

This commit is contained in:
Arin Alexander
2016-06-10 19:05:18 +04:00
parent 6a507e5b61
commit fecf863f7c
61 changed files with 2019 additions and 276 deletions

View File

@@ -61,6 +61,7 @@ ReportEnginePrivate::ReportEnginePrivate(QObject *parent) :
m_previewWindowIcon(":/report/images/logo32"), m_previewWindowTitle(tr("Preview"))
{
m_datasources= new DataSourceManager(this);
m_scriptEngineContext = new ScriptEngineContext(this);
m_datasources->setObjectName("datasources");
connect(m_datasources,SIGNAL(loadCollectionFinished(QString)),this,SLOT(slotDataSourceCollectionLoaded(QString)));
}
@@ -103,6 +104,17 @@ PageDesignIntf *ReportEnginePrivate::appendPage(const QString &pageName)
return page;
}
bool ReportEnginePrivate::deletePage(PageDesignIntf *page){
QList<PageDesignIntf*>::iterator it = m_pages.begin();
while (it != m_pages.end()){
if (*it == page) {
it = m_pages.erase(it);
return true;
} else ++it;
}
return false;
}
PageDesignIntf *ReportEnginePrivate::createPreviewPage()
{
return createPage();
@@ -152,6 +164,7 @@ void ReportEnginePrivate::clearReport()
m_pages.clear();
m_datasources->clear(DataSourceManager::Owned);
m_fileName="";
m_scriptEngineContext->clear();
emit cleared();
}
@@ -261,9 +274,44 @@ bool ReportEnginePrivate::printReport(QPrinter* printer)
printer =(printer)?printer:m_printer.data();
if (printer&&printer->isValid()){
try{
dataManager()->setDesignTime(false);
printReport(renderToPages(),*printer,PrintRange());
dataManager()->setDesignTime(false);
ReportPages pages = renderToPages();
dataManager()->setDesignTime(true);
if (pages.count()>0){
printReport(pages,*printer,PrintRange());
}
} catch(ReportError &exception){
saveError(exception.what());
}
return true;
} else return false;
}
bool ReportEnginePrivate::printPages(ReportPages pages, QPrinter *printer, PrintRange printRange)
{
if (!printer&&!m_printerSelected){
QPrintDialog dialog(m_printer.data(),QApplication::activeWindow());
m_printerSelected = dialog.exec()!=QDialog::Rejected;
if (m_printerSelected){
printRange.setRangeType(dialog.printRange());
printRange.setFromPage(dialog.fromPage());
printRange.setToPage(dialog.toPage());
}
}
if (!printer&&!m_printerSelected) return false;
printer =(printer)?printer:m_printer.data();
if (printer&&printer->isValid()){
try{
if (pages.count()>0){
printReport(
pages,
*printer,
printRange
);
}
} catch(ReportError &exception){
saveError(exception.what());
}
@@ -401,6 +449,11 @@ void ReportEnginePrivate::cancelRender()
m_reportRender->cancelRender();
}
PageDesignIntf* ReportEngine::createPreviewScene(QObject* parent){
Q_D(ReportEngine);
return d->createPreviewScene(parent);
}
void ReportEnginePrivate::designReport()
{
if (!m_designerWindow) {
@@ -456,7 +509,8 @@ bool ReportEnginePrivate::loadFromFile(const QString &fileName)
dataManager()->connectAutoConnections();
return true;
};
}
}
m_lastError = reader->lastError();
return false;
}
@@ -555,6 +609,7 @@ QString ReportEnginePrivate::renderToString()
dataManager()->setDesignTime(false);
if (m_pages.count()){
render.setDatasources(dataManager());
render.setScriptContext(scriptContext());
return render.renderPageToString(m_pages.at(0));
}else return QString();
}
@@ -588,12 +643,18 @@ ReportPages ReportEnginePrivate::renderToPages()
connect(m_reportRender.data(),SIGNAL(pageRendered(int)),
this, SIGNAL(renderPageFinished(int)));
if (m_pages.count()){
ReportPages result;
emit renderStarted();
m_reportRender->setDatasources(dataManager());
ReportPages result = m_reportRender->renderPageToPages(m_pages.at(0));
m_reportRender->setScriptContext(scriptContext());
foreach(PageDesignIntf* page , m_pages){
result.append(m_reportRender->renderPageToPages(page));
}
emit renderFinished();
m_reportRender.clear();
return result;
}else {
} else {
return ReportPages();
}
}
@@ -628,6 +689,11 @@ bool ReportEngine::printReport(QPrinter *printer)
return d->printReport(printer);
}
bool ReportEngine::printPages(ReportPages pages, QPrinter *printer, PrintRange printRange){
Q_D(ReportEngine);
return d->printPages(pages,printer, printRange);
}
void ReportEngine::printToFile(const QString &fileName)
{
Q_D(ReportEngine);