defuze.me  Client
listsplugin.cpp
00001 /**************************************************************************
00002 ** defuze.me Epitech Innovative Project
00003 **
00004 ** Copyright 2010-2012
00005 **   Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard
00006 **   Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier
00007 **
00008 ** All rights reserved.
00009 **************************************************************************/
00010 
00011 #include "listsplugin.hpp"
00012 
00013 using namespace Lists;
00014 
00015 ListsPlugin::ListsPlugin()
00016 {
00017 }
00018 
00019 ListsPlugin::~ListsPlugin()
00020 {
00021 }
00022 
00023 void ListsPlugin::init()
00024 {
00025     widget = new ListsWidget(this);
00026     model = new ListsModel(this);
00027     widget->getTreeViewWidget()->setModel(model);
00028     Gui::Module *listsModule = Gui::ModuleFactory::create("lists", QPoint(2, 0), widget);
00029     listsModule->submitForDisplay();
00030 }
00031 
00032 void ListsPlugin::aboutToQuit()
00033 {
00034     delete model;
00035     delete widget;
00036 }
00037 
00038 ListsWidget *ListsPlugin::getWidget() const
00039 {
00040     return widget;
00041 }
00042 
00043 ListsModel *ListsPlugin::getModel() const
00044 {
00045     return model;
00046 }
00047 
00048 QMap<int, QString> ListsPlugin::getPlaylists(bool dynamic)
00049 {
00050     QSqlQuery query;
00051     QMap<int, QString> listsMap;
00052 
00053     query.prepare("SELECT id, name FROM playlists WHERE is_dynamic = :dynamic");
00054     query.bindValue(":dynamic", dynamic);
00055     query.exec();
00056     while (query.next())
00057         listsMap[query.value(0).toInt()] = query.value(1).toString();
00058     return listsMap;
00059 }
00060 
00061 QMap<int, QString> ListsPlugin::getNormalPlaylists()
00062 {
00063     return getPlaylists(false);
00064 }
00065 
00066 QMap<int, QString> ListsPlugin::getDynamicPlaylists()
00067 {
00068     return getPlaylists(true);
00069 }
00070 
00071 QList<int> ListsPlugin::getTracksForNormalPlaylist(int id)
00072 {
00073     QSqlQuery query;
00074 
00075     query.prepare("SELECT definition FROM playlists WHERE id = :id");
00076     query.bindValue(":id", id);
00077     query.exec();
00078 
00079     QList<int> tracksList;
00080     if (query.next())
00081     {
00082         QList<QVariant> data = Network::JsonParser().parse(query.value(0).toByteArray()).toList();
00083         foreach (QVariant trackId, data)
00084             tracksList << trackId.toInt();
00085     }
00086     return tracksList;
00087 }