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

List:       kde-commits
Subject:    koffice/kplato/libs/ui
From:       Dag Andersen <danders () get2net ! dk>
Date:       2010-03-18 11:05:14
Message-ID: 20100318110514.E1069AC855 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1104708 by danders:

Improve the report export dialog.


 M  +2 -0      CMakeLists.txt  
 M  +2 -0      reports/report.h  
 A             reports/reportexportpanel.cpp   [License: LGPL (v2+)]
 A             reports/reportexportpanel.h   [License: LGPL (v2+)]
 A             reports/reportexportpanel.ui  
 M  +60 -70    reports/reportview.cpp  
 M  +7 -5      reports/reportview.h  


--- trunk/koffice/kplato/libs/ui/CMakeLists.txt #1104707:1104708
@@ -33,6 +33,7 @@
     reports/reportpage.cpp
     reports/reportsourceeditor.cpp
     reports/reportscripts.cpp
+    reports/reportexportpanel.cpp
 
     plotting/kplotaxis.cpp
     plotting/kplotwidget.cpp
@@ -102,6 +103,7 @@
 kde4_add_ui_files(kplatoui_LIB_SRCS
     reports/reportsourceeditor.ui
     reports/reportnavigator.ui
+    reports/reportexportpanel.ui
 
     kptresourceappointmentsdisplayoptions.ui
     kptganttchartdisplayoptions.ui
--- trunk/koffice/kplato/libs/ui/reports/report.h #1104707:1104708
@@ -26,6 +26,8 @@
 namespace Reports
 {
     enum ItemRoles { TagRole = Qt::UserRole + 1 };
+    
+    enum ExportFormat { EF_Unknown, EF_Ods, EF_Html, EF_XHtml };
 }
 
 }
--- trunk/koffice/kplato/libs/ui/reports/reportview.cpp #1104707:1104708
@@ -25,6 +25,7 @@
 #include "reportdata.h"
 #include "reportsourceeditor.h"
 #include "reportscripts.h"
+#include "reportexportpanel.h"
 
 #include <KoReportPreRenderer.h>
 #include <KoReportPrintRenderer.h>
@@ -77,8 +78,8 @@
     m_reportDocument( reportDocument )
 {
     printer().setFromTo( documentFirstPage(), documentLastPage() );
-    m_cxt.printer = &printer();
-    m_cxt.painter = 0;
+    m_context.printer = &printer();
+    m_context.painter = 0;
     KoReportRendererFactory factory;
     m_renderer = factory.createInstance( "print" );
 }
@@ -96,8 +97,8 @@
 
 void ReportPrintingDialog::printPage( int page, QPainter &painter )
 {
-    m_cxt.painter = &painter;
-    m_renderer->render( m_cxt, m_reportDocument, page );
+    m_context.painter = &painter;
+    m_renderer->render( m_context, m_reportDocument, page );
 }
 
 //---------------------
@@ -241,87 +242,92 @@
     return new ReportPrintingDialog( this, m_reportDocument );
 }
 
-void ReportView::slotExportOds()
+void ReportView::slotExport()
 {
-    KFileDialog *dia = new KFileDialog( KUrl(), QString(), this );
+    ReportExportPanel *p = new ReportExportPanel();
+    p->setObjectName( "ReportExportPanel" );
+    KFileDialog *dia = new KFileDialog( KUrl(), QString(), this, p );
     dia->setOperationMode( KFileDialog::Saving );
     dia->setMode( KFile::File );
     dia->setConfirmOverwrite( true );
     dia->setInlinePreviewShown( true );
     dia->setCaption( i18nc( "@title:window", "Export Report" ) );
-    dia->setFilter( QString( "*.ods|%1\n*|%2" ).arg( i18n( "Open document \
spreadsheet" ) ).arg( i18n( "All Files" ) ) ); +//    dia->setFilter( QString( \
"*.ods|%1\n*|%2" ).arg( i18n( "Open document spreadsheet" ) ).arg( i18n( "All Files" \
) ) );  
-    connect(dia, SIGNAL(okClicked()), SLOT(slotExportOdsOkClicked()));
+    connect(dia, SIGNAL(finished(int)), SLOT(slotExportFinished(int)));
     dia->show();
     dia->raise();
     dia->activateWindow();
 }
 
