/* ///////////////////////////////////////////////////////////////////////////// * Create encoder process and start it */ bool TTTranscodeProvider::encodePart( ) { int update = EVENT_LOOP_INTERVALL; //update intervall for local event loop transcode_success = false; // create the process object for transcode proc = new QProcess(); // read both channels: stderr and stdout proc->setReadChannelMode( QProcess::MergedChannels ); // signal and slot connection connect(proc, SIGNAL(error(QProcess::ProcessError)), SLOT(onProcError(QProcess::ProcessError))); connect(proc, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(onProcFinished(int, QProcess::ExitStatus))); connect(proc, SIGNAL(readyRead()), SLOT(onProcReadOut()) ); connect(proc, SIGNAL(started()), SLOT(onProcStarted()) ); connect(proc, SIGNAL(stateChanged(QProcess::ProcessState)),SLOT(onProcStateChanged(QProcess::ProcessState))); // start the process; if successfully started() was emitted otherwise error() proc->start(str_command, strl_command_line); // we must wait until the process has finished while (proc->state() == QProcess::Starting || proc->state() == QProcess::Running ) { update--; if ( update == 0 ) { qApp->processEvents(); update = EVENT_LOOP_INTERVALL; } } qApp->processEvents(); delete proc; proc = NULL; return transcode_success; }
MainWindow::MainWindow() : cancelledFlag(false), isCcliveFlag(false), trayIcon(0), trayIconMenu(0), restoreAction(0) { /* The word "English" is not meant to be translated literally. Instead, replace "English" with the target translation language, e.g. "Suomi", "Deutch", etc. abby uses this word in the preferences dialog to select current language. */ const QString lang = tr("English"); setupUi(this); // Dialogs. Be extravagant about system memory. prefs = new PreferencesDialog (this); rss = new RSSDialog (this); scan = new ScanDialog (this); format = new FormatDialog (this); // Settings. readSettings(); setProxy(); // Process. connect(&process, SIGNAL( started() ), this, SLOT( onProcStarted() )); connect(&process, SIGNAL( error(QProcess::ProcessError) ), this, SLOT( onProcError(QProcess::ProcessError) )); // NOTE: Merge stdout/stderr from c/clive connect(&process, SIGNAL( readyReadStandardOutput() ), this, SLOT( onProcStdoutReady() )); connect(&process, SIGNAL( readyReadStandardError() ), this, SLOT( onProcStdoutReady() )); connect(&process, SIGNAL( finished(int, QProcess::ExitStatus) ), this, SLOT( onProcFinished(int, QProcess::ExitStatus) )); // Misc. connect(linksList, SIGNAL( itemDoubleClicked(QListWidgetItem *) ), this, SLOT( onItemDoubleClicked(QListWidgetItem *) )); // Parse. if (parseCcliveVersionOutput()) parseCcliveHostsOutput(); // Widget voodoo. updateWidgets (true); #ifdef WIN32 streamBox ->setHidden(true); streamSpin->setHidden(true); #endif setAcceptDrops(true); createTrayIcon(); }