[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [calligra] libs/koreport: Make the page view refresh when the
From: Jaroslaw Staniek <staniek () kde ! org>
Date: 2011-09-30 22:30:28
Message-ID: 20110930223028.A24A2A60D3 () git ! kde ! org
[Download RAW message or body]
Git commit 9a7557b9305d7a51123f026d5364fb2915086db9 by Jaroslaw Staniek, on behalf of Adam Pigg.
Committed on 30/09/2011 at 11:59.
Pushed by staniek into branch 'master'.
Make the page view refresh when the document is updated
M +1 -1 libs/koreport/common/renderobjects.cpp
M +15 -7 libs/koreport/renderer/KoReportPage.cpp
M +2 -0 libs/koreport/renderer/KoReportPage.h
http://commits.kde.org/calligra/9a7557b9305d7a51123f026d5364fb2915086db9
diff --git a/libs/koreport/common/renderobjects.cpp b/libs/koreport/common/renderobjects.cpp
index a065075..408921b 100644
--- a/libs/koreport/common/renderobjects.cpp
+++ b/libs/koreport/common/renderobjects.cpp
@@ -80,7 +80,7 @@ void ORODocument::setPageOptions(const ReportPageOptions & options)
void ORODocument::notifyChange(int pageNo)
{
- emit(updated(pageNo));
+ emit(updated(pageNo));
}
//
diff --git a/libs/koreport/renderer/KoReportPage.cpp b/libs/koreport/renderer/KoReportPage.cpp
index bb182f2..7ca916e 100644
--- a/libs/koreport/renderer/KoReportPage.cpp
+++ b/libs/koreport/renderer/KoReportPage.cpp
@@ -34,7 +34,7 @@ KoReportPage::KoReportPage(QWidget *parent, ORODocument *document)
setAttribute(Qt::WA_NoBackground);
kDebug() << "CREATED PAGE";
m_reportDocument = document;
- m_page = 1;
+ m_page = 0;
int pageWidth = 0;
int pageHeight = 0;
@@ -56,11 +56,13 @@ KoReportPage::KoReportPage(QWidget *parent, ORODocument *document)
setFixedSize(pageWidth, pageHeight);
kDebug() << "PAGE IS " << pageWidth << "x" << pageHeight;
- m_repaint = true;
+
m_pixmap = new QPixmap(pageWidth, pageHeight);
setAutoFillBackground(true);
m_renderer = m_factory.createInstance("screen");
+
+ connect(m_reportDocument, SIGNAL(updated(int)), this, SLOT(pageUpdated(int)));
renderPage(1);
}
@@ -79,18 +81,24 @@ void KoReportPage::paintEvent(QPaintEvent*)
void KoReportPage::renderPage(int page)
{
- kDebug() << page;
-//js: is m_page needed?
- m_page = page;
+ m_page = page - 1;
m_pixmap->fill();
QPainter qp(m_pixmap);
if (m_reportDocument) {
KoReportRendererContext cxt;
cxt.painter = &qp;
- m_renderer->render(cxt, m_reportDocument, m_page - 1);
+ m_renderer->render(cxt, m_reportDocument, m_page);
}
- m_repaint = true;
repaint();
}
+void KoReportPage::pageUpdated(int pageNo)
+{
+ //Refresh this page if any of the surrounding pages change
+ //!TODO A small hack becuase not every update seems to work
+ if (m_page - 1 <= pageNo <= m_page + 1) {
+ renderPage(m_page + 1);
+ }
+}
+
#include "KoReportPage.moc"
diff --git a/libs/koreport/renderer/KoReportPage.h b/libs/koreport/renderer/KoReportPage.h
index 212328c..59e3b06 100644
--- a/libs/koreport/renderer/KoReportPage.h
+++ b/libs/koreport/renderer/KoReportPage.h
@@ -42,6 +42,8 @@ public:
public slots:
virtual void paintEvent(QPaintEvent*);
+
+ void pageUpdated(int pageNo);
private:
ORODocument *m_reportDocument;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic