Rev 335 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "qmreportwindow.h"#include <QVariant>#include <QApplication>#include <QTabWidget>#include <QWidget>#include <QVBoxLayout>#include <QButtonGroup>#include <QHBoxLayout>#include <QLabel>#include <QSpacerItem>#include <QToolBar>#include <QPrintDialog>#include <QPrinter>#include <QPrintPreviewDialog>#include <QDesktopServices>#include <QDirIterator>#include <QtDebug>#include "consts.h"#include "structs.h"#include "proto.h"QmReportWindow *reportWindow = NULL;QmReportWindow::QmReportWindow(QWidget *parent) : QWidget(parent){currentWebView = NULL;currentWebViewPrinter = NULL;printPreviewDialog = NULL;reportWindow = this;// Allocate one printer for the entire widget// Setting made to the printer will then be used in all reports//printer = new QPrinter();printer->setPageMargins(10,10,10,10,QPrinter::Millimeter);// printPreviewDialog = new QPrintPreviewDialog(this);// printPreviewDialog->setModal ( true );// connect(printPreviewDialog,SIGNAL(paintRequested(QPrinter *)), this , SLOT(printPreview(QPrinter *)) );QVBoxLayout *verticalLayout;QLabel *label;QToolBar *tb;verticalLayout = new QVBoxLayout(this);verticalLayout->setContentsMargins(0, 0, 0, 0);tb = new QToolBar ( "Actions" );verticalLayout->addWidget(tb);pb_original = tb->addAction ( QIcon(":/webkit/inspector/Images/reloadButtonGlyph.png"),"Home", this, SLOT(home()));pb_back = tb->addAction ( QIcon(":/trolltech/styles/commonstyle/images/left-32.png"),"Back", this, SLOT(back()));pb_forward = tb->addAction ( QIcon(":/trolltech/styles/commonstyle/images/right-32.png"),"Forward", this, SLOT(forward()));tb->addSeparator();pb_openExternal = tb->addAction ( QIcon(":/trolltech/styles/commonstyle/images/viewdetailed-32.png" ),"Open in External viewer", this, SLOT(openExternal()));pb_explore = tb->addAction ( QIcon(":/trolltech/styles/commonstyle/images/standardbutton-open-32.png" ),"Open Location", this, SLOT(openLocation()));tb->addSeparator();pb_print = tb->addAction ( QIcon(":/trolltech/dialogs/qprintpreviewdialog/images/print-32.png" ),"Print", this, SLOT(print()));pb_size = new QDoubleSpinBox();pb_size->setSingleStep (0.05);pb_size->setValue(1.4);pb_size->setToolTip("Printer Scaling Size");tb->addWidget(pb_size);label = new QLabel("Path");tb->addWidget(label);tabPath = new QLineEdit();tabPath->setReadOnly(true);tb->addWidget(tabPath);tabWidget = new QTabWidget();tabWidget->setTabsClosable(true);tabWidget->setUsesScrollButtons(true);verticalLayout->addWidget(tabWidget);connect(tabWidget,SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int)));connect(tabWidget,SIGNAL(tabCloseRequested(int)), this, SLOT(deleteTab(int)));addReport(QString(filepath)+ "web/" + filebase + "_index.html", "Index");addReport(QString(filepath)+ "web/" + filebase + "_legindex.html", "Master Leg Index");//addReport(QString(filepath) + "brmr2011_l2_2.txt", "Starters Report 2");tabWidget->setCurrentIndex(0);// {// QDirIterator it(":", QDirIterator::Subdirectories);// while (it.hasNext())// qDebug() << it.next();// }//QWebSettings *gs = QWebSettings::globalSettings ();//gs->setFontSize(QWebSettings::DefaultFixedFontSize,16);}void QmReportWindow::addReport(const QString &report, const QString &name){QmWebView *webView = NULL;bool adding = false;for( int index = 0; index < tabWidget->count(); index++){if (tabWidget->tabText(index) == name){webView = dynamic_cast<QmWebView *>(tabWidget->widget(index));if (webView){//qDebug("Reuse Tab:%s", qPrintable(report));break;}}}if (webView == NULL){webView = new QmWebView();adding = true;}webView->setUrl(report);if ( adding ){int tab = tabWidget->addTab(webView, name);tabChanged(tab);//qDebug("Adding(%d):%s", tab, qPrintable(report));}}QmWebView *QmReportWindow::newTab(void){QmWebView *webView = NULL;if (reportWindow){webView = new QmWebView();int tab = reportWindow->tabWidget->addTab(webView, "New");webView->setTab(tab);reportWindow->tabChanged(tab);}return(webView);}void QmReportWindow::setTabName(const int tab, const QString &name){if (reportWindow){reportWindow->tabWidget->setTabText(tab, name);}}void QmReportWindow::updateTabPath(void){if (reportWindow){QString target = reportWindow->currentWebView->url().toString();target.remove(QRegExp("#.*$"));reportWindow->tabPath->setText(target);}}void QmReportWindow::deleteTab(int tab){// qDebug("Delete TAB:%d", tab);tabWidget->removeTab(tab);}void QmReportWindow::tabChanged(int tab){//qDebug("Update TAB:%d", tab);currentWebView = dynamic_cast<QmWebView *>(tabWidget->currentWidget());bool enable = (currentWebView != NULL);pb_original->setEnabled(enable);pb_back->setEnabled(enable);pb_forward->setEnabled(enable);pb_print->setEnabled(enable);pb_explore->setEnabled(enable);pb_openExternal->setEnabled(enable);if ( enable ){//tabPath->setText(currentWebView->homeUrl);//tabPath->setText(currentWebView->url().toString());QmReportWindow::updateTabPath();}else{tabPath->setText("");}}void QmReportWindow::back(void){if ( currentWebView ){currentWebView->back();}}void QmReportWindow::forward(void){if ( currentWebView ){currentWebView->forward();}}void QmReportWindow::home(void){if ( currentWebView ){currentWebView->home();}}void QmReportWindow::openLocation(void){if ( currentWebView ){QString target = tabPath->text();target.remove(QRegExp("/[^/]*$"));QDesktopServices::openUrl(target);}}void QmReportWindow::openExternal(void){if ( currentWebView ){QString target = tabPath->text();QDesktopServices::openUrl(target);}}void QmReportWindow::print(void){if ( currentWebView ){// Delete printer preview if we are previewing a different page//if ( printPreviewDialog /* && currentWebViewPrinter != currentWebView */){delete printPreviewDialog;printPreviewDialog = NULL;currentWebViewPrinter = NULL;}// Allocate Printer Preview if we don't have oneif (printPreviewDialog == NULL){currentWebViewPrinter = currentWebView;printPreviewDialog = new QPrintPreviewDialog(printer, this);printPreviewDialog->setModal ( true );printPreviewDialog->setSizeGripEnabled(true);printer->setDocName(currentWebView->url().toString());}// printPreviewDialog->open(this,SLOT(fred()));//currentWebView->setStyleSheet("*{font-size:250%;}");//currentWebView->setZoomFactor(2.0);currentWebView->setTextSizeMultiplier ( pb_size->value() );qDebug("setTextSizeMultiplier:%f", pb_size->value());connect(printPreviewDialog,SIGNAL(paintRequested(QPrinter *)), this , SLOT(printPreview(QPrinter *)) );printPreviewDialog->exec();currentWebView->setTextSizeMultiplier ( 1.0 );// QPrintDialog printDialog(this);// if (printDialog.exec() == QDialog::Accepted) {// QPrinter * printer = printDialog.printer();// currentWebView->print(printer);// // print ...// }}}void QmReportWindow::printPreview(QPrinter * printer){qDebug("QmReportWindow::printPreview");currentWebView->print(printer);}QmReportWindow::~QmReportWindow(){}