//slot void AnalyserQueue::slotUpdateProgress() { if (m_progressInfo.current_track) { m_progressInfo.current_track->setAnalyserProgress(m_progressInfo.track_progress); } emit(trackProgress(m_progressInfo.track_progress/10)); if (m_progressInfo.track_progress == 1000) { emit(trackFinished(m_progressInfo.queue_size)); } m_progressInfo.sema.release(); }
string TrackableDownloadItem::formatRunningStatus() const noexcept { auto p = find_if(downloads | map_values, PathInfo::IsRunning()); if (p.base() != downloads.end() && p->trackProgress()) { if (p->downloaded == -1) { return STRING(DOWNLOAD_STARTING); } return STRING_F(RUNNING_PCT, p->getDownloadedPercentage()); } return "Downloading"; }
void Splitter::parseOut() { Track *track = disk()->track(0); bool deletePregap = !OutFormat::currentFormat()->createCue(); char c; QByteArray buf; while(mProcess->waitForReadyRead(-1)) { while (mProcess->read(&c, 1)) { // ....................................... if (c == '\n') { if (buf.contains(": error:")) { error(track, QString::fromLocal8Bit(buf.mid(17))); return; } buf = ""; } // ....................................... else if (c == '%') { bool ok; int percent = buf.right(3).trimmed().toInt(&ok); if (!ok) continue; // Splitting [/home/user/inDir/input.wav] (10:00.000) --> [/home/user/outDir/tmp-15196-00000.wav] (0:00.440) : 100% OK QString pattern = "[" + mWorkDir + "/" + mFilePrefix; QString sbuf = QString::fromLocal8Bit(buf); int n = sbuf.indexOf(pattern, disk()->audioFileName().length() + 20); if (n < 0 && sbuf.length() < n + pattern.length() + 4) { qWarning() << "I can't parse" << sbuf; continue; } QString fileName = sbuf.mid(n + 1, + pattern.length() - 1 + 4 + 4); // -1 for leading "[", 4 for 4 digits tracknum, 4 - file ext ".wav" int trackNum = fileName.mid(fileName.length() - 8, 4).toInt(&ok); if (!ok) { qWarning() << "I can't parse" << sbuf; continue; } if (trackNum > disk()->count()) { error(disk()->track(0), tr("The number of tracks is higher than expected.")); return; } track = (trackNum == 0) ? disk()->preGapTrack() : disk()->track(trackNum - 1); mPreGapExists = mPreGapExists || (trackNum == 0); emit trackProgress(track, Track::Splitting, percent); if (percent == 100) { if (trackNum == 0 && deletePregap) deleteFile(fileName); else emit trackReady(track, fileName); } } // ....................................... else { buf += c; } //std::cerr << c; } } }