2020-08-04 Fred Gleason <fredg@paravelsystems.com>

* Added a 'Log Render Options' dialog to rdcastmanager(1).

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason
2020-08-04 16:07:45 -04:00
parent f76642d44e
commit 7d62e200ba
31 changed files with 2150 additions and 33 deletions

View File

@@ -45,11 +45,17 @@ bin_PROGRAMS = rdcastmanager
dist_rdcastmanager_SOURCES = edit_cast.cpp edit_cast.h\
globals.h\
list_casts.cpp list_casts.h\
rdcastmanager.cpp rdcastmanager.h
logdialog.cpp logdialog.h\
logmodel.cpp logmodel.h\
rdcastmanager.cpp rdcastmanager.h\
render_dialog.cpp render_dialog.h
nodist_rdcastmanager_SOURCES = moc_edit_cast.cpp\
moc_list_casts.cpp\
moc_rdcastmanager.cpp
moc_logdialog.cpp\
moc_logmodel.cpp\
moc_rdcastmanager.cpp\
moc_render_dialog.cpp
rdcastmanager_LDADD = @LIB_RDLIBS@ @LIBVORBIS@ @QT4_LIBS@ @MUSICBRAINZ_LIBS@ -lQt3Support

View File

@@ -65,8 +65,10 @@ ListCasts::ListCasts(unsigned feed_id,bool is_super,QWidget *parent)
list_feed=new RDFeed(feed_id,rda->config(),this);
//
// Progress Dialog
// Dialogs
//
list_render_dialog=new RenderDialog(this);
list_progress_dialog=
new QProgressDialog(tr("Uploading Audio..."),tr("Cancel"),0,1,this);
list_progress_dialog->setWindowTitle("RDCastManager - "+tr("Progress"));
@@ -202,6 +204,7 @@ ListCasts::ListCasts(unsigned feed_id,bool is_super,QWidget *parent)
ListCasts::~ListCasts()
{
delete list_render_dialog;
delete list_progress_dialog;
delete list_feed;
}
@@ -281,21 +284,37 @@ void ListCasts::addLogData()
RDListLogs *d=new RDListLogs(&logname,RDLogFilter::UserFilter,this);
if(d->exec()) {
if((cast_id=list_feed->postLog(logname,&err))!=0) {
EditCast *cast=new EditCast(cast_id,this);
cast->exec();
RDListViewItem *item=new RDListViewItem(list_casts_view);
item->setId(cast_id);
RefreshItem(item);
list_casts_view->setSelected(item,true);
list_casts_view->ensureItemVisible(item);
//delete cast;
RDLogEvent *log=new RDLogEvent(logname);
log->load();
QTime start_time;
bool ignore_stops=true;
int start_line=0;
int end_line=log->size()-1;
if(list_render_dialog->exec(log,&start_time,&ignore_stops,
&start_line,&end_line)) {
if((cast_id=list_feed->postLog(logname,start_time,ignore_stops,
start_line,end_line,&err))!=0) {
EditCast *cast=new EditCast(cast_id,this);
cast->exec();
RDListViewItem *item=new RDListViewItem(list_casts_view);
item->setId(cast_id);
RefreshItem(item);
list_casts_view->setSelected(item,true);
list_casts_view->ensureItemVisible(item);
//delete cast;
}
else {
QMessageBox::warning(this,"RDCastManager - "+tr("Posting Error"),
RDFeed::errorString(err));
delete d;
delete log;
return;
}
delete log;
}
else {
QMessageBox::warning(this,"RDCastManager - "+tr("Posting Error"),
RDFeed::errorString(err));
delete d;
return;
else { // Render dialog was canceled!
}
}
delete d;

View File

@@ -28,6 +28,8 @@
#include <rdfeed.h>
#include <rdlistviewitem.h>
#include "render_dialog.h"
class ListCasts : public RDDialog
{
Q_OBJECT
@@ -77,6 +79,7 @@ class ListCasts : public RDDialog
QLabel *list_active_label;
QCheckBox *list_active_check;
QProgressDialog *list_progress_dialog;
RenderDialog *list_render_dialog;
RDFeed *list_feed;
bool list_is_superfeed;
};

113
rdcastmanager/logdialog.cpp Normal file
View File

@@ -0,0 +1,113 @@
// logdialog.cpp
//
// Real-only lister dialogs for Rivendell logs
//
// (C) Copyright 2020 Fred Gleason <fredg@paravelsystems.com>
//
// 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 <QItemSelection>
#include <QItemSelectionModel>
#include <QModelIndexList>
#include "logdialog.h"
LogDialog::LogDialog(QWidget *parent)
: RDDialog(parent)
{
setWindowTitle("RDCastManager - "+tr("List Log"));
d_log_view=new QTableView(this);
d_log_view->setSelectionBehavior(QAbstractItemView::SelectRows);
d_log_view->setSelectionMode(QAbstractItemView::ContiguousSelection);
d_log_view->setShowGrid(false);
d_log_view->setSortingEnabled(false);
d_log_view->setWordWrap(false);
d_log_model=new LogModel(this);
d_log_model->setFont(font());
d_log_view->setModel(d_log_model);
d_ok_button=new QPushButton(tr("OK"),this);
d_ok_button->setFont(buttonFont());
connect(d_ok_button,SIGNAL(clicked()),this,SLOT(okData()));
d_cancel_button=new QPushButton(tr("Cancel"),this);
d_cancel_button->setFont(buttonFont());
connect(d_cancel_button,SIGNAL(clicked()),this,SLOT(cancelData()));
}
LogDialog::~LogDialog()
{
}
QSize LogDialog::sizeHint() const
{
return QSize(640,480);
}
int LogDialog::exec(RDLogEvent *log,int *start_line,int *end_line)
{
QItemSelection item_sel;
QItemSelectionModel *sel=NULL;
d_log_model->setLogEvent(log);
d_log_view->resizeColumnsToContents();
sel=d_log_view->selectionModel();
sel->reset();
item_sel.select(d_log_model->index(*start_line,0),
d_log_model->index(*end_line,d_log_model->columnCount()-1));
sel->select(item_sel,QItemSelectionModel::SelectCurrent);
d_log=log;
d_start_line=start_line;
d_end_line=end_line;
return QDialog::exec();
}
void LogDialog::okData()
{
QModelIndexList list=d_log_view->selectionModel()->selectedRows();
*d_start_line=list.first().row();
*d_end_line=list.last().row();
d_log_model->clearLogEvent();
done(true);
}
void LogDialog::cancelData()
{
d_log_model->clearLogEvent();
done(false);
}
void LogDialog::resizeEvent(QResizeEvent *e)
{
int w=size().width();
int h=size().height();
d_log_view->setGeometry(10,2,w-20,h-72);
d_ok_button->setGeometry(w-180,h-60,80,50);
d_cancel_button->setGeometry(w-90,h-60,80,50);
}

61
rdcastmanager/logdialog.h Normal file
View File

@@ -0,0 +1,61 @@
// logdialog.h
//
// Real-only lister dialogs for Rivendell logs
//
// (C) Copyright 2020 Fred Gleason <fredg@paravelsystems.com>
//
// 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 LOGDIALOG_H
#define LOGDIALOG_H
#include <qpushbutton.h>
#include <qtableview.h>
#include <rddialog.h>
#include <rdlog_event.h>
#include "logmodel.h"
class LogDialog : public RDDialog
{
Q_OBJECT
public:
LogDialog(QWidget *parent=0);
~LogDialog();
QSize sizeHint() const;
public slots:
int exec(RDLogEvent *log,int *start_line,int *end_line);
private slots:
void okData();
void cancelData();
protected:
void resizeEvent(QResizeEvent *e);
private:
QTableView *d_log_view;
QPushButton *d_ok_button;
QPushButton *d_cancel_button;
LogModel *d_log_model;
RDLogEvent *d_log;
int *d_start_line;
int *d_end_line;
};
#endif // LIST_CASTS_H

246
rdcastmanager/logmodel.cpp Normal file
View File

@@ -0,0 +1,246 @@
// logmodel.cpp
//
// Read-only data model for Rivendell logs
//
// (C) Copyright 2020 Fred Gleason <fredg@paravelsystems.com>
//
// 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 <stdio.h>
#include <rdescape_string.h>
#include <rdlog_line.h>
#include "logmodel.h"
LogModel::LogModel(QObject *parent)
: QAbstractTableModel(parent)
{
d_log=NULL;
d_fms=NULL;
d_bold_fms=NULL;
d_log_icons=new RDLogIcons();
//
// Column Attributes
//
unsigned left=Qt::AlignLeft|Qt::AlignVCenter;
unsigned center=Qt::AlignCenter;
unsigned right=Qt::AlignRight|Qt::AlignVCenter;
d_headers.push_back(tr("Start Time"));
d_alignments.push_back(right);
d_headers.push_back(tr("Trans"));
d_alignments.push_back(center);
d_headers.push_back(tr("Cart"));
d_alignments.push_back(center);
d_headers.push_back(tr("Group"));
d_alignments.push_back(center);
d_headers.push_back(tr("Length"));
d_alignments.push_back(right);
d_headers.push_back(tr("Title"));
d_alignments.push_back(left);
d_headers.push_back(tr("Artist"));
d_alignments.push_back(left);
d_headers.push_back(tr("Client"));
d_alignments.push_back(left);
d_headers.push_back(tr("Agency"));
d_alignments.push_back(left);
d_headers.push_back(tr("Label"));
d_alignments.push_back(left);
d_headers.push_back(tr("Source"));
d_alignments.push_back(left);
d_headers.push_back(tr("Ext Data"));
d_alignments.push_back(left);
d_headers.push_back(tr("Line ID"));
d_alignments.push_back(right);
d_headers.push_back(tr("Count"));
d_alignments.push_back(right);
}
LogModel::~LogModel()
{
if(d_fms!=NULL) {
delete d_fms;
}
if(d_bold_fms!=NULL) {
delete d_bold_fms;
}
delete d_log_icons;
}
void LogModel::setLogEvent(RDLogEvent *log)
{
if(log->size()>0) {
beginInsertRows(QModelIndex(),0,log->size()-1);
endInsertRows();
}
d_log=log;
}
void LogModel::clearLogEvent()
{
if((d_log!=NULL)&&(d_log->size()>0)) {
beginRemoveRows(QModelIndex(),0,d_log->size()-1);
endRemoveRows();
}
}
void LogModel::setFont(const QFont &font)
{
d_font=font;
if(d_fms!=NULL) {
delete d_fms;
}
d_fms=new QFontMetrics(d_font);
d_bold_font=font;
d_bold_font.setBold(true);
if(d_bold_fms!=NULL) {
delete d_bold_fms;
}
d_bold_fms=new QFontMetrics(d_bold_font);
}
int LogModel::columnCount(const QModelIndex &parent) const
{
return d_headers.size();
}
int LogModel::rowCount(const QModelIndex &parent) const
{
if(d_log==NULL) {
return 0;
}
return d_log->size();
}
QVariant LogModel::headerData(int section,Qt::Orientation orient,int role) const
{
if((orient==Qt::Horizontal)&&(role==Qt::DisplayRole)) {
return d_headers.at(section);
}
return QVariant();
}
QVariant LogModel::data(const QModelIndex &index,int role) const
{
QString str;
RDLogLine *ll=NULL;
int col=index.column();
int row=index.row();
if((ll=d_log->logLine(row))!=NULL) {
switch((Qt::ItemDataRole)role) {
case Qt::DisplayRole:
switch(index.column()) {
case 0: // Start Time
return ll->startTimeText();
case 1: // Transition
return RDLogLine::transText(ll->transType());
case 2: // Cart Number
return ll->cartNumberText();
case 3: // Group
return ll->groupName();
case 4: // Length
return ll->forcedLengthText();
case 5: // Title
return ll->titleText();
case 6: // Artist
return ll->artist();
case 7: // Client
return ll->client();
case 8: // Agency
return ll->agency();
case 9: // Label
return ll->markerLabel();
case 10: // Source
return RDLogLine::sourceText(ll->source());
case 11: // Ext Data
return ll->extData();
case 12: // Line ID
return QString().sprintf("%d",ll->id());
case 13: // Count
return QString().sprintf("%d",row);
}
break;
case Qt::DecorationRole:
if(col==0) {
return d_log_icons->typeIcon(ll->type(),ll->source());
}
break;
case Qt::FontRole:
if(col==3) {
return d_bold_font;
}
return d_font;
case Qt::TextColorRole:
switch(col) {
case 0:
if(ll->timeType()==RDLogLine::Hard) {
return Qt::blue;
}
break;
case 3:
return ll->groupColor();
}
break;
case Qt::TextAlignmentRole:
return d_alignments.at(col);
default:
break;
}
}
return QVariant();
}

59
rdcastmanager/logmodel.h Normal file
View File

@@ -0,0 +1,59 @@
// logmodel.h
//
// Read-only data model for Rivendell logs
//
// (C) Copyright 2020 Fred Gleason <fredg@paravelsystems.com>
//
// 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 LOGMODEL_H
#define LOGMODEL_H
#include <QAbstractTableModel>
#include <qfont.h>
#include <qfontmetrics.h>
#include <qlist.h>
#include <rdlog_event.h>
#include <rdlog_icons.h>
class LogModel : public QAbstractTableModel
{
Q_OBJECT
public:
LogModel(QObject *parent=0);
~LogModel();
void setLogEvent(RDLogEvent *log);
void clearLogEvent();
void setFont(const QFont &font);
int columnCount(const QModelIndex &parent=QModelIndex()) const;
int rowCount(const QModelIndex &parent=QModelIndex()) const;
QVariant headerData(int section,Qt::Orientation orient,
int role=Qt::DisplayRole) const;
QVariant data(const QModelIndex &index,int role=Qt::DisplayRole) const;
private:
RDLogEvent *d_log;
QFont d_font;
QFontMetrics *d_fms;
QFont d_bold_font;
QFontMetrics *d_bold_fms;
QList<QVariant> d_headers;
QList<QVariant> d_alignments;
RDLogIcons *d_log_icons;
};
#endif // LOGMODEL_H

View File

@@ -2,7 +2,7 @@
#
# The rdcastmanager/ QMake project file for Rivendell
#
# (C) Copyright 2003-2018 Fred Gleason <fredg@paravelsystems.com>
# (C) Copyright 2003-2020 Fred Gleason <fredg@paravelsystems.com>
#
# 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
@@ -24,15 +24,21 @@
# purely for the sake of i18n support.
#
SOURCES += rdcastmanager.cpp
SOURCES += edit_cast.cpp
SOURCES += list_casts.cpp
SOURCES += logdialog.cpp
SOURCES += logmodel.cpp
SOURCES += pick_report_dates.cpp
SOURCES += rdcastmanager.cpp
SOURCES += render_dialog.cpp
HEADERS += rdcastmanager.h
HEADERS += edit_cast.h
HEADERS += list_casts.h
HEADERS += logdialog.h
HEADERS += logmodel.h
HEADERS += pick_report_dates.h
HEADERS += rdcastmanager.h
HEADERS += render_dialog.h
TRANSLATIONS += rdcastmanager_cs.ts
TRANSLATIONS += rdcastmanager_de.ts

View File

@@ -323,6 +323,80 @@ Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogDialog</name>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>List Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogModel</name>
<message>
<source>Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Title</source>
<translation type="unfinished">Název</translation>
</message>
<message>
<source>Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Length</source>
<translation type="unfinished">Délka</translation>
</message>
<message>
<source>Client</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Agency</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ext Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Count</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
@@ -400,4 +474,67 @@ Clipboard</source>
<translation type="obsolete">&amp;Vybrat</translation>
</message>
</context>
<context>
<name>RenderDialog</name>
<message>
<source>[now]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>As Specified</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Virtual Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop Rendering</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Treat as PLAY</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>At STOP transition</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Cancel</source>
<translation type="unfinished">Z&amp;rušit</translation>
</message>
<message>
<source>Log Render Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Selected Log Events</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>through</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@@ -308,6 +308,80 @@ Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogDialog</name>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>List Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogModel</name>
<message>
<source>Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Title</source>
<translation type="unfinished">Titel</translation>
</message>
<message>
<source>Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Length</source>
<translation type="unfinished">Länge</translation>
</message>
<message>
<source>Client</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Agency</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ext Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Count</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
@@ -385,4 +459,67 @@ Clipboard</source>
<translation type="obsolete">&amp;Auswählen</translation>
</message>
</context>
<context>
<name>RenderDialog</name>
<message>
<source>[now]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>As Specified</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Virtual Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop Rendering</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Treat as PLAY</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>At STOP transition</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Cancel</source>
<translation type="unfinished">Abbre&amp;chen</translation>
</message>
<message>
<source>Log Render Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Selected Log Events</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>through</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@@ -263,6 +263,80 @@ Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogDialog</name>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>List Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogModel</name>
<message>
<source>Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Title</source>
<translation type="unfinished">Título</translation>
</message>
<message>
<source>Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Length</source>
<translation type="unfinished">Longitud</translation>
</message>
<message>
<source>Client</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Agency</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ext Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Count</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
@@ -361,4 +435,67 @@ Reporte</translation>
<translation type="obsolete">&amp;Cerrar</translation>
</message>
</context>
<context>
<name>RenderDialog</name>
<message>
<source>[now]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>As Specified</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Virtual Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop Rendering</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Treat as PLAY</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>At STOP transition</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Cancel</source>
<translation type="unfinished">&amp;Cancelar</translation>
</message>
<message>
<source>Log Render Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Selected Log Events</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>through</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@@ -220,6 +220,80 @@ Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogDialog</name>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>List Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogModel</name>
<message>
<source>Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Length</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Client</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Agency</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ext Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Count</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
@@ -277,4 +351,67 @@ Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RenderDialog</name>
<message>
<source>[now]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>As Specified</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Virtual Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop Rendering</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Treat as PLAY</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>At STOP transition</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Log Render Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Selected Log Events</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>through</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@@ -303,6 +303,80 @@ Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogDialog</name>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>List Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogModel</name>
<message>
<source>Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Title</source>
<translation type="unfinished">Tittel</translation>
</message>
<message>
<source>Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Length</source>
<translation type="unfinished">Lengd</translation>
</message>
<message>
<source>Client</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Agency</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ext Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Count</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
@@ -380,4 +454,67 @@ Clipboard</source>
<translation type="obsolete">&amp;Vel</translation>
</message>
</context>
<context>
<name>RenderDialog</name>
<message>
<source>[now]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>As Specified</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Virtual Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop Rendering</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Treat as PLAY</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>At STOP transition</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Cancel</source>
<translation type="unfinished">&amp;Avbryt</translation>
</message>
<message>
<source>Log Render Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Selected Log Events</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>through</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@@ -303,6 +303,80 @@ Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogDialog</name>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>List Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogModel</name>
<message>
<source>Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Title</source>
<translation type="unfinished">Tittel</translation>
</message>
<message>
<source>Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Length</source>
<translation type="unfinished">Lengd</translation>
</message>
<message>
<source>Client</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Agency</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ext Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Count</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
@@ -380,4 +454,67 @@ Clipboard</source>
<translation type="obsolete">&amp;Vel</translation>
</message>
</context>
<context>
<name>RenderDialog</name>
<message>
<source>[now]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>As Specified</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Virtual Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop Rendering</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Treat as PLAY</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>At STOP transition</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Cancel</source>
<translation type="unfinished">&amp;Avbryt</translation>
</message>
<message>
<source>Log Render Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Selected Log Events</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>through</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@@ -273,6 +273,80 @@ Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogDialog</name>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>List Log</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogModel</name>
<message>
<source>Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Title</source>
<translation type="unfinished">Título</translation>
</message>
<message>
<source>Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Length</source>
<translation type="unfinished">Duração</translation>
</message>
<message>
<source>Client</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Agency</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ext Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Count</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
@@ -350,4 +424,67 @@ Clipboard</source>
<translation type="obsolete">&amp;Selecionar</translation>
</message>
</context>
<context>
<name>RenderDialog</name>
<message>
<source>[now]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>As Specified</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Virtual Start Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop Rendering</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Treat as PLAY</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>At STOP transition</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Cancel</source>
<translation type="unfinished">&amp;Cancelar</translation>
</message>
<message>
<source>Log Render Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Selected Log Events</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>through</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All lines</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Line</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,223 @@
// render_dialog.cpp
//
// Render Log Dialog for Rivendell.
//
// (C) Copyright 2020 Fred Gleason <fredg@paravelsystems.com>
//
// 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 <qfiledialog.h>
#include <qlineedit.h>
#include <qmessagebox.h>
#include <qpushbutton.h>
#include <rdconf.h>
#include "render_dialog.h"
RenderDialog::RenderDialog(QWidget *parent)
: RDDialog(parent)
{
d_start_line=NULL;
d_end_line=NULL;
setWindowTitle("RDCastManager - "+tr("Log Render Options"));
//
// Fix the Window Size
//
setMinimumSize(sizeHint());
setMaximumSize(sizeHint());
//
// Dialogs
//
d_log_dialog=new LogDialog(this);
//
// Start Time
//
d_start_time_box=new QComboBox(this);
connect(d_start_time_box,SIGNAL(activated(int)),
this,SLOT(startTimeActivatedData(int)));
d_start_time_box->insertItem(tr("[now]"));
d_start_time_box->insertItem(tr("As Specified"));
d_start_time_label=new QLabel(tr("Virtual Start Time")+":",this);
d_start_time_label->setFont(labelFont());
d_start_time_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
d_start_time_edit=new QTimeEdit(this);
d_start_time_edit->setDisplayFormat("hh:mm:ss");
d_start_time_edit->setDisabled(true);
//
// Ignore STOP
//
d_ignorestop_box=new QComboBox(this);
d_ignorestop_box->insertItem(0,tr("Stop Rendering"));
d_ignorestop_box->insertItem(1,tr("Treat as PLAY"));
d_ignorestop_label=new QLabel(tr("At STOP transition")+":",this);
d_ignorestop_label->setFont(labelFont());
d_ignorestop_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Select Log Events
//
d_select_label_label=new QLabel(tr("Selected Log Events"),this);
d_select_label_label->setFont(labelFont());
d_select_label_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
d_select_label=new QLabel(this);
d_select_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
d_select_label->setFrameStyle(QFrame::Plain);
d_select_label->setFrameShape(QFrame::Box);
d_select_label->setLineWidth(1);
d_select_label->setMidLineWidth(1);
d_select_button=new QPushButton(tr("Select"),this);
d_select_button->setFont(subButtonFont());
connect(d_select_button,SIGNAL(clicked()),this,SLOT(selectData()));
//
// OK Button
//
d_ok_button=new QPushButton(tr("OK"),this);
d_ok_button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50);
d_ok_button->setFont(buttonFont());
d_ok_button->setDefault(true);
connect(d_ok_button,SIGNAL(clicked()),this,SLOT(okData()));
//
// Cancel Button
//
d_cancel_button=new QPushButton(tr("&Cancel"),this);
d_cancel_button->
setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50);
d_cancel_button->setFont(buttonFont());
connect(d_cancel_button,SIGNAL(clicked()),this,SLOT(cancelData()));
}
RenderDialog::~RenderDialog()
{
delete d_log_dialog;
}
QSize RenderDialog::sizeHint() const
{
return QSize(500,145);
}
int RenderDialog::exec(RDLogEvent *log,QTime *start_time,
bool *ignore_stops,int *start_line,int *end_line)
{
d_log=log;
d_start_time=start_time;
d_start_time_edit->setDisabled(start_time->isNull());
d_ignore_stops=ignore_stops;
if(*ignore_stops) {
d_ignorestop_box->setCurrentIndex(1);
}
else {
d_ignorestop_box->setCurrentIndex(0);
}
d_start_line=start_line;
d_modified_start_line=*start_line;
d_modified_end_line=*end_line;
d_end_line=end_line;
UpdateLogEventsSelection();
return QDialog::exec();
}
void RenderDialog::startTimeActivatedData(int n)
{
d_start_time_edit->setEnabled(n==1);
}
void RenderDialog::selectData()
{
if(d_log_dialog->exec(d_log,&d_modified_start_line,&d_modified_end_line)) {
UpdateLogEventsSelection();
}
}
void RenderDialog::okData()
{
if(d_start_time_box->currentIndex()==0) {
*d_start_time=QTime();
}
else {
*d_start_time=d_start_time_edit->time();
}
*d_ignore_stops=d_ignorestop_box->currentIndex();
*d_start_line=d_modified_start_line;
*d_end_line=d_modified_end_line;
done(true);
}
void RenderDialog::cancelData()
{
done(false);
}
void RenderDialog::closeEvent(QCloseEvent *e)
{
cancelData();
}
void RenderDialog::resizeEvent(QResizeEvent *e)
{
d_start_time_label->setGeometry(10,2,135,20);
d_start_time_box->setGeometry(150,2,160,20);
d_start_time_edit->setGeometry(315,2,80,20);
d_ignorestop_label->setGeometry(10,24,135,20);
d_ignorestop_box->setGeometry(150,24,160,20);
d_select_label_label->setGeometry(10,46,135,20);
d_select_label->setGeometry(150,46,160,20);
d_select_button->setGeometry(315,43,70,24);
d_ok_button->setGeometry(size().width()-180,size().height()-60,80,50);
d_cancel_button->setGeometry(size().width()-90,size().height()-60,80,50);
}
void RenderDialog::UpdateLogEventsSelection()
{
if((d_modified_start_line==0)&&(d_modified_end_line==(d_log->size()-1))) {
d_select_label->setText(tr("All lines"));
}
else {
if(d_modified_start_line==d_modified_end_line) {
d_select_label->setText(tr("Line")+
QString().sprintf(" %d",d_modified_start_line));
}
else {
d_select_label->setText(tr("Lines")+
QString().sprintf(" %d ",d_modified_start_line)+
tr("through")+
QString().sprintf(" %d",d_modified_end_line));
}
}
}

