[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    koffice/kugar/lib
From:       Adam Treat <treat () kde ! org>
Date:       2006-01-25 18:03:56
Message-ID: 1138212236.377051.8135.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 502329 by treat:

* Fix crash when changing pages on reloaded report.

 M  +1 -1      mpagecollection.cpp  
 M  +1 -1      mpagecollection.h  
 M  +8 -4      mreportengine.cpp  
 M  +1 -1      mreportengine.h  
 M  +7 -26     mreportviewer.cpp  
 M  +2 -1      mreportviewer.h  


--- trunk/koffice/kugar/lib/mpagecollection.cpp #502328:502329
@@ -15,7 +15,7 @@
 {
 
 /** Constructor */
-MPageCollection::MPageCollection() : QObject()
+MPageCollection::MPageCollection( QObject *parent ) : QObject( parent )
 {
     // Set page list to AutoDelete
     pages.setAutoDelete( true );
--- trunk/koffice/kugar/lib/mpagecollection.h #502328:502329
@@ -26,7 +26,7 @@
 
 public:
     /** Constructor */
-    MPageCollection();
+    MPageCollection( QObject *parent );
     /** Copy constructor */
     MPageCollection( const MPageCollection& mPageCollection );
     /** Assignment operator */
--- trunk/koffice/kugar/lib/mreportengine.cpp #502328:502329
@@ -85,8 +85,6 @@
 {
     // Clear the grand total data
     grandTotal.clear();
-    if ( m_pageCollection )
-        m_pageCollection->removeRef();
     kdDebug( 31000 ) << k_funcinfo << endl;
 }
 
@@ -107,7 +105,9 @@
 {
     rHeader.clear();
     pHeader.clear();
+    dHeaders.clear();
     details.clear();
+    dFooters.clear();
     pFooter.clear();
     rFooter.clear();
 }
@@ -272,7 +272,11 @@
     if ( !m_needRegeneration )
         return m_pageCollection;
     if ( m_pageCollection )
-        m_pageCollection->removeRef();
+    {
+        m_pageCollection->deleteLater();
+        m_pageCollection = 0;
+    }
+
     unsigned int j;
     unsigned int i;
 
@@ -280,7 +284,7 @@
     cancelRender = false;
 
     // Create the page collection
-    MPageCollection* pages = new MPageCollection;
+    MPageCollection* pages = new MPageCollection( this );
 
     // Initialize the basic page data
     currHeight = pageHeight - ( topMargin + bottomMargin + pFooter.getHeight() );
--- trunk/koffice/kugar/lib/mreportengine.h #502328:502329
@@ -79,7 +79,7 @@
 
 private:
 
-    QGuardedPtr<MPageCollection> m_pageCollection;
+    MPageCollection *m_pageCollection;
     bool m_needRegeneration;
     /** Report data document */
     QDomDocument rd;
--- trunk/koffice/kugar/lib/mreportviewer.cpp #502328:502329
@@ -37,9 +37,6 @@
 {
     scroller = new QScrollView( this );
 
-    // Create the report engine
-    report = 0;
-
     // Connect the rendering update signal and slot
     connect( rptEngine, SIGNAL( signalRenderStatus( int ) ),
              SLOT( slotRenderProgress( int ) ) );
@@ -71,7 +68,6 @@
 MReportViewer::~MReportViewer()
 {
     clearReport();
-    //delete rptEngine;
     rptEngine->removeRef();
 }
 
@@ -85,7 +81,6 @@
     scroller->resize( event->size() );
 }
 
-
 // Set the report's data from an in-line string.
 
 bool MReportViewer::setReportData( const QString &data )
@@ -121,17 +116,11 @@
 /** Generates the report's page collection */
 bool MReportViewer::renderReport()
 {
-    // Check if a previous report exists and
-    // if so de-allocated it
-    if ( report != 0 )
-        report->removeRef();
-    //    delete report;
-
     // Render the report
     report = rptEngine->renderReport();
 
     // Display the first page of the report
-    if ( report != 0 && report->getFirstPage() != 0 )
+    if ( report && report->getFirstPage() != 0 )
     {
         display->setPageDimensions( report->pageDimensions() );
         display->setPage( report->getFirstPage() );
@@ -148,21 +137,13 @@
 {
     // Hide the display
     display->hide();
-
-    // De-Allocate any report
-    if ( report )
-    {
-        report->removeRef();
-        //delete report;
-        report = 0;
-    }
 }
 
 /** Prints the rendered report to the selected printer - displays KDE print dialog */
 void MReportViewer::printReport()
 {
     // Check for a report
-    if ( report == 0 )
+    if ( !report )
         return ;
 
     // Get the page count
@@ -188,7 +169,7 @@
 {
     QPicture * page;
 
-    if ( report == 0 )
+    if ( !report )
         return ;
 
     if ( ( page = report->getFirstPage() ) != 0 )
@@ -203,7 +184,7 @@
 {
     QPicture * page;
 
-    if ( report == 0 )
+    if ( !report )
         return ;
 
     int index = report->getCurrentIndex();
@@ -222,7 +203,7 @@
 {
     QPicture * page;
 
-    if ( report == 0 )
+    if ( !report )
         return ;
 
     int index = report->getCurrentIndex();
@@ -241,7 +222,7 @@
 {
     QPicture * page;
 
-    if ( report == 0 )
+    if ( !report )
         return ;
 
     if ( ( page = report->getLastPage() ) != 0 )
@@ -300,7 +281,7 @@
 void MReportViewer::printReport( KPrinter &printer )
 {
     // Check for a report
-    if ( report == 0 )
+    if ( !report )
         return ;
 
     // Get the page count
--- trunk/koffice/kugar/lib/mreportviewer.h #502328:502329
@@ -18,6 +18,7 @@
 #include <qpainter.h>
 #include <qpaintdevicemetrics.h>
 #include <qprogressdialog.h>
+#include <qguardedptr.h>
 #include <koffice_export.h>
 #include "mreportengine.h"
 #include "mpagecollection.h"
@@ -79,7 +80,7 @@
     QScrollView *scroller;
     MPageDisplay *display;
     MReportEngine *rptEngine;
-    MPageCollection *report;
+    QGuardedPtr<MPageCollection> report;
     KPrinter *printer;
 
 private:
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic