Fix problem with utf-8 charactes in playlist names

If a playlist had utf-8 characters in it's name, promoe couldn't switch
to it.
Also move another function from XMMSHandler to class in lib
This commit is contained in:
Thomas Frauendorfer 2008-07-02 19:25:57 +02:00
parent d1a98b5367
commit c0ca792481
8 changed files with 14 additions and 15 deletions

5
README
View file

@ -2,10 +2,7 @@ Required dependencys:
* QT4.2.x http://www.trolltech.no/ * QT4.2.x http://www.trolltech.no/
* XMMS2 http://xmms2.xmms.org/ * XMMS2 http://xmms2.xmms.org/
* XMMS2 C++ bindings (make sure to have boost_signals when compiling xmms2) * XMMS2 C++ bindings (make sure to have boost_signals when compiling xmms2)
- promoe should compile with DrK - promoe works with 0.4DrK and 0.5DrL
- if you compile against xmms2-devel
make sure it isn't not older than 2008-05-15
(and get the patch for bug 1973 if necessary)
Optional dependencys: Optional dependencys:
* Avahi http://www.avahi.org/ * Avahi http://www.avahi.org/

View file

@ -185,7 +185,7 @@ bool
XCollection::setActivePlaylist (QString name) { XCollection::setActivePlaylist (QString name) {
if (!m_client->isConnected ()) return false; if (!m_client->isConnected ()) return false;
m_client->playlist ()->load (name.toStdString ()); m_client->playlist ()->load (XClient::qToStd (name));
return true; return true;
} }

View file

@ -96,6 +96,15 @@ XPlayback::next ()
m_client->playback ()->tickle (); m_client->playback ()->tickle ();
} }
void
XPlayback::setPos (int pos)
{
if (!m_client->isConnected ()) return;
m_client->playlist ()->setNext (pos) ();
m_client->playback ()->tickle () ();
}
/* /*
* Seeking * Seeking
*/ */

View file

@ -41,6 +41,7 @@ class XPlayback : public QObject {
void stop (); void stop ();
void prev (); void prev ();
void next (); void next ();
void setPos (int pos);
void seekMs (uint milliseconds); void seekMs (uint milliseconds);
void seekMsRel (int milliseconds); void seekMsRel (int milliseconds);

View file

@ -104,13 +104,6 @@ XMMSHandler::requestMediainfo (uint id)
Xmms::bind (&XMMSHandler::medialib_info, this)); Xmms::bind (&XMMSHandler::medialib_info, this));
} }
void
XMMSHandler::requestTrackChange (int pos)
{
m_client->playlist.setNext (pos) ();
m_client->playback.tickle () ();
}
bool bool
XMMSHandler::playback_current_id (const unsigned int &id) XMMSHandler::playback_current_id (const unsigned int &id)
{ {

View file

@ -42,7 +42,6 @@ class XMMSHandler : public XClient {
bool volume_changed (const Xmms::Dict &levels); bool volume_changed (const Xmms::Dict &levels);
void requestMediainfo (uint id); void requestMediainfo (uint id);
void requestTrackChange (int pos);
void playlistAddURL (const QString& url); void playlistAddURL (const QString& url);
/* /*

View file

@ -99,7 +99,7 @@ AbstractTimeDisplay::paintEvent (QPaintEvent *event)
paint.drawPixmap (m_d3_x_pos, 0, m_pixmaps[sec/10]); paint.drawPixmap (m_d3_x_pos, 0, m_pixmaps[sec/10]);
paint.drawPixmap (m_d4_x_pos, 0, m_pixmaps[sec%10]); paint.drawPixmap (m_d4_x_pos, 0, m_pixmaps[sec%10]);
} else { } else {
// Just give up and draw '-' if min would become 100 or bigger // Just give up and draw '-' if min-variable would become 100 or bigger
paint.drawPixmap (m_d1_x_pos, 0, m_pixmaps[11]); paint.drawPixmap (m_d1_x_pos, 0, m_pixmaps[11]);
paint.drawPixmap (m_d2_x_pos, 0, m_pixmaps[11]); paint.drawPixmap (m_d2_x_pos, 0, m_pixmaps[11]);
paint.drawPixmap (m_d3_x_pos, 0, m_pixmaps[11]); paint.drawPixmap (m_d3_x_pos, 0, m_pixmaps[11]);

View file

@ -277,7 +277,7 @@ PlaylistView::mouseDoubleClickEvent (QMouseEvent *event)
} }
XMMSHandler &xmmsh = XMMSHandler::getInstance (); XMMSHandler &xmmsh = XMMSHandler::getInstance ();
xmmsh.requestTrackChange (index.row()); xmmsh.xplayback ()->setPos (index.row());
if (m_status == XMMS_PLAYBACK_STATUS_STOP || if (m_status == XMMS_PLAYBACK_STATUS_STOP ||
m_status == XMMS_PLAYBACK_STATUS_PAUSE) { m_status == XMMS_PLAYBACK_STATUS_PAUSE) {
xmmsh.xplayback ()->play (); xmmsh.xplayback ()->play ();