[xmmsclient] "rename fix" and added all components to the main header
[libxmms2client-qt.git] / medialib.cpp
blob45a6dfc53f1d8b4eec99a7735f6a82b55ca8ea85
1 //
2 // C++ Implementation: medialib
3 //
4 // Author: Oliver Groß <z.o.gross@gmx.de>, (C) 2008
5 //
6 // Copyright: See COPYING file that comes with this distribution
7 //
8 #include "medialib.h"
9 #include "client.h"
10 #include "common.h"
12 namespace XmmsQt {
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() {
19 clearMediaInfos();
22 void QMedialib::recievedMediaInfoCallback(xmmsc_result_t * result, void * instance) {
23 if (instance) {
24 QMedialib * medialib = static_cast<QMedialib *>(instance);
25 quint32 id;
27 xmmsc_result_get_dict_entry_uint(result, "id", &id);
29 MediaInfo * newMediaInfo = new MediaInfo();
30 const char * buffer;
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)
55 return;
57 /* //disconnect
58 if (m_Connection) {
59 }*/
61 m_Connection = connection;
63 /* //connect
64 if (m_Connection) {
65 }*/
67 clearMediaInfos();
70 void QMedialib::clearMediaInfos() {
71 foreach (MediaInfo * i, m_CachedMedia)
72 delete i;
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);