-void ReportView::slotExportOdsOkClicked()
+void ReportView::slotExportFinished( int result )
 {
+    //TODO confirm overwrite
     KFileDialog *dia = dynamic_cast<KFileDialog*>( sender() );
     if ( dia == 0 ) {
         return;
     }
-    KoReportRendererBase *renderer;
-    KoReportRendererContext cxt;
+    ReportExportPanel *p = dia->findChild<ReportExportPanel*>("ReportExportPanel");
+    Q_ASSERT( p );
+    if ( p && result == QDialog::Accepted ) {
+        KoReportRendererContext context;
+        context.destinationUrl = dia->selectedUrl();
+        if (! context.destinationUrl.isValid() ) {
+            KMessageBox::error(this, i18nc( "@info", "Cannot export report. Invalid \
url:<br>file:<br><filename>%1</filename>", context.destinationUrl.url() ), i18n( "Not \
Saved" ) ); +        } else {
+            switch ( p->selectedFormat() ) {
+                case Reports::EF_Ods: exportToOds( context ); break;
+                case Reports::EF_Html: exportToHtml( context ); break;
+                case Reports::EF_XHtml: exportToXHtml( context ); break;
+                default:
+                    KMessageBox::error(this, i18n("Cannot export report. Unknown \
file format"), i18n( "Not Saved" ) ); +                    break;
+            }
+        }
+    }
+    dia->deleteLater();
+}
 
