From e1799206d95ffbe856dd9744111bca01b4b3835f Mon Sep 17 00:00:00 2001 From: ormorph Date: Fri, 8 Dec 2023 21:22:21 +0900 Subject: [PATCH] Add unicode stream support Signed-off-by: ormorph Signed-off-by: Michele Calgaro --- src/kstreamripper.cpp | 5 ++++- src/kstreamripperbase.ui | 22 ++++++++++++++++++++++ src/processcontroller.cpp | 21 ++++++++++++++++++--- src/processcontroller.h | 3 ++- 4 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/kstreamripper.cpp b/src/kstreamripper.cpp index 9630c8f..c27e41c 100644 --- a/src/kstreamripper.cpp +++ b/src/kstreamripper.cpp @@ -68,6 +68,7 @@ KStreamRipper::KStreamRipper( TQWidget* parent, const char* name ) m_timeEdit->setText( appConfig->readEntry( "Riptime", "0" )); m_tuneInEdit->setText( appConfig->readEntry( "Command", "xmms " )); m_id3Checkbox->setChecked( appConfig->readBoolEntry( "Id3Tag", 1 )); + m_unicodeCheckbox->setChecked( appConfig->readBoolEntry( "Unicode", 1 )); //listview entrys TQStringList nameList,urlList,descList; @@ -132,6 +133,7 @@ void KStreamRipper::closeEvent( TQCloseEvent *e ) appConfig->writeEntry( "Riptime", m_timeEdit->text()); appConfig->writeEntry( "Command", m_tuneInEdit->text()); appConfig->writeEntry( "Id3Tag", m_id3Checkbox->isChecked()); + appConfig->writeEntry( "Unicode", m_unicodeCheckbox->isChecked()); //save the listview entrys TQStringList nameList,urlList,descList; @@ -224,7 +226,8 @@ void KStreamRipper::ripButtonClicked() { if (!(TDEStandardDirs::findExe("streamripper").isEmpty())) { ProcessListViewItem * ProcItem = (ProcessListViewItem*)m_streamsListView->currentItem(); - ProcItem->getProcessController()->startRip(m_destEdit->text(), m_timeEdit->text()); + ProcItem->getProcessController()->startRip(m_destEdit->text(), m_timeEdit->text(), + m_unicodeCheckbox->isChecked()); m_ripButton->setEnabled( false ); m_stopRipButton->setEnabled( true ); } else { diff --git a/src/kstreamripperbase.ui b/src/kstreamripperbase.ui index 8d2baa8..fb4e130 100644 --- a/src/kstreamripperbase.ui +++ b/src/kstreamripperbase.ui @@ -274,6 +274,28 @@ Choose a directory + + + m_unicodeLabel + + + Unicode: + + + AlignVCenter|AlignRight + + + + + m_unicodeCheckbox + + + + + + true + + diff --git a/src/processcontroller.cpp b/src/processcontroller.cpp index a065ed6..da5e15c 100644 --- a/src/processcontroller.cpp +++ b/src/processcontroller.cpp @@ -23,7 +23,8 @@ #include "processlistviewitem.h" ProcessController::ProcessController(ProcessListViewItem * parent) - : TQObject(parent), myParent(parent), myStatus(false), myAutomatic(false), myProcess(new TQProcess(this)) + : TQObject(parent), myParent(parent), myStatus(false), myAutomatic(false), myUnicodeEnabled(false), + myProcess(new TQProcess(this)) { connect (myProcess, TQT_SIGNAL( readyReadStdout() ), (ProcessController *) this, TQT_SLOT( readStdout()) ); connect (myProcess, TQT_SIGNAL(processExited() ), (ProcessController *) this, TQT_SLOT( processExited()) ); @@ -38,7 +39,15 @@ ProcessController::~ProcessController() void ProcessController::readStdout() { - TQString tempOutput = myProcess->readStdout(); + TQString tempOutput; + if (myUnicodeEnabled) + { + tempOutput = TQString::fromUtf8(myProcess->readStdout()); + } + else + { + tempOutput = TQString::fromLocal8Bit(myProcess->readStdout()); + } if( tempOutput.contains( "ripping..." )) { @@ -77,14 +86,20 @@ void ProcessController::processExited() emit stopRipSignal(this); } -void ProcessController::startRip(TQString destination, TQString time) +void ProcessController::startRip(TQString destination, TQString time, bool isUnicode) { + myUnicodeEnabled = isUnicode; myStatus = true; myParent->setText( 1, "Ripping" ); myProcess->clearArguments(); myProcess->addArgument( "streamripper" ); myProcess->addArgument( myUrl ); + if( isUnicode ) + { + myProcess->addArgument( "--codeset-filesys=UTF-8 " ); + myProcess->addArgument( "--codeset-metadata=UTF-8 " ); + } myProcess->addArgument( "-d " ); myProcess->addArgument( destination ); if( time.toInt() ) diff --git a/src/processcontroller.h b/src/processcontroller.h index 9405471..16b3358 100644 --- a/src/processcontroller.h +++ b/src/processcontroller.h @@ -51,7 +51,7 @@ public: void setDescription(TQString Description); TQString getUrl(); TQString getDescription(); - void startRip(TQString destination, TQString time); + void startRip(TQString destination, TQString time, bool isUnicode); void stopRip(); signals: @@ -65,6 +65,7 @@ private: ProcessListViewItem * myParent; bool myStatus; bool myAutomatic; + bool myUnicodeEnabled; #if KDE_IS_VERSION(3,3,90) DNSSD::RemoteService::Ptr myService; #endif