mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-09-17 08:50:24 +02:00
2018-03-24 Fred Gleason <fredg@paravelsystems.com>
* Added a 'LogType' value to the 'RDNotification::Type enumeration. * Added support for notifications to rdlogedit(1).
This commit is contained in:
parent
04cc669175
commit
af0ac339a6
@ -16733,3 +16733,7 @@
|
|||||||
rdlibrary(1).
|
rdlibrary(1).
|
||||||
2018-03-21 Fred Gleason <fredg@paravelsystems.com>
|
2018-03-21 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Added support for cart notifications to rdairplay(1).
|
* Added support for cart notifications to rdairplay(1).
|
||||||
|
2018-03-24 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Added a 'LogType' value to the 'RDNotification::Type
|
||||||
|
enumeration.
|
||||||
|
* Added support for notifications to rdlogedit(1).
|
||||||
|
@ -25,7 +25,6 @@
|
|||||||
NOTIFY <replaceable choice='req'>obj-type</replaceable>
|
NOTIFY <replaceable choice='req'>obj-type</replaceable>
|
||||||
<replaceable choice='req'>action</replaceable>
|
<replaceable choice='req'>action</replaceable>
|
||||||
<replaceable choice='req'>id</replaceable>
|
<replaceable choice='req'>id</replaceable>
|
||||||
[<replaceable choice='opt'>args</replaceable>]
|
|
||||||
</para>
|
</para>
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
@ -90,17 +89,6 @@
|
|||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
|
||||||
<term>
|
|
||||||
<replaceable>args</replaceable>
|
|
||||||
</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Zero or more additional arguments. Varies by
|
|
||||||
<replaceable>obj-type</replaceable>.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
@ -123,6 +111,27 @@
|
|||||||
<row><entry>Field</entry><entry>Value</entry></row>
|
<row><entry>Field</entry><entry>Value</entry></row>
|
||||||
<row><entry>obj-type</entry><entry>CART</entry></row>
|
<row><entry>obj-type</entry><entry>CART</entry></row>
|
||||||
<row><entry>id</entry><entry>Cart number</entry></row>
|
<row><entry>id</entry><entry>Cart number</entry></row>
|
||||||
|
<row><entry>type</entry><entry>Unsigned Integer</entry></row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
|
<sect2 xml:id="sect.object_types.log">
|
||||||
|
<title>Logs</title>
|
||||||
|
<para>
|
||||||
|
<userinput>LOG</userinput>
|
||||||
|
</para>
|
||||||
|
<table xml:id="table.object_types.logs" frame="all" pgwide="0">
|
||||||
|
<title>Log Fields</title>
|
||||||
|
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||||
|
<colspec colname="Field" colwidth="2.0*"/>
|
||||||
|
<colspec colname="Value" colwidth="10.0*"/>
|
||||||
|
<tbody>
|
||||||
|
<row><entry>Field</entry><entry>Value</entry></row>
|
||||||
|
<row><entry>obj-type</entry><entry>LOG</entry></row>
|
||||||
|
<row><entry>id</entry><entry>Log name</entry></row>
|
||||||
|
<row><entry>type</entry><entry>String</entry></row>
|
||||||
</tbody>
|
</tbody>
|
||||||
</tgroup>
|
</tgroup>
|
||||||
</table>
|
</table>
|
||||||
|
@ -92,7 +92,19 @@ bool RDNotification::read(const QString &str)
|
|||||||
RDNotification::Type type=(RDNotification::Type)i;
|
RDNotification::Type type=(RDNotification::Type)i;
|
||||||
if(args[1]==RDNotification::typeString(type)) {
|
if(args[1]==RDNotification::typeString(type)) {
|
||||||
notify_type=type;
|
notify_type=type;
|
||||||
|
switch(type) {
|
||||||
|
case RDNotification::CartType:
|
||||||
notify_id=QVariant(args[3].toUInt());
|
notify_id=QVariant(args[3].toUInt());
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RDNotification::LogType:
|
||||||
|
notify_id=QVariant(args[3]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RDNotification::NullType:
|
||||||
|
case RDNotification::LastType:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(notify_type==RDNotification::NullType) {
|
if(notify_type==RDNotification::NullType) {
|
||||||
@ -124,6 +136,10 @@ QString RDNotification::write() const
|
|||||||
ret+=QString().sprintf("%u",notify_id.toUInt());
|
ret+=QString().sprintf("%u",notify_id.toUInt());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case RDNotification::LogType:
|
||||||
|
ret+=notify_id.toString();
|
||||||
|
break;
|
||||||
|
|
||||||
case RDNotification::NullType:
|
case RDNotification::NullType:
|
||||||
case RDNotification::LastType:
|
case RDNotification::LastType:
|
||||||
break;
|
break;
|
||||||
@ -141,6 +157,10 @@ QString RDNotification::typeString(RDNotification::Type type)
|
|||||||
ret="CART";
|
ret="CART";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case RDNotification::LogType:
|
||||||
|
ret="LOG";
|
||||||
|
break;
|
||||||
|
|
||||||
case RDNotification::NullType:
|
case RDNotification::NullType:
|
||||||
case RDNotification::LastType:
|
case RDNotification::LastType:
|
||||||
break;
|
break;
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
class RDNotification
|
class RDNotification
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum Type {NullType=0,CartType=1,LastType=2};
|
enum Type {NullType=0,CartType=1,LogType=2,LastType=3};
|
||||||
enum Action {NoAction=0,AddAction=1,DeleteAction=2,ModifyAction=3,
|
enum Action {NoAction=0,AddAction=1,DeleteAction=2,ModifyAction=3,
|
||||||
LastAction=4};
|
LastAction=4};
|
||||||
RDNotification(Type type,Action action,const QVariant &id);
|
RDNotification(Type type,Action action,const QVariant &id);
|
||||||
|
@ -902,16 +902,17 @@ void MainWidget::notificationReceivedData(RDNotification *notify)
|
|||||||
RDSqlQuery *q;
|
RDSqlQuery *q;
|
||||||
|
|
||||||
if(notify->type()==RDNotification::CartType) {
|
if(notify->type()==RDNotification::CartType) {
|
||||||
|
unsigned cartnum=notify->id().toUInt();
|
||||||
switch(notify->action()) {
|
switch(notify->action()) {
|
||||||
case RDNotification::AddAction:
|
case RDNotification::AddAction:
|
||||||
sql=QString("select CART.NUMBER from CART ")+
|
sql=QString("select CART.NUMBER from CART ")+
|
||||||
"left join CUTS on CART.NUMBER=CUTS.CART_NUMBER "+
|
"left join CUTS on CART.NUMBER=CUTS.CART_NUMBER "+
|
||||||
WhereClause()+
|
WhereClause()+
|
||||||
QString().sprintf(" && CART.NUMBER=%u ",notify->id().toUInt());
|
QString().sprintf(" && CART.NUMBER=%u ",cartnum);
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
if(q->first()) {
|
if(q->first()) {
|
||||||
item=new RDListViewItem(lib_cart_list);
|
item=new RDListViewItem(lib_cart_list);
|
||||||
item->setText(1,QString().sprintf("%06u",notify->id().toUInt()));
|
item->setText(1,QString().sprintf("%06u",cartnum));
|
||||||
RefreshLine(item);
|
RefreshLine(item);
|
||||||
}
|
}
|
||||||
delete q;
|
delete q;
|
||||||
@ -919,17 +920,17 @@ void MainWidget::notificationReceivedData(RDNotification *notify)
|
|||||||
|
|
||||||
case RDNotification::ModifyAction:
|
case RDNotification::ModifyAction:
|
||||||
if((item=(RDListViewItem *)lib_cart_list->
|
if((item=(RDListViewItem *)lib_cart_list->
|
||||||
findItem(QString().sprintf("%06u",notify->id().toUInt()),1))!=NULL) {
|
findItem(QString().sprintf("%06u",cartnum),1))!=NULL) {
|
||||||
RefreshLine(item);
|
RefreshLine(item);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RDNotification::DeleteAction:
|
case RDNotification::DeleteAction:
|
||||||
if(lib_edit_pending) {
|
if(lib_edit_pending) {
|
||||||
lib_deleted_carts.push_back(notify->id().toUInt());
|
lib_deleted_carts.push_back(cartnum);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if((item=(RDListViewItem *)lib_cart_list->findItem(QString().sprintf("%06u",notify->id().toUInt()),1))!=NULL) {
|
if((item=(RDListViewItem *)lib_cart_list->findItem(QString().sprintf("%06u",cartnum),1))!=NULL) {
|
||||||
delete item;
|
delete item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,6 +154,12 @@ EditLog::EditLog(QString logname,QString *filter,QString *group,
|
|||||||
edit_log_event=new RDLogEvent(RDLog::tableName(edit_logname));
|
edit_log_event=new RDLogEvent(RDLog::tableName(edit_logname));
|
||||||
edit_log_event->load(true);
|
edit_log_event->load(true);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Notifications
|
||||||
|
//
|
||||||
|
connect(rda->ripc(),SIGNAL(notificationReceived(RDNotification *)),
|
||||||
|
this,SLOT(notificationReceivedData(RDNotification *)));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Log Name
|
// Log Name
|
||||||
//
|
//
|
||||||
@ -1082,6 +1088,27 @@ void EditLog::cartDroppedData(int line,RDLogLine *ll)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EditLog::notificationReceivedData(RDNotification *notify)
|
||||||
|
{
|
||||||
|
RDListViewItem *item=NULL;
|
||||||
|
|
||||||
|
if(notify->type()==RDNotification::CartType) {
|
||||||
|
unsigned cartnum=notify->id().toUInt();
|
||||||
|
item=(RDListViewItem *)edit_log_list->firstChild();
|
||||||
|
while(item!=NULL) {
|
||||||
|
if(item->text(3).toUInt()==cartnum) {
|
||||||
|
int line=item->text(14).toInt();
|
||||||
|
if(line>=0) {
|
||||||
|
edit_log_event->refresh(line);
|
||||||
|
RefreshLine(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
item=(RDListViewItem *)item->nextSibling();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void EditLog::saveData()
|
void EditLog::saveData()
|
||||||
{
|
{
|
||||||
if(!ValidateSvc()) {
|
if(!ValidateSvc()) {
|
||||||
@ -1127,6 +1154,7 @@ void EditLog::saveasData()
|
|||||||
QMessageBox::warning(this,"RDLogEdit - "+tr("Error"),err_msg);
|
QMessageBox::warning(this,"RDLogEdit - "+tr("Error"),err_msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
SendNotification(RDNotification::AddAction,logname);
|
||||||
delete edit_log;
|
delete edit_log;
|
||||||
edit_newlogs->push_back(logname);
|
edit_newlogs->push_back(logname);
|
||||||
edit_log=new RDLog(logname);
|
edit_log=new RDLog(logname);
|
||||||
@ -1400,6 +1428,7 @@ void EditLog::SaveLog()
|
|||||||
edit_log_event->save(rda->config());
|
edit_log_event->save(rda->config());
|
||||||
edit_log->
|
edit_log->
|
||||||
setModifiedDatetime(QDateTime(QDate::currentDate(),QTime::currentTime()));
|
setModifiedDatetime(QDateTime(QDate::currentDate(),QTime::currentTime()));
|
||||||
|
SendNotification(RDNotification::ModifyAction,edit_log->name());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1409,6 +1438,7 @@ void EditLog::RefreshLine(RDListViewItem *item)
|
|||||||
if(line<0) {
|
if(line<0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
edit_log_event->refresh(line);
|
||||||
RDLogLine *logline=edit_log_event->logLine(line);
|
RDLogLine *logline=edit_log_event->logLine(line);
|
||||||
switch(logline->timeType()) {
|
switch(logline->timeType()) {
|
||||||
case RDLogLine::Hard:
|
case RDLogLine::Hard:
|
||||||
@ -1862,3 +1892,13 @@ void EditLog::SetLogModified(bool state)
|
|||||||
edit_changed=state;
|
edit_changed=state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EditLog::SendNotification(RDNotification::Action action,
|
||||||
|
const QString &log_name)
|
||||||
|
{
|
||||||
|
RDNotification *notify=new RDNotification(RDNotification::LogType,
|
||||||
|
action,QVariant(log_name));
|
||||||
|
rda->ripc()->sendNotification(*notify);
|
||||||
|
delete notify;
|
||||||
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// Create a Rivendell Log
|
// Create a Rivendell Log
|
||||||
//
|
//
|
||||||
// (C) Copyright 2002-2017 Fred Gleason <fredg@paravelsystems.com>
|
// (C) Copyright 2002-2018 Fred Gleason <fredg@paravelsystems.com>
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License version 2 as
|
||||||
@ -37,6 +37,7 @@
|
|||||||
#include <rdlog.h>
|
#include <rdlog.h>
|
||||||
#include <rdlog_event.h>
|
#include <rdlog_event.h>
|
||||||
#include <rdloglock.h>
|
#include <rdloglock.h>
|
||||||
|
#include <rdnotification.h>
|
||||||
#include <rdsimpleplayer.h>
|
#include <rdsimpleplayer.h>
|
||||||
#include <rdtransportbutton.h>
|
#include <rdtransportbutton.h>
|
||||||
#include <rduser.h>
|
#include <rduser.h>
|
||||||
@ -89,6 +90,7 @@ class EditLog : public QDialog
|
|||||||
void copyButtonData();
|
void copyButtonData();
|
||||||
void pasteButtonData();
|
void pasteButtonData();
|
||||||
void cartDroppedData(int line,RDLogLine *ll);
|
void cartDroppedData(int line,RDLogLine *ll);
|
||||||
|
void notificationReceivedData(RDNotification *notify);
|
||||||
void saveData();
|
void saveData();
|
||||||
void saveasData();
|
void saveasData();
|
||||||
void renderasData();
|
void renderasData();
|
||||||
@ -116,6 +118,7 @@ class EditLog : public QDialog
|
|||||||
void LoadClipboard(bool clear_ext);
|
void LoadClipboard(bool clear_ext);
|
||||||
RDListViewItem *SingleSelection();
|
RDListViewItem *SingleSelection();
|
||||||
void SetLogModified(bool state);
|
void SetLogModified(bool state);
|
||||||
|
void SendNotification(RDNotification::Action action,const QString &log_name);
|
||||||
RDLog *edit_log;
|
RDLog *edit_log;
|
||||||
RDLogEvent *edit_log_event;
|
RDLogEvent *edit_log_event;
|
||||||
std::vector<RDLogLine> *edit_clipboard;
|
std::vector<RDLogLine> *edit_clipboard;
|
||||||
|
@ -105,6 +105,7 @@ MainWidget::MainWidget(QWidget *parent)
|
|||||||
|
|
||||||
log_resize=false;
|
log_resize=false;
|
||||||
log_log_list=NULL;
|
log_log_list=NULL;
|
||||||
|
log_list_locked=false;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Fix the Window Size
|
// Fix the Window Size
|
||||||
@ -153,6 +154,8 @@ MainWidget::MainWidget(QWidget *parent)
|
|||||||
//
|
//
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
connect(rda->ripc(),SIGNAL(connected(bool)),this,SLOT(connectedData(bool)));
|
connect(rda->ripc(),SIGNAL(connected(bool)),this,SLOT(connectedData(bool)));
|
||||||
|
connect(rda->ripc(),SIGNAL(notificationReceived(RDNotification *)),
|
||||||
|
this,SLOT(notificationReceivedData(RDNotification *)));
|
||||||
connect(rda,SIGNAL(userChanged()),this,SLOT(userData()));
|
connect(rda,SIGNAL(userChanged()),this,SLOT(userData()));
|
||||||
rda->ripc()->connectHost("localhost",RIPCD_TCP_PORT,rda->config()->password());
|
rda->ripc()->connectHost("localhost",RIPCD_TCP_PORT,rda->config()->password());
|
||||||
#else
|
#else
|
||||||
@ -381,6 +384,8 @@ void MainWidget::addData()
|
|||||||
QMessageBox::warning(this,"RDLogEdit - "+tr("Error"),err_msg);
|
QMessageBox::warning(this,"RDLogEdit - "+tr("Error"),err_msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
LockList();
|
||||||
|
SendNotification(RDNotification::AddAction,logname);
|
||||||
EditLog *editlog=new EditLog(logname,&log_filter,&log_group,&log_schedcode,
|
EditLog *editlog=new EditLog(logname,&log_filter,&log_group,&log_schedcode,
|
||||||
&log_clipboard,&newlogs,this);
|
&log_clipboard,&newlogs,this);
|
||||||
editlog->exec();
|
editlog->exec();
|
||||||
@ -395,6 +400,7 @@ void MainWidget::addData()
|
|||||||
item->setText(1,newlogs[i]);
|
item->setText(1,newlogs[i]);
|
||||||
RefreshItem(item);
|
RefreshItem(item);
|
||||||
}
|
}
|
||||||
|
UnlockList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -405,19 +411,22 @@ void MainWidget::editData()
|
|||||||
if(SelectedLogs(&items)!=1) {
|
if(SelectedLogs(&items)!=1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
QString logname=items.at(0)->text(1);
|
||||||
std::vector<QString> newlogs;
|
std::vector<QString> newlogs;
|
||||||
|
LockList();
|
||||||
EditLog *log=
|
EditLog *log=
|
||||||
new EditLog(items.at(0)->text(1),&log_filter,&log_group,&log_schedcode,
|
new EditLog(logname,&log_filter,&log_group,&log_schedcode,
|
||||||
&log_clipboard,&newlogs,this);
|
&log_clipboard,&newlogs,this);
|
||||||
log->exec();
|
if(log->exec()) {
|
||||||
delete log;
|
|
||||||
RefreshItem(items.at(0));
|
RefreshItem(items.at(0));
|
||||||
for(unsigned i=0;i<newlogs.size();i++) {
|
for(unsigned i=0;i<newlogs.size();i++) {
|
||||||
ListListViewItem *item=new ListListViewItem(log_log_list);
|
ListListViewItem *item=new ListListViewItem(log_log_list);
|
||||||
item->setText(1,newlogs[i]);
|
item->setText(1,newlogs[i]);
|
||||||
RefreshItem(item);
|
RefreshItem(item);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
UnlockList();
|
||||||
|
delete log;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -482,6 +491,7 @@ void MainWidget::deleteData()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LockList();
|
||||||
for(unsigned i=0;i<items.size();i++) {
|
for(unsigned i=0;i<items.size();i++) {
|
||||||
QString username;
|
QString username;
|
||||||
QString stationname;
|
QString stationname;
|
||||||
@ -491,6 +501,7 @@ void MainWidget::deleteData()
|
|||||||
if(log_lock->tryLock(&username,&stationname,&addr)) {
|
if(log_lock->tryLock(&username,&stationname,&addr)) {
|
||||||
RDLog *log=new RDLog(items.at(i)->text(1));
|
RDLog *log=new RDLog(items.at(i)->text(1));
|
||||||
if(log->remove(rda->station(),rda->user(),rda->config())) {
|
if(log->remove(rda->station(),rda->user(),rda->config())) {
|
||||||
|
SendNotification(RDNotification::DeleteAction,log->name());
|
||||||
delete items.at(i);
|
delete items.at(i);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -511,6 +522,7 @@ void MainWidget::deleteData()
|
|||||||
}
|
}
|
||||||
delete log_lock;
|
delete log_lock;
|
||||||
}
|
}
|
||||||
|
UnlockList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -522,10 +534,12 @@ void MainWidget::trackData()
|
|||||||
if(SelectedLogs(&items)!=1) {
|
if(SelectedLogs(&items)!=1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
LockList();
|
||||||
VoiceTracker *dialog=new VoiceTracker(items.at(0)->text(1),&log_import_path);
|
VoiceTracker *dialog=new VoiceTracker(items.at(0)->text(1),&log_import_path);
|
||||||
dialog->exec();
|
dialog->exec();
|
||||||
delete dialog;
|
delete dialog;
|
||||||
RefreshItem(items.at(0));
|
RefreshItem(items.at(0));
|
||||||
|
UnlockList();
|
||||||
#endif // WIN32
|
#endif // WIN32
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -679,6 +693,53 @@ void MainWidget::logDoubleclickedData(QListViewItem *,const QPoint &,int)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWidget::notificationReceivedData(RDNotification *notify)
|
||||||
|
{
|
||||||
|
QString sql;
|
||||||
|
RDSqlQuery *q;
|
||||||
|
ListListViewItem *item=NULL;
|
||||||
|
|
||||||
|
if(notify->type()==RDNotification::LogType) {
|
||||||
|
QString logname=notify->id().toString();
|
||||||
|
switch(notify->action()) {
|
||||||
|
case RDNotification::AddAction:
|
||||||
|
sql=QString("select NAME from LOGS where (TYPE=0)&&(LOG_EXISTS=\"Y\")&&")+
|
||||||
|
"(NAME=\""+RDEscapeString(logname)+"\") "+
|
||||||
|
log_filter_widget->whereSql();
|
||||||
|
q=new RDSqlQuery(sql);
|
||||||
|
if(q->first()) {
|
||||||
|
item=new ListListViewItem(log_log_list);
|
||||||
|
item->setText(1,logname);
|
||||||
|
RefreshItem(item);
|
||||||
|
}
|
||||||
|
delete q;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RDNotification::ModifyAction:
|
||||||
|
if((item=(ListListViewItem *)log_log_list->findItem(logname,1))!=NULL) {
|
||||||
|
RefreshItem(item);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RDNotification::DeleteAction:
|
||||||
|
if(log_list_locked) {
|
||||||
|
log_deleted_logs.push_back(logname);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if((item=(ListListViewItem *)log_log_list->findItem(logname,1))!=NULL) {
|
||||||
|
delete item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RDNotification::NoAction:
|
||||||
|
case RDNotification::LastAction:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWidget::quitMainWidget()
|
void MainWidget::quitMainWidget()
|
||||||
{
|
{
|
||||||
exit(0);
|
exit(0);
|
||||||
@ -820,6 +881,37 @@ unsigned MainWidget::SelectedLogs(std::vector<ListListViewItem *> *items,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWidget::SendNotification(RDNotification::Action action,
|
||||||
|
const QString &logname)
|
||||||
|
{
|
||||||
|
RDNotification *notify=new RDNotification(RDNotification::LogType,action,
|
||||||
|
QVariant(logname));
|
||||||
|
rda->ripc()->sendNotification(*notify);
|
||||||
|
delete notify;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWidget::LockList()
|
||||||
|
{
|
||||||
|
log_list_locked=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWidget::UnlockList()
|
||||||
|
{
|
||||||
|
ListListViewItem *item=NULL;
|
||||||
|
|
||||||
|
for(unsigned i=0;i<log_deleted_logs.size();i++) {
|
||||||
|
if((item=(ListListViewItem *)log_log_list->
|
||||||
|
findItem(log_deleted_logs[i],1))!=NULL) {
|
||||||
|
delete item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log_deleted_logs.clear();
|
||||||
|
log_list_locked=false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int argc,char *argv[])
|
int main(int argc,char *argv[])
|
||||||
{
|
{
|
||||||
QApplication a(argc,argv);
|
QApplication a(argc,argv);
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
#include <rdlog_line.h>
|
#include <rdlog_line.h>
|
||||||
#include <rdlogfilter.h>
|
#include <rdlogfilter.h>
|
||||||
|
#include <rdnotification.h>
|
||||||
|
|
||||||
#include "list_listviewitem.h"
|
#include "list_listviewitem.h"
|
||||||
|
|
||||||
@ -61,6 +62,7 @@ class MainWidget : public QMainWindow
|
|||||||
void filterChangedData(const QString &str);
|
void filterChangedData(const QString &str);
|
||||||
void logSelectionChangedData();
|
void logSelectionChangedData();
|
||||||
void logDoubleclickedData(QListViewItem *item,const QPoint &pt,int col);
|
void logDoubleclickedData(QListViewItem *item,const QPoint &pt,int col);
|
||||||
|
void notificationReceivedData(RDNotification *notify);
|
||||||
void quitMainWidget();
|
void quitMainWidget();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -71,7 +73,9 @@ class MainWidget : public QMainWindow
|
|||||||
void RefreshList();
|
void RefreshList();
|
||||||
unsigned SelectedLogs(std::vector<ListListViewItem *> *items,
|
unsigned SelectedLogs(std::vector<ListListViewItem *> *items,
|
||||||
int *tracks=NULL) const;
|
int *tracks=NULL) const;
|
||||||
// QSqlDatabase *log_db;
|
void SendNotification(RDNotification::Action action,const QString &logname);
|
||||||
|
void LockList();
|
||||||
|
void UnlockList();
|
||||||
QString log_filename;
|
QString log_filename;
|
||||||
QString log_import_path;
|
QString log_import_path;
|
||||||
QLabel *log_user_label;
|
QLabel *log_user_label;
|
||||||
@ -96,6 +100,8 @@ class MainWidget : public QMainWindow
|
|||||||
QString log_group;
|
QString log_group;
|
||||||
QString log_schedcode;
|
QString log_schedcode;
|
||||||
bool log_resize;
|
bool log_resize;
|
||||||
|
bool log_list_locked;
|
||||||
|
QStringList log_deleted_logs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -164,6 +164,12 @@ VoiceTracker::VoiceTracker(const QString &logname,QString *import_path,
|
|||||||
//
|
//
|
||||||
track_event_player=new RDEventPlayer(rda->ripc(),this);
|
track_event_player=new RDEventPlayer(rda->ripc(),this);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Notifications
|
||||||
|
//
|
||||||
|
connect(rda->ripc(),SIGNAL(notificationReceived(RDNotification *)),
|
||||||
|
this,SLOT(notificationReceivedData(RDNotification *)));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Waveform Pixmaps
|
// Waveform Pixmaps
|
||||||
//
|
//
|
||||||
@ -1964,6 +1970,24 @@ void VoiceTracker::recordUnloadedData(int card,int stream,unsigned msecs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void VoiceTracker::notificationReceivedData(RDNotification *notify)
|
||||||
|
{
|
||||||
|
RDListViewItem *item=NULL;
|
||||||
|
|
||||||
|
if(notify->type()==RDNotification::CartType) {
|
||||||
|
unsigned cartnum=notify->id().toUInt();
|
||||||
|
item=(RDListViewItem *)track_log_list->firstChild();
|
||||||
|
while(item!=NULL) {
|
||||||
|
if(item->text(3).toUInt()==cartnum) {
|
||||||
|
track_log_event->refresh(item->line());
|
||||||
|
RefreshLine(item);
|
||||||
|
}
|
||||||
|
item=(RDListViewItem *)item->nextSibling();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void VoiceTracker::closeData()
|
void VoiceTracker::closeData()
|
||||||
{
|
{
|
||||||
stopData();
|
stopData();
|
||||||
@ -2346,6 +2370,7 @@ void VoiceTracker::SaveTrack(int line)
|
|||||||
setModifiedDatetime(QDateTime(QDate::currentDate(),QTime::currentTime()));
|
setModifiedDatetime(QDateTime(QDate::currentDate(),QTime::currentTime()));
|
||||||
track_changed=false;
|
track_changed=false;
|
||||||
track_size_altered=false;
|
track_size_altered=false;
|
||||||
|
SendNotification(RDNotification::ModifyAction,track_log->name());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -4135,3 +4160,13 @@ void VoiceTracker::PopSegues()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void VoiceTracker::SendNotification(RDNotification::Action action,
|
||||||
|
const QString &log_name)
|
||||||
|
{
|
||||||
|
RDNotification *notify=new RDNotification(RDNotification::LogType,
|
||||||
|
action,QVariant(log_name));
|
||||||
|
rda->ripc()->sendNotification(*notify);
|
||||||
|
delete notify;
|
||||||
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// A Rivendell Voice Tracker
|
// A Rivendell Voice Tracker
|
||||||
//
|
//
|
||||||
// (C) Copyright 2002-2006,2016-2017 Fred Gleason <fredg@paravelsystems.com>
|
// (C) Copyright 2002-2006,2016-2018 Fred Gleason <fredg@paravelsystems.com>
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License version 2 as
|
||||||
@ -41,6 +41,7 @@
|
|||||||
#include <rdlog.h>
|
#include <rdlog.h>
|
||||||
#include <rdlog_event.h>
|
#include <rdlog_event.h>
|
||||||
#include <rdloglock.h>
|
#include <rdloglock.h>
|
||||||
|
#include <rdnotification.h>
|
||||||
#include <rdplay_deck.h>
|
#include <rdplay_deck.h>
|
||||||
#include <rdsettings.h>
|
#include <rdsettings.h>
|
||||||
#include <rdstereometer.h>
|
#include <rdstereometer.h>
|
||||||
@ -121,6 +122,7 @@ class VoiceTracker : public QDialog
|
|||||||
void recordingData(int card,int stream);
|
void recordingData(int card,int stream);
|
||||||
void recordStoppedData(int card,int stream);
|
void recordStoppedData(int card,int stream);
|
||||||
void recordUnloadedData(int cart,int stream,unsigned msecs);
|
void recordUnloadedData(int cart,int stream,unsigned msecs);
|
||||||
|
void notificationReceivedData(RDNotification *notify);
|
||||||
void closeData();
|
void closeData();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -170,6 +172,7 @@ class VoiceTracker : public QDialog
|
|||||||
void CheckChanges();
|
void CheckChanges();
|
||||||
void PushSegues();
|
void PushSegues();
|
||||||
void PopSegues();
|
void PopSegues();
|
||||||
|
void SendNotification(RDNotification::Action action,const QString &log_name);
|
||||||
RDStereoMeter *track_meter;
|
RDStereoMeter *track_meter;
|
||||||
QTimer *track_meter_timer;
|
QTimer *track_meter_timer;
|
||||||
RDTransportButton *track_play_button;
|
RDTransportButton *track_play_button;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user