// rdlog_line.h // // A container class for a Rivendell Log Line. // // (C) Copyright 2002-2020 Fred Gleason // // 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 RDLOG_LINE_H #define RDLOG_LINE_H #include #include #include #include #include #include class RDLogLine { public: enum StartTimeType {Imported=0,Logged=1,Predicted=2,Actual=3,Initial=4}; enum TimeType {Relative=0,Hard=1,NoTime=255}; enum TransType {Play=0,Segue=1,Stop=2,NoTrans=255}; enum TransEdge {AllTrans=0,LeadingTrans=1,TrailingTrans=2}; enum Source {Manual=0,Traffic=1,Music=2,Template=3,Tracker=4}; enum Status {Scheduled=1,Playing=2,Auditioning=3,Finished=4, Finishing=5,Paused=6}; enum State {Ok=0,NoCart=1,NoCut=2}; enum Type {Cart=0,Marker=1,Macro=2,OpenBracket=3,CloseBracket=4,Chain=5, Track=6,MusicLink=7,TrafficLink=8,UnknownType=9}; enum StartSource {StartUnknown=0,StartManual=1,StartPlay=2,StartSegue=3, StartTime=4,StartPanel=5,StartMacro=6,StartChannel=7}; enum PlaySource {UnknownSource=0,MainLog=1,AuxLog1=2,AuxLog2=3,SoundPanel=4, CartSlot=5}; enum PointerSource {CartPointer=0,LogPointer=1,AutoPointer=2}; RDLogLine(); RDLogLine(unsigned cartnum,int cutnum=0); void clear(); void clearExternalData(); void clearTrackData(RDLogLine::TransEdge edge); void clearModified(void); int id() const; void setId(int id); bool hasBeenModified(void); RDLogLine::Status status() const; void setStatus(RDLogLine::Status stat); RDLogLine::State state() const; void setState(RDLogLine::State state); RDCart::Validity validity() const; RDCart::Validity validity(const QDateTime &datetime) const; void setValidity(RDCart::Validity valid); unsigned pass() const; void incrementPass(); void clearPass(); bool zombified() const; void setZombified(bool state); bool evergreen() const; void setEvergreen(bool state); RDLogLine::Source source() const; void setSource(RDLogLine::Source src); unsigned cartNumber() const; void setCartNumber(unsigned cart); QString cartNumberText() const; QTime startTime(RDLogLine::StartTimeType type) const; void setStartTime(RDLogLine::StartTimeType type,QTime time); QString startTimeText() const; int graceTime() const; void setGraceTime(int time); RDLogLine::TimeType timeType() const; void setTimeType(RDLogLine::TimeType type); QString originUser() const; void setOriginUser(const QString &username); QDateTime originDateTime() const; void setOriginDateTime(const QDateTime &datetime); RDLogLine::TransType transType() const; void setTransType(RDLogLine::TransType type); int startPoint(PointerSource ptr=RDLogLine::AutoPointer) const; void setStartPoint(int point,PointerSource ptr); int endPoint(PointerSource ptr=RDLogLine::AutoPointer) const; void setEndPoint(int point,PointerSource ptr); int segueStartPoint(PointerSource ptr=RDLogLine::AutoPointer) const; void setSegueStartPoint(int point,PointerSource ptr); int segueEndPoint(PointerSource ptr=RDLogLine::AutoPointer) const; void setSegueEndPoint(int point,PointerSource ptr); int segueGain() const; void setSegueGain(int gain); int fadeupPoint(PointerSource ptr=RDLogLine::AutoPointer) const; void setFadeupPoint(int point,PointerSource ptr); int fadeupGain() const; void setFadeupGain(int gain); int fadedownPoint(PointerSource ptr=RDLogLine::AutoPointer) const; void setFadedownPoint(int point,PointerSource ptr); int fadedownGain() const; void setFadedownGain(int gain); int duckUpGain() const; void setDuckUpGain(int gain); int duckDownGain() const; void setDuckDownGain(int gain); int talkStartPoint() const; void setTalkStartPoint(int point); int talkEndPoint() const; void setTalkEndPoint(int point); bool hookMode() const; void setHookMode(bool state); int hookStartPoint() const; void setHookStartPoint(int point); int hookEndPoint() const; void setHookEndPoint(int point); RDCart::Type cartType() const; void setCartType(RDCart::Type type); bool asyncronous() const; void setAsyncronous(bool state); QString groupName() const; void setGroupName(const QString &name); QColor groupColor() const; void setGroupColor(const QColor &color); QString title() const; void setTitle(const QString &title); QString titleText() const; QString artist() const; void setArtist(const QString &artist); QString publisher() const; void setPublisher(const QString &pub); QString composer() const; void setComposer(const QString &composer); QString album() const; void setAlbum(const QString &album); QDate year() const; void setYear(QDate year); QString isrc() const; void setIsrc(const QString &string); QString isci() const; void setIsci(const QString &string); QString recordingMbId() const; void setRecordingMbId(const QString &mbid); QString releaseMbId() const; void setReleaseMbId(const QString &mbid); QString label() const; void setLabel(const QString &label); QString conductor() const; void setConductor(const QString &cond); QString songId() const; void setSongId(const QString &id); QString client() const; void setClient(const QString &client); QString agency() const; void setAgency(const QString &agency); QString outcue() const; void setOutcue(const QString &outcue); QString description() const; void setDescription(const QString &desc); QString userDefined() const; void setUserDefined(const QString &string); QString cartNotes() const; void setCartNotes(const QString &str); RDCart::UsageCode usageCode() const; void setUsageCode(RDCart::UsageCode code); unsigned forcedLength() const; void setForcedLength(unsigned len); QString forcedLengthText() const; unsigned averageSegueLength() const; void setAverageSegueLength(unsigned len); unsigned cutQuantity() const; void setCutQuantity(unsigned quan); unsigned lastCutPlayed() const; void setLastCutPlayed(unsigned cut); RDCart::PlayOrder playOrder() const; void setPlayOrder(RDCart::PlayOrder order); bool enforceLength() const; void setEnforceLength(bool state); bool preservePitch() const; void setPreservePitch(bool state); QDateTime startDatetime() const; void setStartDatetime(const QDateTime &datetime); QDateTime endDatetime() const; void setEndDatetime(const QDateTime &datetime); RDListViewItem *listViewItem() const; void setListViewItem(RDListViewItem *); RDLogLine::Type type() const; void setType(RDLogLine::Type type); QString markerComment() const; void setMarkerComment(const QString &str); QString markerLabel() const; void setMarkerLabel(const QString &str); int deck() const; void setDeck(int deck); QObject *playDeck(); void setPlayDeck(QObject *deck); QString portName() const; void setPortName(const QString &name); QTime playTime() const; void setPlayTime(QTime time); QTime extStartTime() const; void setExtStartTime(QTime time); int extLength() const; void setExtLength(int length); QString extCartName() const; void setExtCartName(const QString &name); QString extData() const; void setExtData(const QString &data); QString extEventId() const; void setExtEventId(const QString &id); QString extAnncType() const; void setExtAnncType(const QString &type); int cutNumber() const; void setCutNumber(int cutnum); QString cutName() const; void setCutName(const QString &cutname); int pauseCard() const; void setPauseCard(int card); int pausePort() const; void setPausePort(int port); bool timescalingActive() const; void setTimescalingActive(bool state); int effectiveLength() const; int talkLength() const; int segueLength(RDLogLine::TransType next_trans); int segueTail(RDLogLine::TransType next_trans); int forcedStop() const; bool hasCustomTransition() const; void setHasCustomTransition(bool state); unsigned playPosition() const; void setPlayPosition(unsigned pos); bool playPositionChanged() const; void setPlayPositionChanged(bool state); bool nowNextEnabled() const; void setNowNextEnabled(bool state); bool useEventLength() const; void setUseEventLength(bool state); int eventLength() const; void setEventLength(int msec); QString linkEventName() const; void setLinkEventName(const QString &name); QTime linkStartTime() const; void setLinkStartTime(const QTime &time); int linkLength() const; void setLinkLength(int msecs); int linkStartSlop() const; void setLinkStartSlop(int msecs); int linkEndSlop() const; void setLinkEndSlop(int msecs); int linkId() const; void setLinkId(int id); bool linkEmbedded() const; void setLinkEmbedded(bool state); RDLogLine::StartSource startSource() const; void setStartSource(RDLogLine::StartSource src); QString resolveWildcards(QString pattern,int log_id=-1); RDLogLine::State setEvent(int mach,RDLogLine::TransType next_type, bool timescale,int len=-1); void loadCart(int cartnum,RDLogLine::TransType next_type,int mach, bool timescale,RDLogLine::TransType type=RDLogLine::NoTrans, int len=-1); void loadCart(int cartnum,int cutnum=-1); void refreshPointers(); QString xml(int line) const; static QString resolveNowNextDateTime(const QString &str,const QString &code, const QDateTime &dt); static QString resolveWildcards(unsigned cartnum,const QString &pattern, int cutnum=-1); static QString startSourceText(RDLogLine::StartSource src); static QString transText(RDLogLine::TransType trans); static QString typeText(RDLogLine::Type type); static QString timeTypeText(RDLogLine::TimeType type); static QString sourceText(RDLogLine::Source src); bool isHoldover() const; void setHoldover(bool); private: bool modified; int log_id; RDLogLine::Status log_status; RDLogLine::State log_state; RDLogLine::Source log_source; RDCart::Validity log_validity; unsigned log_pass; unsigned log_cart_number; QTime log_start_time[5]; RDLogLine::TimeType log_time_type; QString log_origin_user; QDateTime log_origin_datetime; RDLogLine::TransType log_trans_type; int log_start_point[2]; int log_end_point[2]; int log_segue_start_point[2]; int log_segue_end_point[2]; int log_segue_gain; int log_segue_gain_cut; int log_fadeup_point[2]; int log_fadeup_gain; int log_fadedown_point[2]; int log_fadedown_gain; int log_duck_up_gain; int log_duck_down_gain; bool log_hook_mode; int log_hook_start; int log_hook_end; RDCart::Type log_cart_type; QString log_group_name; QColor log_group_color; QString log_title; QString log_artist; QString log_album; QString log_publisher; QString log_composer; QString log_isrc; QString log_recording_mbid; QString log_release_mbid; QString log_isci; QDate log_year; QString log_label; QString log_conductor; QString log_song_id; QString log_client; QString log_agency; QString log_outcue; QString log_description; QString log_user_defined; QString log_cart_notes; RDCart::UsageCode log_usage_code; unsigned log_forced_length; unsigned log_cut_quantity; unsigned log_last_cut_played; RDCart::PlayOrder log_play_order; bool log_enforce_length; bool log_preserve_pitch; QDateTime log_start_datetime; QDateTime log_end_datetime; int log_deck; QTime log_play_time; int log_cut_number; int log_effective_length; int log_talk_start; int log_talk_end; int log_talk_length; unsigned log_play_position; RDLogLine::Type log_type; QString log_marker_comment; QString log_marker_label; QTime log_marker_post_time; RDListViewItem *log_listview; QString log_port_name; int log_grace_time; bool log_forced_stop; QObject *log_play_deck; bool log_play_position_changed; bool log_evergreen; QTime log_ext_start_time; int log_ext_length; int log_average_segue_length; QString log_ext_cart_name; QString log_ext_data; QString log_ext_event_id; QString log_ext_annc_type; int log_pause_card; int log_pause_port; bool log_now_next_enabled; PlaySource log_play_source; StartSource log_start_source; bool log_zombified; bool log_timescaling_active; bool log_asyncronous; QString log_cut_name; bool log_has_custom_transition; bool log_use_event_length; int log_event_length; QString log_link_event_name; QTime log_link_start_time; int log_link_length; int log_link_start_slop; int log_link_end_slop; int log_link_id; bool log_link_embedded; bool is_holdover; }; #endif // RDLOG_LINE