View File

@@ -0,0 +1,87 @@
// render_dialog.h
//
// Log Rendering Dialog for rdcastmanager(1)
//
// (C) Copyright 2020 Fred Gleason <fredg@paravelsystems.com>
//
// 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 RENDER_DIALOG_H
#define RENDER_DIALOG_H
#include <qdatetimeedit.h>
#include <qprogressdialog.h>
#include <rdcut_dialog.h>
#include <rddialog.h>
#include <rdlog_event.h>
#include "logdialog.h"
//
// Widget Settings
//
#define IMPORT_BAR_INTERVAL 500
#define IMPORT_TEMP_BASENAME "rdlib"
class RenderDialog : public RDDialog
{
Q_OBJECT
public:
RenderDialog(QWidget *parent=0);
~RenderDialog();
QSize sizeHint() const;
public slots:
int exec(RDLogEvent *log,QTime *start_time,bool *ignore_stops,
int *start_line,int *end_line);
private slots:
void startTimeActivatedData(int n);
void selectData();
void okData();
void cancelData();
protected:
void closeEvent(QCloseEvent *e);
void resizeEvent(QResizeEvent *e);
private:
void UpdateLogEventsSelection();
QLabel *d_start_time_label;
QComboBox *d_start_time_box;
QTimeEdit *d_start_time_edit;
QLabel *d_ignorestop_label;
QComboBox *d_ignorestop_box;
QLabel *d_select_label_label;
QLabel *d_select_label;
QPushButton *d_select_button;
QPushButton *d_ok_button;
QPushButton *d_cancel_button;
LogDialog *d_log_dialog;
int d_modified_start_line;
int d_modified_end_line;
QTime *d_start_time;
bool *d_ignore_stops;
int *d_start_line;
int *d_end_line;
RDLogEvent *d_log;
};
#endif // RDRENDER_DIALOG_H