diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/plugins/General/converter/converter.cpp | 24 | ||||
| -rw-r--r-- | src/plugins/General/converter/converter.h | 2 | ||||
| -rw-r--r-- | src/plugins/General/converter/converterhelper.cpp | 1 |
3 files changed, 23 insertions, 4 deletions
diff --git a/src/plugins/General/converter/converter.cpp b/src/plugins/General/converter/converter.cpp index 3a205472f..bdaf4cd3e 100644 --- a/src/plugins/General/converter/converter.cpp +++ b/src/plugins/General/converter/converter.cpp @@ -94,6 +94,7 @@ void Converter::run() QString path = settings.value("Converter/out_dir", music_path).toString(); QString pattern = settings.value("Converter/file_name","%p - %t").toString(); MetaDataFormatter formatter(pattern); + MetaDataFormatter desc_formatter("%p%if(%p&%t, - ,)%t [%l]"); while(!m_decoders.isEmpty()) { @@ -108,10 +109,16 @@ void Converter::run() //ignore } + QString desc = desc_formatter.parse(list[0]->metaData(), list[0]->length()); + emit desriptionChanged(desc); + QString name = formatter.parse(list[0]->metaData(), list[0]->length()); QString full_path = path + "/" + name + ".ogg"; - QString command = "oggenc -q 1 -o %f -"; - command.replace("%f", "\"" + full_path + "\""); + QString command = "oggenc -q 1 -o %o -"; + command.replace("%o", "\"" + full_path + "\""); + + qDeleteAll(list); + list.clear(); char wave_header[] = { 0x52, 0x49, 0x46, 0x46, //"RIFF" 0x00, 0x00, 0x00, 0x00, //(file size) - 8 @@ -143,6 +150,7 @@ void Converter::run() if(!enc_pipe) { qWarning("Converter: unable to open pipe"); + m_inputs.take(decoder)->deleteLater(); delete decoder; continue; @@ -150,6 +158,7 @@ void Converter::run() size_t to_write = sizeof(wave_header); if(to_write != fwrite(&wave_header, 1, to_write, enc_pipe)) { + m_inputs.take(decoder)->deleteLater(); delete decoder; pclose(enc_pipe); continue; @@ -158,6 +167,7 @@ void Converter::run() convert(decoder, enc_pipe); pclose(enc_pipe); //fclose(enc_pipe); + m_inputs.take(decoder)->deleteLater(); delete decoder; } } @@ -171,6 +181,8 @@ bool Converter::convert(Decoder *decoder, FILE *file) quint64 len = 0; AudioParameters ap = decoder->audioParameters(); qint64 size = decoder->totalTime() * ap.sampleRate() * ap.channels() * ap.sampleSize() / 1000; + int percent = 0; + int prev_percent = 0; forever { // decode @@ -191,7 +203,12 @@ bool Converter::convert(Decoder *decoder, FILE *file) output_at -= len; memmove(output_buf, output_buf + len, output_at); } - emit progress(floor(100*total/size)); + percent = 100 * total / size; + if(percent != prev_percent) + { + prev_percent = percent; + emit progress(percent); + } } else if (len <= 0) { @@ -202,4 +219,3 @@ bool Converter::convert(Decoder *decoder, FILE *file) } return false; } - diff --git a/src/plugins/General/converter/converter.h b/src/plugins/General/converter/converter.h index 06ac844de..2a65f3983 100644 --- a/src/plugins/General/converter/converter.h +++ b/src/plugins/General/converter/converter.h @@ -39,6 +39,8 @@ public: signals: void progress(int percent); + void desriptionChanged(QString text); + void error(QString text); private: void run(); diff --git a/src/plugins/General/converter/converterhelper.cpp b/src/plugins/General/converter/converterhelper.cpp index df5d61eb3..66f3895c7 100644 --- a/src/plugins/General/converter/converterhelper.cpp +++ b/src/plugins/General/converter/converterhelper.cpp @@ -43,6 +43,7 @@ ConverterHelper::ConverterHelper(QObject *parent) : QObject(parent) m_progress->setCancelButtonText(tr("Cancel")); connect(m_converter,SIGNAL(progress(int)),m_progress,SLOT(setValue(int))); connect(m_converter, SIGNAL(finished()), m_progress, SLOT(reset())); + connect(m_converter, SIGNAL(desriptionChanged(QString)), m_progress, SLOT(setLabelText(QString))); } ConverterHelper::~ConverterHelper() |
