Esempio n. 1
0
void
ReportList::slotView()
{
    ListView* list = (ListView*)_stack->visibleWidget();
    if (list == NULL) return;
    ListViewItem* item = list->currentItem();
    if (item == NULL) return;

    QApplication::setOverrideCursor(waitCursor);
    qApp->processEvents();

    QString fileName = item->extra[0].toString();
    QString filePath;
    if (!_quasar->resourceFetch("reports", fileName, filePath)) {
	QApplication::restoreOverrideCursor();

	QString message = tr("Error fetching report '%1'").arg(fileName);
	qApp->beep();
	QMessageBox::critical(this, tr("Error"), message);
	return;
    }

    ReportDefn report;
    if (!report.load(filePath)) {
	QApplication::restoreOverrideCursor();

	QString message = tr("Report '%1' is invalid").arg(fileName);
	qApp->beep();
	QMessageBox::critical(this, tr("Error"), message);
	return;
    }

    QApplication::restoreOverrideCursor();

    ParamMap params;
    if (!report.getParams(this, params))
	return;

    QApplication::setOverrideCursor(waitCursor);
    qApp->processEvents();

    ReportOutput* output = new ReportOutput();
    if (!report.generate(params, *output)) {
	QApplication::restoreOverrideCursor();
	delete output;
	QString message = tr("Report '%1' failed").arg(fileName);
	qApp->beep();
	QMessageBox::critical(this, tr("Error"), message);
	return;
    }

    QApplication::restoreOverrideCursor();
    ReportViewer* view = new ReportViewer(report, params, output);
    view->show();
}