mirror of
				https://github.com/ElvishArtisan/rivendell.git
				synced 2025-11-04 08:04:12 +01:00 
			
		
		
		
	* Added rdxml_parse_test(1) in 'tests/'. * Added a RDCart::readXml()' method in 'lib/rdcart.cpp' and 'lib/rdcart.h'. * Fixed a typo in the 'averageSegueLength' field in the 'RDCart::xml()' method in 'lib/rdcart.cpp'. * Removed the 'validity' field from the output of the 'RDCart::xml()' method in 'lib/rdcart.cpp'. * Removed the 'validity' and 'localCounter' fields from the output of the 'RDCut::xml()' method in 'lib/rdcut.cpp'.
		
			
				
	
	
		
			319 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			319 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// rdwavedata_dialog.cpp
 | 
						|
//
 | 
						|
// A dialog to edit the contents of an RDWaveData.
 | 
						|
//
 | 
						|
//   (C) Copyright 2014,2016 Fred Gleason <fredg@paravelsystems.com>
 | 
						|
//
 | 
						|
//   This program is free software; you can redistribute it and/or modify
 | 
						|
//   it under the terms of the GNU General Public License version 2 as
 | 
						|
//   published by the Free Software Foundation.
 | 
						|
//
 | 
						|
//   This program is distributed in the hope that it will be useful,
 | 
						|
//   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
//   GNU General Public License for more details.
 | 
						|
//
 | 
						|
//   You should have received a copy of the GNU General Public
 | 
						|
//   License along with this program; if not, write to the Free Software
 | 
						|
//   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
						|
//
 | 
						|
 | 
						|
#include <qvalidator.h>
 | 
						|
 | 
						|
#include "rdwavedata_dialog.h"
 | 
						|
 | 
						|
