bool MainObject::StartAudioDevice() { // // Create Ringbuffers // if(sir_config->audioBitrateQuantity()==0) { // For VBR modes sir_ringbuffers. push_back(new Ringbuffer(RINGBUFFER_SIZE,sir_config->audioChannels())); } else { for(unsigned i=0;i<sir_config->audioBitrateQuantity();i++) { sir_ringbuffers. push_back(new Ringbuffer(RINGBUFFER_SIZE,sir_config->audioChannels())); } } // // Start Audio Device // QString err; if((sir_audio_device= AudioDeviceFactory(sir_config->audioDevice(),sir_config->audioChannels(), sir_config->audioSamplerate(), &sir_ringbuffers,this))==NULL) { Log(LOG_ERR, QString().sprintf("%s devices not supported", (const char *)AudioDevice::deviceTypeText(sir_config->audioDevice()).toUtf8())); exit(256); } connect(sir_audio_device,SIGNAL(hasStopped()), this,SLOT(audioDeviceStoppedData())); if(!sir_audio_device->processOptions(&err,sir_config->deviceKeys(), sir_config->deviceValues())) { Log(LOG_ERR,err); exit(256); } if(!sir_audio_device->start(&err)) { Log(LOG_ERR,err); exit(256); } sir_meter_timer=new QTimer(this); connect(sir_meter_timer,SIGNAL(timeout()),this,SLOT(meterData())); if(sir_config->meterData()) { sir_meter_timer->start(AUDIO_METER_INTERVAL); } return true; }
DevAlsa::DevAlsa(Codec *codec,QObject *parent) : AudioDevice(codec,parent) { #ifdef ALSA alsa_device=ALSA_DEFAULT_DEVICE; alsa_pcm_buffer=NULL; alsa_stopping=false; for(int i=0;i<MAX_AUDIO_CHANNELS;i++) { alsa_meter_avg[i]=new MeterAverage(8); } alsa_meter_timer=new QTimer(this); connect(alsa_meter_timer,SIGNAL(timeout()),this,SLOT(meterData())); alsa_play_position_timer=new QTimer(this); connect(alsa_play_position_timer,SIGNAL(timeout()), this,SLOT(playPositionData())); #endif // ALSA }
AsiHpiDevice::AsiHpiDevice(unsigned chans,unsigned samprate, std::vector<Ringbuffer *> *rings,QObject *parent) : AudioDevice(chans,samprate,rings,parent) { #ifdef ASIHPI asihpi_adapter_index=ASIHPI_DEFAULT_INDEX; asihpi_input_index=ASIHPI_DEFAULT_INPUT_INDEX; asihpi_input_gain=0; asihpi_channel_mode=HPI_CHANNEL_MODE_NORMAL; asihpi_input_source=HPI_SOURCENODE_LINEIN; asihpi_input_type=HPI_SOURCENODE_LINEIN; asihpi_pcm_buffer=NULL; asihpi_read_timer=new QTimer(this); connect(asihpi_read_timer,SIGNAL(timeout()),this,SLOT(readData())); asihpi_meter_timer=new QTimer(this); connect(asihpi_meter_timer,SIGNAL(timeout()),this,SLOT(meterData())); #endif // ASIHPI }
DevJack::DevJack(Codec *codec,QObject *parent) : AudioDevice(codec,parent) { #ifdef JACK jack_jack_client=NULL; jack_src=NULL; jack_server_name=""; jack_client_name=DEFAULT_JACK_CLIENT_NAME; jack_started=false; // // Metering // for(int i=0;i<MAX_AUDIO_CHANNELS;i++) { jack_meter_avg[i]=new MeterAverage(8); } jack_meter_timer=new QTimer(this); connect(jack_meter_timer,SIGNAL(timeout()),this,SLOT(meterData())); jack_play_position_timer=new QTimer(this); connect(jack_play_position_timer,SIGNAL(timeout()), this,SLOT(playPositionData())); #endif // JACK }
RecordCut::RecordCut(RDCart *cart,QString cut,bool use_weight, QWidget *parent) : QDialog(parent,"",true) { bool valid; bool is_track=cart->owner().isEmpty(); bool allow_modification=rda->user()->modifyCarts()&&is_track; bool allow_editing=rda->user()->editAudio()&&is_track; rec_use_weighting=use_weight; // // Fix the Window Size // setMinimumWidth(sizeHint().width()); setMaximumWidth(sizeHint().width()); setMinimumHeight(sizeHint().height()); setMaximumHeight(sizeHint().height()); // // Generate Fonts // QFont font=QFont("Helvetica",12,QFont::Bold); font.setPixelSize(12); QFont small_font=QFont("Helvetica",10,QFont::Bold); small_font.setPixelSize(10); QFont large_font=QFont("Helvetica",18,QFont::Bold); large_font.setPixelSize(18); QFont timer_font=QFont("Helvetica",20,QFont::Bold); timer_font.setPixelSize(20); QFont day_font=QFont("helvetica",10,QFont::Normal); day_font.setPixelSize(10); setCaption(tr("RDLibrary - Record")); rec_cut=new RDCut(cut); is_playing=false; is_ready=false; is_recording=false; is_closing=false; rec_timer_value=0; // // Load Audio Assignments // rec_card_no[0]=rda->libraryConf()->inputCard(); rec_port_no[0]=rda->libraryConf()->inputPort(); rec_card_no[1]=rda->libraryConf()->outputCard(); rec_port_no[1]=rda->libraryConf()->outputPort(); rec_play_handle=-1; // // CAE Connection // connect(rda->cae(),SIGNAL(isConnected(bool)),this,SLOT(initData(bool))); connect(rda->cae(),SIGNAL(playing(int)),this,SLOT(playedData(int))); connect(rda->cae(),SIGNAL(playStopped(int)),this,SLOT(playStoppedData(int))); connect(rda->cae(),SIGNAL(recordLoaded(int,int)), this,SLOT(recordLoadedData(int,int))); connect(rda->cae(),SIGNAL(recordUnloaded(int,int,unsigned)), this,SLOT(recordUnloadedData(int,int,unsigned))); connect(rda->cae(),SIGNAL(recording(int,int)),this,SLOT(recordedData(int,int))); connect(rda->cae(),SIGNAL(recordStopped(int,int)), this,SLOT(recordStoppedData(int,int))); connect(rda->cae(),SIGNAL(inputStatusChanged(int,int,bool)), this,SLOT(aesAlarmData(int,int,bool))); // // Audio Parameters // rec_card_no[0]=rda->libraryConf()->inputCard(); rec_card_no[1]=rda->libraryConf()->outputCard(); rec_name=rec_cut->cutName(); switch(rec_cut->codingFormat()) { case 0: rec_format=RDCae::Pcm16; break; case 1: rec_format=RDCae::MpegL2; break; default: rec_format=RDCae::Pcm16; break; } rec_channels=rec_cut->channels(); rec_samprate=rec_cut->sampleRate(); rec_bitrate=rec_cut->bitRate(); rec_length=rec_cut->length(); // // Cut Description // cut_description_edit=new QLineEdit(this); cut_description_edit->setGeometry(10,30,355,19); cut_description_edit->setMaxLength(64); QLabel *cut_description_label= new QLabel(cut_description_edit,tr("&Description"),this); cut_description_label->setGeometry(15,11,120,19); cut_description_label->setFont(font); cut_description_label->setAlignment(Qt::AlignLeft|Qt::TextShowMnemonic); // // Cut Outcue // cut_outcue_edit=new QLineEdit(this); cut_outcue_edit->setGeometry(10,75,355,19); cut_outcue_edit->setMaxLength(64); QLabel *cut_outcue_label=new QLabel(cut_outcue_edit,tr("&Outcue"),this); cut_outcue_label->setGeometry(15,56,120,19); cut_outcue_label->setFont(font); cut_outcue_label->setAlignment(Qt::AlignLeft|Qt::TextShowMnemonic); // // Cut ISCI Code // cut_isci_edit=new QLineEdit(this); cut_isci_edit->setGeometry(10,120,355,19); cut_isci_edit->setMaxLength(32); QLabel *cut_isci_label=new QLabel(cut_isci_edit,tr("&ISCI Code"),this); cut_isci_label->setGeometry(15,101,120,19); cut_isci_label->setFont(font); cut_isci_label->setAlignment(Qt::AlignLeft|Qt::TextShowMnemonic); // // Cut Origin // cut_origin_edit=new QLineEdit(this); cut_origin_edit->setGeometry(10,165,190,19); cut_origin_edit->setReadOnly(true); cut_origin_edit->setMaxLength(64); QLabel *cut_origin_label=new QLabel(cut_origin_edit,tr("Origin"),this); cut_origin_label->setGeometry(15,146,120,19); cut_origin_label->setFont(font); cut_origin_label->setAlignment(Qt::AlignLeft|Qt::TextShowMnemonic); // // Cut ISRC // cut_isrc_edit=new QLineEdit(this); cut_isrc_edit->setGeometry(220,165,145,19); cut_isrc_edit->setMaxLength(64); QLabel *cut_isrc_label=new QLabel(cut_isrc_edit,tr("ISRC"),this); cut_isrc_label->setGeometry(225,146,120,19); cut_isrc_label->setFont(font); cut_isrc_label->setAlignment(Qt::AlignLeft|Qt::TextShowMnemonic); // // Cut Weight // cut_weight_box=new QSpinBox(this); cut_weight_box->setGeometry(10,210,61,19); cut_weight_box->setRange(0,100); QLabel *cut_weight_label=new QLabel(cut_weight_box,tr("Weight"),this); cut_weight_label->setGeometry(10,191,61,19); cut_weight_label->setFont(font); cut_weight_label->setAlignment(Qt::AlignHCenter|Qt::TextShowMnemonic); // // Cut Play Date Time // cut_playdate_edit=new QLineEdit(this); cut_playdate_edit->setGeometry(100,210,150,19); cut_playdate_edit->setReadOnly(true); cut_playdate_edit->setMaxLength(64); QLabel *cut_playdate_label= new QLabel(cut_playdate_edit,tr("Last Played"),this); cut_playdate_label->setGeometry(105,191,120,19); cut_playdate_label->setFont(font); cut_playdate_label->setAlignment(Qt::AlignLeft|Qt::TextShowMnemonic); // // Cut Play Counter // cut_playcounter_edit=new QLineEdit(this); cut_playcounter_edit->setGeometry(285,210,80,19); cut_playcounter_edit->setAlignment(Qt::AlignRight); cut_playcounter_edit->setReadOnly(true); cut_playcounter_edit->setMaxLength(64); QLabel *cut_playcounter_label= new QLabel(cut_playcounter_edit,tr("# of Plays"),this); cut_playcounter_label->setGeometry(290,191,120,19); cut_playcounter_label->setFont(font); cut_playcounter_label->setAlignment(Qt::AlignLeft|Qt::TextShowMnemonic); // // Evergreen Checkbox // rec_evergreen_box=new QCheckBox(this); rec_evergreen_box->setGeometry(10,245,15,15); rec_evergreen_label=new QLabel(rec_evergreen_box,tr("Cut is EVERGREEN"),this); rec_evergreen_label->setGeometry(30,245,sizeHint().width()-40,15); rec_evergreen_label->setFont(font); rec_evergreen_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); connect(rec_evergreen_box,SIGNAL(toggled(bool)), this,SLOT(evergreenToggledData(bool))); // // Cut Air Date Times // cut_killdatetime_label=new QLabel(tr("Air Date/Time"),this); cut_killdatetime_label->setGeometry(50,268,100,19); cut_killdatetime_label->setAlignment(Qt::AlignHCenter); cut_killdatetime_label->setFont(font); Q3ButtonGroup *button_group=new Q3ButtonGroup(this); button_group->hide(); connect(button_group,SIGNAL(clicked(int)),this,SLOT(airDateButtonData(int))); cut_startdatetime_enable_button=new QRadioButton(tr("Enabled"),this, "air_date_enabled_button"); cut_startdatetime_enable_button->setGeometry(40,290,100,20); button_group->insert(cut_startdatetime_enable_button,true); cut_startdatetime_disable_button=new QRadioButton(tr("Disabled"),this); cut_startdatetime_disable_button->setGeometry(40,310,100,20); button_group->insert(cut_startdatetime_disable_button,false); cut_startdatetime_edit=new Q3DateTimeEdit(this); cut_startdatetime_edit->setGeometry(165,289,170,19); cut_startdatetime_label=new QLabel(cut_startdatetime_edit,tr("&Start"),this); cut_startdatetime_label->setGeometry(120,293,40,12); cut_startdatetime_label->setFont(small_font); cut_startdatetime_label->setAlignment(Qt::AlignRight|Qt::TextShowMnemonic); cut_enddatetime_edit=new Q3DateTimeEdit(this); cut_enddatetime_edit->setGeometry(165,309,170,19); cut_enddatetime_label=new QLabel(cut_enddatetime_edit,tr("End"),this); cut_enddatetime_label->setGeometry(120,313,40,12); cut_enddatetime_label->setFont(small_font); cut_enddatetime_label->setAlignment(Qt::AlignRight|Qt::TextShowMnemonic); // // Cut Daypart // cut_daypart_label=new QLabel(tr("Daypart"),this); cut_daypart_label->setGeometry(50,348,65,19); cut_daypart_label->setAlignment(Qt::AlignHCenter); cut_daypart_label->setFont(font); button_group=new Q3ButtonGroup(this); button_group->hide(); connect(button_group,SIGNAL(clicked(int)),this,SLOT(daypartButtonData(int))); cut_starttime_enable_button=new QRadioButton(tr("Enabled"),this); cut_starttime_enable_button->setGeometry(57,370,100,20); button_group->insert(cut_starttime_enable_button,true); cut_starttime_disable_button=new QRadioButton(tr("Disabled"),this); cut_starttime_disable_button->setGeometry(57,390,100,20); button_group->insert(cut_starttime_disable_button,false); cut_starttime_edit=new RDTimeEdit(this); cut_starttime_edit->setGeometry(222,369,90,19); cut_starttime_label=new QLabel(cut_starttime_edit,tr("&Start Time"),this); cut_starttime_label->setGeometry(137,373,80,12); cut_starttime_label->setFont(small_font); cut_starttime_label->setAlignment(Qt::AlignRight|Qt::TextShowMnemonic); cut_endtime_edit=new RDTimeEdit(this); cut_endtime_edit->setGeometry(222,389,90,19); cut_endtime_label=new QLabel(cut_endtime_edit,tr("End Time"),this); cut_endtime_label->setGeometry(137,393,80,12); cut_endtime_label->setFont(small_font); cut_endtime_label->setAlignment(Qt::AlignRight|Qt::TextShowMnemonic); // // Days of the Week // rec_dayofweek_label=new QLabel(tr("Day of the Week"),this); rec_dayofweek_label->setGeometry(50,428,125,19); rec_dayofweek_label->setAlignment(Qt::AlignHCenter); rec_dayofweek_label->setFont(font); rec_weekpart_button[0]=new QCheckBox(this); rec_weekpart_button[0]->setGeometry(40,447,15,15); rec_weekpart_label[0]=new QLabel(rec_weekpart_button[0],tr("Monday"), this,"rec_weekpart_label[0]"); rec_weekpart_label[0]->setGeometry(62,445,80,20); rec_weekpart_label[0]->setFont(day_font); rec_weekpart_label[0]->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); rec_weekpart_button[1]=new QCheckBox(this); rec_weekpart_button[1]->setGeometry(120,447,15,15); rec_weekpart_label[1]=new QLabel(rec_weekpart_button[1],tr("Tuesday"),this); rec_weekpart_label[1]->setGeometry(142,445,80,20); rec_weekpart_label[1]->setFont(day_font); rec_weekpart_label[1]->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); rec_weekpart_button[2]=new QCheckBox(this); rec_weekpart_button[2]->setGeometry(200,447,15,15); rec_weekpart_label[2]=new QLabel(rec_weekpart_button[2],tr("Wednesday"),this); rec_weekpart_label[2]->setGeometry(222,445,80,20); rec_weekpart_label[2]->setFont(day_font); rec_weekpart_label[2]->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); rec_weekpart_button[3]=new QCheckBox(this); rec_weekpart_button[3]->setGeometry(80,467,15,15); rec_weekpart_label[3]=new QLabel(rec_weekpart_button[3],tr("Thursday"),this); rec_weekpart_label[3]->setGeometry(102,465,80,20); rec_weekpart_label[3]->setFont(day_font); rec_weekpart_label[3]->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); rec_weekpart_button[4]=new QCheckBox(this); rec_weekpart_button[4]->setGeometry(180,467,15,15); rec_weekpart_label[4]=new QLabel(rec_weekpart_button[4],tr("Friday"),this); rec_weekpart_label[4]->setGeometry(202,465,80,20); rec_weekpart_label[4]->setFont(day_font); rec_weekpart_label[4]->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); rec_weekpart_button[5]=new QCheckBox(this); rec_weekpart_button[5]->setGeometry(80,487,15,15); rec_weekpart_label[5]=new QLabel(rec_weekpart_button[5],tr("Saturday"),this); rec_weekpart_label[5]->setGeometry(102,485,80,20); rec_weekpart_label[5]->setFont(day_font); rec_weekpart_label[5]->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); rec_weekpart_button[6]=new QCheckBox(this); rec_weekpart_button[6]->setGeometry(180,485,15,15); rec_weekpart_label[6]=new QLabel(rec_weekpart_button[6],tr("Sunday"),this); rec_weekpart_label[6]->setGeometry(202,485,80,20); rec_weekpart_label[6]->setFont(day_font); rec_weekpart_label[6]->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); rec_set_button=new QPushButton(tr("Set All"),this); rec_set_button->setGeometry(sizeHint().width()-80,441,55,30); rec_set_button->setFont(small_font); connect(rec_set_button,SIGNAL(clicked()),this,SLOT(setAllData())); rec_clear_button=new QPushButton(tr("Clear All"),this); rec_clear_button->setGeometry(sizeHint().width()-80,476,55,30); rec_clear_button->setFont(small_font); connect(rec_clear_button,SIGNAL(clicked()),this,SLOT(clearAllData())); // // Audio Meter // rec_meter=new RDStereoMeter(this); rec_meter->setGeometry(20,520,rec_meter->geometry().width(), rec_meter->geometry().height()); rec_meter->setReference(0); rec_meter->setMode(RDSegMeter::Independent); QTimer *timer=new QTimer(this); connect(timer,SIGNAL(timeout()),this,SLOT(meterData())); timer->start(RD_METER_UPDATE_INTERVAL); // // AES Alarm // rec_aes_alarm_label=new QLabel(this); rec_aes_alarm_label->setGeometry(15,592,110,22); rec_aes_alarm_label->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); rec_aes_alarm_label->setFont(large_font); rec_aes_alarm_label->setPalette(QColor(Qt::red)); rec_aes_alarm_label->setText(tr("AES ALARM")); rec_aes_alarm_label->hide(); // // Record Timer // rec_timer=new QTimer(this); connect(rec_timer,SIGNAL(timeout()),this,SLOT(recTimerData())); rec_timer_label=new QLabel(this); rec_timer_label->setGeometry(130,580,120,50); rec_timer_label->setFont(timer_font); rec_timer_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); rec_timer_label->setText(RDGetTimeLength(rec_length,true)); // // Channels // rec_channels_box=new QComboBox(this); rec_channels_box->setGeometry(20,635,60,35); rec_channels_edit=new QLineEdit(this); rec_channels_edit->setGeometry(20,635,60,35); QLabel *rec_channels_box_label= new QLabel(rec_channels_box,tr("Channels"),this); rec_channels_box_label->setGeometry(10,616,80,16); rec_channels_box_label->setAlignment(Qt::AlignHCenter); rec_channels_box_label->setFont(font); connect(rec_channels_box,SIGNAL(activated(int)), this,SLOT(channelsData(int))); // // Record Button // rec_record_button=new RDTransportButton(RDTransportButton::Record,this); rec_record_button->setGeometry(100,620,80,50); rec_record_button->setDefault(true); connect(rec_record_button,SIGNAL(clicked()),this,SLOT(recordData())); // // Play Button // rec_play_button=new RDTransportButton(RDTransportButton::Play,this); rec_play_button->setGeometry(190,620,80,50); rec_play_button->setDefault(true); connect(rec_play_button,SIGNAL(clicked()),this,SLOT(playData())); // // Stop Button // rec_stop_button=new RDTransportButton(RDTransportButton::Stop,this); rec_stop_button->setGeometry(280,620,80,50); rec_stop_button->setDefault(true); rec_stop_button->setState(RDTransportButton::On); rec_stop_button->setOnColor(QColor(Qt::red)); connect(rec_stop_button,SIGNAL(clicked()),this,SLOT(stopData())); // // Record Mode // rec_mode_box=new QComboBox(this); rec_mode_box->setGeometry(10,695,100,35); QLabel *rec_mode_box_label=new QLabel(rec_mode_box,tr("Record Mode"),this); rec_mode_box_label->setGeometry(10,676,100,16); rec_mode_box_label->setAlignment(Qt::AlignHCenter); rec_mode_box_label->setFont(font); // // AutoTrim Mode // rec_trim_box=new QComboBox(this); rec_trim_box->setGeometry(145,695,70,35); QLabel *rec_trim_box_label=new QLabel(rec_trim_box,tr("AutoTrim"),this); rec_trim_box_label->setGeometry(130,676,100,16); rec_trim_box_label->setAlignment(Qt::AlignHCenter); rec_trim_box_label->setFont(font); // // Close Button // QPushButton *close_button=new QPushButton(this); close_button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50); close_button->setDefault(true); close_button->setFont(font); close_button->setText(tr("&Close")); connect(close_button,SIGNAL(clicked()),this,SLOT(closeData())); // // Populate Fields // cut_description_edit->setText(rec_cut->description()); cut_outcue_edit->setText(rec_cut->outcue()); cut_origin_name=rec_cut->originName(); cut_origin_datetime=rec_cut->originDatetime(&valid); if(valid) { cut_origin_edit->setText(cut_origin_name+" - "+ cut_origin_datetime.toString("M/d/yyyy hh:mm:ss")); } cut_isci_edit->setText(rec_cut->isci()); cut_isrc_edit->setText(rec_cut->isrc(RDCut::FormattedIsrc)); if(use_weight) { cut_weight_label->setText(tr("Weight")); cut_weight_box->setValue(rec_cut->weight()); } else { cut_weight_label->setText(tr("Order")); cut_weight_box->setValue(rec_cut->playOrder()); } if(rec_cut->playCounter()>0) { cut_playdate_edit-> setText(rec_cut->lastPlayDatetime(&valid).toString("M/d/yyyy hh:mm:ss")); } else { cut_playdate_edit->setText("Never"); } cut_playcounter_edit-> setText(QString().sprintf("%d",rec_cut->playCounter())); rec_evergreen_box->setChecked(rec_cut->evergreen()); evergreenToggledData(rec_evergreen_box->isChecked()); cut_startdatetime_edit->setDateTime(rec_cut->startDatetime(&valid)); cut_enddatetime_edit->setDateTime(rec_cut->endDatetime(&valid)); cut_startdatetime_enable_button->setChecked(valid); cut_startdatetime_disable_button->setChecked(!valid); airDateButtonData(valid); cut_starttime_edit->setTime(rec_cut->startDaypart(&valid)); cut_endtime_edit->setTime(rec_cut->endDaypart(&valid)); cut_starttime_enable_button->setChecked(valid); cut_starttime_disable_button->setChecked(!valid); daypartButtonData(valid); for(int i=0;i<7;i++) { if(rec_cut->weekPart(i+1)) { rec_weekpart_button[i]->setChecked(true); } } rec_channels_box->insertItem("1"); rec_channels_box->insertItem("2"); rec_channels_box->setCurrentItem(rec_cut->channels()-1); rec_channels_edit->setText(QString().sprintf("%d",rec_cut->channels())); rec_mode_box->insertItem(tr("Manual")); rec_mode_box->insertItem(tr("VOX")); switch(rda->libraryConf()->defaultRecordMode()) { case RDLibraryConf::Manual: rec_mode_box->setCurrentItem(0); break; case RDLibraryConf::Vox: rec_mode_box->setCurrentItem(1); break; } rec_trim_box->insertItem(tr("On")); rec_trim_box->insertItem(tr("Off")); if(rda->libraryConf()->defaultTrimState()) { rec_trim_box->setCurrentItem(0); } else { rec_trim_box->setCurrentItem(1); } aesAlarmData(rec_card_no[0],rec_port_no[0], rda->cae()->inputStatus(rec_card_no[0],rec_port_no[0])); // // Set Control Perms // cut_description_edit->setReadOnly(!allow_modification); cut_outcue_edit->setReadOnly(!allow_modification); cut_isci_edit->setReadOnly(!allow_modification); cut_starttime_edit->setReadOnly(!allow_modification); cut_endtime_edit->setReadOnly(!allow_modification); if(!allow_modification) { cut_weight_box->setRange(cut_weight_box->value(),cut_weight_box->value()); if(cut_startdatetime_enable_button->isChecked()) { cut_startdatetime_edit->dateEdit()-> setRange(cut_startdatetime_edit->dateEdit()->date(), cut_startdatetime_edit->dateEdit()->date()); cut_startdatetime_edit->timeEdit()-> setRange(cut_startdatetime_edit->timeEdit()->time(), cut_startdatetime_edit->timeEdit()->time()); cut_enddatetime_edit->dateEdit()-> setRange(cut_enddatetime_edit->dateEdit()->date(), cut_enddatetime_edit->dateEdit()->date()); } if(cut_starttime_enable_button->isChecked()) { cut_enddatetime_edit->timeEdit()-> setRange(cut_enddatetime_edit->timeEdit()->time(), cut_enddatetime_edit->timeEdit()->time()); } } rec_evergreen_box->setEnabled(allow_modification); if(!allow_modification) { cut_startdatetime_enable_button->setDisabled(true); cut_startdatetime_disable_button->setDisabled(true); cut_starttime_enable_button->setDisabled(true); cut_starttime_disable_button->setDisabled(true); rec_set_button->setDisabled(true); rec_clear_button->setDisabled(true); } for(int i=0;i<7;i++) { rec_weekpart_button[i]->setEnabled(allow_modification); } rec_record_button-> setEnabled(allow_editing&&(rec_card_no[0]>=0)&&(rec_port_no[0]>=0)); rec_mode_box->setEnabled(allow_editing); rec_trim_box->setEnabled(allow_editing); if(allow_editing) { rec_channels_edit->hide(); } else { rec_channels_box->hide(); } }
MainWidget::MainWidget(QWidget *parent,const char *name) :QWidget(parent,name) { QPixmap *pm; QPainter *pd; QPixmap *mainmap; // // Fix the Window Size // #ifndef RESIZABLE setMinimumWidth(sizeHint().width()); setMaximumWidth(sizeHint().width()); setMinimumHeight(sizeHint().height()); setMaximumHeight(sizeHint().height()); #endif // RESIZABLE // // Load the command-line arguments // RDCmdSwitch *cmd=new RDCmdSwitch(qApp->argc(),qApp->argv(),"rdpanel", RDPANEL_USAGE); // // Generate Fonts // QFont button_font=QFont("Helvetica",16,QFont::Bold); button_font.setPixelSize(16); // // Create Icons // lib_rivendell_map=new QPixmap(rivendell_xpm); setIcon(*lib_rivendell_map); // // Ensure that system daemons are running // RDInitializeDaemons(); // // Load Local Configs // panel_config=new RDConfig(); panel_config->load(); // // Open Database // panel_db=QSqlDatabase::addDatabase("QMYSQL3"); if(!panel_db) { QMessageBox::warning(this, "Can't Connect","Unable to connect to mySQL Server!",0,1,1); exit(0); } panel_db->setDatabaseName(panel_config->mysqlDbname()); panel_db->setUserName(panel_config->mysqlUsername()); panel_db->setPassword(panel_config->mysqlPassword()); panel_db->setHostName(panel_config->mysqlHostname()); if(!panel_db->open()) { QMessageBox::warning(this, "Can't Connect","Unable to connect to mySQL Server!"); panel_db->removeDatabase(panel_config->mysqlDbname()); exit(0); } new RDDbHeartbeat(panel_config->mysqlHeartbeatInterval(),this); // // Master Clock Timer // panel_master_timer=new QTimer(this,"panel_master_timer"); connect(panel_master_timer,SIGNAL(timeout()),this,SLOT(masterTimerData())); panel_master_timer->start(MASTER_TIMER_INTERVAL); // // CAE Connection // panel_cae=new RDCae(parent,name); panel_cae->connectHost("localhost",CAED_TCP_PORT,panel_config->password()); // // Allocate Global Resources // rdstation_conf=new RDStation(panel_config->stationName()); rdairplay_conf=new RDAirPlayConf(panel_config->stationName(),0,"RDPANEL"); panel_skin_pixmap=new QPixmap(rdairplay_conf->skinPath()); if(panel_skin_pixmap->isNull()||(panel_skin_pixmap->width()<1024)|| (panel_skin_pixmap->height()<738)) { delete panel_skin_pixmap; panel_skin_pixmap=NULL; } else { setErasePixmap(*panel_skin_pixmap); } // // RIPC Connection // rdripc=new RDRipc(panel_config->stationName()); connect(rdripc,SIGNAL(userChanged()),this,SLOT(userData())); connect(rdripc,SIGNAL(rmlReceived(RDMacro *)), this,SLOT(rmlReceivedData(RDMacro *))); // rdripc->connectHost("localhost",RIPCD_TCP_PORT,panel_config->password()); // // User // rduser=NULL; // // Meter Timer // QTimer *timer=new QTimer(this,"meter_timer"); connect(timer,SIGNAL(timeout()),this,SLOT(meterData())); timer->start(METER_INTERVAL); // // Macro Player // panel_player=new RDEventPlayer(rdripc,this); // // Cart Picker // panel_cart_dialog=new RDCartDialog(&panel_filter,&panel_group, rdairplay_conf->card(3), rdairplay_conf->port(3), 0,0,panel_cae,rdripc,rdstation_conf, rdstation_conf->editorPath(), this,"panel_cart_dialog"); // // Sound Panel Array // if (rdairplay_conf->panels(RDAirPlayConf::StationPanel) || rdairplay_conf->panels(RDAirPlayConf::UserPanel)){ int card=-1; panel_panel= new RDSoundPanel(RDPANEL_PANEL_BUTTON_COLUMNS,RDPANEL_PANEL_BUTTON_ROWS, rdairplay_conf->panels(RDAirPlayConf::StationPanel), rdairplay_conf->panels(RDAirPlayConf::UserPanel), rdairplay_conf->flashPanel(), rdairplay_conf->buttonLabelTemplate(),true,panel_player, rdripc,panel_cae,rdstation_conf,panel_cart_dialog, this,"panel_panel"); panel_panel->setLogfile(panel_config->airplayLogname()); panel_panel->setGeometry(10,10,panel_panel->sizeHint().width(), panel_panel->sizeHint().height()); if(panel_skin_pixmap!=NULL) { pm=new QPixmap(1024,738); pd=new QPainter(pm); pd->drawPixmap(-10,-10,*panel_skin_pixmap); pd->end(); panel_panel->setErasePixmap(*pm); delete pd; delete pm; } panel_panel->setPauseEnabled(rdairplay_conf->panelPauseEnabled()); panel_panel->setCard(0,rdairplay_conf->card(2)); panel_panel->setPort(0,rdairplay_conf->port(2)); panel_panel->setFocusPolicy(QWidget::NoFocus); if((card=rdairplay_conf->card(6))<0) { panel_panel->setCard(1,panel_panel->card(0)); panel_panel->setPort(1,panel_panel->port(0)); } else { panel_panel->setCard(1,card); panel_panel->setPort(1,rdairplay_conf->port(6)); } if((card=rdairplay_conf->card(7))<0) { panel_panel->setCard(2,panel_panel->card(1)); panel_panel->setPort(2,panel_panel->port(1)); } else { panel_panel->setCard(2,card); panel_panel->setPort(2,rdairplay_conf->port(7)); } if((card=rdairplay_conf->card(8))<0) { panel_panel->setCard(3,panel_panel->card(2)); panel_panel->setPort(3,panel_panel->port(2)); } else { panel_panel->setCard(3,card); panel_panel->setPort(3,rdairplay_conf->port(8)); } if((card=rdairplay_conf->card(9))<0) { panel_panel->setCard(4,panel_panel->card(3)); panel_panel->setPort(4,panel_panel->port(3)); } else { panel_panel->setCard(4,card); panel_panel->setPort(4,rdairplay_conf->port(9)); } // // Calculate Valid Ports for Reading Meter Data (No Duplicates) // for(int i=4;i>=0;i--) { meter_data_valid[i]=(panel_panel->card(i)>=0); for(int j=0;j<i;j++) { if((panel_panel->card(i)==panel_panel->card(j))&& (panel_panel->port(i)==panel_panel->port(j))) { meter_data_valid[i]=false; } } } panel_panel-> setRmls(0,rdairplay_conf->startRml(2),rdairplay_conf->stopRml(2)); panel_panel-> setRmls(1,rdairplay_conf->startRml(6),rdairplay_conf->stopRml(6)); panel_panel-> setRmls(2,rdairplay_conf->startRml(7),rdairplay_conf->stopRml(7)); panel_panel-> setRmls(3,rdairplay_conf->startRml(8),rdairplay_conf->stopRml(8)); panel_panel-> setRmls(4,rdairplay_conf->startRml(9),rdairplay_conf->stopRml(9)); panel_panel->setSvcName(rdairplay_conf->defaultSvc()); connect(rdripc,SIGNAL(userChanged()),panel_panel,SLOT(changeUser())); connect(panel_master_timer,SIGNAL(timeout()), panel_panel,SLOT(tickClock())); } // // Audio Meter // panel_stereo_meter=new RDStereoMeter(this,"panel_stereo_meter"); panel_stereo_meter-> setGeometry(40, sizeHint().height()-panel_stereo_meter->sizeHint().height()-7, panel_stereo_meter->sizeHint().width(), panel_stereo_meter->sizeHint().height()); panel_stereo_meter->setMode(RDSegMeter::Peak); panel_stereo_meter->setFocusPolicy(QWidget::NoFocus); if(panel_config->useStreamMeters()) { panel_stereo_meter->hide(); } rdripc->connectHost("localhost",RIPCD_TCP_PORT,panel_config->password()); // // Signal Handlers // signal(SIGCHLD,SigHandler); }