2020-12-29 Fred Gleason <fredg@paravelsystems.com>

* Refactored the Full Log widget in rdairplay to use the model-based
	API.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2020-12-29 12:47:31 -05:00
parent ca7ead3ea3
commit 1ce6d0ddc3
33 changed files with 984 additions and 1573 deletions

View File

@ -20756,3 +20756,6 @@
'RDLogListModel'.
2020-12-27 Fred Gleason <fredg@paravelsystems.com>
* Removed the 'RDLogEvent' class.
2020-12-29 Fred Gleason <fredg@paravelsystems.com>
* Refactored the Full Log widget in rdairplay to use the model-based
API.

View File

@ -2785,6 +2785,21 @@ Bitte Kofiguration prüfen und erneut versuchen.</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDLogPlay</name>
<message>
<source>[CART NOT FOUND]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>T</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDMbLookup</name>
<message>

View File

@ -2780,6 +2780,21 @@ Bitte Kofiguration prüfen und erneut versuchen.</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDLogPlay</name>
<message>
<source>[CART NOT FOUND]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>T</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDMbLookup</name>
<message>

View File

@ -2770,6 +2770,21 @@ Do you still want to proceed?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDLogPlay</name>
<message>
<source>[CART NOT FOUND]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>T</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDMbLookup</name>
<message>

View File

@ -2292,6 +2292,21 @@ Do you want to overwrite it?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDLogPlay</name>
<message>
<source>[CART NOT FOUND]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>T</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDMbLookup</name>
<message>

View File

@ -2751,6 +2751,21 @@ Sjekk eksportoppsettet ditt og prøv att.</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDLogPlay</name>
<message>
<source>[CART NOT FOUND]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>T</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDMbLookup</name>
<message>

View File

@ -2751,6 +2751,21 @@ Sjekk eksportoppsettet ditt og prøv att.</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDLogPlay</name>
<message>
<source>[CART NOT FOUND]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>T</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDMbLookup</name>
<message>

View File

@ -2785,6 +2785,21 @@ Por Favor, cheque suas configurações e tenbte outra vez.</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDLogPlay</name>
<message>
<source>[CART NOT FOUND]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>T</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDMbLookup</name>
<message>

View File

