diff --git a/ChangeLog b/ChangeLog index a7340b7f..c02496e6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19328,3 +19328,7 @@ 2019-12-10 Fred Gleason * Fixed typos in UI strings in rdlogmanager(1)'s 'Pick Report Dates' dialog. +2019-12-10 Fred Gleason + * Added an 'RDTextViewer()' function. + * Added the ability to view a report at time of generation in + rdlogmanager(1). diff --git a/lib/rdtextfile.cpp b/lib/rdtextfile.cpp index 26c2b08c..f7d81873 100644 --- a/lib/rdtextfile.cpp +++ b/lib/rdtextfile.cpp @@ -81,3 +81,41 @@ bool RDTextFile(const QString &data,bool delete_on_exit) return true; } + + +bool RDTextViewer(const QString &filename) +{ + QString editor=RD_LINUX_EDITOR; + char cmd[PATH_MAX]; + char *args[64]; + + if(!rda->station()->reportEditorPath().trimmed().isEmpty()) { + editor=rda->station()->reportEditorPath(); + } + memset(args,0,sizeof(args)); + QStringList f0=editor.split(" ",QString::SkipEmptyParts); + if(f0.size()>64) { + QMessageBox::warning(NULL,"File Error", + "Too many arguments to report editor!"); + return false; + } + strncpy(cmd,f0.at(0).toUtf8(),PATH_MAX); + QStringList f1=f0.at(0).split("/"); + args[0]=(char *)malloc(f1.back().toUtf8().size()+1); + strcpy(args[0],f1.back().toUtf8()); + for(int i=1;i bool RDTextFile(const QString &data,bool delete_on_exit=true); +bool RDTextViewer(const QString &filename); #endif // RDTEXTFILE_H diff --git a/rdlogmanager/Makefile.am b/rdlogmanager/Makefile.am index d4368866..3722cbb6 100644 --- a/rdlogmanager/Makefile.am +++ b/rdlogmanager/Makefile.am @@ -65,7 +65,8 @@ dist_rdlogmanager_SOURCES = add_clock.cpp add_clock.h\ rdlogmanager.cpp rdlogmanager.h\ rename_item.cpp rename_item.h\ svc_rec.cpp svc_rec.h\ - svc_rec_dialog.cpp svc_rec_dialog.h + svc_rec_dialog.cpp svc_rec_dialog.h\ + viewreportdialog.cpp viewreportdialog.h nodist_rdlogmanager_SOURCES = moc_add_clock.cpp\ moc_add_event.cpp\ @@ -91,7 +92,8 @@ nodist_rdlogmanager_SOURCES = moc_add_clock.cpp\ moc_rdlogmanager.cpp\ moc_rename_item.cpp\ moc_svc_rec.cpp\ - moc_svc_rec_dialog.cpp + moc_svc_rec_dialog.cpp\ + moc_viewreportdialog.cpp rdlogmanager_LDADD = @LIB_RDLIBS@ @LIBVORBIS@ @QT4_LIBS@ -lQt3Support diff --git a/rdlogmanager/pick_report_dates.cpp b/rdlogmanager/pick_report_dates.cpp index 46bbbe33..9f1465fe 100644 --- a/rdlogmanager/pick_report_dates.cpp +++ b/rdlogmanager/pick_report_dates.cpp @@ -46,6 +46,11 @@ PickReportDates::PickReportDates(const QString &svcname,QWidget *parent) setMaximumSize(sizeHint()); setMinimumSize(sizeHint()); + // + // Dialogs + // + edit_viewreport_dialog=new ViewReportDialog(this); + // // Report List // @@ -121,6 +126,7 @@ PickReportDates::PickReportDates(const QString &svcname,QWidget *parent) PickReportDates::~PickReportDates() { + delete edit_viewreport_dialog; } @@ -205,9 +211,7 @@ void PickReportDates::generateData() edit_enddate_edit->date(),rda->station(),&out_path); switch(report->errorCode()) { case RDReport::ErrorOk: - QMessageBox::information(this,"RDLogManager - "+tr("Report Complete"), - tr("Report generated in")+" \""+out_path+ - "\"."); + edit_viewreport_dialog->exec(out_path); break; case RDReport::ErrorCantOpen: diff --git a/rdlogmanager/pick_report_dates.h b/rdlogmanager/pick_report_dates.h index 8320295c..eaeab6ad 100644 --- a/rdlogmanager/pick_report_dates.h +++ b/rdlogmanager/pick_report_dates.h @@ -26,6 +26,8 @@ #include +#include "viewreportdialog.h" + class PickReportDates : public RDDialog { Q_OBJECT @@ -46,6 +48,7 @@ class PickReportDates : public RDDialog QDateEdit *edit_startdate_edit; QDateEdit *edit_enddate_edit; QString edit_svcname; + ViewReportDialog *edit_viewreport_dialog; }; diff --git a/rdlogmanager/rdlogmanager_cs.ts b/rdlogmanager/rdlogmanager_cs.ts index 267f58ef..a1ff8e72 100644 --- a/rdlogmanager/rdlogmanager_cs.ts +++ b/rdlogmanager/rdlogmanager_cs.ts @@ -1497,16 +1497,12 @@ zprávu Report Complete - Zpráva úplná + Zpráva úplná Report complete! Zpráva úplná! - - Report generated in - - File Exists diff --git a/rdlogmanager/rdlogmanager_de.ts b/rdlogmanager/rdlogmanager_de.ts index 6c359174..7a8c4fad 100644 --- a/rdlogmanager/rdlogmanager_de.ts +++ b/rdlogmanager/rdlogmanager_de.ts @@ -1487,16 +1487,12 @@ Report Report Complete - Report komplett + Report komplett Report complete! Report komplett! - - Report generated in - - File Exists diff --git a/rdlogmanager/rdlogmanager_es.ts b/rdlogmanager/rdlogmanager_es.ts index 710d7621..183820d8 100644 --- a/rdlogmanager/rdlogmanager_es.ts +++ b/rdlogmanager/rdlogmanager_es.ts @@ -1500,16 +1500,12 @@ Reporte Report Complete - Reporte completado + Reporte completado Report complete! ¡Reporte completado! - - Report generated in - - File Exists diff --git a/rdlogmanager/rdlogmanager_fr.ts b/rdlogmanager/rdlogmanager_fr.ts index 341197f3..425fb478 100644 --- a/rdlogmanager/rdlogmanager_fr.ts +++ b/rdlogmanager/rdlogmanager_fr.ts @@ -1316,14 +1316,6 @@ Report This report type cannot span multiple months! - - Report Complete - - - - Report generated in - - File Exists diff --git a/rdlogmanager/rdlogmanager_nb.ts b/rdlogmanager/rdlogmanager_nb.ts index a2a5e465..767e2a7e 100644 --- a/rdlogmanager/rdlogmanager_nb.ts +++ b/rdlogmanager/rdlogmanager_nb.ts @@ -1490,16 +1490,12 @@ rapport Report Complete - Rapporten ferdig + Rapporten ferdig Report complete! Rapporten er ferdig! - - Report generated in - - File Exists diff --git a/rdlogmanager/rdlogmanager_nn.ts b/rdlogmanager/rdlogmanager_nn.ts index a2a5e465..767e2a7e 100644 --- a/rdlogmanager/rdlogmanager_nn.ts +++ b/rdlogmanager/rdlogmanager_nn.ts @@ -1490,16 +1490,12 @@ rapport Report Complete - Rapporten ferdig + Rapporten ferdig Report complete! Rapporten er ferdig! - - Report generated in - - File Exists diff --git a/rdlogmanager/rdlogmanager_pt_BR.ts b/rdlogmanager/rdlogmanager_pt_BR.ts index 44aee743..e15f8555 100644 --- a/rdlogmanager/rdlogmanager_pt_BR.ts +++ b/rdlogmanager/rdlogmanager_pt_BR.ts @@ -1491,16 +1491,12 @@ Relatório Report Complete - Relatório Completo + Relatório Completo Report complete! Relatório Completo! - - Report generated in - - File Exists diff --git a/rdlogmanager/viewreportdialog.cpp b/rdlogmanager/viewreportdialog.cpp new file mode 100644 index 00000000..43655a34 --- /dev/null +++ b/rdlogmanager/viewreportdialog.cpp @@ -0,0 +1,96 @@ +// viewreportdialog.cpp +// +// Offer to display a generated report. +// +// (C) Copyright 2002-2019 Fred Gleason +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2 as +// published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// + +#include + +#include + +#include "viewreportdialog.h" + +ViewReportDialog::ViewReportDialog(QWidget *parent) + : RDDialog(parent) +{ + // + // Fix the Window Size + // + setMaximumSize(sizeHint()); + setMinimumSize(sizeHint()); + + + setWindowTitle("RDLogManager - "+tr("Report Complete")); + view_message_label=new QLabel(this); + view_message_label->setAlignment(Qt::AlignLeft|Qt::AlignTop); + view_message_label->setWordWrap(true); + + view_view_button=new QPushButton(tr("View in")+"\n"+tr("Report Editor"),this); + view_view_button->setFont(buttonFont()); + connect(view_view_button,SIGNAL(clicked()),this,SLOT(viewData())); + + view_close_button=new QPushButton(tr("Close"),this); + view_close_button->setFont(buttonFont()); + connect(view_close_button,SIGNAL(clicked()),this,SLOT(closeData())); +} + + +QSize ViewReportDialog::sizeHint() const +{ + return QSize(300,120); +} + + +QSizePolicy ViewReportDialog::sizePolicy() const +{ + return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); +} + + +int ViewReportDialog::exec(const QString &rpt_filename) +{ + view_report_filename=rpt_filename; + view_message_label-> + setText(tr("Report generated in")+" \""+rpt_filename+"\"."); + + return QDialog::exec(); +} + + +void ViewReportDialog::viewData() +{ + if(!RDTextViewer(view_report_filename)) { + QMessageBox::information(this,"RDLogManager - "+tr("Error"), + tr("Unable to launce report viewer!")); + } +} + + +void ViewReportDialog::closeData() +{ + done(true); +} + + +void ViewReportDialog::resizeEvent(QResizeEvent *e) +{ + view_message_label->setGeometry(10,10,size().width()-20,size().height()-80); + + view_view_button->setGeometry(10,size().height()-60,110,50); + + view_close_button->setGeometry(size().width()-90,size().height()-60,80,50); +} diff --git a/rdlogmanager/viewreportdialog.h b/rdlogmanager/viewreportdialog.h new file mode 100644 index 00000000..fae376dd --- /dev/null +++ b/rdlogmanager/viewreportdialog.h @@ -0,0 +1,56 @@ +// viewreportdialog.h +// +// Offer to display a generated report. +// +// (C) Copyright 2002-2019 Fred Gleason +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2 as +// published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// + +#ifndef VIEWREPORTDIALOG_H +#define VIEWREPORTDIALOG_H + +#include +#include +#include + +#include + +class ViewReportDialog : public RDDialog +{ + Q_OBJECT + public: + ViewReportDialog(QWidget *parent=0); + QSize sizeHint() const; + QSizePolicy sizePolicy() const; + + public slots: + int exec(const QString &rpt_filename); + + private slots: + void viewData(); + void closeData(); + + protected: + void resizeEvent(QResizeEvent *e); + + private: + QLabel *view_message_label; + QPushButton *view_view_button; + QPushButton *view_close_button; + QString view_report_filename; +}; + + +#endif // VIEWREPORTDIALOG_H