mirror of
				https://github.com/ElvishArtisan/rivendell.git
				synced 2025-10-31 22:24:02 +01:00 
			
		
		
		
	* Added a 'STATIONS.SHORT_NAME' field to the database. * Incremented the database version to 270. * Added 'RDStation::shortName()' and 'RDStation::setShortName()' methods. * Removed the 'Broadcast Security Model' control from the 'Edit Host' dialog. * Added a 'Short Name' control to the 'Edit Host' dialog. * Implemented a '%R' wildcard for Rivendell Host Short Name.
		
			
				
	
	
		
			725 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			725 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // catch_event.cpp
 | |
| //
 | |
| // A container class for a Rivendell netcatch event.
 | |
| //
 | |
| //   (C) Copyright 2002-2004,2016 Fred Gleason <fredg@paravelsystems.com>
 | |
| //
 | |
| //   This program is free software; you can redistribute it and/or modify
 | |
| //   it under the terms of the GNU General Public License version 2 as
 | |
| //   published by the Free Software Foundation.
 | |
| //
 | |
| //   This program is distributed in the hope that it will be useful,
 | |
| //   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| //   GNU General Public License for more details.
 | |
| //
 | |
| //   You should have received a copy of the GNU General Public
 | |
| //   License along with this program; if not, write to the Free Software
 | |
| //   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | |
| //
 | |
| 
 | |
| #include <rddatedecode.h>
 | |
| 
 | |
| #include <catch_event.h>
 | |
| 
 | |
| CatchEvent::CatchEvent(RDStation *station,RDConfig *config)
 | |
| {
 | |
|   catch_station=station;
 | |
|   catch_config=config;
 | |
|   clear();
 | |
| }
 | |
| 
 | |
| 
 | |
| unsigned CatchEvent::id() const
 | |