@ -34,62 +34,6 @@ RDLogModel::RDLogModel(const QString &logname,bool read_only,QObject *parent)
d_read_only=read_only;
MakeModel();
/*
d_fms=NULL;
d_bold_fms=NULL;
d_log_icons=new RDLogIcons();
d_start_time_style=RDLogModel::Scheduled;
d_max_id=0;
//
// 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);
*/
}
@ -129,6 +73,18 @@ void RDLogModel::setPalette(const QPalette &pal)
}
QFont RDLogModel::normalFont() const
{
return d_font;
}
QFont RDLogModel::boldFont() const
{
return d_bold_font;
}
void RDLogModel::setFont(const QFont &font)
{
d_font=font;
@ -179,78 +135,19 @@ QVariant RDLogModel::data(const QModelIndex &index,int role) const
if((ll=logLine(row))!=NULL) {
switch((Qt::ItemDataRole)role) {
case Qt::DisplayRole:
switch(index.column()) {
case 0: // Start Time
return StartTimeString(row);
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;
return cellText(col,row,ll);
case Qt::DecorationRole:
if(col==0) {
return d_log_icons->typeIcon(ll->type(),ll->source());
}
break;
return cellIcon(col,row,ll);
case Qt::FontRole:
if(col==3) {
return d_bold_font;
}
return d_font;
return cellTextFont(col,row,ll);
case Qt::TextColorRole:
switch(col) {
case 0:
if(ll->timeType()==RDLogLine::Hard) {
return Qt::blue;
}
break;
case 3:
return ll->groupColor();
}
break;
return cellTextColor(col,row,ll);
case Qt::BackgroundRole:
return backgroundColor(row,ll);
return rowBackgroundColor(row,ll);
default:
break;
@ -319,6 +216,8 @@ int RDLogModel::load(bool track_ptrs)
QString sql;
RDSqlQuery *q;
beginResetModel();
//
// Get the service name
//
@ -336,10 +235,7 @@ int RDLogModel::load(bool track_ptrs)
LoadLines(d_log_name,0,track_ptrs);
if(lineCount()>0) {
beginInsertRows(QModelIndex(),0,lineCount()-1);
endInsertRows();
}
endResetModel();
return d_log_lines.size();
}
@ -517,7 +413,7 @@ int RDLogModel::validate(QString *report,const QDate &date)
}
void RDLogModel::refresh(int line)
void RDLogModel::update(int line)
{
if(d_log_name.isEmpty()) {
return;
@ -1606,7 +1502,140 @@ void RDLogModel::emitAllDataChanged()
}
QColor RDLogModel::backgroundColor(int line,RDLogLine *ll) const
QStringList RDLogModel::headerTexts() const
{
QStringList ret;
ret.push_back(tr("Start Time"));
ret.push_back(tr("Trans"));
ret.push_back(tr("Cart"));
ret.push_back(tr("Group"));
ret.push_back(tr("Length"));
ret.push_back(tr("Title"));
ret.push_back(tr("Artist"));
ret.push_back(tr("Client"));
ret.push_back(tr("Agency"));
ret.push_back(tr("Label"));
ret.push_back(tr("Source"));
ret.push_back(tr("Ext Data"));
ret.push_back(tr("Line ID"));
ret.push_back(tr("Count"));
return ret;
}
QList<int> RDLogModel::columnAlignments() const
{
QList<int> ret;
int left=Qt::AlignLeft|Qt::AlignVCenter;
int center=Qt::AlignCenter;
int right=Qt::AlignRight|Qt::AlignVCenter;
ret.push_back(right); // Start Time
ret.push_back(center); // Trans
ret.push_back(center); // Cart
ret.push_back(center); // Group
ret.push_back(right); // Length
ret.push_back(left); // Title
ret.push_back(left); // Artist
ret.push_back(left); // Client
ret.push_back(left); // Agency
ret.push_back(left); // Label
ret.push_back(left); // Source
ret.push_back(left); // Ext Data
ret.push_back(right); // Line ID
ret.push_back(right); // Count
return ret;
}
QPixmap RDLogModel::cellIcon(int col,int row,RDLogLine *ll) const
{
if(col==0) {
return d_log_icons->typeIcon(ll->type(),ll->source());
}
return QPixmap();
}
QString RDLogModel::cellText(int col,int line,RDLogLine *ll) const
{
switch(col) {
case 0: // Start Time
return StartTimeString(line);
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",line);
}
return QString();
}
QFont RDLogModel::cellTextFont(int col,int line,RDLogLine *ll) const
{
if(col==3) {
return d_bold_font;
}
return d_font;
}
QColor RDLogModel::cellTextColor(int col,int line,RDLogLine *ll) const
{
switch(col) {
case 0:
if(ll->timeType()==RDLogLine::Hard) {
return Qt::blue;
}
break;
case 3:
return ll->groupColor();
}
return d_palette.color(QPalette::Foreground);
}
QColor RDLogModel::rowBackgroundColor(int line,RDLogLine *ll) const
{
return d_palette.color(QPalette::Base);
}
@ -1620,52 +1649,16 @@ void RDLogModel::MakeModel()
d_start_time_style=RDLogModel::Scheduled;
d_max_id=0;
//
// Column Attributes
//
unsigned left=Qt::AlignLeft|Qt::AlignVCenter;
unsigned center=Qt::AlignCenter;
unsigned right=Qt::AlignRight|Qt::AlignVCenter;
QStringList headers=headerTexts();
QList<int> alignments=columnAlignments();
d_headers.push_back(tr("Start Time"));
d_alignments.push_back(right);
if(headers.size()!=alignments.size()) {
fprintf(stderr,"header/alignment size mismatch\n");
exit(1);
}
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);
for(int i=0;i<headers.size();i++) {
d_headers.push_back(headers.at(i));
d_alignments.push_back(alignments.at(i));
}
}

View File

@ -40,6 +40,8 @@ class RDLogModel : public QAbstractTableModel
~RDLogModel();
QPalette palette();
void setPalette(const QPalette &pal);
QFont normalFont() const;
QFont boldFont() const;
void setFont(const QFont &font);
int columnCount(const QModelIndex &parent=QModelIndex()) const;
int rowCount(const QModelIndex &parent=QModelIndex()) const;
@ -58,7 +60,7 @@ class RDLogModel : public QAbstractTableModel
int append(const QString &logname,bool track_ptrs=false);
int validate(QString *report,const QDate &date);
void clear();
void refresh(int line);
void update(int line);
int lineCount() const;
void insert(int line,int num_lines,bool preserve_trans=false);
void remove(int line,int num_lines,bool preserve_trans=false);
@ -89,7 +91,13 @@ class RDLogModel : public QAbstractTableModel
protected:
void emitDataChanged(int row);
void emitAllDataChanged();
virtual QColor backgroundColor(int line,RDLogLine *ll) const;
virtual QStringList headerTexts() const;
virtual QList<int> columnAlignments() const;
virtual QPixmap cellIcon(int col,int row,RDLogLine *ll) const;
virtual QString cellText(int col,int line,RDLogLine *ll) const;
virtual QFont cellTextFont(int col,int line,RDLogLine *ll) const;
virtual QColor cellTextColor(int col,int line,RDLogLine *ll) const;
virtual QColor rowBackgroundColor(int line,RDLogLine *ll) const;
private:
QString StartTimeString(int line) const;

View File

@ -55,6 +55,7 @@ RDLogPlay::RDLogPlay(int id,RDEventPlayer *player,QObject *parent)
play_duck_volume_port1=0;
play_duck_volume_port2=0;
play_start_next=false;
play_time_mode=RDAirPlayConf::TwentyFourHour;
play_running=false;
play_next_line=0;
play_post_time=QTime();
@ -71,6 +72,9 @@ RDLogPlay::RDLogPlay(int id,RDEventPlayer *player,QObject *parent)
for(int i=0;i<LOGPLAY_MAX_PLAYS;i++) {
play_slot_id[i]=i;
}
for(int i=0;i<24;i++) {
play_hours[i]=false;
}
//
// PAD Server Connection
@ -221,7 +225,7 @@ void RDLogPlay::setOpMode(RDAirPlayConf::OpMode mode)
return;
}
play_op_mode=mode;
UpdateStartTimes(play_line_counter);
UpdateStartTimes();
}
@ -508,7 +512,7 @@ void RDLogPlay::makeNext(int line,bool refresh_status)
SetTransTimer();
UpdatePostPoint();
emit nextEventChanged(line);
emit transportChanged();
ChangeTransport();
}
@ -560,10 +564,11 @@ void RDLogPlay::load()
delete log;
play_line_counter=0;
play_next_line=0;
UpdateStartTimes(0);
// UpdateStartTimes(0);
UpdateStartTimes();
emit reloaded();
SetTransTimer();
emit transportChanged();
ChangeTransport();
UpdatePostPoint();
if((running>0)&&(lineCount()>running)) {
makeNext(running);
@ -601,10 +606,10 @@ void RDLogPlay::append(const QString &log_name)
}
}
RefreshEvents(old_size,lineCount()-old_size);
UpdateStartTimes(old_size);
UpdateStartTimes();
emit reloaded();
SetTransTimer();
emit transportChanged();
ChangeTransport();
UpdatePostPoint();
}
@ -755,10 +760,10 @@ bool RDLogPlay::refresh()
logLine(i)->clearPass();
}
RefreshEvents(0,lineCount());
UpdateStartTimes(next_line);
UpdateStartTimes();
UpdatePostPoint();
SetTransTimer();
emit transportChanged();
ChangeTransport();
emit reloaded();
if(play_refreshable) {
play_refreshable=false;
@ -854,19 +859,20 @@ void RDLogPlay::insert(int line,int cartnum,RDLogLine::TransType next_type,
logline->loadCart(cartnum,next_type,play_id,play_timescaling_available,type);
logline->
setTimescalingActive(play_timescaling_available&&logline->enforceLength());
UpdateStartTimes(line);
UpdateStartTimes();
emit inserted(line);
UpdatePostPoint();
if(mod_line>=0) {
emit modified(mod_line);
}
emit transportChanged();
ChangeTransport();
SetTransTimer();
UpdatePostPoint();
}
void RDLogPlay::insert(int line,RDLogLine *l,bool update,bool preserv_custom_transition)
void RDLogPlay::insert(int line,RDLogLine *l,bool update,
bool preserv_custom_transition)
{
RDLogLine *logline;
int lines[TRANSPORT_QUANTITY];
@ -908,13 +914,13 @@ void RDLogPlay::insert(int line,RDLogLine *l,bool update,bool preserv_custom_tra
logline->
setTimescalingActive(play_timescaling_available&&logline->enforceLength());
if(update) {
UpdateStartTimes(line);
UpdateStartTimes();
emit inserted(line);
UpdatePostPoint();
if(mod_line>=0) {
emit modified(mod_line);
}
emit transportChanged();
ChangeTransport();
SetTransTimer();
UpdatePostPoint();
}
@ -971,14 +977,14 @@ void RDLogPlay::remove(int line,int num_lines,bool update,
if(nextLine()>line) {
makeNext(nextLine()-num_lines);
}
UpdateStartTimes(line);
UpdateStartTimes();
if(lineCount()==0) {
emit reloaded();
}
if(mod_line>=0) {
emit modified(mod_line);
}
emit transportChanged();
ChangeTransport();
SetTransTimer();
UpdatePostPoint();
}
@ -1050,12 +1056,7 @@ void RDLogPlay::move(int from_line,int to_line)
offset=1;
}
RDLogModel::move(from_line,to_line);
if(from_line>to_line) {
UpdateStartTimes(to_line);
}
else {
UpdateStartTimes(from_line);
}
UpdateStartTimes();
SetTransTimer();
UpdatePostPoint();
emit inserted(to_line);
@ -1072,7 +1073,7 @@ void RDLogPlay::move(int from_line,int to_line)
makeNext(nextLine()+1);
}
else {
emit transportChanged();
ChangeTransport();
}
}
}
@ -1297,7 +1298,7 @@ void RDLogPlay::lineModified(int line)
RDLogLine *next_logline;
SetTransTimer();
UpdateStartTimes(line);
UpdateStartTimes();
if((logline=logLine(line))!=NULL) {
if((next_logline=logLine(line+1))==NULL) {
@ -1317,7 +1318,7 @@ void RDLogPlay::lineModified(int line)
line=lines[count-1];
}
UpdatePostPoint();
emit transportChanged();
ChangeTransport();
}
@ -1362,6 +1363,25 @@ QTime RDLogPlay::nextStop() const
}
int RDLogPlay::startOfHour(int hour) const
{
for(int i=0;i<lineCount();i++) {
RDLogLine *ll=logLine(i);
if(ll->startTime(RDLogLine::Predicted).isValid()) {
if(ll->startTime(RDLogLine::Predicted).hour()==hour) {
return i;
}
}
if(ll->startTime(RDLogLine::Imported).isValid()) {
if(ll->startTime(RDLogLine::Imported).hour()==hour) {
return i;
}
}
}
return -1;
}
bool RDLogPlay::running(bool include_paused)
{
if(runningEvents(NULL,include_paused)==0) {
@ -1388,6 +1408,15 @@ bool RDLogPlay::isRefreshable() const
}
void RDLogPlay::setTimeMode(RDAirPlayConf::TimeMode mode)
{
if(play_time_mode!=mode) {
play_time_mode=mode;
emit dataChanged(createIndex(0,0),createIndex(0,lineCount()));
}
}
void RDLogPlay::transTimerData()
{
int lines[TRANSPORT_QUANTITY];
@ -1553,11 +1582,11 @@ void RDLogPlay::segueEndData(int id)
(logline->status()==RDLogLine::Finishing)) {
((RDPlayDeck *)logline->playDeck())->stop();
CleanupEvent(id);
UpdateStartTimes(line);
UpdateStartTimes();
LogTraffic(logline,(RDLogLine::PlaySource)(play_id+1),
RDAirPlayConf::TrafficFinish,play_onair_flag);
emit stopped(line);
emit transportChanged();
ChangeTransport();
}
}
@ -1609,10 +1638,10 @@ void RDLogPlay::macroStartedData()
logline->
setStartTime(RDLogLine::Initial,
QTime::currentTime().addMSecs(rda->station()->timeOffset()));
UpdateStartTimes(line);
UpdateStartTimes();
emit played(line);
UpdatePostPoint();
emit transportChanged();
ChangeTransport();
}
@ -1636,7 +1665,7 @@ void RDLogPlay::macroFinishedData()
refresh();
play_refresh_pending=false;
}
emit transportChanged();
ChangeTransport();
}
@ -1654,7 +1683,7 @@ void RDLogPlay::macroStoppedData()
RDAirPlayConf::TrafficMacro,play_onair_flag);
}
UpdatePostPoint();
emit transportChanged();
ChangeTransport();
}
@ -1757,6 +1786,118 @@ void RDLogPlay::notificationReceivedData(RDNotification *notify)
}
QString RDLogPlay::cellText(int col,int row,RDLogLine *ll) const
{
if(col==0) { // Start time
if((ll->status()==RDLogLine::Scheduled)||
(ll->status()==RDLogLine::Paused)) {
if(ll->timeType()==RDLogLine::Hard) {
return tr("T")+TimeString(ll->startTime(RDLogLine::Logged));
}
if(!ll->startTime(RDLogLine::Predicted).isNull()) {
return TimeString(ll->startTime(RDLogLine::Predicted));
}
return QString("");
}
return TimeString(ll->startTime(RDLogLine::Actual));
}
if(((ll->cutNumber()<0)&&(ll->type()==RDLogLine::Cart))) {
if(col==5) { // Title
if(ll->state()==RDLogLine::NoCart) {
return tr("[CART NOT FOUND]");
}
}
if(col==6) { // Artist
if(ll->state()==RDLogLine::NoCut) {
return tr("[NO AUDIO AVAILABLE]");
}
}
}
return RDLogModel::cellText(col,row,ll);
}
QFont RDLogPlay::cellTextFont(int col,int row,RDLogLine *ll) const
{
if(ll->timeType()==RDLogLine::Hard) {
return boldFont();
}
return RDLogModel::cellTextFont(col,row,ll);
}
QColor RDLogPlay::cellTextColor(int col,int row,RDLogLine *ll) const
{
if(col==3) {
return ll->groupColor();
}
if(ll->timeType()==RDLogLine::Hard) {
return Qt::blue;
}
return RDLogModel::cellTextColor(col,row,ll);
}
QColor RDLogPlay::rowBackgroundColor(int row,RDLogLine *ll) const
{
switch(ll->status()) {
case RDLogLine::Scheduled:
case RDLogLine::Auditioning:
if((ll->type()==RDLogLine::Cart)&&
(ll->state()==RDLogLine::NoCart)) {
return LOG_ERROR_COLOR;
}
else {
if(((ll->cutNumber()<0)&&(ll->type()==RDLogLine::Cart))||
(ll->state()==RDLogLine::NoCut)) {
if((play_next_line>=0)&&(play_next_line==row)) {
return LOG_NEXT_COLOR;
}
return LOG_ERROR_COLOR;
}
else {
if((play_next_line>=0)&&(play_next_line==row)) {
if(ll->evergreen()) {
return LOG_EVERGREEN_COLOR;
}
else {
return LOG_NEXT_COLOR;
}
}
else {
if(ll->evergreen()) {
return LOG_EVERGREEN_COLOR;
}
else {
return LOG_SCHEDULED_COLOR;
}
}
}
}
break;
case RDLogLine::Playing:
case RDLogLine::Finishing:
return LOG_PLAYING_COLOR;
case RDLogLine::Paused:
return LOG_PAUSED_COLOR;
case RDLogLine::Finished:
if(ll->state()==RDLogLine::Ok) {
return LOG_FINISHED_COLOR;
}
return LOG_ERROR_COLOR;
}
return RDLogModel::rowBackgroundColor(row,ll);
}
bool RDLogPlay::StartEvent(int line,RDLogLine::TransType trans_type,
int trans_length,RDLogLine::StartSource src,
int mport,int duck_length)
@ -1980,7 +2121,7 @@ bool RDLogPlay::StartEvent(int line,RDLogLine::TransType trans_type,
LogTraffic(logline,(RDLogLine::PlaySource)(play_id+1),
RDAirPlayConf::TrafficMacro,play_onair_flag);
FinishEvent(line);
emit transportChanged();
ChangeTransport();
rda->syslog(LOG_INFO,
"log engine: asynchronously executed macro cart: Line: %d Cart: %u",
line,logline->cartNumber());
@ -2018,7 +2159,7 @@ bool RDLogPlay::StartEvent(int line,RDLogLine::TransType trans_type,
// Skip Past
//
logline->setStatus(RDLogLine::Finished);
UpdateStartTimes(line);
UpdateStartTimes();
emit played(line);
FinishEvent(line);
emit nextEventChanged(play_next_line);
@ -2160,7 +2301,7 @@ void RDLogPlay::CleanupEvent(int id)
}
void RDLogPlay::UpdateStartTimes(int line)
void RDLogPlay::UpdateStartTimes()
{
QTime time;
QTime new_time;
@ -2176,13 +2317,13 @@ void RDLogPlay::UpdateStartTimes(int line)
RDLogLine *next_logline;
RDLogLine::TransType next_trans;
int lines[TRANSPORT_QUANTITY];
bool hours[24]={false};
int line=play_next_line;
if((running=runningEvents(lines,false))>0) {
line=lines[0];
}
else {
line=play_next_line;
}
for(int i=line;i<lineCount();i++) {
if((logline=logLine(i))!=NULL) {
if((next_logline=logLine(nextLine(i)))!=NULL) {
@ -2192,21 +2333,19 @@ void RDLogPlay::UpdateStartTimes(int line)
next_trans=RDLogLine::Stop;
}
stop=false;
switch(logline->status()) {
case RDLogLine::Playing:
case RDLogLine::Finishing:
if((logline->status()==RDLogLine::Playing)||
(logline->status()==RDLogLine::Finishing)){
time=logline->startTime(RDLogLine::Actual);
break;
default:
}
else {
time=GetStartTime(logline->startTime(RDLogLine::Logged),
logline->transType(),
logline->timeType(),
time,prev_total_length,prev_segue_length,
&stop,running);
logline->setStartTime(RDLogLine::Predicted,time);
break;
}
if(stop&&(!stop_set)) {
next_stop=time.addMSecs(prev_total_length);
stop_set=true;
@ -2220,23 +2359,19 @@ void RDLogPlay::UpdateStartTimes(int line)
time.addMSecs(logline->effectiveLength()-
logline->playPosition());
switch(logline->status()) {
case RDLogLine::Scheduled:
case RDLogLine::Paused:
if((logline->status()==RDLogLine::Scheduled)||
(logline->status()==RDLogLine::Paused)) {
prev_total_length=logline->effectiveLength()-
logline->playPosition();
prev_segue_length=
logline->segueLength(next_trans)-logline->playPosition();
end_time=
time.addMSecs(logline->effectiveLength()-
logline->playPosition());
break;
default:
time.addMSecs(logline->effectiveLength()-logline->playPosition());
}
else {
prev_total_length=logline->effectiveLength();
prev_segue_length=
logline->segueLength(next_trans);
end_time=
time.addMSecs(logline->effectiveLength());
prev_segue_length=logline->segueLength(next_trans);
end_time=time.addMSecs(logline->effectiveLength());
}
}
}
@ -2246,6 +2381,27 @@ void RDLogPlay::UpdateStartTimes(int line)
play_next_stop=next_stop;
emit nextStopChanged(play_next_stop);
}
emit dataChanged(createIndex(0,0),createIndex(0,lineCount()));
for(int i=0;i<lineCount();i++) {
RDLogLine *ll=logLine(i);
if(ll->startTime(RDLogLine::Predicted).isValid()) {
hours[ll->startTime(RDLogLine::Predicted).hour()]=true;
}
else {
if(ll->startTime(RDLogLine::Imported).isValid()) {
hours[ll->startTime(RDLogLine::Imported).hour()]=true;
}
}
}
for(int i=0;i<24;i++) {
if(hours[i]!=play_hours[i]) {
emit hourChanged(i,hours[i]);
play_hours[i]=hours[i];
}
}
SendNowNext();
}
@ -2274,7 +2430,7 @@ void RDLogPlay::FinishEvent(int line)
}
}
}
UpdateStartTimes(line);
UpdateStartTimes();
emit stopped(line);
}
@ -2454,7 +2610,6 @@ void RDLogPlay::AdvanceActiveEvent()
}
}
else {
//if(line<(size()-1)) {
if(line<(lineCount())) {
RDLogLine *logline;
if((logline=logLine(line+1))!=NULL) {
@ -2601,8 +2756,9 @@ bool RDLogPlay::GetNextPlayable(int *line,bool skip_meta,bool forced_start)
emit modified(i);
}
else {
if(logline->status()==RDLogLine::Scheduled || logline->status()==RDLogLine::Paused ||
logline->status()==RDLogLine::Auditioning) {
if((logline->status()==RDLogLine::Scheduled)||
(logline->status()==RDLogLine::Paused)||
(logline->status()==RDLogLine::Auditioning)) {
if(((logline->transType()==RDLogLine::Stop)||
(play_op_mode==RDAirPlayConf::LiveAssist))&&((i-skipped)!=*line)) {
makeNext(i);
@ -2656,8 +2812,6 @@ void RDLogPlay::LogPlayEvent(RDLogLine *logline)
void RDLogPlay::RefreshEvents(int line,int line_quan,bool force_update)
{
//QTime st=QTime::currentTime();
//
// Check Event Status
//
@ -2698,6 +2852,16 @@ void RDLogPlay::RefreshEvents(int line,int line_quan,bool force_update)
}
void RDLogPlay::ChangeTransport()
{
emit transportChanged();
if(play_next_line>=0) {
emit dataChanged(createIndex(play_next_line,0),
createIndex(play_next_line+6,columnCount()));
}
}
void RDLogPlay::Playing(int id)
{
RDLogLine *logline;
@ -2706,7 +2870,7 @@ void RDLogPlay::Playing(int id)
if((logline=logLine(line))==NULL) {
return;
}
UpdateStartTimes(line);
UpdateStartTimes();
emit played(line);
AdvanceActiveEvent();
UpdatePostPoint();
@ -2717,7 +2881,7 @@ void RDLogPlay::Playing(int id)
play_grace_timer->stop();
}
LogPlayEvent(logline);
emit transportChanged();
ChangeTransport();
}
@ -2730,12 +2894,12 @@ void RDLogPlay::Paused(int id)
logline->setPortName("");
logline->setStatus(RDLogLine::Paused);
}
UpdateStartTimes(line);
UpdateStartTimes();
emit paused(line);
UpdatePostPoint();
LogTraffic(logLine(line),(RDLogLine::PlaySource)(play_id+1),
RDAirPlayConf::TrafficPause,play_onair_flag);
emit transportChanged();
ChangeTransport();
}
@ -2749,7 +2913,7 @@ void RDLogPlay::Stopped(int id)
int line=GetLineById(id);
int lines[TRANSPORT_QUANTITY];
CleanupEvent(id);
UpdateStartTimes(line);
UpdateStartTimes();
emit stopped(line);
LogTraffic(logLine(line),(RDLogLine::PlaySource)(play_id+1),
RDAirPlayConf::TrafficStop,play_onair_flag);
@ -2763,7 +2927,7 @@ void RDLogPlay::Stopped(int id)
if(runningEvents(lines)==0) {
next_channel=0;
}
emit transportChanged();
ChangeTransport();
}
@ -2793,7 +2957,7 @@ void RDLogPlay::Finished(int id)
}
LogTraffic(logline,(RDLogLine::PlaySource)(play_id+1),
RDAirPlayConf::TrafficFinish,play_onair_flag);
emit transportChanged();
ChangeTransport();
}
@ -2839,6 +3003,24 @@ RDLogLine::TransType RDLogPlay::GetTransType(const QString &logname,int line)
}
QString RDLogPlay::TimeString(const QTime &time) const
{
QString ret;
switch(play_time_mode) {
case RDAirPlayConf::TwelveHour:
ret=time.toString("h:mm:ss.zzz");
ret=ret.left(ret.length()-2);
ret+=(" "+time.toString("ap"));
break;
case RDAirPlayConf::TwentyFourHour:
ret=time.toString("hh:mm:ss.zzz").left(10);
break;
}
return ret;
}
bool RDLogPlay::ClearBlock(int start_line)
{
RDLogLine::Status status;
@ -2979,15 +3161,16 @@ void RDLogPlay::SendNowNext()
//
play_pad_socket->write(QString("{\r\n").toUtf8());
play_pad_socket->write(QString(" \"padUpdate\": {\r\n").toUtf8());
play_pad_socket->write(RDJsonField("dateTime",QDateTime::currentDateTime(),8).
toUtf8());
play_pad_socket->write(RDJsonField("hostName",
rda->station()->name(),8).toUtf8());
play_pad_socket->write(RDJsonField("shortHostName",
rda->station()->shortName(),8).toUtf8());
play_pad_socket->
write(RDJsonField("dateTime",QDateTime::currentDateTime(),8).toUtf8());
play_pad_socket->
write(RDJsonField("hostName",rda->station()->name(),8).toUtf8());
play_pad_socket->
write(RDJsonField("shortHostName",rda->station()->shortName(),8).toUtf8());
play_pad_socket->write(RDJsonField("machine",play_id+1,8));
play_pad_socket->write(RDJsonField("onairFlag",play_onair_flag,8));
play_pad_socket->write(RDJsonField("mode",RDAirPlayConf::logModeText(play_op_mode),8));
play_pad_socket->
write(RDJsonField("mode",RDAirPlayConf::logModeText(play_op_mode),8));
//
// Service
@ -3142,12 +3325,12 @@ void RDLogPlay::LogTraffic(RDLogLine *logline,RDLogLine::PlaySource src,
return;
}
QString eventDateTimeSQL = "NULL";
QString evt_sql="NULL";
if(datetime.isValid() && logline->startTime(RDLogLine::Actual).isValid())
eventDateTimeSQL = RDCheckDateTime(QDateTime(datetime.date(),
if(datetime.isValid()&&logline->startTime(RDLogLine::Actual).isValid()) {
evt_sql=RDCheckDateTime(QDateTime(datetime.date(),
logline->startTime(RDLogLine::Actual)), "yyyy-MM-dd hh:mm:ss");
}
sql=QString("insert into ELR_LINES set ")+
"SERVICE_NAME=\""+RDEscapeString(serviceName())+"\","+
QString().sprintf("LENGTH=%d,",length)+
@ -3155,7 +3338,7 @@ void RDLogPlay::LogTraffic(RDLogLine *logline,RDLogLine::PlaySource src,
QString().sprintf("LOG_ID=%d,",logline->id())+
QString().sprintf("CART_NUMBER=%u,",logline->cartNumber())+
"STATION_NAME=\""+RDEscapeString(rda->station()->name())+"\","+
"EVENT_DATETIME="+eventDateTimeSQL+","+
"EVENT_DATETIME="+evt_sql+","+
QString().sprintf("EVENT_TYPE=%d,",action)+
QString().sprintf("EVENT_SOURCE=%d,",logline->source())+
"EXT_START_TIME="+RDCheckDateTime(logline->extStartTime(),"hh:mm:ss")+","+

View File

@ -21,8 +21,6 @@
#ifndef RDLOGPLAY_H
#define RDLOGPLAY_H
#include <vector>
#include <QDateTime>
#include <QObject>
#include <QSignalMapper>
@ -87,8 +85,10 @@ class RDLogPlay : public RDLogModel
void clear();
void insert(int line,int cartnum,RDLogLine::TransType next_type,
RDLogLine::TransType type=RDLogLine::Play);
void insert(int line,RDLogLine *logline,bool update=true,bool preserv_custom_transition=false);
void remove(int line,int num_lines,bool update=true,bool preserv_custom_transition=false);
void insert(int line,RDLogLine *logline,bool update=true,
bool preserv_custom_transition=false);
void remove(int line,int num_lines,bool update=true,
bool preserv_custom_transition=false);
void move(int from_line,int to_line);
void copy(int from_line,int to_line,
RDLogLine::TransType type=RDLogLine::Play);
@ -105,10 +105,14 @@ class RDLogPlay : public RDLogModel
RDLogLine::Status status(int line);
QTime startTime(int line);
QTime nextStop() const;
int startOfHour(int hour) const;
bool running(bool include_paused=true);
void resync();
bool isRefreshable() const;
public slots:
void setTimeMode(RDAirPlayConf::TimeMode mode);
private slots:
void transTimerData();
void graceTimerData();
@ -123,7 +127,6 @@ class RDLogPlay : public RDLogModel
void macroFinishedData();
void macroStoppedData();
void timescalingSupportedData(int card,bool state);
// void rescanEventsData();
void auditionStartedData();
void auditionStoppedData();
void notificationReceivedData(RDNotification *notify);
@ -135,6 +138,7 @@ class RDLogPlay : public RDLogModel
void inserted(int line);
void removed(int line,int num,bool moving);
void modified(int line);
void hourChanged(int hour,bool state);
void auditionHeadPlayed(int line);
void auditionTailPlayed(int line);
void auditionStopped(int line);
@ -153,12 +157,18 @@ class RDLogPlay : public RDLogModel
void channelStarted(int id,int mport,int card,int port);
void channelStopped(int id,int mport,int card,int port);
protected:
QString cellText(int col,int line,RDLogLine *ll) const;
QFont cellTextFont(int col,int row,RDLogLine *ll) const;
QColor cellTextColor(int col,int row,RDLogLine *ll) const;
QColor rowBackgroundColor(int row,RDLogLine *ll) const;
private:
bool StartEvent(int line,RDLogLine::TransType trans_type,int trans_length,
RDLogLine::StartSource src,int mport=-1,int duck_length=0);
bool StartAudioEvent(int line);
void CleanupEvent(int id);
void UpdateStartTimes(int line);
void UpdateStartTimes();
void FinishEvent(int line);
QTime GetStartTime(QTime sched_time,RDLogLine::TransType trans_type,
RDLogLine::TimeType time_type,QTime prev_time,
@ -177,6 +187,7 @@ class RDLogPlay : public RDLogModel
bool GetNextPlayable(int *line,bool skip_meta,bool forced_start=false);
void LogPlayEvent(RDLogLine *logline);
void RefreshEvents(int line,int line_quan,bool force_update=false);
void ChangeTransport();
void Playing(int id);
void Paused(int id);
void Stopping(int id);
@ -184,6 +195,7 @@ class RDLogPlay : public RDLogModel
void Finished(int id);
void ClearChannel(int deckid);
RDLogLine::TransType GetTransType(const QString &logname,int line);
QString TimeString(const QTime &time) const;
bool ClearBlock(int start_line);
void SendNowNext();
QString GetPadJson(const QString &name,RDLogLine *ll,
@ -193,6 +205,7 @@ class RDLogPlay : public RDLogModel
RDAirPlayConf::TrafficAction action,bool onair_flag) const;
RDCae *play_cae;
RDAirPlayConf::OpMode play_op_mode;
RDAirPlayConf::TimeMode play_time_mode;
int play_slot_id[LOGPLAY_MAX_PLAYS];
int play_segue_length;
int play_trans_length;
@ -243,6 +256,7 @@ class RDLogPlay : public RDLogModel
int play_audition_preroll;
RDEventPlayer *play_event_player;
RDUnixSocket *play_pad_socket;
bool play_hours[24];
};

View File

@ -51,6 +51,7 @@ dist_rdairplay_SOURCES = button_log.cpp button_log.h\
list_logs.cpp list_logs.h\
local_macros.cpp colors.h\
loglinebox.cpp loglinebox.h\
logtableview.cpp logtableview.h\
mode_display.cpp mode_display.h\
pie_counter.cpp pie_counter.h\
post_counter.cpp post_counter.h\
@ -67,6 +68,7 @@ nodist_rdairplay_SOURCES = moc_button_log.cpp\
moc_list_log.cpp\
moc_list_logs.cpp\
moc_loglinebox.cpp\
moc_logtableview.cpp\
moc_mode_display.cpp\
moc_pie_counter.cpp\
moc_post_counter.cpp\

View File

@ -97,11 +97,9 @@ void HourSelector::setTimeMode(RDAirPlayConf::TimeMode mode)
}
void HourSelector::updateHours(bool states[24])
void HourSelector::updateHour(int hour,bool state)
{
for(unsigned i=0;i<24;i++) {
hour_button[i]->setEnabled(states[i]);
}
hour_button[hour]->setEnabled(state);
}

View File

@ -31,7 +31,9 @@ class HourSelector : public RDWidget
HourSelector(QWidget *parent=0);
QSizePolicy sizePolicy() const;
void setTimeMode(RDAirPlayConf::TimeMode mode);
void updateHours(bool states[24]);
public slots:
void updateHour(int hour,bool state);
signals:
void hourSelected(int hour);

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
// list_log.h
//
// The full log list widget for RDAirPlay.
// The full log widget for RDAirPlay.
//
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
//
@ -21,14 +21,14 @@
#ifndef LIST_LOG_H
#define LIST_LOG_H
#include <rdlogplay.h>
#include <rdwidget.h>
#include "edit_event.h"
#include "hourselector.h"
#include "lib_listview.h"
#include "list_logs.h"
#define END_MARKER_ID -2
#include "logtableview.h"
class ListLog : public RDWidget
{
@ -38,9 +38,6 @@ class ListLog : public RDWidget
QWidget *parent=0);
QSize sizeHint() const;
QSizePolicy sizePolicy() const;
void refresh();
void refresh(int line);
void setStatus(int line,RDLogLine::Status status);
RDAirPlayConf::ActionMode actionMode() const;
void setActionMode(RDAirPlayConf::ActionMode mode,int *cartnum=0);
void setOpMode(RDAirPlayConf::OpMode mode);
@ -62,43 +59,29 @@ class ListLog : public RDWidget
void takeButtonData();
void playButtonData();
void modifyButtonData();
void doubleclickedData(Q3ListViewItem *,const QPoint &,int);
void doubleClickedData(const QModelIndex &index);
void scrollButtonData();
void refreshButtonData();
void nextButtonData();
void loadButtonData();
void logReloadedData();
void logPlayedData(int line);
void logPausedData(int line);
void logStoppedData(int line);
void logInsertedData(int line);
void logRemovedData(int line,int num,bool moving);
void selectionChangedData();
void selectionChangedData(const QItemSelection &new_sel,
const QItemSelection &old_sel);
void transportChangedData();
void modifiedData(int line);
void modelResetData();
void refreshabilityChangedData(bool state);
void cartDroppedData(int line,RDLogLine *ll);
private:
enum PlayButtonMode {ButtonDisabled=0,ButtonPlay=1,ButtonStop=2};
void RefreshList();
void RefreshList(int line);
void RefreshItem(RDListViewItem *l,int line);
int CurrentLine();
RDLogLine::Status CurrentStatus();
RDLogLine::State CurrentState();
void ClearSelection();
RDListViewItem *GetItem(int line);
void UpdateTimes(int removed_line=-1,int num_lines=0);
void ScrollTo(int line);
void UpdateColor(int line,bool next=false);
void SetColor();
void SetPlaybuttonMode(ListLog::PlayButtonMode mode);
QString TimeString(const QTime &time) const;
void UpdateHourSelector();
int PredictedStartHour(RDListViewItem *item);
HourSelector *list_hour_selector;
LibListView *list_log_list;
LogTableView *list_log_view;
RDLogPlay *list_log;
ListLogs *list_logs_dialog;
RDAirPlayConf::ActionMode list_action_mode;
@ -128,14 +111,6 @@ class ListLog : public RDWidget
bool list_scroll;
bool list_suspended_scroll;
QPalette list_scroll_color[2];
QPixmap *list_playout_map;
QPixmap *list_macro_map;
QPixmap *list_chain_map;
QPixmap *list_track_cart_map;
QPixmap *list_mic16_map;
QPixmap *list_notemarker_map;
QPixmap *list_traffic_map;
QPixmap *list_music_map;
bool list_pause_allowed;
bool list_audition_head_playing;
bool list_audition_tail_playing;

View File

@ -0,0 +1,56 @@
// logtableview.cpp
//
// TableView widget for RDAirPlay
//
// (C) Copyright 2002-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 <rdcartdrag.h>
#include <rdlogplay.h>
#include "logtableview.h"
LogTableView::LogTableView(QWidget *parent)
: QTableView(parent)
{
setAcceptDrops(true);
}
void LogTableView::dragEnterEvent(QDragEnterEvent *e)
{
e->accept(RDCartDrag::canDecode(e));
}
void LogTableView::dragMoveEvent(QDragMoveEvent *e)
{
e->accept(RDCartDrag::canDecode(e));
}
void LogTableView::dropEvent(QDropEvent *e)
{
RDLogLine ll;
int line=-1;
int y_pos=e->pos().y();
if(RDCartDrag::decode(e,&ll)) {
line=rowAt(y_pos);
emit cartDropped(line,&ll);
}
}

47
rdairplay/logtableview.h Normal file
View File

@ -0,0 +1,47 @@
// logtableview.h
//
// The Log TableView widget for RDAirPlay
//
// (C) Copyright 2002-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 LOGTABLEVIEW_H
#define LOGTABLEVIEW_H
#include <QDropEvent>
#include <QDragEnterEvent>
#include <QTableView>
#include <rdlog_line.h>
class LogTableView : public QTableView
{
Q_OBJECT
public:
LogTableView(QWidget *parent);
signals:
void cartDropped(int line,RDLogLine *ll);
protected:
void dragEnterEvent(QDragEnterEvent *e);
void dragMoveEvent(QDragMoveEvent *e);
void dropEvent(QDropEvent *e);
};
#endif // LOGTABLEVIEW_H

View File

@ -23,9 +23,9 @@
#include <sys/mman.h>
#include <sys/wait.h>
#include <qapplication.h>
#include <qmessagebox.h>
#include <qtranslator.h>
#include <QApplication>
#include <QMessageBox>
#include <QTranslator>
#include <rdconf.h>
#include <rdgetpasswd.h>
@ -39,7 +39,6 @@
//
// Global Resources
//
RDAudioPort *rdaudioport_conf;
RDEventPlayer *rdevent_player;
RDCartDialog *rdcart_dialog;
MainWidget *prog_ptr;
@ -1447,7 +1446,7 @@ void MainWidget::selectClickedData(int id,int line,RDLogLine::Status status)
rda->airplayConf()->defaultTransType());
air_log[id]->logLine(air_log[id]->lineCount()-1)->
setTransType(rda->airplayConf()->defaultTransType());
air_log_list[id]->refresh(air_log[id]->lineCount()-1);
air_log[id]->update(air_log[id]->lineCount()-1);
}
else {
air_log[id]->
@ -1455,7 +1454,7 @@ void MainWidget::selectClickedData(int id,int line,RDLogLine::Status status)
rda->airplayConf()->defaultTransType());
air_log[id]->logLine(line)->
setTransType(rda->airplayConf()->defaultTransType());
air_log_list[id]->refresh(line);
air_log[id]->update(line);
}
SetActionMode(StartButton::Stop);
break;
@ -1484,14 +1483,14 @@ void MainWidget::selectClickedData(int id,int line,RDLogLine::Status status)
if(air_source_id==id) {
if(line<0) {
air_log[id]->move(air_copy_line,air_log[id]->lineCount());
air_log_list[id]->refresh(air_log[id]->lineCount()-1);
air_log[id]->update(air_log[id]->lineCount()-1);
}
else {
if(line>air_copy_line) {
line--;
}
air_log[id]->move(air_copy_line,line);
air_log_list[id]->refresh(line);
air_log[id]->update(line);
}
}
else {
@ -1499,12 +1498,12 @@ void MainWidget::selectClickedData(int id,int line,RDLogLine::Status status)
if(line<0) {
air_log[id]->
insert(air_log[id]->lineCount(),air_add_cart,RDLogLine::Play);
air_log_list[id]->refresh(air_log[id]->lineCount()-1);
air_log[id]->update(air_log[id]->lineCount()-1);
}
else {
air_log[id]->
insert(line,air_add_cart,air_log[id]->nextTransType(line));
air_log_list[id]->refresh(line);
air_log[id]->update(line);
}
}
SetActionMode(StartButton::Stop);
@ -1540,7 +1539,7 @@ void MainWidget::selectClickedData(int id,int line,RDLogLine::Status status)
rda->airplayConf()->defaultTransType());
air_log[id]->logLine(air_log[id]->lineCount()-1)->
setTransType(rda->airplayConf()->defaultTransType());
air_log_list[id]->refresh(air_log[id]->lineCount()-1);
air_log[id]->update(air_log[id]->lineCount()-1);
}
else {
air_log[id]->
@ -1548,7 +1547,7 @@ void MainWidget::selectClickedData(int id,int line,RDLogLine::Status status)
rda->airplayConf()->defaultTransType());
air_log[id]->logLine(line)->
setTransType(rda->airplayConf()->defaultTransType());
air_log_list[id]->refresh(line);
air_log[id]->update(line);
}
}
SetActionMode(StartButton::Stop);
@ -1612,7 +1611,7 @@ void MainWidget::cartDroppedData(int id,int line,RDLogLine *ll)
rda->airplayConf()->defaultTransType());
air_log[id]->logLine(air_log[id]->lineCount()-1)->
setTransType(rda->airplayConf()->defaultTransType());
air_log_list[id]->refresh(air_log[id]->lineCount()-1);
air_log[id]->update(air_log[id]->lineCount()-1);
}
else {
air_log[id]->
@ -1620,7 +1619,7 @@ void MainWidget::cartDroppedData(int id,int line,RDLogLine *ll)
rda->airplayConf()->defaultTransType());
air_log[id]->logLine(line)->
setTransType(rda->airplayConf()->defaultTransType());
air_log_list[id]->refresh(line);
air_log[id]->update(line);
}
}
}

