#include "qmreportwindow.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #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(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(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 one if (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() { }