| {
 | |
|   return catch_id;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setId(int id)
 | |
| {
 | |
|   catch_id=id;
 | |
| }
 | |
| 
 | |
| 
 | |
| bool CatchEvent::isActive() const
 | |
| {
 | |
|   return catch_is_active;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setIsActive(bool state)
 | |
| {
 | |
|   catch_is_active=state;
 | |
| }
 | |
| 
 | |
| 
 | |
| RDRecording::Type CatchEvent::type() const
 | |
| {
 | |
|   return catch_type;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setType(RDRecording::Type type)
 | |
| {
 | |
|   catch_type=type;
 | |
| }
 | |
| 
 | |
| 
 | |
| unsigned CatchEvent::channel() const
 | |
| {
 | |
|   return catch_channel;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setChannel(unsigned chan)
 | |
| {
 | |
|   catch_channel=chan;
 | |
| }
 | |
| 
 | |
| 
 | |
| QString CatchEvent::cutName() const
 | |
| {
 | |
|   return catch_cut_name;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setCutName(const QString &str)
 | |
| {
 | |
|   catch_cut_name=str;
 | |
| }
 | |
| 
 | |
| 
 | |
| QString CatchEvent::tempName() const
 | |
| {
 | |
|   return catch_temp_name;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setTempName(const QString &str)
 | |
| {
 | |
|   catch_temp_name=str;
 | |
| }
 | |
| 
 | |
| 
 | |
| bool CatchEvent::deleteTempFile() const
 | |
| {
 | |
|   return catch_delete_temp_file;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setDeleteTempFile(bool state)
 | |
| {
 | |
|   catch_delete_temp_file=state;
 | |
| }
 | |
| 
 | |
| 
 | |
| bool CatchEvent::dayOfWeek(int day) const
 | |
| {
 | |
|   return catch_day_of_week[day-1];
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setDayOfWeek(int day,bool state)
 | |
| {
 | |
|   catch_day_of_week[day-1]=state;
 | |
| }
 | |
| 
 | |
| 
 | |
| RDRecording::StartType CatchEvent::startType() const
 | |
| {
 | |
|   return catch_start_type;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setStartType(RDRecording::StartType type)
 | |
| {
 | |
|   catch_start_type=type;
 | |
| }
 | |
| 
 | |
| 
 | |
| QTime CatchEvent::startTime() const
 | |
| {
 | |
|   return catch_start_time;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setStartTime(QTime time)
 | |
| {
 | |
|   catch_start_time=time;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::startLength() const
 | |
| {
 | |
|   return catch_start_length;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setStartLength(int len)
 | |
| {
 | |
|   catch_start_length=len;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::startMatrix() const
 | |
| {
 | |
|   return catch_start_matrix;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setStartMatrix(int matrix)
 | |
| {
 | |
|   catch_start_matrix=matrix;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::startLine() const
 | |
| {
 | |
|   return catch_start_line;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setStartLine(int line)
 | |
| {
 | |
|   catch_start_line=line;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::startOffset() const
 | |
| {
 | |
|   return catch_start_offset;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setStartOffset(int offset)
 | |
| {
 | |
|   catch_start_offset=offset;
 | |
| }
 | |
| 
 | |
| 
 | |
| RDRecording::EndType CatchEvent::endType() const
 | |
| {
 | |
|   return catch_end_type;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setEndType(RDRecording::EndType type)
 | |
| {
 | |
|   catch_end_type=type;
 | |
| }
 | |
| 
 | |
| 
 | |
| QTime CatchEvent::endTime() const
 | |
| {
 | |
|   return catch_end_time;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setEndTime(QTime time)
 | |
| {
 | |
|   catch_end_time=time;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::endLength() const
 | |
| {
 | |
|   return catch_end_length;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setEndLength(int len)
 | |
| {
 | |
|   catch_end_length=len;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::endMatrix() const
 | |
| {
 | |
|   return catch_end_matrix;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setEndMatrix(int matrix)
 | |
| {
 | |
|   catch_end_matrix=matrix;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::endLine() const
 | |
| {
 | |
|   return catch_end_line;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setEndLine(int line)
 | |
| {
 | |
|   catch_end_line=line;
 | |
| }
 | |
| 
 | |
| 
 | |
| unsigned CatchEvent::length() const
 | |
| {
 | |
|   return catch_length;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setLength(unsigned len)
 | |
| {
 | |
|   catch_length=len;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::startGpi() const
 | |
| {
 | |
|   return catch_start_gpi;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setStartGpi(int gpi)
 | |
| {
 | |
|   catch_start_gpi=gpi;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::endGpi() const
 | |
| {
 | |
|   return catch_end_gpi;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setEndGpi(int gpi)
 | |
| {
 | |
|   catch_end_gpi=gpi;
 | |
| }
 | |
| 
 | |
| 
 | |
| bool CatchEvent::allowMultipleRecordings() const
 | |
| {
 | |
|   return catch_allow_multiple_recordings;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setAllowMultipleRecordings(bool state)
 | |
| {
 | |
|   catch_allow_multiple_recordings=state;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::maxGpiRecordLength() const
 | |
| {
 | |
|   return catch_max_gpi_record_length;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setMaxGpiRecordLength(int len)
 | |
| {
 | |
|   catch_max_gpi_record_length=len;
 | |
| }
 | |
| 
 | |
| 
 | |
| unsigned CatchEvent::trimThreshold() const
 | |
| {
 | |
|   return catch_trim_threshold;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setTrimThreshold(unsigned level)
 | |
| {
 | |
|   catch_trim_threshold=level;
 | |
| }
 | |
| 
 | |
| 
 | |
| unsigned CatchEvent::startdateOffset() const
 | |
| {
 | |
|   return catch_startdate_offset;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setStartdateOffset(unsigned offset)
 | |
| {
 | |
|   catch_startdate_offset=offset;
 | |
| }
 | |
| 
 | |
| 
 | |
| unsigned CatchEvent::enddateOffset() const
 | |
| {
 | |
|   return catch_enddate_offset;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setEnddateOffset(unsigned offset)
 | |
| {
 | |
|   catch_enddate_offset=offset;
 | |
| }
 | |
| 
 | |
| 
 | |
| RDCae::AudioCoding CatchEvent::format() const
 | |
| {
 | |
|   return catch_format;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setFormat(RDCae::AudioCoding fmt)
 | |
| {
 | |
|   catch_format=fmt;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::channels() const
 | |
| {
 | |
|   return catch_channels;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setChannels(int chans)
 | |
| {
 | |
|   catch_channels=chans;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::sampleRate() const
 | |
| {
 | |
|   return catch_samplerate;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setSampleRate(int rate)
 | |
| {
 | |
|   catch_samplerate=rate;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::bitrate() const
 | |
| {
 | |
|   return catch_bitrate;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setBitrate(int rate)
 | |
| {
 | |
|   catch_bitrate=rate;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::normalizeLevel() const
 | |
| {
 | |
|   return catch_normalize_level;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setNormalizeLevel(int level)
 | |
| {
 | |
|   catch_normalize_level=level;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::quality() const
 | |
| {
 | |
|   return catch_quality;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setQuality(int qual)
 | |
| {
 | |
|   catch_quality=qual;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::macroCart() const
 | |
| {
 | |
|   return catch_macro_cart;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setMacroCart(int cart)
 | |
| {
 | |
|   catch_macro_cart=cart;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::switchInput() const
 | |
| {
 | |
|   return catch_switch_input;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setSwitchInput(int input)
 | |
| {
 | |
|   catch_switch_input=input;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::switchOutput() const
 | |
| {
 | |
|   return catch_switch_output;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setSwitchOutput(int output)
 | |
| {
 | |
|   catch_switch_output=output;
 | |
| }
 | |
| 
 | |
| 
 | |
| RDDeck::Status CatchEvent::status() const
 | |
| {
 | |
|   return catch_status;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setStatus(RDDeck::Status status)
 | |
| {
 | |
|   catch_status=status;
 | |
| }
 | |
| 
 | |
| 
 | |
| bool CatchEvent::oneShot() const
 | |
| {
 | |
|   return catch_oneshot;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setOneShot(bool state)
 | |
| {
 | |
|   catch_oneshot=state;
 | |
| }
 | |
| 
 | |
| 
 | |
| QString CatchEvent::url()const
 | |
| {
 | |
|   return catch_url;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setUrl(const QString &url)
 | |
| {
 | |
|   catch_url=url;
 | |
| }
 | |
| 
 | |
| 
 | |
| QString CatchEvent::resolvedUrl() const
 | |
| {
 | |
|   return catch_resolved_url;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setResolvedUrl(const QString &url)
 | |
| {
 | |
|   catch_resolved_url=url;
 | |
| }
 | |
| 
 | |
| 
 | |
| QString CatchEvent::urlUsername() const
 | |
| {
 | |
|   return catch_url_username;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setUrlUsername(const QString &name)
 | |
| {
 | |
|   catch_url_username=name;
 | |
| }
 | |
| 
 | |
| 
 | |
| QString CatchEvent::urlPassword() const
 | |
| {
 | |
|   return catch_url_password;
 | |
| }
 | |
| 
 | |
| 
 | |
| bool CatchEvent::enableMetadata() const
 | |
| {
 | |
|   return catch_enable_metadata;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setEnableMetadata(bool state)
 | |
| {
 | |
|   catch_enable_metadata=state;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setUrlPassword(const QString &passwd)
 | |
| {
 | |
|   catch_url_password=passwd;
 | |
| }
 | |
| 
 | |
| 
 | |
| unsigned CatchEvent::tempLength() const
 | |
| {
 | |
|   return catch_temp_length;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setTempLength(unsigned len)
 | |
| {
 | |
|   catch_temp_length=len;
 | |
| }
 | |
| 
 | |
| 
 | |
| unsigned CatchEvent::finalLength() const
 | |
| {
 | |
|   return catch_final_length;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setFinalLength(unsigned len)
 | |
| {
 | |
|   catch_final_length=len;
 | |
| }
 | |
| 
 | |
| 
 | |
| QTimer *CatchEvent::gpiStartTimer() const
 | |
| {
 | |
|   return catch_gpi_start_timer;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setGpiStartTimer(QTimer *timer)
 | |
| {
 | |
|   catch_gpi_start_timer=timer;
 | |
| }
 | |
| 
 | |
| 
 | |
| QTimer *CatchEvent::gpiOffsetTimer() const
 | |
| {
 | |
|   return catch_gpi_offset_timer;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setGpiOffsetTimer(QTimer *timer)
 | |
| {
 | |
|   catch_gpi_offset_timer=timer;
 | |
| }
 | |
| 
 | |
| 
 | |
| QString CatchEvent::description() const
 | |
| {
 | |
|   return catch_description;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setDescription(const QString &desc)
 | |
| {
 | |
|   catch_description=desc;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::feedId() const
 | |
| {
 | |
|   return catch_feed_id;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setFeedId(int id)
 | |
| {
 | |
|   catch_feed_id=id;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::podcastLength() const
 | |
| {
 | |
|   return catch_podcast_length;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setPodcastLength(int bytes)
 | |
| {
 | |
|   catch_podcast_length=bytes;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::podcastTime() const
 | |
| {
 | |
|   return catch_podcast_time;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setPodcastTime(int msecs)
 | |
| {
 | |
|   catch_podcast_time=msecs;
 | |
| }
 | |
| 
 | |
| 
 | |
| int CatchEvent::eventdateOffset() const
 | |
| {
 | |
|   return catch_eventdate_offset;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::setEventdateOffset(int days)
 | |
| {
 | |
|   catch_eventdate_offset=days;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::resolveUrl(int time_offset)
 | |
| {
 | |
|   QDate date=QDate::currentDate();
 | |
|   QTime current_time=QTime::currentTime();
 | |
|   if((current_time.msecsTo(QTime(23,59,59))+1000)<time_offset) {
 | |
|     date=date.addDays(1);
 | |
|   }
 | |
|   setResolvedUrl(RDDateTimeDecode(url(),QDateTime(date.addDays(eventdateOffset()),
 | |
| 						  current_time),catch_station,
 | |
| 				  catch_config));
 | |
| }
 | |
| 
 | |
| 
 | |
| void CatchEvent::clear()
 | |
| {
 | |
|   catch_id=0;
 | |
|   catch_is_active=false;;
 | |
|   catch_type=RDRecording::Recording;
 | |
|   catch_channel=0;
 | |
|   catch_cut_name="";
 | |
|   catch_temp_name="";
 | |
|   catch_delete_temp_file=false;
 | |
|   for(int i=0;i<7;i++) {
 | |
|     catch_day_of_week[i]=false;
 | |
|   }
 | |
|   catch_start_type=RDRecording::HardStart;
 | |
|   catch_start_time=QTime();
 | |
|   catch_start_matrix=-1;
 | |
|   catch_start_line=-1;
 | |
|   catch_start_offset=0;
 | |
|   catch_end_type=RDRecording::HardEnd;
 | |
|   catch_end_time=QTime();
 | |
|   catch_end_matrix=-1;
 | |
|   catch_end_line=-1;
 | |
|   catch_length=0;
 | |
|   catch_start_gpi=-1;
 | |
|   catch_end_gpi=-1;
 | |
|   catch_trim_threshold=0;
 | |
|   catch_startdate_offset=0;
 | |
|   catch_enddate_offset=0;
 | |
|   catch_format=RDCae::Pcm16;
 | |
|   catch_channels=0;
 | |
|   catch_samplerate=0;
 | |
|   catch_bitrate=0;
 | |
|   catch_quality=0;
 | |
|   catch_normalize_level=-1;
 | |
|   catch_macro_cart=-1;
 | |
|   catch_switch_input=-1;
 | |
|   catch_switch_output=-1;
 | |
|   catch_status=RDDeck::Idle;
 | |
|   catch_oneshot=false;
 | |
|   catch_url="";
 | |
|   catch_resolved_url="";
 | |
|   catch_url_username="";
 | |
|   catch_url_password="";
 | |
|   catch_enable_metadata=false;
 | |
|   catch_temp_length=0;
 | |
|   catch_final_length=0;
 | |
|   catch_gpi_start_timer=NULL;
 | |
|   catch_gpi_offset_timer=NULL;
 | |
|   catch_allow_multiple_recordings=false;
 | |
|   catch_max_gpi_record_length=0;
 | |
|   catch_description="";
 | |
|   catch_feed_id=-1;
 | |
|   catch_podcast_length=0;
 | |
|   catch_podcast_time=0;
 | |
|   catch_eventdate_offset=0;
 | |
| }
 |