⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 krecord.cpp

📁 一个KDE下的录音程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    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 + -