int QtEngineThread::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QThread::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: updateTypes((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break;
        case 1: updateGeometry((*reinterpret_cast< QString(*)>(_a[1]))); break;
        case 2: updateTime((*reinterpret_cast< QString(*)>(_a[1]))); break;
        case 3: updateStatus((*reinterpret_cast< QString(*)>(_a[1]))); break;
        case 4: updateDialog((*reinterpret_cast< Tissue*(*)>(_a[1]))); break;
        case 5: onLoadDef((*reinterpret_cast< QString(*)>(_a[1]))); break;
        case 6: onLoadInit((*reinterpret_cast< QString(*)>(_a[1]))); break;
        case 7: onSetSeed((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 8: onSetDur((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 9: onSetUpdate((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 10: onSetStep((*reinterpret_cast< double(*)>(_a[1]))); break;
        case 11: onSetView((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< QWidget*(*)>(_a[2]))); break;
        case 12: onWriteHistory((*reinterpret_cast< QString(*)>(_a[1]))); break;
        case 13: onWriteDetail((*reinterpret_cast< QString(*)>(_a[1]))); break;
        case 14: toggleRun(); break;
        case 15: onIdle(); break;
        default: ;
        }
        _id -= 16;
    }
    return _id;
}
void MainWindow::ApplyEffect()
{
    ui->listWidget->clear();
    TCSaveDialog* d = new TCSaveDialog(this);
#if QT_VERSION>=0x050000 && !defined(Q_OS_UNIX)
    d->setDirectory(lastdir);
#endif
    d->setWindowTitle("Export new audio file");
    d->setNameFilter("WAV Files (*.wav)\nMP3 Files(*.mp3)");
    if(d->exec()){
    QString nf = d->selectedFiles().at(0);
    if(nf.isEmpty())return;
    QFileInfo info(nf);
    lastdir = info.absolutePath();
    s = new AudioReader(filename,nf,ui->mode->currentIndex(),ui->fftsize->value(),ui->wsize->value(),ui->dcoef->value(),ui->postcoef->value(),ui->locut->value(),ui->hicut->value(),ui->decay->value(),ui->overlapf->value());
    ui->pushButton->disconnect();
    connect(s,SIGNAL(TCMessage(QString)),ui->statusBar,SLOT(showMessage(QString)));
    connect(s,SIGNAL(TCMessage(QString)),this,SLOT(showMessage(QString)));
    connect(s,SIGNAL(TCMax(int)),ui->progressBar,SLOT(setMaximum(int)) );
    connect(s,SIGNAL(TCProg(int)),ui->progressBar,SLOT(setValue(int)) );
    connect(s,SIGNAL(TCColor(QString)),ui->statusBar,SLOT(setStyleSheet(QString)) ) ;
    connect(s,SIGNAL(finished()),s,SLOT(terminate()) );
    connect(s,SIGNAL(finished()),SLOT(ProcessDone()) );

    connect(s,SIGNAL(TCProperty(QString)),SLOT(AddFileProperty(QString)) );
    connect(ui->pushButton,SIGNAL(clicked()),s,SLOT(toggleRun()) );
    ui->pushButton->setText(nextText);
    s->start();
      }