View File

@ -28,6 +28,7 @@ x11 {
SOURCES += list_logs.cpp
SOURCES += local_macros.cpp
SOURCES += loglinebox.cpp
SOURCES += logtableview.cpp
SOURCES += mode_display.cpp
SOURCES += pie_counter.cpp
SOURCES += post_counter.cpp
@ -46,6 +47,7 @@ x11 {
HEADERS += list_log.h
HEADERS += list_logs.h
HEADERS += loglinebox.h
HEADERS += logtableview.h
HEADERS += mode_display.h
HEADERS += pie_counter.h
HEADERS += post_counter.h

View File

@ -301,59 +301,59 @@ zápis</translation>
</message>
<message>
<source>--- end of log ---</source>
<translation>--- konec zápisu ---</translation>
<translation type="obsolete">--- konec zápisu ---</translation>
</message>
<message>
<source>PLAY</source>
<translation>PŘEHRÁT</translation>
<translation type="obsolete">PŘEHRÁT</translation>
</message>
<message>
<source>STOP</source>
<translation>ZASTAVIT</translation>
<translation type="obsolete">ZASTAVIT</translation>
</message>
<message>
<source>SEGUE</source>
<translation>PŘECHOD</translation>
<translation type="obsolete">PŘECHOD</translation>
</message>
<message>
<source>MARKER</source>
<translation>ZNAČKA</translation>
<translation type="obsolete">ZNAČKA</translation>
</message>
<message>
<source>TRACK</source>
<translation>STOPA</translation>
<translation type="obsolete">STOPA</translation>
</message>
<message>
<source>LINK</source>
<translation>ODKAZ</translation>
<translation type="obsolete">ODKAZ</translation>
</message>
<message>
<source>[music import]</source>
<translation>[zavedení hudby]</translation>
<translation type="obsolete">[zavedení hudby]</translation>
</message>
<message>
<source>[traffic import]</source>
<translation>[zavedení přenosu]</translation>
<translation type="obsolete">[zavedení přenosu]</translation>
</message>
<message>
<source>CHAIN TO</source>
<translation>ŘETĚZ K</translation>
<translation type="obsolete">ŘETĚZ K</translation>
</message>
<message>
<source>[CART NOT FOUND]</source>
<translation>[VOZÍK NENALEZEN]</translation>
<translation type="obsolete">[VOZÍK NENALEZEN]</translation>
</message>
<message>
<source>[NO VALID CUT AVAILABLE]</source>
<translation>[ŽÁDNÝ PLATNÝ ZÁBĚR NENÍ DOSTUPNÝ]</translation>
<translation type="obsolete">[ŽÁDNÝ PLATNÝ ZÁBĚR NENÍ DOSTUPNÝ]</translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation>[ŽÁDNÝ ZVUK NENÍ DOSTUPNÝ]</translation>
<translation type="obsolete">[ŽÁDNÝ ZVUK NENÍ DOSTUPNÝ]</translation>
</message>
<message>
<source>T</source>
<translation type="unfinished">T</translation>
<translation type="obsolete">T</translation>
</message>
<message>
<source>Pause</source>
@ -381,7 +381,7 @@ zápis</translation>
</message>
<message>
<source>Selected:</source>
<translation>Vybráno:</translation>
<translation type="unfinished">Vybráno:</translation>
</message>
<message>
<source>Audition
@ -399,70 +399,6 @@ poslechu</translation>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Len</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</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>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Album</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</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>Marker</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>
<message>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Est. Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sch. Time</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListLogs</name>

View File

@ -301,59 +301,59 @@ auswählen</translation>
</message>
<message>
<source>--- end of log ---</source>
<translation>--- ende des Logs ---</translation>
<translation type="obsolete">--- ende des Logs ---</translation>
</message>
<message>
<source>PLAY</source>
<translation>PLAY</translation>
<translation type="obsolete">PLAY</translation>
</message>
<message>
<source>STOP</source>
<translation>STOP</translation>
<translation type="obsolete">STOP</translation>
</message>
<message>
<source>SEGUE</source>
<translation>SEGUE</translation>
<translation type="obsolete">SEGUE</translation>
</message>
<message>
<source>MARKER</source>
<translation>MARKER</translation>
<translation type="obsolete">MARKER</translation>
</message>
<message>
<source>TRACK</source>
<translation>TRACK</translation>
<translation type="obsolete">TRACK</translation>
</message>
<message>
<source>LINK</source>
<translation>LINK</translation>
<translation type="obsolete">LINK</translation>
</message>
<message>
<source>[music import]</source>
<translation>[musikimport]</translation>
<translation type="obsolete">[musikimport]</translation>
</message>
<message>
<source>[traffic import]</source>
<translation>[traffic import]</translation>
<translation type="obsolete">[traffic import]</translation>
</message>
<message>
<source>CHAIN TO</source>
<translation>CHAIN TO</translation>
<translation type="obsolete">CHAIN TO</translation>
</message>
<message>
<source>[CART NOT FOUND]</source>
<translation>[CART NICHT GEFUNDEN]</translation>
<translation type="obsolete">[CART NICHT GEFUNDEN]</translation>
</message>
<message>
<source>[NO VALID CUT AVAILABLE]</source>
<translation>[KEIN GÜLTIGER CUT VERFÜGBAR]</translation>
<translation type="obsolete">[KEIN GÜLTIGER CUT VERFÜGBAR]</translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation>[KEIN AUDIO VERFÜGBAR]</translation>
<translation type="obsolete">[KEIN AUDIO VERFÜGBAR]</translation>
</message>
<message>
<source>T</source>
<translation type="unfinished">T</translation>
<translation type="obsolete">T</translation>
</message>
<message>
<source>Pause</source>
@ -381,7 +381,7 @@ auswählen</translation>
</message>
<message>
<source>Selected:</source>
<translation>Ausgewählt:</translation>
<translation type="unfinished">Ausgewählt:</translation>
</message>
<message>
<source>Audition
@ -399,70 +399,6 @@ vorhören</translation>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Len</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</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>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Album</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</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>Marker</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>
<message>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Est. Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sch. Time</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListLogs</name>

View File

@ -291,47 +291,47 @@ Lista</translation>
</message>
<message>
<source>--- end of log ---</source>
<translation>--- fin de la lista ---</translation>
<translation type="obsolete">--- fin de la lista ---</translation>
</message>
<message>
<source>PLAY</source>
<translation>REPRO</translation>
<translation type="obsolete">REPRO</translation>
</message>
<message>
<source>STOP</source>
<translation>PARAR</translation>
<translation type="obsolete">PARAR</translation>
</message>
<message>
<source>SEGUE</source>
<translation>SEGUE</translation>
<translation type="obsolete">SEGUE</translation>
</message>
<message>
<source>MARKER</source>
<translation>MARCADOR</translation>
<translation type="obsolete">MARCADOR</translation>
</message>
<message>
<source>CHAIN TO</source>
<translation>ENCADENAR A</translation>
<translation type="obsolete">ENCADENAR A</translation>
</message>
<message>
<source>[CART NOT FOUND]</source>
<translation>[CARTUCHO NO ENCONTRADO]</translation>
<translation type="obsolete">[CARTUCHO NO ENCONTRADO]</translation>
</message>
<message>
<source>[NO VALID CUT AVAILABLE]</source>
<translation>[NO HAY AUDIOS VÁLIDOS]</translation>
<translation type="obsolete">[NO HAY AUDIOS VÁLIDOS]</translation>
</message>
<message>
<source>T</source>
<translation type="unfinished">T</translation>
<translation type="obsolete">T</translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation>[NO HAY AUDIO DISPONIBLE]</translation>
<translation type="obsolete">[NO HAY AUDIO DISPONIBLE]</translation>
</message>
<message>
<source>TRACK</source>
<translation>PISTA</translation>
<translation type="obsolete">PISTA</translation>
</message>
<message>
<source>LEN</source>
@ -339,15 +339,15 @@ Lista</translation>
</message>
<message>
<source>LINK</source>
<translation>ENLACE</translation>
<translation type="obsolete">ENLACE</translation>
</message>
<message>
<source>[music import]</source>
<translation>[importar música]</translation>
<translation type="obsolete">[importar música]</translation>
</message>
<message>
<source>[traffic import]</source>
<translation>[importar tráfico]</translation>
<translation type="obsolete">[importar tráfico]</translation>
</message>
<message>
<source>EST TIME</source>
@ -381,7 +381,7 @@ Lista</translation>
</message>
<message>
<source>Selected:</source>
<translation>Selecc.:</translation>
<translation type="unfinished">Selecc.:</translation>
</message>
<message>
<source>Audition
@ -399,70 +399,6 @@ Final</translation>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Len</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</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>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Album</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</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>Marker</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>
<message>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Est. Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sch. Time</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListLogs</name>

View File

@ -301,59 +301,59 @@ un Log</translation>
</message>
<message>
<source>--- end of log ---</source>
<translation>-- fin du log --</translation>
<translation type="obsolete">-- fin du log --</translation>
</message>
<message>
<source>PLAY</source>
<translation>LANCER</translation>
<translation type="obsolete">LANCER</translation>
</message>
<message>
<source>STOP</source>
<translation>STOPPER</translation>
<translation type="obsolete">STOPPER</translation>
</message>
<message>
<source>SEGUE</source>
<translation>ENCHAINER</translation>
<translation type="obsolete">ENCHAINER</translation>
</message>
<message>
<source>MARKER</source>
<translation>MARQUE</translation>
<translation type="obsolete">MARQUE</translation>
</message>
<message>
<source>TRACK</source>
<translation>TRACK</translation>
<translation type="obsolete">TRACK</translation>
</message>
<message>
<source>LINK</source>
<translation>LIEN</translation>
<translation type="obsolete">LIEN</translation>
</message>
<message>
<source>[music import]</source>
<translation>[import musique]</translation>
<translation type="obsolete">[import musique]</translation>
</message>
<message>
<source>[traffic import]</source>
<translation>[import pub]</translation>
<translation type="obsolete">[import pub]</translation>
</message>
<message>
<source>CHAIN TO</source>
<translation>LIER A</translation>
<translation type="obsolete">LIER A</translation>
</message>
<message>
<source>[CART NOT FOUND]</source>
<translation>[CART INCONNU]</translation>
<translation type="obsolete">[CART INCONNU]</translation>
</message>
<message>
<source>[NO VALID CUT AVAILABLE]</source>
<translation>[PAS DE CUT DISPONIBLE]</translation>
<translation type="obsolete">[PAS DE CUT DISPONIBLE]</translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation>[PAS DE SON DISPONIBLE]</translation>
<translation type="obsolete">[PAS DE SON DISPONIBLE]</translation>
</message>
<message>
<source>T</source>
<translation type="unfinished">T</translation>
<translation type="obsolete">T</translation>
</message>
<message>
<source>Pause</source>
@ -381,7 +381,7 @@ un Log</translation>
</message>
<message>
<source>Selected:</source>
<translation>Sélection:</translation>
<translation type="unfinished">Sélection:</translation>
</message>
<message>
<source>Audition
@ -403,70 +403,6 @@ la Fin</translation>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Len</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</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>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Album</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</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>Marker</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>
<message>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Est. Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sch. Time</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListLogs</name>

View File

@ -305,19 +305,19 @@ logg</translation>
</message>
<message>
<source>--- end of log ---</source>
<translation>--- slutt loggen ---</translation>
<translation type="obsolete">--- slutt loggen ---</translation>
</message>
<message>
<source>PLAY</source>
<translation>SPEL</translation>
<translation type="obsolete">SPEL</translation>
</message>
<message>
<source>STOP</source>
<translation>STOPP</translation>
<translation type="obsolete">STOPP</translation>
</message>
<message>
<source>SEGUE</source>
<translation>OVERGANG</translation>
<translation type="obsolete">OVERGANG</translation>
</message>
<message>
<source>OVERLAP</source>
@ -325,43 +325,43 @@ logg</translation>
</message>
<message>
<source>MARKER</source>
<translation>MARKØR</translation>
<translation type="obsolete">MARKØR</translation>
</message>
<message>
<source>TRACK</source>
<translation>SPOR</translation>
<translation type="obsolete">SPOR</translation>
</message>
<message>
<source>LINK</source>
<translation>LENKJE</translation>
<translation type="obsolete">LENKJE</translation>
</message>
<message>
<source>[music import]</source>
<translation>[musikkimport]</translation>
<translation type="obsolete">[musikkimport]</translation>
</message>
<message>
<source>[traffic import]</source>
<translation>[trafikkimport]</translation>
<translation type="obsolete">[trafikkimport]</translation>
</message>
<message>
<source>CHAIN TO</source>
<translation>LENK TIL</translation>
<translation type="obsolete">LENK TIL</translation>
</message>
<message>
<source>[CART NOT FOUND]</source>
<translation>[FANN IKKJE KORG]</translation>
<translation type="obsolete">[FANN IKKJE KORG]</translation>
</message>
<message>
<source>[NO VALID CUT AVAILABLE]</source>
<translation>[GYLDIG KUTT FINST IKKJE</translation>
<translation type="obsolete">[GYLDIG KUTT FINST IKKJE</translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation>[LYD FINST IKKJE]</translation>
<translation type="obsolete">[LYD FINST IKKJE]</translation>
</message>
<message>
<source>T</source>
<translation type="unfinished">S</translation>
<translation type="obsolete">S</translation>
</message>
<message>
<source>Pause</source>
@ -397,76 +397,12 @@ Tail</source>
<source>Start</source>
<translation type="unfinished">Start</translation>
</message>
<message>
<source>Selected:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Len</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</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>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Album</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</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>Marker</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>
<message>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Est. Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sch. Time</source>
<source>Selected:</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@ -305,19 +305,19 @@ logg</translation>
</message>
<message>
<source>--- end of log ---</source>
<translation>--- slutt loggen ---</translation>
<translation type="obsolete">--- slutt loggen ---</translation>
</message>
<message>
<source>PLAY</source>
<translation>SPEL</translation>
<translation type="obsolete">SPEL</translation>
</message>
<message>
<source>STOP</source>
<translation>STOPP</translation>
<translation type="obsolete">STOPP</translation>
</message>
<message>
<source>SEGUE</source>
<translation>OVERGANG</translation>
<translation type="obsolete">OVERGANG</translation>
</message>
<message>
<source>OVERLAP</source>
@ -325,43 +325,43 @@ logg</translation>
</message>
<message>
<source>MARKER</source>
<translation>MARKØR</translation>
<translation type="obsolete">MARKØR</translation>
</message>
<message>
<source>TRACK</source>
<translation>SPOR</translation>
<translation type="obsolete">SPOR</translation>
</message>
<message>
<source>LINK</source>
<translation>LENKJE</translation>
<translation type="obsolete">LENKJE</translation>
</message>
<message>
<source>[music import]</source>
<translation>[musikkimport]</translation>
<translation type="obsolete">[musikkimport]</translation>
</message>
<message>
<source>[traffic import]</source>
<translation>[trafikkimport]</translation>
<translation type="obsolete">[trafikkimport]</translation>
</message>
<message>
<source>CHAIN TO</source>
<translation>LENK TIL</translation>
<translation type="obsolete">LENK TIL</translation>
</message>
<message>
<source>[CART NOT FOUND]</source>
<translation>[FANN IKKJE KORG]</translation>
<translation type="obsolete">[FANN IKKJE KORG]</translation>
</message>
<message>
<source>[NO VALID CUT AVAILABLE]</source>
<translation>[GYLDIG KUTT FINST IKKJE</translation>
<translation type="obsolete">[GYLDIG KUTT FINST IKKJE</translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation>[LYD FINST IKKJE]</translation>
<translation type="obsolete">[LYD FINST IKKJE]</translation>
</message>
<message>
<source>T</source>
<translation type="unfinished">S</translation>
<translation type="obsolete">S</translation>
</message>
<message>
<source>Pause</source>
@ -397,76 +397,12 @@ Tail</source>
<source>Start</source>
<translation type="unfinished">Start</translation>
</message>
<message>
<source>Selected:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Len</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</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>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Album</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</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>Marker</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>
<message>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Est. Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sch. Time</source>
<source>Selected:</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@ -330,63 +330,63 @@ Log</source>
</message>
<message>
<source>Selected:</source>
<translation>Selecionado:</translation>
<translation type="unfinished">Selecionado:</translation>
</message>
<message>
<source>--- end of log ---</source>
<translation>Fim da Lista</translation>
<translation type="obsolete">Fim da Lista</translation>
</message>
<message>
<source>PLAY</source>
<translation>TOQUE</translation>
<translation type="obsolete">TOQUE</translation>
</message>
<message>
<source>STOP</source>
<translation>PARE</translation>
<translation type="obsolete">PARE</translation>
</message>
<message>
<source>SEGUE</source>
<translation>SOBRE</translation>
<translation type="obsolete">SOBRE</translation>
</message>
<message>
<source>MARKER</source>
<translation>MARCADOR</translation>
<translation type="obsolete">MARCADOR</translation>
</message>
<message>
<source>TRACK</source>
<translation>PISTA</translation>
<translation type="obsolete">PISTA</translation>
</message>
<message>
<source>LINK</source>
<translation>LINK</translation>
<translation type="obsolete">LINK</translation>
</message>
<message>
<source>[music import]</source>
<translation>[importar música]</translation>
<translation type="obsolete">[importar música]</translation>
</message>
<message>
<source>[traffic import]</source>
<translation>[importar tráfego]</translation>
<translation type="obsolete">[importar tráfego]</translation>
</message>
<message>
<source>CHAIN TO</source>
<translation>CORRENTE PARA</translation>
<translation type="obsolete">CORRENTE PARA</translation>
</message>
<message>
<source>[CART NOT FOUND]</source>
<translation>[CART NÃO ENCONTRADO]</translation>
<translation type="obsolete">[CART NÃO ENCONTRADO]</translation>
</message>
<message>
<source>[NO VALID CUT AVAILABLE]</source>
<translation>[NÃO CONTEÚDO VÁLIDO]</translation>
<translation type="obsolete">[NÃO CONTEÚDO VÁLIDO]</translation>
</message>
<message>
<source>[NO AUDIO AVAILABLE]</source>
<translation>[NÃO ÁUDIO VÁLIDO]</translation>
<translation type="obsolete">[NÃO ÁUDIO VÁLIDO]</translation>
</message>
<message>
<source>T</source>
<translation type="unfinished">T</translation>
<translation type="obsolete">T</translation>
</message>
<message>
<source>Pause</source>
@ -400,70 +400,6 @@ Log</source>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Len</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Trans</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cart</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>Group</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Album</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</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>Marker</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>
<message>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Est. Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sch. Time</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListLogs</name>

View File

@ -710,7 +710,7 @@ void EditLog::insertCartButtonData()
edit_log_model,line,this);
int ret=edit->exec();
if(ret>=0) {
edit_log_model->refresh(line);
edit_log_model->update(line);
SetLogModified(true);
}
else {
@ -744,7 +744,7 @@ void EditLog::insertMarkerButtonData()
edit_marker=new EditMarker(edit_log_model->logLine(line),this);
ret=edit_marker->exec();
if(ret>=0) {
edit_log_model->refresh(line);
edit_log_model->update(line);
SetLogModified(true);
}
else {
@ -761,7 +761,7 @@ void EditLog::insertMarkerButtonData()
edit_track=new EditTrack(edit_log_model->logLine(line),this);
ret=edit_track->exec();
if(ret>=0) {
edit_log_model->refresh(line);
edit_log_model->update(line);
SetLogModified(true);
}
else {
@ -776,7 +776,7 @@ void EditLog::insertMarkerButtonData()
edit_chain=new EditChain(edit_log_model->logLine(line),this);
ret=edit_chain->exec();
if(ret>=0) {
edit_log_model->refresh(line);
edit_log_model->update(line);
SetLogModified(true);
}
else {
@ -854,7 +854,7 @@ void EditLog::editButtonData()
edit_schedcode,edit_service_box->currentText(),
edit_log_model,line,this);
if(edit_cart->exec()>=0) {
edit_log_model->refresh(line);
edit_log_model->update(line);
SetLogModified(true);
}
delete edit_cart;
@ -995,7 +995,7 @@ void EditLog::cartDroppedData(int line,RDLogLine *ll)
edit_log_model->logLine(line)->setTransType(edit_default_trans);
edit_log_model->logLine(line)->setFadeupGain(-3000);
edit_log_model->logLine(line)->setFadedownGain(-3000);
edit_log_model->refresh(line);
edit_log_model->update(line);
SetLogModified(true);
}

View File

@ -72,7 +72,7 @@ void LogModel::setServiceName(const QString &str)
}
QColor LogModel::backgroundColor(int line,RDLogLine *ll) const
QColor LogModel::rowBackgroundColor(int row,RDLogLine *ll) const
{
QDateTime now=QDateTime(QDate::currentDate(),QTime::currentTime());
@ -82,7 +82,7 @@ QColor LogModel::backgroundColor(int line,RDLogLine *ll) const
case RDCart::AlwaysValid:
if(d_group_list->groupIsValid(ll->groupName())||
ll->groupName().isEmpty()) {
return RDLogModel::backgroundColor(line,ll);
return RDLogModel::rowBackgroundColor(row,ll);
}
return RD_CART_INVALID_SERVICE_COLOR;
@ -102,9 +102,9 @@ QColor LogModel::backgroundColor(int line,RDLogLine *ll) const
default:
if(d_group_list->groupIsValid(ll->groupName())||ll->groupName().isEmpty()) {
return RDLogModel::backgroundColor(line,ll);
return RDLogModel::rowBackgroundColor(row,ll);
}
return RD_CART_INVALID_SERVICE_COLOR;
}
return RDLogModel::backgroundColor(line,ll);
return RDLogModel::rowBackgroundColor(row,ll);
}

View File

@ -38,7 +38,7 @@ class LogModel : public RDLogModel
void setServiceName(const QString &str);
protected:
QColor backgroundColor(int line,RDLogLine *ll) const;
QColor rowBackgroundColor(int row,RDLogLine *ll) const;
private:
RDGroupList *d_group_list;

View File

@ -1019,7 +1019,7 @@ void VoiceTracker::resetData()
return;
}
if(d_loaded) {
d_log_model->refresh(line);
d_log_model->update(line);
d_tracks++;
}
LoadBlockLength(d_track_line);
@ -1074,7 +1074,7 @@ void VoiceTracker::insertData(int line,RDLogLine *logline,bool warn)
d_log_model->logLine(line)->setType(RDLogLine::Track);
d_log_model->logLine(line)->setTransType(RDLogLine::Segue);
d_log_model->logLine(line)->setMarkerComment(tr("Voice Track"));
d_log_model->refresh(line);
d_log_model->update(line);
d_tracks++;
d_size_altered=true;

View File

@ -36,7 +36,7 @@ void MainObject::Addcart(int line,unsigned cartnum)
edit_log_model->logLine(line)->setFadeupGain(-3000);
edit_log_model->logLine(line)->setFadedownGain(-3000);
edit_log_model->logLine(line)->setCartNumber(cartnum);
edit_log_model->refresh(line);
edit_log_model->update(line);
edit_modified=true;
}
@ -51,7 +51,7 @@ void MainObject::Addchain(int line,const QString &logname)
edit_log_model->logLine(line)->
setTransType(rda->airplayConf()->defaultTransType());
edit_log_model->logLine(line)->setMarkerLabel(logname);
edit_log_model->refresh(line);
edit_log_model->update(line);
edit_modified=true;
}
@ -67,7 +67,7 @@ void MainObject::Addmarker(int line)
setTransType(rda->airplayConf()->defaultTransType());
edit_log_model->logLine(line)->setMarkerLabel(tr("Label"));
edit_log_model->logLine(line)->setMarkerComment(tr("Marker Comment"));
edit_log_model->refresh(line);
edit_log_model->update(line);
edit_modified=true;
}
@ -82,7 +82,7 @@ void MainObject::Addtrack(int line)
edit_log_model->logLine(line)->
setTransType(rda->airplayConf()->defaultTransType());
edit_log_model->logLine(line)->setMarkerComment(tr("Voice Track"));
edit_log_model->refresh(line);
edit_log_model->update(line);
edit_modified=true;
}
@ -462,7 +462,7 @@ void MainObject::Setcart(int line,unsigned cartnum)
if((logline->type()==RDLogLine::Cart)||
(logline->type()==RDLogLine::Macro)) {
logline->setCartNumber(cartnum);
edit_log_model->refresh(line);
edit_log_model->update(line);
edit_modified=true;
}
else {
@ -482,7 +482,7 @@ void MainObject::Setcomment(int line,const QString &str)
if((logline->type()==RDLogLine::Marker)||
(logline->type()==RDLogLine::Track)) {
logline->setMarkerComment(str);
edit_log_model->refresh(line);
edit_log_model->update(line);
edit_modified=true;
}
else {
@ -516,7 +516,7 @@ void MainObject::Setlabel(int line,const QString &str)
if((logline->type()==RDLogLine::Chain)||
(logline->type()==RDLogLine::Marker)) {
logline->setMarkerLabel(str);
edit_log_model->refresh(line);
edit_log_model->update(line);
edit_modified=true;
}
else {
@ -562,7 +562,7 @@ void MainObject::Settime(int line,RDLogLine::TimeType type,const QTime &time)
void MainObject::Settrans(int line,RDLogLine::TransType type)
{
edit_log_model->logLine(line)->setTransType(type);
edit_log_model->refresh(line);
edit_log_model->update(line);
edit_modified=true;
}