Subversion Repositories svn1-original

Rev

Rev 211 | Go to most recent revision | 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 <QPrintPreviewDialog>

#include <QDirIterator>
#include <QtDebug>

#include    "consts.h"
#include    "structs.h"
#include    "proto.h"

QmReportWindow::QmReportWindow(QWidget *parent) : QWidget(parent)
{
    currentWebView = NULL;
    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()));
    pb_print = tb->addAction ( QIcon(":/trolltech/dialogs/qprintpreviewdialog/images/print-32.png" ),"Print", this, SLOT(print()));
    tb->addSeparator();
    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)+ filebase + "_index.html", "Index");
    tabWidget->setCurrentIndex(0);

//    {
//        QDirIterator it(":", QDirIterator::Subdirectories);
//        while (it.hasNext())
//                qDebug() << it.next();
//    }

}

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));
    }
}

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);

    if ( enable )
    {
        tabPath->setText(currentWebView->homeUrl);
    }
    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::print(void)
{
     if ( currentWebView )
     {
        QPrintPreviewDialog printPreviewDialog ( this );
        connect(&printPreviewDialog,SIGNAL(paintRequested(QPrinter *)), this , SLOT(printPreview(QPrinter *)) );
        printPreviewDialog.open(this,SLOT(fred()));
        printPreviewDialog.exec();

//         QPrintDialog printDialog(this);
//         if (printDialog.exec() == QDialog::Accepted) {
//             QPrinter * printer = printDialog.printer();
//             currentWebView->print(printer);
//              // print ...
//          }
         //currentWebView->print(zzzz);
     }
}

void QmReportWindow::printPreview(QPrinter * printer)
{
    qDebug("QmReportWindow::printPreview");
    currentWebView->print(printer);
}

QmReportWindow::~QmReportWindow()
{
}