+void ReportView::exportToOds( KoReportRendererContext &context )
+{
+    kDebug()<<"Export to ods:"<<context.destinationUrl;
+    KoReportRendererBase *renderer;
     renderer = m_factory.createInstance("ods");
     if ( renderer == 0 ) {
+        kError()<<"Cannot create ods renderer";
         return;
     }
-    cxt.destinationUrl = dia->selectedUrl();
-    if (!cxt.destinationUrl.isValid()) {
-        KMessageBox::error(this, i18n("Cannot export report. The URL was invalid"), \
                i18n( "Not Saved" ) );
-        return;
+    if (!renderer->render(context, m_reportDocument)) {
+        KMessageBox::error(this, i18nc( "@info", "Failed to export to \
<filename>%1</filename>", context.destinationUrl.prettyUrl()) , i18n("Export to \
spreadsheet failed"));  }
-
-    if (!renderer->render(cxt, m_reportDocument)) {
-        KMessageBox::error(this, i18nc( "@info", "Failed to export to \
<filename>%1</filename>", cxt.destinationUrl.prettyUrl()) , i18n("Export to \
                spreadsheet failed"));
-    }
-    dia->deleteLater();
 }
 
-void ReportView::slotExportHTML()
+void ReportView::exportToHtml( KoReportRendererContext &context )
 {
-    KFileDialog *dia = new KFileDialog( KUrl(), QString(), this );
-    dia->setOperationMode( KFileDialog::Saving );
-    dia->setMode( KFile::File );
-    dia->setConfirmOverwrite( true );
-    dia->setInlinePreviewShown( true );
-    dia->setCaption( i18nc( "@title:window", "Export Report" ) );
-    dia->setFilter( QString( "*.html|%1\n*|%2" ).arg( i18n( "HTML files" ) ).arg( \
                i18n( "All Files" ) ) );
-
-    connect(dia, SIGNAL(okClicked()), SLOT(slotExportHTMLOkClicked()));
-    dia->show();
-    dia->raise();
-    dia->activateWindow();
-
+    kDebug()<<"Export to html:"<<context.destinationUrl;
+    KoReportRendererBase *renderer;
+    renderer = m_factory.createInstance("htmltable");
+    if ( renderer == 0 ) {
+        kError()<<"Cannot create html renderer";
+        return;
+    }
+    if (!renderer->render(context, m_reportDocument)) {
+        KMessageBox::error(this, i18nc( "@info", "Failed to export to \
<filename>%1</filename>", context.destinationUrl.prettyUrl()) , i18n("Export to HTML \
failed")); +    }
 }
 
-void ReportView::slotExportHTMLOkClicked()
+void ReportView::exportToXHtml( KoReportRendererContext &context )
 {
-    KFileDialog *dia = dynamic_cast<KFileDialog*>( sender() );
-    if ( dia == 0 ) {
-        return;
-    }
+    kDebug()<<"Export to xhtml:"<<context.destinationUrl;
     KoReportRendererBase *renderer;
-    KoReportRendererContext cxt;
-
     renderer = m_factory.createInstance("htmlcss");
     if ( renderer == 0 ) {
+        kError()<<"Cannot create xhtml css renderer";
         return;
     }
-    cxt.destinationUrl = dia->selectedUrl();
-    if (!cxt.destinationUrl.isValid()) {
-        KMessageBox::error(this, i18n("Cannot export report. The URL was invalid"), \
                i18n( "Not Saved" ) );
-        return;
+    if (!renderer->render(context, m_reportDocument)) {
+        KMessageBox::error(this, i18nc( "@info", "Failed to export to \
<filename>%1</filename>", context.destinationUrl.prettyUrl()) , i18n("Export to XHTML \
failed"));  }
-
-    if (!renderer->render(cxt, m_reportDocument)) {
-        KMessageBox::error(this, i18nc( "@info", "Failed to export to \
<filename>%1</filename>", cxt.destinationUrl.prettyUrl()) , i18n("Export to HTML \
                failed"));
-    }
-    dia->deleteLater();
 }
 
 void ReportView::setupGui()
@@ -336,27 +342,11 @@
     connect(a, SIGNAL(triggered()), this, SLOT(slotEditReport()));
     addAction( name, a );
 
-//#ifdef HAVE_KSPREAD
-    a = new KAction( KIcon( "application-vnd.oasis.opendocument.spreadsheet" ), \
                i18nc( "@label:button", "Spreadsheet" ), this );
-    a->setToolTip( i18nc( "@info:tooltip", "Export to spreadsheet" ) );
-    a->setWhatsThis( i18nc( "@info:whatsthis", "Exports report to an open document \
                spreadsheet file." ) );
-    connect(a, SIGNAL(triggered()), this, SLOT(slotExportOds()));
+    a = new KAction( KIcon( "document-export" ), i18n( "Export" ), this );
+    a->setToolTip( i18nc( "@info:tooltip", "Export to file" ) );
+    a->setWhatsThis( i18nc( "@info:whatsthis", "Exports the report to a supported \
file format." ) ); +    connect(a, SIGNAL(triggered()), this, SLOT(slotExport()));
     addAction( name, a );
-//#endif
-
-    a = new KAction( KIcon( "application-xhtml+xml" ), i18n( "HTML" ), this );
-    a->setToolTip( i18nc( "@info:tooltip", "Export to HTML" ) );
-    a->setWhatsThis( i18nc( "@info:whatsthis", "Exports the report to a HTML file in \
                css format." ) );
-    connect(a, SIGNAL(triggered()), this, SLOT(slotExportHTML()));
-    addAction( name, a );
-
-/*    a = new KAction( KIcon( "kword" ), i18n( "Open in KWord" ), this );
-    a->setToolTip(i18n("Open the report in KWord"));
-    a->setWhatsThis(i18n("Opens the current report in KWord."));
-    a->setEnabled(false);
-//! @todo connect(a, SIGNAL(triggered()), this, SLOT(slotRenderKWord()));
-    addAction( name, a );*/
-
 }
 
 void ReportView::setGuiActive( bool active ) // virtual slot
--- trunk/koffice/kplato/libs/ui/reports/reportview.h #1104707:1104708
@@ -85,7 +85,7 @@
 
 protected:
     ORODocument *m_reportDocument;
-    KoReportRendererContext m_cxt;
+    KoReportRendererContext m_context;
     KoReportRendererBase *m_renderer;
 };
 
@@ -132,13 +132,15 @@
     void firstPage();
     void lastPage();
     void slotEditReport();
-    void slotExportOds();
-    void slotExportOdsOkClicked();
-    void slotExportHTML();
-    void slotExportHTMLOkClicked();
 
+    void slotExport();
+    void slotExportFinished( int result );
+
 private:
     ReportData *createReportData( const QDomElement &connection );
+    void exportToOds( KoReportRendererContext &context );
+    void exportToHtml( KoReportRendererContext &context );
+    void exportToXHtml( KoReportRendererContext &context );
 
 private:
     KoReportPreRenderer *m_preRenderer;


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

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