2018-04-14 Fred Gleason <fredg@paravelsystems.com>

* Moved the 'LogPlay' class in rdairplay(1) to 'RDLogPlay' in
	the core library.
	* Moved the 'RLMHost' class in rdairplay(1) to 'RDRLMHost' in
	the core library.
This commit is contained in:
Fred Gleason 2018-04-14 20:51:03 -04:00
parent b4fdca6f3e
commit c4fcd6486e
23 changed files with 440 additions and 510 deletions

View File

@ -16778,3 +16778,8 @@
on adapters lacking DMA bus-mastering support.
2018-04-14 Fred Gleason <fredg@paravelsystems.com>
* Cleaned up spurious HPI error messages being sent to the syslog.
2018-04-14 Fred Gleason <fredg@paravelsystems.com>
* Moved the 'LogPlay' class in rdairplay(1) to 'RDLogPlay' in
the core library.
* Moved the 'RLMHost' class in rdairplay(1) to 'RDRLMHost' in
the core library.

View File

@ -172,6 +172,7 @@ dist_librd_la_SOURCES = dbversion.h\
rdlogedit_conf.cpp rdlogedit_conf.h\
rdlogfilter.cpp rdlogfilter.h\
rdloglock.cpp rdloglock.h\
rdlogplay.cpp rdlogplay.h\
rdmacro.cpp rdmacro.h\
rdmacro_event.cpp rdmacro_event.h\
rdmarker_bar.cpp rdmarker_bar.h\
@ -205,6 +206,7 @@ dist_librd_la_SOURCES = dbversion.h\
rdreport.cpp rdreport.h\
rdringbuffer.cpp rdringbuffer.h\
rdripc.cpp rdripc.h\
rdrlmhost.cpp rdrlmhost.h\
rdschedcode.cpp rdschedcode.h\
rdschedcodes_dialog.cpp rdschedcodes_dialog.h\
rdsegmeter.cpp rdsegmeter.h\
@ -308,6 +310,7 @@ nodist_librd_la_SOURCES = moc_rdadd_cart.cpp\
moc_rdlivewire.cpp\
moc_rdlogfilter.cpp\
moc_rdloglock.cpp\
moc_rdlogplay.cpp\
moc_rdmacro_event.cpp\
moc_rdmarker_bar.cpp\
moc_rdmarker_edit.cpp\
@ -319,7 +322,8 @@ nodist_librd_la_SOURCES = moc_rdadd_cart.cpp\
moc_rdplaymeter.cpp\
moc_rdpushbutton.cpp\
moc_rdripc.cpp\
moc_rdschedcodes_dialog.cpp\
moc_rdrlmhost.cpp\
moc_rdschedcodes_dialog.cpp\
moc_rdsegmeter.cpp\
moc_rdsimpleplayer.cpp\
moc_rdrehash.cpp\

View File

@ -159,6 +159,7 @@ x11 {
SOURCES += rdimport_audio.cpp
SOURCES += rdkernelgpio.cpp
SOURCES += rdlist_groups.cpp
SOURCES += rdlogplay.cpp
SOURCES += rdmarker_button.cpp
SOURCES += rdmarker_edit.cpp
SOURCES += rdmatrix.cpp
@ -169,6 +170,7 @@ x11 {
SOURCES += rdrecording.cpp
SOURCES += rdrehash.cpp
SOURCES += rdrenderer.cpp
SOURCES += rdrlmhost.cpp
SOURCES += rdsimpleplayer.cpp
SOURCES += rdsound_panel.cpp
SOURCES += rdstatus.cpp
@ -301,6 +303,7 @@ x11 {
HEADERS += rdimport_audio.h
HEADERS += rdkernelgpio.h
HEADERS += rdlist_groups.h
HEADERS += rdlogplay.h
HEADERS += rdmarker_button.h
HEADERS += rdmarker_edit.h
HEADERS += rdmatrix.h
@ -312,6 +315,7 @@ x11 {
HEADERS += rdrecording.h
HEADERS += rdrehash.h
HEADERS += rdrenderer.h
HEADERS += rdrlmhost.h
HEADERS += rdsimpleplayer.h
HEADERS += rdsound_panel.h
HEADERS += rdstatus.h

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
// log_play.h
// rdlogplay.h
//
// Rivendell Log Playout Machine
//
@ -18,8 +18,8 @@
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#ifndef LOG_PLAY_H
#define LOG_PLAY_H
#ifndef RDLOGPLAY_H
#define RDLOGPLAY_H
#include <vector>
@ -37,10 +37,9 @@
#include <rdlog_event.h>
#include <rdmacro_event.h>
#include <rdplay_deck.h>
#include <rdrlmhost.h>
#include <rdsimpleplayer.h>
#include <rlmhost.h>
//
// Widget Settings
//
@ -56,12 +55,12 @@
//#define SHOW_SLOTS
//#define SHOW_METER_SLOTS
class LogPlay : public QObject,public RDLogEvent
class RDLogPlay : public QObject,public RDLogEvent
{
Q_OBJECT
public:
LogPlay(int id,QSocketDevice *nn_sock,QString logname,
std::vector<RLMHost *> *rlm_hosts,QObject *parent=0);
RDLogPlay(int id,RDEventPlayer *player,QSocketDevice *nn_sock,QString logname,
std::vector<RDRLMHost *> *rlm_hosts,QObject *parent=0);
QString serviceName() const;
void setServiceName(const QString &svcname);
QString defaultServiceName() const;
@ -194,6 +193,9 @@ class LogPlay : public QObject,public RDLogEvent
RDLogLine::TransType GetTransType(const QString &logname,int line);
bool ClearBlock(int start_line);
void SendNowNext();
void LogTraffic(const QString &svcname,const QString &logname,
RDLogLine *logline,RDLogLine::PlaySource src,
RDAirPlayConf::TrafficAction action,bool onair_flag) const;
RDCae *play_cae;
RDAirPlayConf::OpMode play_op_mode;
int play_slot_id[LOGPLAY_MAX_PLAYS];
@ -240,7 +242,7 @@ class LogPlay : public QObject,public RDLogEvent
bool play_onair_flag;
int play_duck_volume_port1;
int play_duck_volume_port2;
std::vector<RLMHost *> *play_rlm_hosts;
std::vector<RDRLMHost *> *play_rlm_hosts;
unsigned play_now_cartnum;
unsigned play_next_cartnum;
unsigned play_prevnow_cartnum;
@ -249,7 +251,8 @@ class LogPlay : public QObject,public RDLogEvent
int play_audition_line;
bool play_audition_head_played;
int play_audition_preroll;
RDEventPlayer *play_event_player;
};
#endif
#endif // RDLOGPLAY_H

View File

@ -1,4 +1,4 @@
// rlmhost.cpp
// rdrlmhost.cpp
//
// A container class for a Rivendell Loadable Module host.
//
@ -21,18 +21,20 @@
#include <dlfcn.h>
#include <iostream>
#include <rdapplication.h>
#include <rdconf.h>
#include <rddatedecode.h>
#include <rdnownext.h>
#include <rdprofile.h>
#include <rdsvc.h>
#include <qsignalmapper.h>
#include "globals.h"
#include "rlmhost.h"
#include "rdapplication.h"
#include "rdconf.h"
#include "rddatedecode.h"
#include "rdnownext.h"
#include "rdprofile.h"
#include "rdrlmhost.h"
#include "rdsvc.h"
//#include "globals.h"
RLMHost::RLMHost(const QString &path,const QString &arg,
RDRLMHost::RDRLMHost(const QString &path,const QString &arg,
QSocketDevice *udp_socket,QObject *parent)
: QObject(parent)
{
@ -59,24 +61,24 @@ RLMHost::RLMHost(const QString &path,const QString &arg,
}
RLMHost::~RLMHost()
RDRLMHost::~RDRLMHost()
{
}
QString RLMHost::pluginPath() const
QString RDRLMHost::pluginPath() const
{
return plugin_path;
}
QString RLMHost::pluginArg() const
QString RDRLMHost::pluginArg() const
{
return plugin_arg;
}
void RLMHost::sendEvent(const QString &svcname,const QString &logname,
void RDRLMHost::sendEvent(const QString &svcname,const QString &logname,
int lognum,RDLogLine **loglines,bool onair,
RDAirPlayConf::OpMode mode)
{
@ -112,8 +114,8 @@ void RLMHost::sendEvent(const QString &svcname,const QString &logname,
log->log_mach=lognum;
log->log_onair=onair;
log->log_mode=mode;
RLMHost::loadMetadata(loglines[0],now,now_dt);
RLMHost::loadMetadata(loglines[1],next);
RDRLMHost::loadMetadata(loglines[0],now,now_dt);
RDRLMHost::loadMetadata(loglines[1],next);
plugin_pad_data_sent_sym(this,svc,log,now,next);
delete next;
delete now;
@ -123,7 +125,7 @@ void RLMHost::sendEvent(const QString &svcname,const QString &logname,
}
bool RLMHost::load()
bool RDRLMHost::load()
{
QString basename=RDGetBasePart(plugin_path);
basename=basename.left(basename.findRev("."));
@ -146,7 +148,7 @@ bool RLMHost::load()
}
void RLMHost::unload()
void RDRLMHost::unload()
{
if(plugin_free_sym!=NULL) {
plugin_free_sym(this);
@ -154,7 +156,7 @@ void RLMHost::unload()
}
void RLMHost::loadMetadata(const RDLogLine *logline,struct rlm_pad *pad,
void RDRLMHost::loadMetadata(const RDLogLine *logline,struct rlm_pad *pad,
const QDateTime &start_datetime)
{
QDateTime now(QDate::currentDate(),QTime::currentTime());
@ -284,7 +286,7 @@ void RLMHost::loadMetadata(const RDLogLine *logline,struct rlm_pad *pad,
}
void RLMHost::saveMetadata(const struct rlm_pad *pad,RDLogLine *logline)
void RDRLMHost::saveMetadata(const struct rlm_pad *pad,RDLogLine *logline)
{
if(logline==NULL) {
return;
@ -325,7 +327,7 @@ void RLMHost::saveMetadata(const struct rlm_pad *pad,RDLogLine *logline)
}
void RLMHost::timerData(int timernum)
void RDRLMHost::timerData(int timernum)
{
if(plugin_timer_expired_sym!=NULL) {
plugin_timer_expired_sym(this,timernum);
@ -333,7 +335,7 @@ void RLMHost::timerData(int timernum)
}
void RLMHost::ttyReceiveReadyData(int fd)
void RDRLMHost::ttyReceiveReadyData(int fd)
{
char data[1024];
int n;
@ -358,7 +360,7 @@ void RLMHost::ttyReceiveReadyData(int fd)
void RLMSendUdp(void *ptr,const char *ipaddr,uint16_t port,
const char *data,int len)
{
RLMHost *host=(RLMHost *)ptr;
RDRLMHost *host=(RDRLMHost *)ptr;
QHostAddress addr;
addr.setAddress(ipaddr);
if(!addr.isNull()) {
@ -370,7 +372,7 @@ void RLMSendUdp(void *ptr,const char *ipaddr,uint16_t port,
int RLMOpenSerial(void *ptr,const char *port,int speed,int parity,
int word_length)
{
RLMHost *host=(RLMHost *)ptr;
RDRLMHost *host=(RDRLMHost *)ptr;
host->plugin_tty_devices.push_back(new RDTTYDevice);
host->plugin_tty_devices.back()->setName(port);
host->plugin_tty_devices.back()->setSpeed(speed);
@ -391,7 +393,7 @@ int RLMOpenSerial(void *ptr,const char *port,int speed,int parity,
void RLMSendSerial(void *ptr,int handle,const char *data,int len)
{
RLMHost *host=(RLMHost *)ptr;
RDRLMHost *host=(RDRLMHost *)ptr;
if((handle<0)||(handle>=(int)host->plugin_tty_devices.size())) {
return;
}
@ -401,7 +403,7 @@ void RLMSendSerial(void *ptr,int handle,const char *data,int len)
void RLMCloseSerial(void *ptr,int handle)
{
RLMHost *host=(RLMHost *)ptr;
RDRLMHost *host=(RDRLMHost *)ptr;
//
// FIXME: We really ought to take out the trash here!
@ -414,7 +416,7 @@ void RLMCloseSerial(void *ptr,int handle)
const char *RLMDateTime(void *ptr,int offset_msecs,const char *format)
{
RLMHost *host=(RLMHost *)ptr;
RDRLMHost *host=(RDRLMHost *)ptr;
QDateTime datetime=QDateTime(QDate::currentDate(),QTime::currentTime().
addMSecs(offset_msecs));
strncpy(host->plugin_value_string,datetime.toString(format),1024);
@ -426,14 +428,14 @@ const char *RLMResolveNowNextEncoded(void *ptr,const struct rlm_pad *now,
const struct rlm_pad *next,
const char *format,int encoding)
{
RLMHost *host=(RLMHost *)ptr;
RDRLMHost *host=(RDRLMHost *)ptr;
RDLogLine *loglines[2];
QString str=format;
loglines[0]=new RDLogLine();
loglines[1]=new RDLogLine();
RLMHost::saveMetadata(now,loglines[0]);
RLMHost::saveMetadata(next,loglines[1]);
RDRLMHost::saveMetadata(now,loglines[0]);
RDRLMHost::saveMetadata(next,loglines[1]);
RDResolveNowNext(&str,loglines,encoding);
strncpy(host->plugin_value_string,str,1024);
delete loglines[1];
@ -452,13 +454,13 @@ const char *RLMResolveNowNext(void *ptr,const struct rlm_pad *now,
void RLMLog(void *ptr,int prio,const char *msg)
{
LogLine((RDConfig::LogPriority)prio,msg);
rda->config()->log("log machine",(RDConfig::LogPriority)prio,msg);
}
void RLMStartTimer(void *ptr,int timernum,int msecs,int mode)
{
RLMHost *host=(RLMHost *)ptr;
RDRLMHost *host=(RDRLMHost *)ptr;
if((timernum<0)||(timernum>=RLM_MAX_TIMERS)) {
return;
}
@ -471,7 +473,7 @@ void RLMStartTimer(void *ptr,int timernum,int msecs,int mode)
void RLMStopTimer(void *ptr,int timernum)
{
RLMHost *host=(RLMHost *)ptr;
RDRLMHost *host=(RDRLMHost *)ptr;
if((timernum<0)||(timernum>=RLM_MAX_TIMERS)) {
return;
}
@ -518,7 +520,7 @@ const char *RLMGetStringValue(void *ptr,const char *filename,
const char *section,const char *label,
const char *default_value)
{
RLMHost *host=(RLMHost *)ptr;
RDRLMHost *host=(RDRLMHost *)ptr;
RDProfile *p=new RDProfile();
p->setSource(filename);
strncpy(host->plugin_value_string,

View File

@ -1,8 +1,8 @@
// rlmhost.h
// rdrlmhost.h
//
// A container class for a Rivendell Loadable Module host.
//
// (C) Copyright 2008,2016-2017 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2008,2016-2018 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
@ -18,8 +18,8 @@
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#ifndef RLMHOST_H
#define RLMHOST_H
#ifndef RDRLMHOST_H
#define RDRLMHOST_H
#include <vector>
@ -35,13 +35,13 @@
#include "../rlm/rlm.h"
class RLMHost : public QObject
class RDRLMHost : public QObject
{
Q_OBJECT
public:
RLMHost(const QString &path,const QString &arg,QSocketDevice *udp_socket,
RDRLMHost(const QString &path,const QString &arg,QSocketDevice *udp_socket,
QObject *parent=0);
~RLMHost();
~RDRLMHost();
QString pluginPath() const;
QString pluginArg() const;
void sendEvent(const QString &svcname,const QString &logname,
@ -102,4 +102,4 @@ class RLMHost : public QObject
};
#endif // RLMHOST_H
#endif // RDRLMHOST_H

View File

@ -50,15 +50,11 @@ dist_rdairplay_SOURCES = button_log.cpp button_log.h\
list_log.cpp list_log.h\
list_logs.cpp list_logs.h\
local_macros.cpp colors.h\
log_play.cpp log_play.h\
log_traffic.cpp log_traffic.h\
loglinebox.cpp loglinebox.h\
mode_display.cpp mode_display.h\
nownext.cpp\
pie_counter.cpp pie_counter.h\
post_counter.cpp post_counter.h\
rdairplay.cpp rdairplay.h\
rlmhost.cpp rlmhost.h\
start_button.cpp start_button.h\
stop_counter.cpp stop_counter.h\
wall_clock.cpp wall_clock.h
@ -70,13 +66,11 @@ nodist_rdairplay_SOURCES = moc_button_log.cpp\
moc_lib_listview.cpp\
moc_list_log.cpp\
moc_list_logs.cpp\
moc_log_play.cpp\
moc_loglinebox.cpp\
moc_mode_display.cpp\
moc_pie_counter.cpp\
moc_post_counter.cpp\
moc_rdairplay.cpp\
moc_rlmhost.cpp\
moc_start_button.cpp\
moc_stop_counter.cpp\
moc_wall_clock.cpp

View File

@ -29,7 +29,7 @@
#include "colors.h"
#include "globals.h"
ButtonLog::ButtonLog(LogPlay *log,RDCae *cae,int id,RDAirPlayConf *conf,
ButtonLog::ButtonLog(RDLogPlay *log,RDCae *cae,int id,RDAirPlayConf *conf,
bool allow_pause,QWidget *parent)
: QWidget(parent)
{

View File

@ -3,7 +3,7 @@
//
// The button play widget for RDAirPlay.
//
// (C) Copyright 2002-2004,2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2004,2016-2018 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
@ -32,12 +32,12 @@
#include <rdairplay_conf.h>
#include <rdairplay_conf.h>
#include <log_play.h>
#include <list_log.h>
#include <edit_event.h>
#include <start_button.h>
#include <loglinebox.h>
#include <edit_event.h>
#include <rdlogplay.h>
#include "edit_event.h"
#include "list_log.h"
#include "loglinebox.h"
#include "start_button.h"
//
// Widget Settings
@ -50,7 +50,7 @@ class ButtonLog : public QWidget
{
Q_OBJECT
public:
ButtonLog(LogPlay *log,RDCae *cae,int id,RDAirPlayConf *conf,
ButtonLog(RDLogPlay *log,RDCae *cae,int id,RDAirPlayConf *conf,
bool allow_pause=false,QWidget *parent=0);
QSize sizeHint() const;
QSizePolicy sizePolicy() const;
@ -82,7 +82,7 @@ class ButtonLog : public QWidget
private:
void UpdateEvents();
void UpdateButtons();
LogPlay *log_log;
RDLogPlay *log_log;
int log_id;
int *log_cart;
RDAirPlayConf::OpMode log_op_mode;

View File

@ -29,7 +29,7 @@
#include "edit_event.h"
#include "globals.h"
EditEvent::EditEvent(LogPlay *log,RDCae *cae,QWidget *parent)
EditEvent::EditEvent(RDLogPlay *log,RDCae *cae,QWidget *parent)
: QDialog(parent,"",true)
{
edit_log=log;

View File

@ -2,7 +2,7 @@
//
// Event Editor for RDAirPlay
//
// (C) Copyright 2002-2004,2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2004,2016-2018 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
@ -32,22 +32,21 @@
#include <qtextedit.h>
#include <qtimer.h>
#include <rdtransportbutton.h>
#include <rdslider.h>
#include <rdcae.h>
#include <rdplay_deck.h>
#include <rdmarker_edit.h>
#include <rdpushbutton.h>
#include <rdtimeedit.h>
#include <rdcueedit.h>
#include <log_play.h>
#include <rdlogplay.h>
#include <rdmarker_edit.h>
#include <rdplay_deck.h>
#include <rdpushbutton.h>
#include <rdslider.h>
#include <rdtimeedit.h>
#include <rdtransportbutton.h>
class EditEvent : public QDialog
{
Q_OBJECT
public:
EditEvent(LogPlay *log,RDCae *cae,QWidget *parent=0);
EditEvent(RDLogPlay *log,RDCae *cae,QWidget *parent=0);
~EditEvent();
QSize sizeHint() const;
QSizePolicy sizePolicy() const;
@ -67,7 +66,7 @@ class EditEvent : public QDialog
void closeEvent(QCloseEvent *e);
private:
LogPlay *edit_log;
RDLogPlay *edit_log;
RDLogLine *edit_logline;
int edit_line;
RDTimeEdit *edit_time_edit;

View File

@ -2,7 +2,7 @@
//
// Hour Selector widget for RDAirPlay
//
// (C) Copyright 2012,2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2012,2016-2018 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

View File

@ -2,7 +2,7 @@
//
// Hour Selector widget for RDAirPlay
//
// (C) Copyright 2012,2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2012,2016-2018 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
@ -28,8 +28,7 @@
#include <rdairplay_conf.h>
#include <rdlistview.h>
#include <rdlistviewitem.h>
#include <log_play.h>
#include <rdlogplay.h>
class HourSelector : public QWidget
{

View File

@ -46,7 +46,7 @@
#include "../icons/music.xpm"
ListLog::ListLog(LogPlay *log,RDCae *cae,int id,bool allow_pause,
ListLog::ListLog(RDLogPlay *log,RDCae *cae,int id,bool allow_pause,
QWidget *parent)
: QWidget(parent)
{

View File

@ -2,7 +2,7 @@
//
// The full log list widget for RDAirPlay.
//
// (C) Copyright 2002-2003,2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2003,2016-2018 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
@ -27,15 +27,15 @@
#include <qpixmap.h>
#include <qpushbutton.h>
#include <rdairplay_conf.h>
#include <rdlistview.h>
#include <rdlistviewitem.h>
#include <rdairplay_conf.h>
#include <rdlogplay.h>
#include <lib_listview.h>
#include <list_logs.h>
#include <log_play.h>
#include <edit_event.h>
#include <hourselector.h>
#include "edit_event.h"
#include "hourselector.h"
#include "lib_listview.h"
#include "list_logs.h"
#define END_MARKER_ID -2
@ -43,7 +43,7 @@ class ListLog : public QWidget
{
Q_OBJECT
public:
ListLog(LogPlay *log,RDCae *cae,int id,bool allow_pause=false,
ListLog(RDLogPlay *log,RDCae *cae,int id,bool allow_pause=false,
QWidget *parent=0);
QSize sizeHint() const;
QSizePolicy sizePolicy() const;
@ -111,7 +111,7 @@ class ListLog : public QWidget
int PredictedStartHour(RDListViewItem *item);
HourSelector *list_hour_selector;
LibListView *list_log_list;
LogPlay *list_log;
RDLogPlay *list_log;
ListLogs *list_logs_dialog;
RDAirPlayConf::ActionMode list_action_mode;
ListLog::PlayButtonMode list_playbutton_mode;

View File

@ -29,7 +29,7 @@
#include "globals.h"
#include "list_logs.h"
ListLogs::ListLogs(LogPlay *log,QWidget *parent)
ListLogs::ListLogs(RDLogPlay *log,QWidget *parent)
: QDialog(parent,"",true)
{
//

View File

@ -2,7 +2,7 @@
//
// Select a Rivendell Log
//
// (C) Copyright 2002-2004,2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2004,2016-2018 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
@ -28,8 +28,7 @@
#include <rdlogfilter.h>
#include <rdloglock.h>
#include <log_play.h>
#include <rdlogplay.h>
class ListLogs : public QDialog
{
@ -37,7 +36,7 @@ class ListLogs : public QDialog
public:
enum Operation {Load=0,Cancel=1,Save=2,SaveAs=3,Unload=4};
ListLogs(LogPlay *log,QWidget *parent=0);
ListLogs(RDLogPlay *log,QWidget *parent=0);
QSize sizeHint() const;
QSizePolicy sizePolicy() const;
@ -69,9 +68,9 @@ class ListLogs : public QDialog
QPushButton *list_save_button;
QPushButton *list_saveas_button;
QPushButton *list_cancel_button;
LogPlay *list_log;
RDLogPlay *list_log;
RDLogLock **list_log_lock;
};
#endif
#endif // LIST_LOGS_H

View File

@ -1,91 +0,0 @@
// log_traffic.cpp
//
// Add an entry to the reconciliation table.
//
// (C) Copyright 2002-2016-2018 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 <rdapplication.h>
#include <rdconf.h>
#include <rddb.h>
#include <rdescape_string.h>
#include <rdsvc.h>
#include "globals.h"
#include "log_traffic.h"
void LogTraffic(const QString &svcname,const QString &logname,
RDLogLine *logline,RDLogLine::PlaySource src,
RDAirPlayConf::TrafficAction action,bool onair_flag)
{
QString sql;
RDSqlQuery *q;
QDateTime datetime=QDateTime(QDate::currentDate(),QTime::currentTime());
int length=logline->startTime(RDLogLine::Actual).msecsTo(datetime.time());
if(length<0) { // Event crossed midnight!
length+=86400000;
datetime.setDate(datetime.date().addDays(-1));
}
if((logline==NULL)||(svcname.isEmpty())) {
return;
}
QString eventDateTimeSQL = "NULL";
if(datetime.isValid() && logline->startTime(RDLogLine::Actual).isValid())
eventDateTimeSQL = RDCheckDateTime(QDateTime(datetime.date(),
logline->startTime(RDLogLine::Actual)), "yyyy-MM-dd hh:mm:ss");
sql=QString("insert into `")+RDSvc::svcTableName(svcname)+"` set "+
QString().sprintf("LENGTH=%d,",length)+
"LOG_NAME=\""+RDEscapeString(logname.utf8())+"\","+
QString().sprintf("LOG_ID=%d,",logline->id())+
QString().sprintf("CART_NUMBER=%u,",logline->cartNumber())+
"STATION_NAME=\""+RDEscapeString(rda->station()->name().utf8())+"\","+
"EVENT_DATETIME="+eventDateTimeSQL+","+
QString().sprintf("EVENT_TYPE=%d,",action)+
QString().sprintf("EVENT_SOURCE=%d,",logline->source())+
"EXT_START_TIME="+RDCheckDateTime(logline->extStartTime(),"hh:mm:ss")+","+
QString().sprintf("EXT_LENGTH=%d,",logline->extLength())+
"EXT_DATA=\""+RDEscapeString(logline->extData())+"\","+
"EXT_EVENT_ID=\""+RDEscapeString(logline->extEventId())+"\","+
"EXT_ANNC_TYPE=\""+RDEscapeString(logline->extAnncType())+"\","+
QString().sprintf("PLAY_SOURCE=%d,",src)+
QString().sprintf("CUT_NUMBER=%d,",logline->cutNumber())+
"EXT_CART_NAME=\""+RDEscapeString(logline->extCartName().utf8())+"\","+
"TITLE=\""+RDEscapeString(logline->title().utf8())+"\","+
"ARTIST=\""+RDEscapeString(logline->artist().utf8())+"\","+
"SCHEDULED_TIME="+RDCheckDateTime(logline->startTime(RDLogLine::Logged),
"hh:mm:ss")+","+
"ISRC=\""+RDEscapeString(logline->isrc().utf8())+"\","+
"PUBLISHER=\""+RDEscapeString(logline->publisher().utf8())+"\","+
"COMPOSER=\""+RDEscapeString(logline->composer().utf8())+"\","+
QString().sprintf("USAGE_CODE=%d,",logline->usageCode())+
QString().sprintf("START_SOURCE=%d,",logline->startSource())+
"ONAIR_FLAG=\""+RDYesNo(onair_flag)+"\","+
"ALBUM=\""+RDEscapeString(logline->album().utf8())+"\","+
"LABEL=\""+RDEscapeString(logline->label().utf8())+"\","+
"USER_DEFINED=\""+RDEscapeString(logline->userDefined().utf8())+"\","+
"CONDUCTOR=\""+RDEscapeString(logline->conductor().utf8())+"\","+
"SONG_ID=\""+RDEscapeString(logline->songId().utf8())+"\","+
"DESCRIPTION=\""+RDEscapeString(logline->description().utf8())+"\","+
"OUTCUE=\""+RDEscapeString(logline->outcue().utf8())+"\","+
"ISCI=\""+RDEscapeString(logline->isci().utf8())+"\"";
q=new RDSqlQuery(sql);
delete q;
}

View File

@ -1,32 +0,0 @@
// log_traffic.h
//
// Add an entry to the reconciliation table.
//
// (C) Copyright 2002-2004,2016 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 LOG_TRAFFIC_H
#define LOG_TRAFFIC_H
#include <rdlog_line.h>
#include <rdairplay_conf.h>
void LogTraffic(const QString &svcname,const QString &logname,
RDLogLine *logline,RDLogLine::PlaySource src,
RDAirPlayConf::TrafficAction action,bool onair_flag);
#endif // LOG_TRAFFIC_H

View File

@ -1,140 +0,0 @@
// nownext.cpp
//
// Rivendell Now & Next Implementation
//
// (C) Copyright 2002-2008,2016 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 <rdescape_string.h>
#include <rdnownext.h>
#include <globals.h>
#include <log_play.h>
#include <rdairplay.h>
void LogPlay::SendNowNext()
{
QTime end_time;
QTime time;
int now_line=-1;
RDLogLine *logline[2];
RDLogLine *ll;
RDLogLine *default_now_logline=NULL;
RDLogLine *default_next_logline=NULL;
//
// Get NOW PLAYING Event
//
if(play_nownext_address.isNull()&&play_nownext_rml.isEmpty()&&
(play_rlm_hosts->size()==0)) {
return;
}
QString cmd=play_nownext_string;
int lines[TRANSPORT_QUANTITY];
int running=runningEvents(lines,false);
for(int i=0;i<running;i++) {
if((time=logLine(lines[i])->startTime(RDLogLine::Actual).
addMSecs(logLine(lines[i])->effectiveLength()))>end_time) {
end_time=time;
now_line=lines[i];
}
}
if((now_line>=0)&&(logLine(now_line)->nowNextEnabled())) {
logline[0]=logLine(now_line);
}
else {
if(play_now_cartnum==0) {
logline[0]=NULL;
}
else {
default_now_logline=new RDLogLine(play_now_cartnum);
logline[0]=default_now_logline;
}
}
//
// Get NEXT Event
//
logline[1]=NULL;
for(int i=nextLine();i<size();i++) {
if((ll=logLine(i))!=NULL) {
if((ll->status()==RDLogLine::Scheduled)&&
logLine(i)->nowNextEnabled()&&(!logLine(i)->asyncronous())) {
logline[1]=logLine(i);
i=size();
}
}
}
if((logline[1]==NULL)&&(play_next_cartnum!=0)) {
default_next_logline=new RDLogLine(play_next_cartnum);
logline[1]=default_next_logline;
}
//
// Process and Send It
//
unsigned nowcart=0;
unsigned nextcart=0;
if(logline[0]!=NULL) {
if(!logline[0]->asyncronous()) {
nowcart=logline[0]->cartNumber();
}
}
if(logline[1]!=NULL) {
nextcart=logline[1]->cartNumber();
}
if((nowcart==play_prevnow_cartnum)&&(nextcart==play_prevnext_cartnum)) {
return;
}
if(logline[0]==NULL) {
play_prevnow_cartnum=0;
}
else {
play_prevnow_cartnum=logline[0]->cartNumber();
}
if(logline[1]==NULL) {
play_prevnext_cartnum=0;
}
else {
play_prevnext_cartnum=logline[1]->cartNumber();
}
QString svcname=play_svc_name;
if(svcname.isEmpty()) {
svcname=play_defaultsvc_name;
}
for(unsigned i=0;i<play_rlm_hosts->size();i++) {
play_rlm_hosts->at(i)->
sendEvent(svcname,logName().left(logName().length()-4),play_id,logline,
play_onair_flag,play_op_mode);
}
RDResolveNowNext(&cmd,logline,0);
play_nownext_socket->
writeBlock(cmd,cmd.length(),play_nownext_address,play_nownext_port);
cmd=play_nownext_rml;
RDResolveNowNext(&cmd,logline,0);
rdevent_player->exec(cmd);
//
// Clean up
//
if(default_now_logline!=NULL) {
delete default_now_logline;
}
if(default_next_logline!=NULL) {
delete default_next_logline;
}
}

View File

@ -346,7 +346,8 @@ MainWidget::MainWidget(QWidget *parent)
connect(rename_mapper,SIGNAL(mapped(int)),this,SLOT(logRenamedData(int)));
QString default_svcname=rda->airplayConf()->defaultSvc();
for(int i=0;i<RDAIRPLAY_LOG_QUANTITY;i++) {
air_log[i]=new LogPlay(i,air_nownext_socket,"",&air_plugin_hosts);
air_log[i]=new RDLogPlay(i,rdevent_player,air_nownext_socket,"",
&air_plugin_hosts);
air_log[i]->setDefaultServiceName(default_svcname);
air_log[i]->setNowCart(rda->airplayConf()->logNowCart(i));
air_log[i]->setNextCart(rda->airplayConf()->logNextCart(i));
@ -854,8 +855,8 @@ MainWidget::MainWidget(QWidget *parent)
q=new RDSqlQuery(sql);
while(q->next()) {
air_plugin_hosts.
push_back(new RLMHost(q->value(0).toString(),q->value(1).toString(),
air_nownext_socket,this));
push_back(new RDRLMHost(q->value(0).toString(),q->value(1).toString(),
air_nownext_socket,this));
LogLine(RDConfig::LogInfo,QString().
sprintf("Loading RLM \"%s\"",
(const char *)q->value(0).toString()));

View File

@ -37,32 +37,32 @@
#include <qsplashscreen.h>
#include <qfontmetrics.h>
#include <rdpushbutton.h>
#include <rdstereometer.h>
#include <rdlabel.h>
#include <rdinstancelock.h>
#include <rduser.h>
#include <rdripc.h>
#include <rdplay_deck.h>
#include <rdmacro.h>
#include <rdconfig.h>
#include <rd.h>
#include <rdttydevice.h>
#include <rdemptycart.h>
#include <log_play.h>
#include <loglinebox.h>
#include <post_counter.h>
#include <pie_counter.h>
#include <stop_counter.h>
#include <mode_display.h>
#include <start_button.h>
#include <list_log.h>
#include <button_log.h>
#include <colors.h>
#include <rdsound_panel.h>
#include <rdhotkeylist.h>
#include <rdhotkeys.h>
#include <rdinstancelock.h>
#include <rdlabel.h>
#include <rdlogplay.h>
#include <rdmacro.h>
#include <rdplay_deck.h>
#include <rdpushbutton.h>
#include <rdripc.h>
#include <rdrlmhost.h>
#include <rdsound_panel.h>
#include <rdstereometer.h>
#include <rdttydevice.h>
#include <rduser.h>
#include "button_log.h"
#include "colors.h"
#include "list_log.h"
#include "loglinebox.h"
#include "mode_display.h"
#include "post_counter.h"
#include "pie_counter.h"
#include "stop_counter.h"
#include "start_button.h"
//
// Debug Settings
@ -145,7 +145,7 @@ class MainWidget : public QWidget
bool AssertChannelLock(int dir,int achan);
int AudioChannel(int card,int port) const;
RDAirPlayConf::Channel PanelChannel(int mport) const;
LogPlay *air_log[RDAIRPLAY_LOG_QUANTITY];
RDLogPlay *air_log[RDAIRPLAY_LOG_QUANTITY];
RDSoundPanel *air_panel;
PostCounter *air_post_counter;
PieCounter *air_pie_counter;
@ -199,7 +199,7 @@ class MainWidget : public QWidget
QPixmap *air_refresh_pixmap;
QString air_editor_cmd;
QSocketDevice *air_nownext_socket;
std::vector<RLMHost *> air_plugin_hosts;
std::vector<RDRLMHost *> air_plugin_hosts;
QSplashScreen *air_splash_screen;
int keystrokecount;
bool AltKeyHit ;