[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