[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/kexi/plugins/reportspgz
From: Adam Pigg <adam () piggz ! co ! uk>
Date: 2009-07-17 22:52:08
Message-ID: 1247871128.828592.15745.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 998556 by piggz:
Fixup saving, loading and rendering to use the new method of storing connection info.
M +2 -0 backend/common/koreportdata.h
M +2 -2 backend/common/krreportdata.cpp
M +2 -0 backend/common/krreportdata.h
M +14 -25 backend/renderer/orprerender.cpp
M +8 -5 backend/renderer/orprerender.h
M +8 -2 backend/renderer/scripting/krscriptfunctions.cpp
M +19 -5 kexidbreportdata.cpp
M +2 -0 kexidbreportdata.h
M +3 -1 keximigratereportdata.h
M +41 -18 kexireportview.cpp
M +3 -2 kexireportview.h
M +5 -5 kexisourceselector.cpp
M +3 -3 kexisourceselector.h
--- trunk/koffice/kexi/plugins/reportspgz/backend/common/koreportdata.h \
#998555:998556 @@ -30,6 +30,8 @@
public:
virtual ~KoReportData(){};
+ virtual bool open() = 0;
+ virtual bool close() = 0;
virtual bool moveNext() = 0;
virtual bool movePrevious() = 0;
virtual bool moveFirst() = 0;
--- trunk/koffice/kexi/plugins/reportspgz/backend/common/krreportdata.cpp \
#998555:998556 @@ -46,8 +46,8 @@
init();
bool valid; //used for local unit conversions
- if (elemSource.tagName() != "report") {
- kDebug() << "QDomElement passed to parseReport() was not <report> tag";
+ if (elemSource.tagName() != "koreport") {
+ kDebug() << "QDomElement passed to parseReport() was not <koreport> tag";
kDebug() << elemSource.text();
return;
}
--- trunk/koffice/kexi/plugins/reportspgz/backend/common/krreportdata.h \
#998555:998556 @@ -47,6 +47,8 @@
KRReportData();
~KRReportData();
+ bool isValid() { return m_valid; }
+
/**
\return a list of all objects in the report
*/
--- trunk/koffice/kexi/plugins/reportspgz/backend/renderer/orprerender.cpp \
#998555:998556 @@ -123,6 +123,7 @@
_pageCounter = 0;
_maxHeight = _maxWidth = 0.0;
_kodata = 0;
+ _conn = 0;
}
ORPreRenderPrivate::~ORPreRenderPrivate()
@@ -836,16 +837,10 @@
//
// ORPreRender
//
-ORPreRender::ORPreRender(KexiDB::Connection *c)
-{
- d = new ORPreRenderPrivate();
- setDatabase(c);
-}
-ORPreRender::ORPreRender(const QString & pDocument, KexiDB::Connection *c)
+ORPreRender::ORPreRender(const QString & pDocument)
{
d = new ORPreRenderPrivate();
- setDatabase(c);
setDom(pDocument);
}
@@ -930,17 +925,7 @@
kDebug() << "Page Size:" << d->_maxWidth << d->_maxHeight;
d->_document->setPageOptions(rpo);
-
- //TODO!!!
- /*
- if (!d->_reportData->externalData()) {
- d->_kodata = (new orQuery(d->_reportData->query(), d->_conn));
- }
- else {
- d->_kodata = new orQuery( d->_reportData->query() );
- }
- */
-
+ d->_kodata->open();
d->initEngine();
d->createNewPage();
if (!label.isNull()) {
@@ -1033,6 +1018,7 @@
d->_handler->displayErrors();
+ d->_kodata->close();
delete d->_handler;
delete d->_kodata
;
@@ -1043,18 +1029,23 @@
return pDoc;
}
-void ORPreRender::setDatabase(KexiDB::Connection *c)
+void ORPreRender::setSourceData(KoReportData *data)
{
- if (d != 0)
- d->_conn = c;
+ if (d != 0 && data != 0)
+ {
+ d->_kodata = data;
+ d->_conn = static_cast<KexiDB::Connection*>(data->connection());
+ }
}
+/*
KexiDB::Connection* ORPreRender::database() const
{
if (d != 0)
return d->_conn;
return 0;
}
+*/
bool ORPreRender::setDom(const QString & docReport)
{
@@ -1065,10 +1056,8 @@
d->_valid = false;
d->_docReport.setContent(docReport);
- d->_reportData = new KRReportData(d->_docReport.documentElement());
- //TODO KRReportData->isValid()
- d->_valid = true;
-
+ d->_reportData = new \
KRReportData(d->_docReport.documentElement().firstChildElement( "koreport" )); + \
d->_valid = d->_reportData->isValid(); }
return isValid();
}
--- trunk/koffice/kexi/plugins/reportspgz/backend/renderer/orprerender.h \
#998555:998556 @@ -29,6 +29,8 @@
class ORPreRenderPrivate;
class ParameterList;
class ORODocument;
+class KoReportData;
+
namespace KexiDB
{
class Connection;
@@ -41,17 +43,17 @@
class ORPreRender
{
public:
- ORPreRender(KexiDB::Connection*c = 0);
- ORPreRender(const QString &, KexiDB::Connection*c = 0);
+// ORPreRender(KexiDB::Connection*c = 0);
+ ORPreRender(const QString &);
virtual ~ORPreRender();
+ void setSourceData(KoReportData*);
+
ORODocument * generate();
- void setDatabase(KexiDB::Connection*);
- KexiDB::Connection* database() const;
- bool setDom(const QString &);
+// KexiDB::Connection* database() const;
/**
@brief Set the name of the report so that it can be used internally by the \
script engine @@ -64,6 +66,7 @@
private:
ORPreRenderPrivate* d;
+ bool setDom(const QString &);
};
--- trunk/koffice/kexi/plugins/reportspgz/backend/renderer/scripting/krscriptfunctions.cpp \
#998555:998556 @@ -24,8 +24,14 @@
KRScriptFunctions::KRScriptFunctions(const KoReportData *kodata)
{
- m_connection = static_cast<KexiDB::Connection*>(kodata->connection());
- m_cursor = kodata;
+ m_connection = 0;
+ m_cursor = 0;
+
+ if (kodata)
+ {
+ m_connection = static_cast<KexiDB::Connection*>(kodata->connection());
+ m_cursor = kodata;
+ }
}
--- trunk/koffice/kexi/plugins/reportspgz/kexidbreportdata.cpp #998555:998556
@@ -25,18 +25,28 @@
m_cursor = 0;
m_connection = pDb;
m_schema = 0;
-
m_qstrQuery = qstrSQL;
+ open();
+ close();
+ m_valid = true;
+}
+KexiDBReportData::~KexiDBReportData() {
+ close();
+}
+
+bool KexiDBReportData::open() {
m_valid = executeInternal();
+ return m_valid;
}
-KexiDBReportData::~KexiDBReportData() {
+bool KexiDBReportData::close() {
if ( m_cursor ) {
m_cursor->close();
delete m_cursor;
m_cursor = 0;
}
+ return true;
}
bool KexiDBReportData::executeInternal() {
@@ -92,10 +102,13 @@
}
QStringList KexiDBReportData::fieldNames() {
+ QStringList names;
+ open();
if ( m_cursor->query() ) {
- return m_cursor->query()->names();
+ names = m_cursor->query()->names();
}
- return QStringList();
+ close();
+ return names;
}
void* KexiDBReportData::schema() const {
@@ -169,7 +182,8 @@
}
long KexiDBReportData::recordCount() const {
- if ( m_schema->table() || m_schema->query() ) {
+
+ if ( m_schema && (m_schema->table() || m_schema->query()) ) {
return KexiDB::rowCount ( *m_schema );
} else {
return 1;
--- trunk/koffice/kexi/plugins/reportspgz/kexidbreportdata.h #998555:998556
@@ -58,6 +58,8 @@
virtual QVariant value ( unsigned int );
virtual QVariant value ( const QString &field );
+ virtual bool open();
+ virtual bool close();
virtual bool moveNext();
virtual bool movePrevious();
virtual bool moveFirst();
--- trunk/koffice/kexi/plugins/reportspgz/keximigratereportdata.h #998555:998556
@@ -48,7 +48,9 @@
virtual QVariant value(unsigned int);
virtual QVariant value(const QString &field);
-
+
+ virtual bool open() {return true;}
+ virtual bool close() {return true;}
virtual bool moveNext();
virtual bool movePrevious();
virtual bool moveFirst();
--- trunk/koffice/kexi/plugins/reportspgz/kexireportview.cpp #998555:998556
@@ -33,6 +33,8 @@
#include <QPrintDialog>
#include <widget/utils/kexirecordnavigator.h>
#include <core/KexiWindow.h>
+#include "kexidbreportdata.h"
+#include "keximigratereportdata.h"
#ifdef HAVE_KSPREAD
#include <krkspreadrender.h>
@@ -109,37 +111,37 @@
void KexiReportView::nextPage()
{
- if (m_currentPpage < m_pageCount) {
- m_currentPpage++;
- m_reportWidget->renderPage(m_currentPpage);
- m_pageSelector->setCurrentRecordNumber(m_currentPpage);
+ if (m_currentPage < m_pageCount) {
+ m_currentPage++;
+ m_reportWidget->renderPage(m_currentPage);
+ m_pageSelector->setCurrentRecordNumber(m_currentPage);
}
}
void KexiReportView::prevPage()
{
- if (m_currentPpage > 1) {
- m_currentPpage--;
- m_reportWidget->renderPage(m_currentPpage);
- m_pageSelector->setCurrentRecordNumber(m_currentPpage);
+ if (m_currentPage > 1) {
+ m_currentPage--;
+ m_reportWidget->renderPage(m_currentPage);
+ m_pageSelector->setCurrentRecordNumber(m_currentPage);
}
}
void KexiReportView::firstPage()
{
- if (m_currentPpage != 1) {
- m_currentPpage = 1;
- m_reportWidget->renderPage(m_currentPpage);
- m_pageSelector->setCurrentRecordNumber(m_currentPpage);
+ if (m_currentPage != 1) {
+ m_currentPage = 1;
+ m_reportWidget->renderPage(m_currentPage);
+ m_pageSelector->setCurrentRecordNumber(m_currentPage);
}
}
void KexiReportView::lastPage()
{
- if (m_currentPpage != m_pageCount) {
- m_currentPpage = m_pageCount;
- m_reportWidget->renderPage(m_currentPpage);
- m_pageSelector->setCurrentRecordNumber(m_currentPpage);
+ if (m_currentPage != m_pageCount) {
+ m_currentPage = m_pageCount;
+ m_reportWidget->renderPage(m_currentPage);
+ m_pageSelector->setCurrentRecordNumber(m_currentPage);
}
}
@@ -219,9 +221,15 @@
if (tempData()->reportSchemaChangedInPreviousView) {
delete m_preRenderer;
- m_preRenderer = new ORPreRender(tempData()->document, \
KexiMainWindowIface::global()->project()->dbConnection()); + QDomDocument doc;
+ doc.setContent ( tempData()->document );
+ QDomElement root = doc.documentElement();
+ QDomElement conn = root.firstChildElement( "connection" );
+
+ m_preRenderer = new ORPreRender(tempData()->document);
+ m_preRenderer->setSourceData(sourceData(conn));
m_preRenderer->setName( tempData()->name );
- m_currentPpage = 1;
+ m_currentPage = 1;
m_reportDocument = m_preRenderer->generate();
m_pageCount = m_reportDocument->pages();
@@ -236,6 +244,21 @@
return true;
}
+KoReportData* KexiReportView::sourceData(QDomElement e)
+{
+ KoReportData *kodata;
+ kodata = 0;
+
+ if (e.attribute("type") == "internal" ) {
+ kodata = new KexiDBReportData(e.attribute("source"), \
KexiMainWindowIface::global()->project()->dbConnection()); + }
+ if (e.attribute("type") == "external" ) {
+ kodata = new KexiMigrateReportData(e.attribute("source"));
+ }
+
+ return kodata;
+}
+
KexiReportPart::TempData* KexiReportView::tempData() const
{
return static_cast<KexiReportPart::TempData*>(window()->data());
--- trunk/koffice/kexi/plugins/reportspgz/kexireportview.h #998555:998556
@@ -53,10 +53,11 @@
QScrollArea *m_scrollArea;
KexiReportPage *m_reportWidget;
KexiRecordNavigator *m_pageSelector;
- int m_currentPpage;
+ int m_currentPage;
int m_pageCount;
KexiReportPart::TempData* tempData() const;
-
+ KoReportData* sourceData(QDomElement e);
+
private slots:
void nextPage();
void prevPage();
--- trunk/koffice/kexi/plugins/reportspgz/kexisourceselector.cpp #998555:998556
@@ -30,8 +30,8 @@
m_kmd = 0;
m_layout = new QVBoxLayout(this);
- m_sourceType = new KComboBox(this);
- m_internalSource = new KComboBox(this);
+ m_sourceType = new QComboBox(this);
+ m_internalSource = new QComboBox(this);
m_externalSource = new KLineEdit(this);
m_setData = new KPushButton(i18n("Set Data"));
@@ -108,9 +108,9 @@
QDomElement conndata = d.createElement("connection");
conndata.setAttribute("type", \
m_sourceType->itemData(m_sourceType->currentIndex()).toString());
-
- if (m_sourceType->currentText() == "internal") {
- conndata.setAttribute("source", \
m_internalSource->itemText(m_internalSource->currentIndex())); +
+ if (m_sourceType->itemData(m_sourceType->currentIndex()).toString() == \
"internal") { + conndata.setAttribute("source", \
m_internalSource->currentText()); }
else {
conndata.setAttribute("source", m_externalSource->text());
--- trunk/koffice/kexi/plugins/reportspgz/kexisourceselector.h #998555:998556
@@ -22,7 +22,7 @@
#include <QWidget>
#include <QVBoxLayout>
-#include <KComboBox>
+#include <QComboBox>
#include <KLineEdit>
#include <KPushButton>
@@ -46,8 +46,8 @@
KexiDB::Connection *m_conn;
QStringList queryList();
QVBoxLayout *m_layout;
- KComboBox *m_sourceType;
- KComboBox *m_internalSource;
+ QComboBox *m_sourceType;
+ QComboBox *m_internalSource;
KLineEdit *m_externalSource;
KPushButton *m_setData;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic