📄 open_panels.cpp
字号:
jackPropLayout->addWidget( jackPace, 2, 1 ); /* Auto Connect */ jackConnect = new QCheckBox( qtr( "Auto connnection" )); jackPropLayout->addWidget( jackConnect, 3, 1 ); /* Jack CONNECTs */ CuMRL( jackChannels, valueChanged( int ) ); CuMRL( jackCaching, valueChanged( int ) ); CuMRL( jackPace, stateChanged( int ) ); CuMRL( jackConnect, stateChanged( int ) ); CuMRL( jackPortsSelected, textChanged( QString ) ); } /************ * PVR * ************/ if( module_Exists( p_intf, "pvr" ) ){ addModuleAndLayouts( PVR_DEVICE, pvr, "PVR" ); /* PVR Main panel */ QLabel *pvrDeviceLabel = new QLabel( qtr( "Device name" ) ); pvrDevLayout->addWidget( pvrDeviceLabel, 0, 0 ); pvrDevice = new QLineEdit; pvrDevLayout->addWidget( pvrDevice, 0, 1 ); QLabel *pvrRadioDeviceLabel = new QLabel( qtr( "Radio device name" ) ); pvrDevLayout->addWidget( pvrRadioDeviceLabel, 1, 0 ); pvrRadioDevice = new QLineEdit; pvrDevLayout->addWidget( pvrRadioDevice, 1, 1 ); /* PVR props panel */ QLabel *pvrNormLabel = new QLabel( qtr( "Norm" ) ); pvrPropLayout->addWidget( pvrNormLabel, 0, 0 ); pvrNormBox = new QComboBox; setfillVLCConfigCombo( "pvr-norm", p_intf, pvrNormBox ); pvrPropLayout->addWidget( pvrNormBox, 0, 1 ); QLabel *pvrFreqLabel = new QLabel( qtr( "Frequency" ) ); pvrPropLayout->addWidget( pvrFreqLabel, 1, 0 ); pvrFreq = new QSpinBox; pvrFreq->setAlignment( Qt::AlignRight ); pvrFreq->setSuffix(" kHz"); setSpinBoxFreq( pvrFreq ); pvrPropLayout->addWidget( pvrFreq, 1, 1 ); QLabel *pvrBitrLabel = new QLabel( qtr( "Bitrate" ) ); pvrPropLayout->addWidget( pvrBitrLabel, 2, 0 ); pvrBitr = new QSpinBox; pvrBitr->setAlignment( Qt::AlignRight ); pvrBitr->setSuffix(" kHz"); setSpinBoxFreq( pvrBitr ); pvrPropLayout->addWidget( pvrBitr, 2, 1 ); pvrPropLayout->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding ), 3, 0, 1, 1 ); /* PVR CONNECTs */ CuMRL( pvrDevice, textChanged( QString ) ); CuMRL( pvrRadioDevice, textChanged( QString ) ); CuMRL( pvrFreq, valueChanged ( int ) ); CuMRL( pvrBitr, valueChanged ( int ) ); CuMRL( pvrNormBox, currentIndexChanged ( int ) ); } /************** * DVB Stuffs * **************/ if( module_Exists( p_intf, "dvb" ) ){ addModuleAndLayouts( DVB_DEVICE, dvb, "DVB" ); /* DVB Main */ QLabel *dvbDeviceLabel = new QLabel( qtr( "Adapter card to tune" ) ); QLabel *dvbTypeLabel = new QLabel( qtr( "DVB Type:" ) ); dvbCard = new QSpinBox; dvbCard->setAlignment( Qt::AlignRight ); dvbCard->setPrefix( "/dev/dvb/adapter" ); dvbDevLayout->addWidget( dvbDeviceLabel, 0, 0 ); dvbDevLayout->addWidget( dvbCard, 0, 2, 1, 2 ); dvbs = new QRadioButton( "DVB-S" ); dvbs->setChecked( true ); dvbc = new QRadioButton( "DVB-C" ); dvbt = new QRadioButton( "DVB-T" ); dvbDevLayout->addWidget( dvbTypeLabel, 1, 0 ); dvbDevLayout->addWidget( dvbs, 1, 1 ); dvbDevLayout->addWidget( dvbc, 1, 2 ); dvbDevLayout->addWidget( dvbt, 1, 3 ); /* DVB Props panel */ QLabel *dvbFreqLabel = new QLabel( qtr( "Transponder/multiplex frequency" ) ); dvbPropLayout->addWidget( dvbFreqLabel, 0, 0 ); dvbFreq = new QSpinBox; dvbFreq->setAlignment( Qt::AlignRight ); dvbFreq->setSuffix(" kHz"); setSpinBoxFreq( dvbFreq ); dvbPropLayout->addWidget( dvbFreq, 0, 1 ); QLabel *dvbSrateLabel = new QLabel( qtr( "Transponder symbol rate" ) ); dvbPropLayout->addWidget( dvbSrateLabel, 1, 0 ); dvbSrate = new QSpinBox; dvbSrate->setAlignment( Qt::AlignRight ); dvbSrate->setSuffix(" kHz"); setSpinBoxFreq( dvbSrate ); dvbPropLayout->addWidget( dvbSrate, 1, 1 ); dvbPropLayout->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding ), 2, 0, 2, 1 ); /* DVB CONNECTs */ CuMRL( dvbCard, valueChanged ( int ) ); CuMRL( dvbFreq, valueChanged ( int ) ); CuMRL( dvbSrate, valueChanged ( int ) ); BUTTONACT( dvbs, updateButtons() ); BUTTONACT( dvbt, updateButtons() ); BUTTONACT( dvbc, updateButtons() ); }#endif /********** * Screen * **********/ addModuleAndLayouts( SCREEN_DEVICE, screen, "Desktop" ); QLabel *screenLabel = new QLabel( "This option will open your own " "desktop in order to save or stream it."); screenLabel->setWordWrap( true ); screenDevLayout->addWidget( screenLabel, 0, 0 ); QLabel *screenFPSLabel = new QLabel( qtr( "Desired frame rate for the capture." ) ); screenPropLayout->addWidget( screenFPSLabel, 0, 0 ); screenFPS = new QSpinBox; screenFPS->setValue( 1 ); screenFPS->setAlignment( Qt::AlignRight ); screenPropLayout->addWidget( screenFPS, 0, 1 ); /* General connects */ CONNECT( ui.deviceCombo, activated( int ) , stackedDevLayout, setCurrentIndex( int ) ); CONNECT( ui.deviceCombo, activated( int ), stackedPropLayout, setCurrentIndex( int ) ); CONNECT( ui.deviceCombo, activated( int ), this, updateMRL() ); CONNECT( ui.deviceCombo, activated( int ), this, updateButtons() );#undef addModule}CaptureOpenPanel::~CaptureOpenPanel(){}void CaptureOpenPanel::clear(){ advMRL.clear();}void CaptureOpenPanel::updateMRL(){ QString mrl = ""; int i_devicetype = ui.deviceCombo->itemData( ui.deviceCombo->currentIndex() ).toInt(); switch( i_devicetype ) {#ifdef WIN32 case BDA_DEVICE: if( bdas->isChecked() ) mrl = "dvb-s://"; else if( bdat->isChecked() ) mrl = "dvb-t://"; else if( bdac->isChecked() ) mrl = "dvb-c://"; else return; mrl += " :dvb-frequency=" + QString("%1").arg( bdaFreq->value() ); if( bdas->isChecked() || bdac->isChecked() ) mrl += " :dvb-srate=" + QString("%1").arg( bdaSrate->value() ); else mrl += " :dvb-bandwidth=" + QString("%1").arg( bdaBandBox->itemData( bdaBandBox->currentIndex() ).toInt() ); break; case DSHOW_DEVICE: mrl = "dshow://"; mrl+= " :dshow-vdev=" + QString("\"%1\"").arg( vdevDshowW->getValue() ); mrl+= " :dshow-adev=" + QString("\"%1\"").arg( adevDshowW->getValue() ); if( dshowVSizeLine->isModified() ) mrl += " :dshow-size=" + dshowVSizeLine->text(); break;#else case V4L_DEVICE: mrl = "v4l://"; mrl += " :v4l-vdev=" + v4lVideoDevice->text(); mrl += " :v4l-adev=" + v4lAudioDevice->text(); mrl += " :v4l-norm=" + QString("%1").arg( v4lNormBox->currentIndex() ); mrl += " :v4l-frequency=" + QString("%1").arg( v4lFreq->value() ); break; case V4L2_DEVICE: mrl = "v4l2://"; mrl += " :v4l2-dev=" + v4l2VideoDevice->text(); mrl += " :v4l2-adev=" + v4l2AudioDevice->text(); mrl += " :v4l2-standard=" + QString("%1").arg( v4l2StdBox->currentIndex() ); break; case JACK_DEVICE: mrl = "jack://"; mrl += "channels=" + QString("%1").arg( jackChannels->value() ); mrl += " :ports=" + jackPortsSelected->text(); mrl += " :jack-input-caching=" + QString("%1").arg( jackCaching->value() ); if ( jackPace->isChecked() ) { mrl += " :jack-input-use-vlc-pace"; } if ( jackConnect->isChecked() ) { mrl += " :jack-input-auto-connect"; } break; case PVR_DEVICE: mrl = "pvr://"; mrl += " :pvr-device=" + pvrDevice->text(); mrl += " :pvr-radio-device=" + pvrRadioDevice->text(); mrl += " :pvr-norm=" + QString("%1").arg( pvrNormBox->currentIndex() ); if( pvrFreq->value() ) mrl += " :pvr-frequency=" + QString("%1").arg( pvrFreq->value() ); if( pvrBitr->value() ) mrl += " :pvr-bitrate=" + QString("%1").arg( pvrBitr->value() ); break; case DVB_DEVICE: mrl = "dvb://"; mrl += " :dvb-adapter=" + QString("%1").arg( dvbCard->value() ); mrl += " :dvb-frequency=" + QString("%1").arg( dvbFreq->value() ); mrl += " :dvb-srate=" + QString("%1").arg( dvbSrate->value() ); break;#endif case SCREEN_DEVICE: mrl = "screen://"; mrl += " :screen-fps=" + QString("%1").arg( screenFPS->value() ); updateButtons(); break; } if( !advMRL.isEmpty() ) mrl += advMRL; emit mrlUpdated( mrl );}/** * Update the Buttons (show/hide) for the GUI as all device type don't * use the same ui. elements. **/void CaptureOpenPanel::updateButtons(){ /* Be sure to display the ui Elements in case they were hidden by * some Device Type (like Screen://) */ ui.optionsBox->show(); ui.advancedButton->show(); /* Get the current Device Number */ int i_devicetype = ui.deviceCombo->itemData( ui.deviceCombo->currentIndex() ).toInt(); switch( i_devicetype ) {#ifdef WIN32 case BDA_DEVICE: if( bdas->isChecked() || bdac->isChecked() ) { bdaSrate->show(); bdaSrateLabel->show(); bdaBandBox->hide(); bdaBandLabel->hide(); } else { bdaSrate->hide(); bdaSrateLabel->hide(); bdaBandBox->show(); bdaBandLabel->show(); } break;#else case DVB_DEVICE: if( dvbs->isChecked() ) dvbFreq->setSuffix(" kHz"); if( dvbc->isChecked() || dvbt->isChecked() ) dvbFreq->setSuffix(" Hz"); break;#endif case SCREEN_DEVICE: //ui.optionsBox->hide(); ui.advancedButton->hide(); break; } advMRL.clear();}void CaptureOpenPanel::advancedDialog(){ /* Get selected device type */ int i_devicetype = ui.deviceCombo->itemData( ui.deviceCombo->currentIndex() ).toInt(); /* Get the corresponding module */ module_t *p_module = module_Find( VLC_OBJECT(p_intf), psz_devModule[i_devicetype] ); if( NULL == p_module ) return; /* Init */ QList<ConfigControl *> controls; /* Get the confsize */ unsigned int i_confsize; module_config_t *p_config; p_config = module_GetConfig( p_module, &i_confsize ); /* New Adv Prop dialog */ adv = new QDialog( this ); adv->setWindowTitle( qtr( "Advanced Options" ) ); /* A main Layout with a Frame */ QVBoxLayout *mainLayout = new QVBoxLayout( adv ); QScrollArea *scroll = new QScrollArea; mainLayout->addWidget( scroll ); QFrame *advFrame = new QFrame; /* GridLayout inside the Frame */ QGridLayout *gLayout = new QGridLayout( advFrame ); scroll->setWidgetResizable( true ); scroll->setWidget( advFrame ); /* Create the options inside the FrameLayout */ for( int n = 0; n < i_confsize; n++ ) { module_config_t *p_item = p_config + n; ConfigControl *config = ConfigControl::createControl( VLC_OBJECT( p_intf ), p_item, advFrame, gLayout, n ); controls.append( config ); } /* Button stuffs */ QDialogButtonBox *advButtonBox = new QDialogButtonBox( adv ); QPushButton *closeButton = new QPushButton( qtr( "OK" ) ); QPushButton *cancelButton = new QPushButton( qtr( "Cancel" ) ); CONNECT( closeButton, clicked(), adv, accept() ); CONNECT( cancelButton, clicked(), adv, reject() ); advButtonBox->addButton( closeButton, QDialogButtonBox::AcceptRole ); advButtonBox->addButton( cancelButton, QDialogButtonBox::RejectRole ); mainLayout->addWidget( advButtonBox ); /* Creation of the MRL */ if( adv->exec() ) { QString tempMRL = ""; for( int i = 0; i < controls.size(); i++ ) { ConfigControl *control = controls[i]; if( !control ) { msg_Dbg( p_intf, "This shouldn't happen, please report" ); continue; } tempMRL += (i ? " :" : ":"); if( control->getType() == CONFIG_ITEM_BOOL ) if( !(qobject_cast<VIntConfigControl *>(control)->getValue() ) ) tempMRL += "no-"; tempMRL += control->getName(); switch( control->getType() ) { case CONFIG_ITEM_STRING: case CONFIG_ITEM_FILE: case CONFIG_ITEM_DIRECTORY: case CONFIG_ITEM_MODULE: tempMRL += QString("=\"%1\"").arg( qobject_cast<VStringConfigControl *>(control)->getValue() ); break; case CONFIG_ITEM_INTEGER: tempMRL += QString("=%1").arg( qobject_cast<VIntConfigControl *>(control)->getValue() ); break; case CONFIG_ITEM_FLOAT: tempMRL += QString("=%1").arg( qobject_cast<VFloatConfigControl *>(control)->getValue() ); break; } } advMRL = tempMRL; updateMRL(); msg_Dbg( p_intf, "%s", qtu( advMRL ) ); } delete adv; module_PutConfig( p_config ); module_Put( p_module );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -