2 // C++ Implementation: medialib
4 // Author: Oliver Groß <z.o.gross@gmx.de>, (C) 2008
6 // Copyright: See COPYING file that comes with this distribution
13 QMedialib::QMedialib(QClient
* parent
) : QObject(parent
), m_Connection(0) {
14 connect(parent
, SIGNAL(connectionChanged(xmmsc_connection_t
*)),
15 this, SLOT(setConnection(xmmsc_connection_t
*)));
18 QMedialib::~QMedialib() {
22 void QMedialib::recievedMediaInfoCallback(xmmsc_result_t
* result
, void * instance
) {
24 QMedialib
* medialib
= static_cast<QMedialib
*>(instance
);
27 xmmsc_result_get_dict_entry_uint(result
, "id", &id
);
29 MediaInfo
* newMediaInfo
= new MediaInfo();
32 xmmsc_result_get_dict_entry_string(result
, "genre", &buffer
);
33 newMediaInfo
->genre
= buffer
;
34 xmmsc_result_get_dict_entry_string(result
, "album", &buffer
);
35 newMediaInfo
->album
= buffer
;
36 xmmsc_result_get_dict_entry_string(result
, "artist", &buffer
);
37 newMediaInfo
->artist
= buffer
;
38 xmmsc_result_get_dict_entry_string(result
, "title", &buffer
);
39 newMediaInfo
->title
= buffer
;
41 xmmsc_result_get_dict_entry_uint(result
, "duration", &newMediaInfo
->duration
);
42 xmmsc_result_get_dict_entry_uint(result
, "duration", &newMediaInfo
->duration
);
43 xmmsc_result_get_dict_entry_uint(result
, "channels", &newMediaInfo
->channels
);
44 xmmsc_result_get_dict_entry_uint(result
, "samplerate", &newMediaInfo
->sampleRate
);
45 xmmsc_result_get_dict_entry_uint(result
, "sample_format", &newMediaInfo
->sampleFormat
);
47 medialib
->m_CachedMedia
.insert(id
, newMediaInfo
);
48 emit medialib
->mediaInfoReady(id
);
50 xmmsc_result_unref(result
);
53 void QMedialib::setConnection(xmmsc_connection_t
* connection
) {
54 if (m_Connection
== connection
)
61 m_Connection
= connection
;
70 void QMedialib::clearMediaInfos() {
71 foreach (MediaInfo
* i
, m_CachedMedia
)
73 m_CachedMedia
.clear();
76 void QMedialib::removeMediaInfo(quint32 id
) {
77 delete m_CachedMedia
.take(id
);
80 void QMedialib::requestMediaInfo(quint32 id
) {
81 connectNotifierUnref(xmmsc_medialib_get_info(m_Connection
, id
), recievedMediaInfoCallback
, this);