RDWaveDataDialog::RDWaveDataDialog(const QString &caption,QWidget *parent)
 | 
						|
  : QDialog(parent,"",true)
 | 
						|
{
 | 
						|
  wave_caption=caption;
 | 
						|
  setCaption(caption+" - "+tr("Edit Cart Label"));
 | 
						|
 | 
						|
  //
 | 
						|
  // Fonts
 | 
						|
  //
 | 
						|
  QFont label_font("helvetica",12,QFont::Bold);
 | 
						|
  label_font.setPixelSize(12);
 | 
						|
 | 
						|
  //
 | 
						|
  // Dialogs
 | 
						|
  //
 | 
						|
  wave_schedcodes_dialog=new RDSchedCodesDialog(this);
 | 
						|
 | 
						|
  //
 | 
						|
  // Title
 | 
						|
  //
 | 
						|
  wave_title_label=new QLabel(tr("Title")+":",this);
 | 
						|
  wave_title_label->setFont(label_font);
 | 
						|
  wave_title_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_title_edit=new QLineEdit(this);
 | 
						|
  wave_title_edit->setMaxLength(255);
 | 
						|
 | 
						|
  //
 | 
						|
  // Artist
 | 
						|
  //
 | 
						|
  wave_artist_label=new QLabel(tr("Artist")+":",this);
 | 
						|
  wave_artist_label->setFont(label_font);
 | 
						|
  wave_artist_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_artist_edit=new QLineEdit(this);
 | 
						|
  wave_artist_edit->setMaxLength(255);
 | 
						|
 | 
						|
  //
 | 
						|
  // Year
 | 
						|
  //
 | 
						|
  wave_year_label=new QLabel(tr("Year")+":",this);
 | 
						|
  wave_year_label->setFont(label_font);
 | 
						|
  wave_year_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_year_edit=new QLineEdit(this);
 | 
						|
  wave_year_edit->setMaxLength(4);
 | 
						|
  wave_year_edit->setValidator(new QIntValidator(1980,8000,this));
 | 
						|
 | 
						|
  //
 | 
						|
  // Usage
 | 
						|
  //
 | 
						|
  wave_usage_label=new QLabel(tr("Usage")+":",this);
 | 
						|
  wave_usage_label->setFont(label_font);
 | 
						|
  wave_usage_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_usage_box=new QComboBox(this);
 | 
						|
  for(int i=0;i<(int)RDCart::UsageLast;i++) {
 | 
						|
    wave_usage_box->insertItem(RDCart::usageText((RDCart::UsageCode)i));
 | 
						|
  }
 | 
						|
 | 
						|
  //
 | 
						|
  // Scheduler Codes
 | 
						|
  //
 | 
						|
  wave_sched_button=new QPushButton(tr("Scheduler Codes"),this);
 | 
						|
  wave_sched_button->setFont(label_font);
 | 
						|
  connect(wave_sched_button,SIGNAL(clicked()),this,SLOT(schedClickedData()));
 | 
						|
 | 
						|
  //
 | 
						|
  // Song ID
 | 
						|
  //
 | 
						|
  wave_songid_label=new QLabel(tr("Song ID")+":",this);
 | 
						|
  wave_songid_label->setFont(label_font);
 | 
						|
  wave_songid_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_songid_edit=new QLineEdit(this);
 | 
						|
  wave_songid_edit->setMaxLength(32);
 | 
						|
 | 
						|
  //
 | 
						|
  // Beats Per Minute
 | 
						|
  //
 | 
						|
  wave_bpm_label=new QLabel(tr("Beats per Minute")+":",this);
 | 
						|
  wave_bpm_label->setFont(label_font);
 | 
						|
  wave_bpm_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_bpm_spin=new QSpinBox(this);
 | 
						|
  wave_bpm_spin->setRange(0,300);
 | 
						|
  wave_bpm_spin->setSpecialValueText(tr("Unknown"));
 | 
						|
 | 
						|
  //
 | 
						|
  // Album
 | 
						|
  //
 | 
						|
  wave_album_label=new QLabel(tr("Album")+":",this);
 | 
						|
  wave_album_label->setFont(label_font);
 | 
						|
  wave_album_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_album_edit=new QLineEdit(this);
 | 
						|
  wave_album_edit->setMaxLength(255);
 | 
						|
 | 
						|
  //
 | 
						|
  // Label
 | 
						|
  //
 | 
						|
  wave_label_label=new QLabel(tr("Label")+":",this);
 | 
						|
  wave_label_label->setFont(label_font);
 | 
						|
  wave_label_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_label_edit=new QLineEdit(this);
 | 
						|
  wave_label_edit->setMaxLength(64);
 | 
						|
 | 
						|
  //
 | 
						|
  // Client
 | 
						|
  //
 | 
						|
  wave_client_label=new QLabel(tr("Client")+":",this);
 | 
						|
  wave_client_label->setFont(label_font);
 | 
						|
  wave_client_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_client_edit=new QLineEdit(this);
 | 
						|
  wave_client_edit->setMaxLength(64);
 | 
						|
 | 
						|
  //
 | 
						|
  // Agency
 | 
						|
  //
 | 
						|
  wave_agency_label=new QLabel(tr("Agency")+":",this);
 | 
						|
  wave_agency_label->setFont(label_font);
 | 
						|
  wave_agency_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_agency_edit=new QLineEdit(this);
 | 
						|
  wave_agency_edit->setMaxLength(64);
 | 
						|
 | 
						|
  //
 | 
						|
  // Publisher
 | 
						|
  //
 | 
						|
  wave_publisher_label=new QLabel(tr("Publisher")+":",this);
 | 
						|
  wave_publisher_label->setFont(label_font);
 | 
						|
  wave_publisher_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_publisher_edit=new QLineEdit(this);
 | 
						|
  wave_publisher_edit->setMaxLength(64);
 | 
						|
 | 
						|
  //
 | 
						|
  // Composer
 | 
						|
  //
 | 
						|
  wave_composer_label=new QLabel(tr("Composer")+":",this);
 | 
						|
  wave_composer_label->setFont(label_font);
 | 
						|
  wave_composer_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_composer_edit=new QLineEdit(this);
 | 
						|
  wave_composer_edit->setMaxLength(64);
 | 
						|
 | 
						|
  //
 | 
						|
  // Conductor
 | 
						|
  //
 | 
						|
  wave_conductor_label=new QLabel(tr("Conductor")+":",this);
 | 
						|
  wave_conductor_label->setFont(label_font);
 | 
						|
  wave_conductor_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_conductor_edit=new QLineEdit(this);
 | 
						|
  wave_conductor_edit->setMaxLength(64);
 | 
						|
 | 
						|
  //
 | 
						|
  // User Defined
 | 
						|
  //
 | 
						|
  wave_userdef_label=new QLabel(tr("User Defined")+":",this);
 | 
						|
  wave_userdef_label->setFont(label_font);
 | 
						|
  wave_userdef_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 | 
						|
  wave_userdef_edit=new QLineEdit(this);
 | 
						|
  wave_userdef_edit->setMaxLength(255);
 | 
						|
 | 
						|
  //
 | 
						|
  // OK Button
 | 
						|
  //
 | 
						|
  wave_ok_button=new QPushButton(tr("OK"),this);
 | 
						|
  wave_ok_button->setFont(label_font);
 | 
						|
  connect(wave_ok_button,SIGNAL(clicked()),this,SLOT(okData()));
 | 
						|
 | 
						|
  //
 | 
						|
  // Cancel Button
 | 
						|
  //
 | 
						|
  wave_cancel_button=new QPushButton(tr("Cancel"),this);
 | 
						|
  wave_cancel_button->setFont(label_font);
 | 
						|
  connect(wave_cancel_button,SIGNAL(clicked()),this,SLOT(cancelData()));
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
RDWaveDataDialog::~RDWaveDataDialog()
 | 
						|
{
 | 
						|
  delete wave_schedcodes_dialog;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
QSize RDWaveDataDialog::sizeHint() const
 | 
						|
{
 | 
						|
  return QSize(600,344);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
QSizePolicy RDWaveDataDialog::sizePolicy() const
 | 
						|
{
 | 
						|
  return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
int RDWaveDataDialog::exec(RDWaveData *data)
 | 
						|
{
 | 
						|
  wave_data=data;
 | 
						|
 | 
						|
  wave_title_edit->setText(wave_data->title());
 | 
						|
  wave_artist_edit->setText(wave_data->artist());
 | 
						|
  if(wave_data->releaseYear()>0) {
 | 
						|
    wave_year_edit->setText(QString().sprintf("%d",wave_data->releaseYear()));
 | 
						|
  }
 | 
						|
  wave_usage_box->setCurrentItem(wave_data->usageCode());
 | 
						|
  wave_songid_edit->setText(wave_data->tmciSongId());
 | 
						|
  wave_bpm_spin->setValue(wave_data->beatsPerMinute());
 | 
						|
  wave_album_edit->setText(wave_data->album());
 | 
						|
  wave_label_edit->setText(wave_data->label());
 | 
						|
  wave_client_edit->setText(wave_data->client());
 | 
						|
  wave_agency_edit->setText(wave_data->agency());
 | 
						|
  wave_publisher_edit->setText(wave_data->publisher());
 | 
						|
  wave_composer_edit->setText(wave_data->composer());
 | 
						|
  wave_conductor_edit->setText(wave_data->conductor());
 | 
						|
  wave_userdef_edit->setText(wave_data->userDefined());
 | 
						|
 | 
						|
  return QDialog::exec();
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void RDWaveDataDialog::schedClickedData()
 | 
						|
{
 | 
						|
  QStringList codes=wave_data->schedCodes();
 | 
						|
  if(wave_schedcodes_dialog->exec(&codes,NULL)==0) {
 | 
						|
    wave_data->setSchedCodes(codes);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void RDWaveDataDialog::okData()
 | 
						|
{
 | 
						|
  wave_data->setTitle(wave_title_edit->text());
 | 
						|
  wave_data->setArtist(wave_artist_edit->text());
 | 
						|
  if(wave_year_edit->text().isEmpty()) {
 | 
						|
    wave_data->setReleaseYear(0);
 | 
						|
  }
 | 
						|
  else {
 | 
						|
    wave_data->setReleaseYear(wave_year_edit->text().toInt());
 | 
						|
  }
 | 
						|
  wave_data->setUsageCode((RDWaveData::UsageCode)wave_usage_box->currentItem());
 | 
						|
  wave_data->setTmciSongId(wave_songid_edit->text());
 | 
						|
  wave_data->setBeatsPerMinute(wave_bpm_spin->value());
 | 
						|
  wave_data->setAlbum(wave_album_edit->text());
 | 
						|
  wave_data->setLabel(wave_label_edit->text());
 | 
						|
  wave_data->setClient(wave_client_edit->text());
 | 
						|
  wave_data->setAgency(wave_agency_edit->text());
 | 
						|
  wave_data->setPublisher(wave_publisher_edit->text());
 | 
						|
  wave_data->setComposer(wave_composer_edit->text());
 | 
						|
  wave_data->setConductor(wave_conductor_edit->text());
 | 
						|
  wave_data->setUserDefined(wave_userdef_edit->text());
 | 
						|
 | 
						|
  done(0);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void RDWaveDataDialog::cancelData()
 | 
						|
{
 | 
						|
  done(-1);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void RDWaveDataDialog::resizeEvent(QResizeEvent *e)
 | 
						|
{
 | 
						|
  wave_title_label->setGeometry(10,10,100,20);
 | 
						|
  wave_title_edit->setGeometry(115,10,size().width()-125,20);
 | 
						|
  wave_artist_label->setGeometry(10,32,100,20);
 | 
						|
  wave_artist_edit->setGeometry(115,32,size().width()-125,20);
 | 
						|
  wave_year_label->setGeometry(10,54,100,20);
 | 
						|
  wave_year_edit->setGeometry(115,54,50,20);
 | 
						|
  wave_usage_label->setGeometry(178,54,60,20);
 | 
						|
  wave_usage_box->setGeometry(245,54,170,20);
 | 
						|
  wave_sched_button->setGeometry(440,53,150,22);
 | 
						|
  wave_songid_label->setGeometry(10,76,100,20);
 | 
						|
  wave_songid_edit->setGeometry(115,76,240,20);
 | 
						|
  wave_bpm_label->setGeometry(375,76,120,20);
 | 
						|
  wave_bpm_spin->setGeometry(500,76,90,20);
 | 
						|
  wave_album_label->setGeometry(10,98,100,20);
 | 
						|
  wave_album_edit->setGeometry(115,98,size().width()-125,20);
 | 
						|
  wave_label_label->setGeometry(10,120,100,20);
 | 
						|
  wave_label_edit->setGeometry(115,120,size().width()-125,20);
 | 
						|
  wave_client_label->setGeometry(10,142,100,20);
 | 
						|
  wave_client_edit->setGeometry(115,142,size().width()-125,20);
 | 
						|
  wave_agency_label->setGeometry(10,164,100,20);
 | 
						|
  wave_agency_edit->setGeometry(115,164,size().width()-125,20);
 | 
						|
  wave_publisher_label->setGeometry(10,186,100,20);
 | 
						|
  wave_publisher_edit->setGeometry(115,186,size().width()-125,20);
 | 
						|
  wave_composer_label->setGeometry(10,208,100,20);
 | 
						|
  wave_composer_edit->setGeometry(115,208,size().width()-125,20);
 | 
						|
  wave_conductor_label->setGeometry(10,230,100,20);
 | 
						|
  wave_conductor_edit->setGeometry(115,230,size().width()-125,20);
 | 
						|
  wave_userdef_label->setGeometry(10,252,100,20);
 | 
						|
  wave_userdef_edit->setGeometry(115,252,size().width()-125,20);
 | 
						|
  wave_ok_button->setGeometry(size().width()-180,size().height()-60,80,50);
 | 
						|
  wave_cancel_button->setGeometry(size().width()-90,size().height()-60,80,50);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void RDWaveDataDialog::closeEvent(QCloseEvent *e)
 | 
						|
{
 | 
						|
  cancelData();
 | 
						|
}
 |