*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#include <vlc/vlc.h>
#include "playlist.hpp"
#include "../utils/ustring.hpp"
-#include "charset.h"
-
Playlist::Playlist( intf_thread_t *pIntf ): VarList( pIntf )
{
// Get the playlist VLC object
m_pPlaylist = pIntf->p_sys->p_playlist;
- // Try to guess the current charset
- char *pCharset;
- vlc_current_charset( &pCharset );
- iconvHandle = vlc_iconv_open( "UTF-8", pCharset );
- msg_Dbg( pIntf, "Using character encoding: %s", pCharset );
- free( pCharset );
-
- if( iconvHandle == (vlc_iconv_t)-1 )
- {
- msg_Warn( pIntf, "Unable to do requested conversion" );
- }
-
buildList();
}
Playlist::~Playlist()
{
- if( iconvHandle != (vlc_iconv_t)-1 ) vlc_iconv_close( iconvHandle );
}
for( int i = 0; i < m_pPlaylist->i_size; i++ )
{
// Get the name of the playlist item
- UString *pName = convertName( m_pPlaylist->pp_items[i]->input.psz_name );
+ UString *pName =
+ new UString( getIntf(), m_pPlaylist->pp_items[i]->input.psz_name );
// Is it the played stream ?
bool playing = (i == m_pPlaylist->i_index );
// Add the item in the list
vlc_mutex_unlock( &m_pPlaylist->object_lock );
}
-
-UString *Playlist::convertName( const char *pName )
-{
- if( iconvHandle == (vlc_iconv_t)-1 )
- {
- return new UString( getIntf(), pName );
- }
-
- char *pNewName, *pBufferOut;
- const char *pBufferIn;
- size_t ret, inbytesLeft, outbytesLeft;
-
- // Try to convert the playlist item into UTF8
- pNewName = (char*)malloc( 6 * strlen( pName ) );
- pBufferOut = pNewName;
- pBufferIn = pName;
- inbytesLeft = strlen( pName );
- outbytesLeft = 6 * inbytesLeft;
- // ICONV_CONST is defined in config.h
- ret = vlc_iconv( iconvHandle, (char **)&pBufferIn, &inbytesLeft,
- &pBufferOut, &outbytesLeft );
- *pBufferOut = '\0';
-
- if( inbytesLeft )
- {
- msg_Warn( getIntf(), "Failed to convert the playlist item into UTF8" );
- free( pNewName );
- return new UString( getIntf(), pName );
- }
- else
- {
- UString *pString = new UString( getIntf(), pNewName );
- free( pNewName );
- return pString;
- }
-}
-