Rivendellaudio/rdadmin/edit_svc.cpp
Fred Gleason e30fe2b0b7 2021-08-31 Fred Gleason <fredg@paravelsystems.com>
* Added a 'SERVICES.INCLUDE_MUS_IMPORT_MARKERS' field to the database.
	* Added a 'SERVICES.INCLUDE_TFC_IMPORT_MARKERS' field to the database.
	* Added a 'LOGS.INCLUDE_MUS_IMPORT_MARKERS' field to the database.
	* Added a 'LOGS.INCLUDE_TFC_IMPORT_MARKERS' field to the database.
	* Incremented the database version to 354.
	* Replaced the 'Include Import Marker in Finished Logs' checkbox
	with 'Include Music Import Markers in Finished Logs' and
	'Include Traffic Import Markers in Finished Logs' checkboxes in
	the 'Edit Service' dialog in rdadmin(1).

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
2021-08-31 13:24:57 -04:00

819 lines
25 KiB
C++

// edit_svc.cpp
//
// Edit a Rivendell Service
//
// (C) Copyright 2002-2021 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 <QMessageBox>
#include <rd.h>
#include <rdapplication.h>
#include <rddb.h>
#include <rdidvalidator.h>
#include <rdpasswd.h>
#include <rdtextvalidator.h>
#include "autofill_carts.h"
#include "edit_svc.h"
#include "globals.h"
#include "edit_svc_perms.h"
#include "test_import.h"
EditSvc::EditSvc(QString svc,QWidget *parent)
: RDDialog(parent)
{
setModal(true);
QString sql;
RDSqlQuery *q;
QString group;
QString autospot;
//
// Fix the Window Size
//
setMinimumWidth(sizeHint().width());
setMaximumWidth(sizeHint().width());
setMinimumHeight(sizeHint().height());
setMaximumHeight(sizeHint().height());
svc_svc=new RDSvc(svc,rda->station(),rda->config());
setWindowTitle("RDAdmin - "+tr("Edit Service"));
//
// Text Validators
//
RDTextValidator *validator=new RDTextValidator(this);
RDIdValidator *log_validator=new RDIdValidator(this);
log_validator->addBannedChar(' ');
//
// General Section
//
QLabel *label=new QLabel("General",this);
label->setGeometry(10,10,120,24);
label->setFont(sectionLabelFont());
label->setAlignment(Qt::AlignLeft);
//
// Service Name
//
svc_name_edit=new QLineEdit(this);
svc_name_edit->setGeometry(185,31,80,19);
svc_name_edit->setMaxLength(10);
svc_name_edit->setReadOnly(true);
label=new QLabel(tr("Service Name:"),this);
label->setGeometry(10,31,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Service Description
//
svc_description_edit=new QLineEdit(this);
svc_description_edit->setGeometry(185,52,240,19);
svc_description_edit->setMaxLength(255);
svc_description_edit->setValidator(validator);
label=new QLabel(tr("Service Description:"),this);
label->setGeometry(10,52,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Service Program Code
//
svc_program_code_edit=new QLineEdit(this);
svc_program_code_edit->setGeometry(185,73,240,19);
svc_program_code_edit->setMaxLength(255);
svc_program_code_edit->setValidator(validator);
label=new QLabel(tr("Program Code:"),this);
label->setGeometry(10,73,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Log Name Template
//
svc_name_template_edit=new QLineEdit(this);
svc_name_template_edit->setGeometry(185,94,240,19);
svc_name_template_edit->setMaxLength(255);
svc_name_template_edit->setValidator(log_validator);
label=new QLabel(tr("Log Name Template:"),this);
label->setGeometry(10,94,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Log Description Template
//
svc_description_template_edit=new QLineEdit(this);
svc_description_template_edit->setGeometry(185,115,240,19);
svc_description_template_edit->setMaxLength(255);
label=new QLabel(tr("Log Description Template:"),this);
label->setGeometry(10,115,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Inline Event Inheritance Log
//
svc_sub_event_inheritance_box=new QComboBox(this);
svc_sub_event_inheritance_box->setGeometry(185,136,240,19);
svc_sub_event_inheritance_box->
insertItem((int)RDSvc::ParentEvent,tr("From Relative Position"));
svc_sub_event_inheritance_box->
insertItem((int)RDSvc::SchedFile,tr("From Scheduler File"));
connect(svc_sub_event_inheritance_box,SIGNAL(activated(const QString &)),
this,SLOT(textChangedData(const QString &)));
label=new QLabel(tr("Inline Event Start/Length")+":",this);
label->setGeometry(10,136,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Voicetracking Group
//
svc_voice_group_box=new QComboBox(this);
svc_voice_group_box->setGeometry(185,157,240,19);
svc_voice_group_box->insertItem(0,tr("[none]"));
label=new QLabel(tr("Voicetrack Group:"),this);
label->setGeometry(10,157,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Autospot Group
//
svc_autospot_group_box=new QComboBox(this);
svc_autospot_group_box->setGeometry(185,178,240,19);
svc_autospot_group_box->insertItem(0,tr("[none]"));
label=new QLabel(tr("AutoSpot Group:"),this);
label->setGeometry(10,178,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Chain Log
//
svc_chain_box=new QCheckBox(this);
svc_chain_box->setGeometry(30,201,15,15);
label=new QLabel(tr("Insert CHAIN TO at log end"),this);
label->setGeometry(50,201,170,19);
label->setAlignment(Qt::AlignLeft);
//
// Default Auto Refresh
//
svc_autorefresh_box=new QCheckBox(this);
svc_autorefresh_box->setGeometry(230,201,15,15);
label=new QLabel(tr("Enable AutoRefresh By Default"),this);
label->setGeometry(250,201,200,19);
label->setAlignment(Qt::AlignLeft);
//
// Autofill Button
//
QPushButton *button=new QPushButton(this);
button->setGeometry(455,31,150,50);
button->setFont(buttonFont());
button->setText(tr("Configure \nAutofill Carts"));
connect(button,SIGNAL(clicked()),this,SLOT(autofillData()));
//
// Default Log Deletion Date
//
svc_loglife_box=new QCheckBox(this);
svc_loglife_box->setGeometry(460,95,15,15);
label=new QLabel(tr("Set Logs to auto-delete"),this);
label->setGeometry(480,95,240,19);
label->setAlignment(Qt::AlignLeft);
svc_loglife_spin=new QSpinBox(this);
svc_loglife_spin->setGeometry(625,93,50,19);
svc_loglife_spin->setRange(0,365);
connect(svc_loglife_box,SIGNAL(toggled(bool)),
svc_loglife_spin,SLOT(setEnabled(bool)));
svc_loglifeorigin_label=new QLabel(tr("days after"),this);
svc_loglifeorigin_label->setGeometry(685,95,100,19);
svc_loglifeorigin_label->setAlignment(Qt::AlignLeft);
connect(svc_loglife_box,SIGNAL(toggled(bool)),
svc_loglifeorigin_label,SLOT(setEnabled(bool)));
svc_loglifeorigin_box=new QComboBox(this);
svc_loglifeorigin_box->insertItem(0,tr("air date"));
svc_loglifeorigin_box->insertItem(1,tr("creation"));
svc_loglifeorigin_box->setGeometry(750,93,100,19);
connect(svc_loglife_box,SIGNAL(toggled(bool)),
svc_loglifeorigin_box,SLOT(setEnabled(bool)));
//
// Purge Expired ELR Data
//
svc_shelflife_box=new QCheckBox(this);
svc_shelflife_box->setGeometry(460,117,15,15);
label=new QLabel(tr("Purge ELR Data"),this);
label->setGeometry(480,117,170,19);
label->setAlignment(Qt::AlignLeft);
svc_shelflife_spin=new QSpinBox(this);
svc_shelflife_spin->setGeometry(580,115,50,19);
svc_shelflife_spin->setRange(0,365);
connect(svc_shelflife_box,SIGNAL(toggled(bool)),
svc_shelflife_spin,SLOT(setEnabled(bool)));
label=new QLabel(tr("days after airing"),this);
label->setGeometry(640,117,200,19);
label->setAlignment(Qt::AlignLeft);
//
// Include Music Import Markers by Default
//
svc_mus_import_markers_check=new QCheckBox(this);
svc_mus_import_markers_check->setGeometry(460,140,15,15);
label=new QLabel(tr("Include Music Import Markers in Finished Logs"),this);
label->setGeometry(480,140,sizeHint().width()-490,19);
label->setAlignment(Qt::AlignLeft);
//
// Include Traffic Import Markers by Default
//
svc_tfc_import_markers_check=new QCheckBox(this);
svc_tfc_import_markers_check->setGeometry(460,163,15,15);
label=new QLabel(tr("Include Traffic Import Markers in Finished Logs"),this);
label->setGeometry(480,163,sizeHint().width()-490,19);
label->setAlignment(Qt::AlignLeft);
//
// Enable Hosts Button
//
button=new QPushButton(this);
button->setGeometry(625,31,150,50);
button->setFont(buttonFont());
button->setText(tr("Enable Hosts"));
connect(button,SIGNAL(clicked()),this,SLOT(enableHostsData()));
//
// Traffic Import Section
//
label=new QLabel(tr("Traffic Data Import"),this);
label->setGeometry(10,231,160,24);
label->setFont(sectionLabelFont());
label->setAlignment(Qt::AlignLeft);
//
// Linux Traffic Import Path
//
svc_tfc_path_edit=new QLineEdit(this);
svc_tfc_path_edit->setGeometry(185,255,240,19);
svc_tfc_path_edit->setMaxLength(191);
svc_tfc_path_edit->setValidator(validator);
label=new QLabel(tr("Import Path:"),this);
label->setGeometry(10,255,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
connect(svc_tfc_path_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(textChangedData(const QString &)));
//
// Linux Traffic Preimport Command
//
svc_tfc_preimport_cmd_edit=new QLineEdit(this);
svc_tfc_preimport_cmd_edit->setGeometry(185,276,240,19);
svc_tfc_preimport_cmd_edit->setValidator(validator);
label=new QLabel(tr("Preimport Command:"),this);
label->setGeometry(10,276,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
connect(svc_tfc_preimport_cmd_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(textChangedData(const QString &)));
//
// Note Cart
//
svc_tfc_label_cart_edit=new QLineEdit(this);
svc_tfc_label_cart_edit->setGeometry(185,297,240,19);
svc_tfc_label_cart_edit->setMaxLength(32);
label=new QLabel(tr("Insert Marker String")+":",this);
label->setGeometry(10,297,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
connect(svc_tfc_label_cart_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(textChangedData(const QString &)));
//
// Track String
//
svc_tfc_track_edit=new QLineEdit(this);
svc_tfc_track_edit->setGeometry(185,318,240,19);
svc_tfc_track_edit->setMaxLength(32);
label=new QLabel(tr("Insert Voice Track String:"),this);
label->setGeometry(10,318,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
connect(svc_tfc_track_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(textChangedData(const QString &)));
//
// Traffic Import Template
//
svc_tfc_import_template_box=new QComboBox(this);
svc_tfc_import_template_box->setGeometry(185,339,240,19);
label=new QLabel(tr("Import Template:"),this);
label->setGeometry(10,339,170,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
connect(svc_tfc_import_template_box,SIGNAL(activated(int)),
this,SLOT(tfcTemplateActivatedData(int)));
//
// Traffic Parser Settings
//
svc_tfc_fields=new ImportFields(this);
svc_tfc_fields->setGeometry(10,360,svc_tfc_fields->sizeHint().width(),
svc_tfc_fields->sizeHint().height());
//
// Traffic Test Button
//
button=new QPushButton(this);
button->setGeometry(360,360,60,40);
button->setFont(buttonFont());
button->setText(tr("Test \nTraffic"));
connect(button,SIGNAL(clicked()),this,SLOT(trafficData()));
//
// Traffic Copy Button
//
svc_tfc_copy_button=new QPushButton(this);
svc_tfc_copy_button->setGeometry(360,410,60,40);
svc_tfc_copy_button->setFont(buttonFont());
svc_tfc_copy_button->setText(tr("Copy To\nCustom"));
connect(svc_tfc_copy_button,SIGNAL(clicked()),this,SLOT(trafficCopyData()));
//
// Music Import Section
//
label=new QLabel(tr("Music Data Import"),this);
label->setGeometry(445,234,160,24);
label->setFont(sectionLabelFont());
label->setAlignment(Qt::AlignLeft);
//
// Linux Music Import Path
//
svc_mus_path_edit=new QLineEdit(this);
svc_mus_path_edit->setGeometry(620,256,240,19);
svc_mus_path_edit->setMaxLength(191);
svc_mus_path_edit->setValidator(validator);
label=new QLabel(tr("Import Path:"),this);
label->setGeometry(450,256,165,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
connect(svc_mus_path_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(textChangedData(const QString &)));
//
// Linux Music Preimport Command
//
svc_mus_preimport_cmd_edit=new QLineEdit(this);
svc_mus_preimport_cmd_edit->setGeometry(620,276,240,19);
svc_mus_preimport_cmd_edit->setValidator(validator);
label=
new QLabel(tr("Preimport Command:"),this);
label->setGeometry(450,276,165,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
connect(svc_mus_preimport_cmd_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(textChangedData(const QString &)));
//
// Label Cart
//
svc_mus_label_cart_edit=new QLineEdit(this);
svc_mus_label_cart_edit->setGeometry(620,297,240,19);
svc_mus_label_cart_edit->setMaxLength(32);
label=new QLabel(tr("Insert Marker String")+":",this);
label->setGeometry(450,297,165,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
connect(svc_mus_label_cart_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(textChangedData(const QString &)));
//
// Insert Voice Track String
//
svc_mus_track_edit=new QLineEdit(this);
svc_mus_track_edit->setGeometry(620,318,240,19);
svc_mus_track_edit->setMaxLength(255);
label=new QLabel(tr("Insert Voice Track String:"),this);
label->setGeometry(450,318,165,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
connect(svc_mus_track_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(textChangedData(const QString &)));
//
// Insert Spot Break String
//
svc_mus_break_edit=new QLineEdit(this);
svc_mus_break_edit->setGeometry(620,339,240,19);
svc_mus_break_edit->setMaxLength(255);
label=new QLabel(tr("Insert Traffic Break String:"),this);
label->setGeometry(450,339,165,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
connect(svc_mus_break_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(textChangedData(const QString &)));
//
// Music Import Template
//
svc_mus_import_template_box=new QComboBox(this);
svc_mus_import_template_box->setGeometry(620,360,240,19);
label=new QLabel(tr("Import Template:"),this);
label->setGeometry(450,360,165,19);
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
connect(svc_mus_import_template_box,SIGNAL(activated(int)),
this,SLOT(musTemplateActivatedData(int)));
//
// Music Parser Settings
//
svc_mus_fields=new ImportFields(this);
svc_mus_fields->setGeometry(445,381,svc_mus_fields->sizeHint().width(),
svc_mus_fields->sizeHint().height());
//
// Music Test Button
//
button=new QPushButton(this);
button->setGeometry(795,381,60,40);
button->setFont(buttonFont());
button->setText(tr("Test \nMusic"));
connect(button,SIGNAL(clicked()),this,SLOT(musicData()));
//
// Music Copy Button
//
svc_mus_copy_button=new QPushButton(this);
svc_mus_copy_button->setGeometry(795,431,60,40);
svc_mus_copy_button->setFont(buttonFont());
svc_mus_copy_button->setText(tr("Copy To\nCustom"));
connect(svc_mus_copy_button,SIGNAL(clicked()),this,SLOT(musicCopyData()));
//
// Ok Button
//
button=new QPushButton(this);
button->setGeometry(sizeHint().width()-180,sizeHint().height()-60,80,50);
button->setDefault(true);
button->setFont(buttonFont());
button->setText(tr("OK"));
connect(button,SIGNAL(clicked()),this,SLOT(okData()));
//
// Cancel Button
//
button=new QPushButton(this);
button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,
80,50);
button->setFont(buttonFont());
button->setText(tr("Cancel"));
connect(button,SIGNAL(clicked()),this,SLOT(cancelData()));
//
// Load Group Lists
//
group=svc_svc->trackGroup();
autospot=svc_svc->autospotGroup();
sql="select `NAME` from `GROUPS` order by `NAME`";
q=new RDSqlQuery(sql);
while(q->next()) {
svc_voice_group_box->insertItem(svc_voice_group_box->count(),
q->value(0).toString());
if(q->value(0).toString()==group) {
svc_voice_group_box->setCurrentIndex(svc_voice_group_box->count()-1);
}
svc_autospot_group_box->insertItem(svc_autospot_group_box->count(),
q->value(0).toString());
if(q->value(0).toString()==autospot) {
svc_autospot_group_box->setCurrentIndex(svc_autospot_group_box->count()-1);
}
}
delete q;
//
// Populate Fields
//
svc_name_edit->setText(svc_svc->name());
svc_description_edit->setText(svc_svc->description());
svc_program_code_edit->setText(svc_svc->programCode());
svc_name_template_edit->setText(svc_svc->nameTemplate());
svc_description_template_edit->setText(svc_svc->descriptionTemplate());
svc_sub_event_inheritance_box->
setCurrentIndex((RDSvc::SubEventInheritance)svc_svc->subEventInheritance());
svc_chain_box->setChecked(svc_svc->chainto());
svc_autorefresh_box->setChecked(svc_svc->autoRefresh());
if(svc_svc->defaultLogShelflife()>=0) {
svc_loglife_box->setChecked(true);
svc_loglife_spin->setValue(svc_svc->defaultLogShelflife());
svc_loglifeorigin_box->setCurrentIndex(svc_svc->logShelflifeOrigin());
svc_loglifeorigin_label->setEnabled(true);
}
else {
svc_loglife_spin->setDisabled(true);
svc_loglifeorigin_label->setDisabled(true);
svc_loglifeorigin_box->setDisabled(true);
}
if(svc_svc->elrShelflife()>=0) {
svc_shelflife_box->setChecked(true);
svc_shelflife_spin->setValue(svc_svc->elrShelflife());
}
else {
svc_shelflife_spin->setDisabled(true);
}
svc_mus_import_markers_check->
setChecked(svc_svc->includeImportMarkers(RDSvc::Music));
svc_tfc_import_markers_check->
setChecked(svc_svc->includeImportMarkers(RDSvc::Traffic));
svc_tfc_path_edit->setText(svc_svc->importPath(RDSvc::Traffic));
svc_tfc_preimport_cmd_edit->
setText(svc_svc->preimportCommand(RDSvc::Traffic));
svc_tfc_import_template_box->insertItem(0,tr("[custom]"));
svc_mus_import_template_box->insertItem(0,tr("[custom]"));
sql="select `NAME` from `IMPORT_TEMPLATES` order by `NAME`";
q=new RDSqlQuery(sql);
while(q->next()) {
svc_tfc_import_template_box->
insertItem(svc_tfc_import_template_box->count(),q->value(0).toString());
if(q->value(0).toString()==svc_svc->importTemplate(RDSvc::Traffic)) {
svc_tfc_import_template_box->
setCurrentIndex(svc_tfc_import_template_box->count()-1);
}
svc_mus_import_template_box->
insertItem(svc_mus_import_template_box->count(),q->value(0).toString());
if(q->value(0).toString()==svc_svc->importTemplate(RDSvc::Music)) {
svc_mus_import_template_box->
setCurrentIndex(svc_mus_import_template_box->count()-1);
}
}
delete q;
svc_tfc_label_cart_edit->setText(svc_svc->labelCart(RDSvc::Traffic));
svc_tfc_track_edit->setText(svc_svc->trackString(RDSvc::Traffic));
svc_mus_path_edit->setText(svc_svc->importPath(RDSvc::Music));
svc_mus_preimport_cmd_edit->
setText(svc_svc->preimportCommand(RDSvc::Music));
svc_mus_label_cart_edit->setText(svc_svc->labelCart(RDSvc::Music));
svc_mus_break_edit->
setText(svc_svc->breakString());
svc_mus_track_edit->
setText(svc_svc->trackString(RDSvc::Music));
tfcTemplateActivatedData(svc_tfc_import_template_box->currentIndex());
musTemplateActivatedData(svc_mus_import_template_box->currentIndex());
import_changed=false;
}
EditSvc::~EditSvc()
{
delete svc_name_edit;
delete svc_description_edit;
}
QSize EditSvc::sizeHint() const
{
return QSize(870,691);
}
QSizePolicy EditSvc::sizePolicy() const
{
return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
}
void EditSvc::autofillData()
{
AutofillCarts *autofill=new AutofillCarts(svc_svc,this);
autofill->exec();
delete autofill;
}
void EditSvc::enableHostsData()
{
EditSvcPerms *edit_perms=new EditSvcPerms(svc_svc,this);
edit_perms->exec();
delete edit_perms;
}
void EditSvc::trafficData()
{
TestDataImport(RDSvc::Traffic);
}
void EditSvc::trafficCopyData()
{
if (QMessageBox::question(this,tr("Copy To Custom"),
tr("This action will overwrite your existing [custom] Traffic Data Import settings. Continue?"),
QMessageBox::Yes,QMessageBox::No)==QMessageBox::No) {
return;
}
svc_svc->setImportTemplate(RDSvc::Traffic,"");
svc_tfc_import_template_box->setCurrentIndex(0);
svc_tfc_fields->setEnabled(1);
svc_tfc_copy_button->setEnabled(0);
}
void EditSvc::musicData()
{
TestDataImport(RDSvc::Music);
}
void EditSvc::musicCopyData()
{
if (QMessageBox::question(this,tr("Copy To Custom"),
tr("This action will overwrite your existing [custom] Music Data Import settings. Continue?"),
QMessageBox::Yes,QMessageBox::No)==QMessageBox::No) {
return;
}
svc_svc->setImportTemplate(RDSvc::Music,"");
svc_mus_import_template_box->setCurrentIndex(0);
svc_mus_fields->setEnabled(1);
svc_mus_copy_button->setEnabled(0);
}
void EditSvc::textChangedData(const QString &)
{
import_changed=true;
}
void EditSvc::tfcTemplateActivatedData(int index)
{
//
// Save stored template
//
QString t;
t=svc_svc->importTemplate(RDSvc::Traffic);
//
// Temporarily set selected template
//
if(svc_tfc_import_template_box->currentIndex()==0) {
svc_svc->setImportTemplate(RDSvc::Traffic,"");
}
else {
svc_svc->setImportTemplate(RDSvc::Traffic,
svc_tfc_import_template_box->currentText());
}
svc_tfc_fields->setFields(svc_svc,RDSvc::Traffic);
svc_tfc_fields->setEnabled(index==0);
svc_tfc_copy_button->setEnabled(index!=0);
import_changed=true;
//
// Restore saved template
//
svc_svc->setImportTemplate(RDSvc::Traffic,t);
}
void EditSvc::musTemplateActivatedData(int index)
{
//
// Save stored template
//
QString t;
t=svc_svc->importTemplate(RDSvc::Music);
//
// Temporarily set selected template
//
if(svc_mus_import_template_box->currentIndex()==0) {
svc_svc->setImportTemplate(RDSvc::Music,"");
}
else {
svc_svc->setImportTemplate(RDSvc::Music,
svc_mus_import_template_box->currentText());
}
svc_mus_fields->setFields(svc_svc,RDSvc::Music);
svc_mus_fields->setEnabled(index==0);
svc_mus_copy_button->setEnabled(index!=0);
import_changed=true;
//
// Restore saved template
//
svc_svc->setImportTemplate(RDSvc::Music,t);
}
void EditSvc::okData()
{
Save();
done(true);
}
void EditSvc::cancelData()
{
done(false);
}
void EditSvc::TestDataImport(RDSvc::ImportSource src)
{
if(import_changed||
((src==RDSvc::Traffic)&&(svc_tfc_fields->changed()))||
((src==RDSvc::Music)&&(svc_mus_fields->changed()))) {
switch(QMessageBox::question(this,tr("Save Import Data"),
tr("Before testing, the import configuration\nmust be saved. Save now?"),QMessageBox::Yes,QMessageBox::No)) {
case QMessageBox::No:
case QMessageBox::NoButton:
return;
default:
break;
}
Save();
}
TestImport *testimport=new TestImport(svc_svc,src,this);
testimport->exec();
delete testimport;
}
void EditSvc::Save()
{
svc_svc->setDescription(svc_description_edit->text());
svc_svc->setProgramCode(svc_program_code_edit->text());
svc_svc->setNameTemplate(svc_name_template_edit->text().trimmed());
svc_svc->setDescriptionTemplate(svc_description_template_edit->text());
svc_svc-> setSubEventInheritance((RDSvc::SubEventInheritance)
svc_sub_event_inheritance_box->currentIndex());
svc_svc->setChainto(svc_chain_box->isChecked());
svc_svc->setAutoRefresh(svc_autorefresh_box->isChecked());
if(svc_loglife_box->isChecked()) {
svc_svc->setDefaultLogShelflife(svc_loglife_spin->value());
svc_svc->setLogShelflifeOrigin((RDSvc::ShelflifeOrigin)
svc_loglifeorigin_box->currentIndex());
}
else {
svc_svc->setDefaultLogShelflife(-1);
}
if(svc_shelflife_box->isChecked()) {
svc_svc->setElrShelflife(svc_shelflife_spin->value());
}
else {
svc_svc->setElrShelflife(-1);
}
svc_svc->setIncludeImportMarkers(RDSvc::Music,
svc_mus_import_markers_check->isChecked());
svc_svc->setIncludeImportMarkers(RDSvc::Traffic,
svc_tfc_import_markers_check->isChecked());
svc_svc->setImportPath(RDSvc::Traffic,svc_tfc_path_edit->text());
svc_svc->
setPreimportCommand(RDSvc::Traffic,svc_tfc_preimport_cmd_edit->text());
if(svc_tfc_import_template_box->currentIndex()==0) {
svc_svc->setImportTemplate(RDSvc::Traffic,"");
svc_tfc_fields->readFields(svc_svc,RDSvc::Traffic);
}
else {
svc_svc->setImportTemplate(RDSvc::Traffic,
svc_tfc_import_template_box->currentText());
}
svc_svc->setLabelCart(RDSvc::Traffic,svc_tfc_label_cart_edit->text());
svc_svc->setTrackString(RDSvc::Traffic,svc_tfc_track_edit->text());
svc_svc->setImportPath(RDSvc::Music,svc_mus_path_edit->text());
svc_svc->setPreimportCommand(RDSvc::Music,svc_mus_preimport_cmd_edit->text());
if(svc_mus_import_template_box->currentIndex()==0) {
svc_svc->setImportTemplate(RDSvc::Music,"");
svc_mus_fields->readFields(svc_svc,RDSvc::Music);
}
else {
svc_svc->setImportTemplate(RDSvc::Music,
svc_mus_import_template_box->currentText());
}
svc_svc->setBreakString(svc_mus_break_edit->text());
svc_svc->setTrackString(RDSvc::Music,svc_mus_track_edit->text());
svc_svc->setLabelCart(RDSvc::Music,svc_mus_label_cart_edit->text());
import_changed=false;
if(svc_voice_group_box->currentIndex()==0) {
svc_svc->setTrackGroup("");
}
else {
svc_svc->setTrackGroup(svc_voice_group_box->currentText());
}
if(svc_autospot_group_box->currentIndex()==0) {
svc_svc->setAutospotGroup("");
}
else {
svc_svc->setAutospotGroup(svc_autospot_group_box->currentText());
}
}