📄 krecord.cpp
字号:
char text[32]; statusline->changeItem((1==p->channels) ? "mono":"stereo", STAT_CHANNELS); sprintf(text,"%d",p->rate); statusline->changeItem(text,STAT_RATE); sprintf(text,"%d ms",p->latency); statusline->changeItem(text,STAT_LATENCY); statusline->changeItem(sndfmt2str(p->format),STAT_FORMAT);}voidKRecord::update_statusline(const char *text){ statusline->changeItem(text,STAT_MISC);}/* ------------------------------------------------------------------------ */void KRecord::new_file(){ QString filename; if (NULL == (filename = fdialog->getSaveFileName (NULL,"*.wav",NULL,"fdialog"))) return; blist->add_filebuffer(filename);}void KRecord::save_as(){ QString filename; if (NULL == (filename = fdialog->getSaveFileName (NULL,"*.wav",NULL,"fdialog"))) return; blist->save_buf(filename);}void KRecord::quit_cb(){ blist->stop(); delete this; globalKapp->quit();}void KRecord::record_options(){ soundopts->show();}void KRecord::exec_mixer(){ KProcess *kmix; kmix = new KProcess; *kmix << "kmix"; kmix->start(KProcess::DontCare);}void KRecord::tb_toggle(){ if (toolBar("Toolbar")->isVisible()) { toolBar("Toolbar")->enable(KToolBar::Hide); opt_menu->changeItem(i18n("Show &Toolbar"), tb_mid); } else { toolBar("Toolbar")->enable(KToolBar::Show); opt_menu->changeItem(i18n("Hide &Toolbar"), tb_mid); }}void KRecord::sl_toggle(){ if (statusBar()->isVisible()) { statusBar()->hide(); opt_menu->changeItem(i18n("Show Status&line"), sl_mid); } else { statusBar()->show(); opt_menu->changeItem(i18n("Hide Status&line"), sl_mid); }}void KRecord::dropEvent(QDropEvent *de) // something has been dropped{ QStrList strlist; QUriDrag::decode(de,strlist); QString *url = new QString(strlist.first()); const char *h; fprintf(stderr,"dropEvent\n"); while ((const char*)*url) { h = (const char*)*url; if (0 == strncmp(h,"file:",5)) blist->add_filebuffer(h+5); delete url; url = new QString(strlist.next()); }}void KRecord::dragEnterEvent(QDragEnterEvent* event){ event->accept(QTextDrag::canDecode(event) || QImageDrag::canDecode(event));}/* ------------------------------------------------------------------------ */KFFT::KFFT(Soundcard *card) : KMainWindow(0,"fft",WType_TopLevel){ int i = -1; QWidget* centralWidget = new QWidget(this); setCentralWidget(centralWidget); QVBoxLayout *topLayout = new QVBoxLayout(centralWidget,0); /* button group #1 */ QButtonGroup* linLogGroup = new QHButtonGroup( centralWidget, "LinLogGroup" ); topLayout->addWidget(linLogGroup,0); QRadioButton* rb1 = new QRadioButton( linLogGroup ); rb1->setText( i18n("L&og") ); QToolTip::add( rb1, i18n("Logarithmic Y scale") ); QRadioButton* rb2 = new QRadioButton( linLogGroup ); rb2->setText( i18n("L&inear") ); rb2->setChecked( TRUE ); QToolTip::add( rb2, i18n("Linear Y scale") ); fftwin = new FFTWindow(centralWidget,"fft"); topLayout->addWidget(fftwin,1); QObject::connect(card,SIGNAL(senddata(void*)), fftwin, SLOT(new_data(void*))); QObject::connect(card,SIGNAL(newparams(struct SOUNDPARAMS*)), fftwin, SLOT(new_params(struct SOUNDPARAMS*))); QObject::connect(linLogGroup, SIGNAL(clicked(int)), fftwin, SLOT(set_ylog(int)) ); setCaption("freq spectrum");#if 1 /* session management */ if (globalKapp->isRestored()) { for (i = 1; canBeRestored(i); i++) if (0 == strcmp(classNameOfToplevel(i),"KFFT")) break; if (!canBeRestored(i)) i = -1; } if (i > 0) { restore(i); } else { resize(200,120); }#else resize(200,120);#endif}KFFT::~KFFT(){ delete fftwin; fftwin = NULL; }voidKFFT::showit(){ if (!isVisible()) show();}/* ------------------------------------------------------------------------ */KLevel::KLevel(Soundcard *card) : KMainWindow(0,"level",WType_TopLevel){ QRadioButton *rb1; QRadioButton *rb2; thislevelwidget = new QWidget(this); setCentralWidget(thislevelwidget); QVBoxLayout *topLayout = new QVBoxLayout(thislevelwidget,0); QHBoxLayout *hbox = new QHBoxLayout(); topLayout->addLayout(hbox); /* button group #1 */ PowMaxGroup = new QButtonGroup( thislevelwidget, "PowMaxGroup" ); QHBoxLayout *vbox = new QHBoxLayout(PowMaxGroup); hbox->addWidget(PowMaxGroup); rb1 = new QRadioButton( PowMaxGroup ); rb1->setText( i18n("L&og") ); rb1->setChecked( TRUE ); vbox->addWidget(rb1); rb1->setMinimumSize(rb1->sizeHint()); QToolTip::add( rb1, i18n("Logarithmic scale") ); rb2 = new QRadioButton( PowMaxGroup ); rb2->setText( i18n("L&inear") ); vbox->addWidget(rb2); rb2->setMinimumSize( rb2->sizeHint() ); QToolTip::add( rb2, i18n("Linear scale") ); connect( PowMaxGroup, SIGNAL(clicked(int)), SLOT(LogvsLinearClicked(int))); /* button group #2 */ LogLinGroup = new QButtonGroup( thislevelwidget, "LogLinGroup" ); vbox = new QHBoxLayout(LogLinGroup, 2); hbox->addWidget( LogLinGroup, 0); rb1 = new QRadioButton( LogLinGroup ); rb1->setText( i18n("&Power") ); rb1->setChecked( TRUE ); vbox->addWidget(rb1); rb1->setMinimumSize( rb1->sizeHint() ); QToolTip::add( rb1, i18n("Display power carried by signal") ); rb2 = new QRadioButton( LogLinGroup ); rb2->setText( i18n("&Max") ); vbox->addWidget(rb2); rb2->setMinimumSize( rb2->sizeHint() ); QToolTip::add( rb2, i18n("Display signal maximum level") ); /* level window */ levelwin = new LevelWindow(thislevelwidget,"level"); levelwin->setMinimumSize(40,10); topLayout->addWidget(levelwin, 1); QObject::connect(card,SIGNAL(senddata(void*)), levelwin, SLOT(new_data(void*))); QObject::connect(card,SIGNAL(newparams(struct SOUNDPARAMS*)), levelwin, SLOT(new_params(struct SOUNDPARAMS*))); setCaption("input level"); /* scale */ hbox = new QHBoxLayout(); topLayout->addLayout(hbox); llabel = new QLabel(thislevelwidget,"llabel"); llabel->setText("-100 dB"); llabel->setAlignment(AlignLeft); llabel->setMinimumSize(llabel->sizeHint()); mlabel = new QLabel(thislevelwidget,"mlabel"); mlabel->setText("-"); mlabel->setAlignment(AlignCenter); mlabel->setMinimumSize(mlabel->sizeHint()); rlabel = new QLabel(thislevelwidget,"rlabel"); rlabel->setText("0 dB"); rlabel->setAlignment(AlignRight); rlabel->setMinimumSize(llabel->sizeHint()); hbox->addWidget(llabel,1); hbox->addWidget(mlabel,1); hbox->addWidget(rlabel,1); connect(LogLinGroup, SIGNAL(clicked(int)), SLOT(PowervsMaxClicked(int))); connect(levelwin,SIGNAL(setvalue(char*)), this,SLOT(setvalue(char*))); /* show it */ setMaximumSize(800,80); resize(320,100); topLayout->activate();}KLevel::~KLevel(){ delete thislevelwidget; thislevelwidget = NULL; delete levelwin; levelwin = NULL;}voidKLevel::showit(){ if (!isVisible()) show();}void KLevel::resizeEvent( QResizeEvent * ){ thislevelwidget->resize(size()); thislevelwidget->show(); }void KLevel::setvalue(char *text) { mlabel->setText(text);}void KLevel::updatelabels() { if (levelwin->PowervsMax) { if (levelwin->LogvsLinear) { llabel->setText("-100 dB"); rlabel->setText("0 dB"); } else { llabel->setText(""); rlabel->setText(""); } } else { if (levelwin->LogvsLinear) { llabel->setText("-50 dB"); rlabel->setText("0 dB"); } else { llabel->setText("0%"); rlabel->setText("100%"); } } mlabel->setText("");}void KLevel::PowervsMaxClicked(int i) { if (i==0) levelwin->PowervsMax=true; else levelwin->PowervsMax=false; updatelabels();};void KLevel::LogvsLinearClicked(int i) { if (i==0) levelwin->LogvsLinear=1; else levelwin->LogvsLinear=0; updatelabels();};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -