Remove old medialib browser
This commit is contained in:
parent
33616aaa06
commit
646944d06b
9 changed files with 0 additions and 770 deletions
|
@ -36,4 +36,3 @@ FileDialog::getDirectory ()
|
|||
return ret;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,105 +0,0 @@
|
|||
#include "XMMSHandler.h"
|
||||
|
||||
#include "MediaAlbumList.h"
|
||||
|
||||
#include "qtmd5.h"
|
||||
|
||||
#include <QDir>
|
||||
|
||||
|
||||
MediaAlbumList::MediaAlbumList (QWidget *parent, const QString &name) :
|
||||
MedialibList (parent, name)
|
||||
{
|
||||
XMMSHandler *xmmsh = XMMSHandler::getInstance ();
|
||||
|
||||
connect (xmmsh, SIGNAL (medialibResponse (uint, QList<QHash<QString, QString> >)),
|
||||
this, SLOT (queryCallback (uint, QList<QHash<QString, QString> >)));
|
||||
|
||||
refresh ();
|
||||
}
|
||||
|
||||
void
|
||||
MediaAlbumList::refresh (void)
|
||||
{
|
||||
XMMSHandler *xmmsh = XMMSHandler::getInstance ();
|
||||
|
||||
m_cid = xmmsh->medialibQuery ("select distinct ifnull(nullif(ifnull(nullif(ifnull(m3.value,0),1),'Various Artists'),0),m1.value) as artist, ifnull(m2.value,'[unknown]') as album, m4.value as art from Media m1 left join Media m2 on m1.id = m2.id and m2.key='album' left join Media m3 on m1.id = m3.id and m3.key='compilation' left join Media m4 on m4.id = m1.id and m4.key='album_front_small' where m1.key='artist' order by artist, album");
|
||||
}
|
||||
|
||||
|
||||
QStringList
|
||||
MediaAlbumList::mimeTypes () const
|
||||
{
|
||||
QStringList types;
|
||||
types << "application/mlib.album";
|
||||
return types;
|
||||
}
|
||||
|
||||
QMimeData *
|
||||
MediaAlbumList::mimeData(const QList<QListWidgetItem*> items) const
|
||||
{
|
||||
QMimeData *mimeData = new QMimeData();
|
||||
QByteArray encodedData;
|
||||
|
||||
MedialibListItem *it = dynamic_cast<MedialibListItem *> (currentItem ());
|
||||
|
||||
QDataStream stream(&encodedData, QIODevice::WriteOnly);
|
||||
stream << it->getArtist ();
|
||||
stream << it->getAlbum ();
|
||||
|
||||
mimeData->setData("application/mlib.album", encodedData);
|
||||
return mimeData;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
MediaAlbumList::queryCallback (uint id, QList<QHash<QString, QString> >l)
|
||||
{
|
||||
if (m_cid != id)
|
||||
return;
|
||||
|
||||
clear ();
|
||||
|
||||
qDebug ("in query callback album");
|
||||
|
||||
for (int i = 0; i < l.count (); i++) {
|
||||
QHash<QString, QString> h(l.value (i));
|
||||
|
||||
MedialibListItem *item = new MedialibListItem (h.value("artist"), h.value("album"), this);
|
||||
item->setFont (m_font);
|
||||
item->setTextAlignment (Qt::AlignVCenter);
|
||||
|
||||
if (m_noicon) {
|
||||
continue;
|
||||
}
|
||||
|
||||
item->setIcon (QIcon (":noalbum.png"));
|
||||
item->setSizeHint (iconSize () + QSize (2, 2));
|
||||
|
||||
if (h.contains ("art")) {
|
||||
|
||||
QString name = qtMD5 ((h.value("artist").toLower()+"-"+h.value("album").toLower()).toUtf8());
|
||||
QString fname (QDir::homePath () +"/.xmms2/clients/generic/art/"+name+"-small.jpg");
|
||||
|
||||
if (!QFile::exists (fname)) {
|
||||
QUrl url (h.value("art"));
|
||||
|
||||
QFile *file = new QFile ("/tmp/"+name+"-small.jpg");
|
||||
file->open(QIODevice::WriteOnly);
|
||||
|
||||
item->setFile (file);
|
||||
m_win->addRequest (url, item);
|
||||
|
||||
} else {
|
||||
QIcon ico (fname);
|
||||
item->setIcon (ico);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
#ifndef __MEDIAALBUMLIST_H__
|
||||
#define __MEDIAALBUMLIST_H__
|
||||
|
||||
class MediaAlbumList;
|
||||
|
||||
#include "Medialib.h"
|
||||
|
||||
class MediaAlbumList : public MedialibList
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MediaAlbumList (QWidget *parent, const QString &name);
|
||||
~MediaAlbumList () {}
|
||||
QStringList mimeTypes (void) const;
|
||||
|
||||
void refresh (void);
|
||||
|
||||
public slots:
|
||||
void queryCallback (uint, QList<QHash<QString, QString> >);
|
||||
QMimeData *mimeData(const QList<QListWidgetItem*> items) const;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
|
@ -1,102 +0,0 @@
|
|||
#include "XMMSHandler.h"
|
||||
|
||||
#include "MediaArtistList.h"
|
||||
|
||||
#include "qtmd5.h"
|
||||
|
||||
#include <QDir>
|
||||
|
||||
MediaArtistList::MediaArtistList (QWidget *parent, const QString &name) :
|
||||
MedialibList (parent, name)
|
||||
{
|
||||
XMMSHandler *xmmsh = XMMSHandler::getInstance ();
|
||||
|
||||
connect (xmmsh, SIGNAL (medialibResponse (uint, QList<QHash<QString, QString> >)),
|
||||
this, SLOT (queryCallback (uint, QList<QHash<QString, QString> >)));
|
||||
|
||||
refresh ();
|
||||
}
|
||||
|
||||
void
|
||||
MediaArtistList::refresh (void)
|
||||
{
|
||||
XMMSHandler *xmmsh = XMMSHandler::getInstance ();
|
||||
|
||||
m_cid = xmmsh->medialibQuery ("select distinct ifnull(nullif(ifnull(nullif(ifnull(m2.value,0),1),'Various Artists'),0),m1.value) as artist, m3.value as art from Media m1 left join Media m2 on m1.id = m2.id and m2.key='compilation' left join Media m3 on m3.id = m1.id and m3.key='artist_art_small' where m1.key='artist' order by artist");
|
||||
}
|
||||
|
||||
QStringList
|
||||
MediaArtistList::mimeTypes () const
|
||||
{
|
||||
QStringList types;
|
||||
types << "application/mlib.artist";
|
||||
return types;
|
||||
}
|
||||
|
||||
QMimeData *
|
||||
MediaArtistList::mimeData(const QList<QListWidgetItem*> items) const
|
||||
{
|
||||
QMimeData *mimeData = new QMimeData();
|
||||
QByteArray encodedData;
|
||||
|
||||
MedialibListItem *it = dynamic_cast<MedialibListItem *> (currentItem ());
|
||||
|
||||
QDataStream stream(&encodedData, QIODevice::WriteOnly);
|
||||
stream << it->getArtist ();
|
||||
|
||||
mimeData->setData("application/mlib.artist", encodedData);
|
||||
return mimeData;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
MediaArtistList::queryCallback (uint id, QList<QHash<QString, QString> >l)
|
||||
{
|
||||
if (m_cid != id)
|
||||
return;
|
||||
|
||||
clear ();
|
||||
|
||||
qDebug ("in query callback artist");
|
||||
|
||||
for (int i = 0; i < l.count (); i++) {
|
||||
QHash<QString, QString> h(l.value (i));
|
||||
|
||||
MedialibListItem *item = new MedialibListItem (h.value("artist"), this);
|
||||
item->setFont (m_font);
|
||||
item->setTextAlignment (Qt::AlignVCenter);
|
||||
|
||||
if (m_noicon) {
|
||||
continue;
|
||||
}
|
||||
|
||||
item->setIcon (QIcon (":noartist.png"));
|
||||
item->setSizeHint (iconSize () + QSize (5, 5));
|
||||
|
||||
if (h.contains ("art")) {
|
||||
|
||||
QString name = qtMD5 ((h.value("artist").toLower()).toUtf8());
|
||||
QString fname (QDir::homePath () +"/.xmms2/clients/generic/art/"+name+"-small.jpg");
|
||||
|
||||
if (!QFile::exists (fname)) {
|
||||
QUrl url (h.value("art"));
|
||||
|
||||
QFile *file = new QFile ("/tmp/"+name+"-small.jpg");
|
||||
file->open(QIODevice::WriteOnly);
|
||||
|
||||
item->setFile (file);
|
||||
m_win->addRequest (url, item);
|
||||
|
||||
} else {
|
||||
QIcon ico (fname);
|
||||
item->setIcon (ico);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
#ifndef __MEDIAARTISTLIST_H__
|
||||
#define __MEDIAARTISTLIST_H__
|
||||
|
||||
class MediaArtistList;
|
||||
|
||||
#include "Medialib.h"
|
||||
|
||||
class MediaArtistList : public MedialibList
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MediaArtistList (QWidget *parent, const QString &name);
|
||||
~MediaArtistList () {}
|
||||
QStringList mimeTypes (void) const;
|
||||
void refresh (void);
|
||||
|
||||
public slots:
|
||||
void queryCallback (uint, QList<QHash<QString, QString> >);
|
||||
QMimeData *mimeData(const QList<QListWidgetItem*> items) const;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
|
@ -1,100 +0,0 @@
|
|||
#include "XMMSHandler.h"
|
||||
|
||||
#include "MediaSongList.h"
|
||||
|
||||
#include "qtmd5.h"
|
||||
|
||||
#include <QDir>
|
||||
|
||||
MediaSongList::MediaSongList (QWidget *parent, const QString &name) :
|
||||
MedialibList (parent, name)
|
||||
{
|
||||
XMMSHandler *xmmsh = XMMSHandler::getInstance ();
|
||||
|
||||
connect (xmmsh, SIGNAL (medialibResponse (uint, QList<QHash<QString, QString> >)),
|
||||
this, SLOT (queryCallback (uint, QList<QHash<QString, QString> >)));
|
||||
|
||||
refresh ();
|
||||
}
|
||||
|
||||
void
|
||||
MediaSongList::refresh (void)
|
||||
{
|
||||
XMMSHandler *xmmsh = XMMSHandler::getInstance ();
|
||||
|
||||
m_cid = xmmsh->medialibQuery ("select distinct ifnull(m1.value,'[unknown]') as artist, ifnull(m2.value,'[unknown]') as album, ifnull(m5.value,m6.value) as song, ifnull(m7.value,-1) as tracknr, m4.value as art from Media m1 left join Media m2 on m1.id = m2.id and m2.key='album' left join Media m4 on m4.id = m1.id and m4.key='album_front_small' left join Media m5 on m1.id = m5.id and m5.key='title' left join Media m6 on m1.id = m6.id and m6.key='url' left join Media m7 on m1.id = m7.id and m7.key='tracknr' where m1.key='artist' order by artist, album, tracknr, song");
|
||||
|
||||
}
|
||||
|
||||
QStringList
|
||||
MediaSongList::mimeTypes () const
|
||||
{
|
||||
QStringList types;
|
||||
types << "application/mlib.song";
|
||||
return types;
|
||||
}
|
||||
|
||||
QMimeData *
|
||||
MediaSongList::mimeData(const QList<QListWidgetItem*> items) const
|
||||
{
|
||||
QMimeData *mimeData = new QMimeData();
|
||||
QByteArray encodedData;
|
||||
|
||||
MedialibListItem *it = dynamic_cast<MedialibListItem *> (currentItem ());
|
||||
|
||||
QDataStream stream(&encodedData, QIODevice::WriteOnly);
|
||||
stream << it->getArtist ();
|
||||
stream << it->getAlbum ();
|
||||
stream << it->getSong ();
|
||||
|
||||
mimeData->setData("application/mlib.song", encodedData);
|
||||
return mimeData;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
MediaSongList::queryCallback (uint id, QList<QHash<QString, QString> >l)
|
||||
{
|
||||
if (m_cid != id)
|
||||
return;
|
||||
|
||||
qDebug ("in query callback song");
|
||||
|
||||
clear ();
|
||||
|
||||
m_win->setBusy (false);
|
||||
m_win->setStatusText ("idle");
|
||||
|
||||
for (int i = 0; i < l.count (); i++) {
|
||||
QHash<QString, QString> h(l.value (i));
|
||||
|
||||
MedialibListItem *item = new MedialibListItem (h.value("artist"),
|
||||
h.value("album"),
|
||||
h.value("song"),
|
||||
this);
|
||||
item->setFont (m_font);
|
||||
item->setTextAlignment (Qt::AlignVCenter);
|
||||
|
||||
if (m_noicon) {
|
||||
continue;
|
||||
}
|
||||
|
||||
item->setIcon (QIcon (":nosong.png"));
|
||||
item->setSizeHint (iconSize () + QSize (2, 2));
|
||||
|
||||
if (h.contains ("art")) {
|
||||
|
||||
QString name = qtMD5 ((h.value("artist").toLower()+"-"+h.value("album").toLower()).toUtf8());
|
||||
QString fname (QDir::homePath () +"/.xmms2/clients/generic/art/"+name+"-small.jpg");
|
||||
|
||||
if (QFile::exists (fname)) {
|
||||
QIcon ico (fname);
|
||||
item->setIcon (ico);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
#ifndef __MEDIASONGLIST_H__
|
||||
#define __MEDIASONGLIST_H__
|
||||
|
||||
class MediaSongList;
|
||||
|
||||
#include "Medialib.h"
|
||||
|
||||
class MediaSongList : public MedialibList
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MediaSongList (QWidget *parent, const QString &name);
|
||||
~MediaSongList () {}
|
||||
QStringList mimeTypes (void) const;
|
||||
void refresh (void);
|
||||
|
||||
public slots:
|
||||
void queryCallback (uint, QList<QHash<QString, QString> >);
|
||||
QMimeData *mimeData(const QList<QListWidgetItem*> items) const;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
250
Medialib.cpp
250
Medialib.cpp
|
@ -1,250 +0,0 @@
|
|||
#include "XMMSHandler.h"
|
||||
#include "Medialib.h"
|
||||
|
||||
#include <QUrl>
|
||||
#include <QFile>
|
||||
#include <QIODevice>
|
||||
#include <QDir>
|
||||
#include <QSettings>
|
||||
#include "qtmd5.h"
|
||||
|
||||
#include "MediaArtistList.h"
|
||||
#include "MediaAlbumList.h"
|
||||
#include "MediaSongList.h"
|
||||
|
||||
MedialibWindow::MedialibWindow (QWidget *parent) : QMainWindow (parent)
|
||||
{
|
||||
#ifndef _WIN32
|
||||
setWindowIcon (QIcon (":icon.png"));
|
||||
#endif
|
||||
setWindowTitle ("Promoe - Medialib Window");
|
||||
setWindowFlags (Qt::Dialog);
|
||||
setAttribute (Qt::WA_DeleteOnClose);
|
||||
|
||||
XMMSHandler *xmmsh = XMMSHandler::getInstance ();
|
||||
|
||||
QSettings s;
|
||||
s.beginGroup ("medialib");
|
||||
|
||||
if (!s.contains ("selected")) {
|
||||
s.setValue ("selected", tr ("Artists"));
|
||||
}
|
||||
|
||||
resize (500, 550);
|
||||
|
||||
m_dummy = new QWidget (this);
|
||||
setCentralWidget (m_dummy);
|
||||
|
||||
m_vbox = new QVBoxLayout (m_dummy);
|
||||
m_search = new QLineEdit (m_dummy);
|
||||
m_search->setFocusPolicy (Qt::StrongFocus);
|
||||
m_vbox->addWidget (m_search);
|
||||
|
||||
m_tab = new QTabWidget (m_dummy);
|
||||
m_vbox->addWidget (m_tab);
|
||||
|
||||
m_progress = new QProgressBar (statusBar ());
|
||||
statusBar ()->addPermanentWidget (m_progress, 1);
|
||||
m_progress->setSizePolicy (QSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed));
|
||||
|
||||
m_status = new QLabel (tr ("Idle"), statusBar ());
|
||||
m_status->setFrameStyle (QFrame::NoFrame);
|
||||
statusBar ()->addPermanentWidget (m_status, 2);
|
||||
|
||||
|
||||
/*** Init views ***/
|
||||
QDir dir (QDir::homePath ()+"/.xmms2/clients/generic/art/");
|
||||
if (!dir.exists()) {
|
||||
dir.mkpath (dir.path ());
|
||||
}
|
||||
m_http = new QHttp (this);
|
||||
connect (m_http, SIGNAL (requestFinished (int, bool)), this,
|
||||
SLOT (httpDone (int, bool)));
|
||||
connect (m_http, SIGNAL (requestStarted (int)), this,
|
||||
SLOT (httpStarted (int)));
|
||||
|
||||
/*** artist ***/
|
||||
m_artist = new MediaArtistList (this, "artist");
|
||||
m_tab->addTab (m_artist, tr ("Artists"));
|
||||
connect (m_search, SIGNAL (textEdited (QString)),
|
||||
m_artist, SLOT (search (QString)));
|
||||
|
||||
/*** album ***/
|
||||
m_album = new MediaAlbumList (this, "album");
|
||||
m_tab->addTab (m_album, tr ("Albums"));
|
||||
connect (m_search, SIGNAL (textEdited (QString)),
|
||||
m_album, SLOT (search (QString)));
|
||||
|
||||
/*** song ***/
|
||||
m_song = new MediaSongList (this, "song");
|
||||
m_tab->addTab (m_song, tr ("Songs"));
|
||||
connect (m_search, SIGNAL (textEdited (QString)),
|
||||
m_song, SLOT (search (QString)));
|
||||
|
||||
|
||||
/*** set active view from config ***/
|
||||
for (int i = 0; i < m_tab->count() ; i++) {
|
||||
if (s.value("selected").toString () == m_tab->tabText (i)) {
|
||||
m_tab->setCurrentIndex (i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
s.endGroup ();
|
||||
|
||||
setBusy (true);
|
||||
setStatusText ("Loading medialib");
|
||||
|
||||
connect (xmmsh, SIGNAL (settingsSaved ()), this, SLOT (settingsSaved ()));
|
||||
}
|
||||
|
||||
void
|
||||
MedialibWindow::settingsSaved ()
|
||||
{
|
||||
m_artist->setSizes();
|
||||
m_album->setSizes();
|
||||
m_song->setSizes();
|
||||
|
||||
setBusy (true);
|
||||
setStatusText ("Refreshing medialib");
|
||||
|
||||
m_artist->refresh();
|
||||
m_album->refresh();
|
||||
m_song->refresh();
|
||||
|
||||
update ();
|
||||
}
|
||||
|
||||
void
|
||||
MedialibWindow::addRequest (QUrl url, MedialibListItem *item)
|
||||
{
|
||||
m_http->setHost (url.host (), url.port () != -1 ? url.port () : 80);
|
||||
|
||||
if (!url.userName().isEmpty()) {
|
||||
m_http->setUser (url.userName(), url.password());
|
||||
}
|
||||
|
||||
int id = m_http->get (url.path (), item->getFile ());
|
||||
m_httpmap.insert (id, item);
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
MedialibWindow::httpStarted (int id)
|
||||
{
|
||||
MedialibListItem *it = m_httpmap[id];
|
||||
|
||||
if (it) {
|
||||
setStatusText ("Downloading art: " + it->text ());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MedialibWindow::httpDone (int id, bool error)
|
||||
{
|
||||
MedialibListItem *it = m_httpmap[id];
|
||||
|
||||
if (error) {
|
||||
if (it) {
|
||||
setStatusText ("Error when downloading " + it->text ());
|
||||
} else {
|
||||
setStatusText ("Generic error in HTTP");
|
||||
}
|
||||
qDebug (qPrintable (m_http->errorString ()));
|
||||
return;
|
||||
}
|
||||
|
||||
if (it) {
|
||||
QFile *f = it->getFile ();
|
||||
f->close ();
|
||||
|
||||
QString newname (QDir::homePath()+"/.xmms2/clients/generic/art/"+(f->fileName ().section("/", -1)));
|
||||
f->rename (newname);
|
||||
f->setFileName (newname);
|
||||
|
||||
QIcon ico (f->fileName ());
|
||||
if (!ico.isNull()) {
|
||||
it->setIcon (ico);
|
||||
} else {
|
||||
f->remove ();
|
||||
}
|
||||
|
||||
delete f;
|
||||
m_httpmap.remove (id);
|
||||
if (m_httpmap.count () == 0) {
|
||||
setBusy (false);
|
||||
setStatusText ("idle");
|
||||
} else {
|
||||
setBusy (m_httpmap.count ());
|
||||
setStatusText ("Got art for: " + it->text());
|
||||
}
|
||||
}
|
||||
|
||||
update ();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
MedialibList::MedialibList (QWidget *parent, const QString &name) : QListWidget ()
|
||||
{
|
||||
m_win = dynamic_cast<MedialibWindow*> (parent);
|
||||
|
||||
setDragEnabled (true);
|
||||
|
||||
m_name = name;
|
||||
setSizes ();
|
||||
}
|
||||
|
||||
void
|
||||
MedialibList::setSizes (void)
|
||||
{
|
||||
QSettings s;
|
||||
|
||||
s.beginGroup ("medialib_"+m_name);
|
||||
|
||||
if (!s.contains ("size")) {
|
||||
s.setValue ("size", tr ("Large"));
|
||||
}
|
||||
|
||||
QString size = s.value("size").toString ();
|
||||
|
||||
m_noicon = false;
|
||||
|
||||
if (size == tr ("Small")) {
|
||||
setIconSize (QSize (42, 42));
|
||||
m_font.setPixelSize (10);
|
||||
} else if (size == tr ("Large")) {
|
||||
setIconSize (QSize (85, 85));
|
||||
m_font.setPixelSize (14);
|
||||
} else if (size == tr ("None")) {
|
||||
setIconSize (QSize (10, 10));
|
||||
m_noicon = true;
|
||||
m_font.setPixelSize (10);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
MedialibList::search (const QString &s)
|
||||
{
|
||||
if (s.length () > 0) {
|
||||
for (int i = 0; i < count (); i++) {
|
||||
MedialibListItem *it = dynamic_cast<MedialibListItem*> (item (i));
|
||||
if (!it->text().contains (s, Qt::CaseInsensitive)) {
|
||||
setItemHidden (it, true);
|
||||
} else if (isItemHidden (it)) {
|
||||
setItemHidden (it, false);
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
for (int i = 0; i < count (); i++) {
|
||||
MedialibListItem *it = dynamic_cast<MedialibListItem*> (item (i));
|
||||
setItemHidden (it, false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
141
Medialib.h
141
Medialib.h
|
@ -1,141 +0,0 @@
|
|||
#ifndef __MEDIALIB_H__
|
||||
#define __MEDIALIB_H__
|
||||
|
||||
#include <QListWidgetItem>
|
||||
#include <QProgressBar>
|
||||
#include <QMainWindow>
|
||||
#include <QListWidget>
|
||||
#include <QVBoxLayout>
|
||||
#include <QStatusBar>
|
||||
#include <QTabWidget>
|
||||
#include <QMimeData>
|
||||
#include <QLineEdit>
|
||||
#include <QLabel>
|
||||
#include <QHttp>
|
||||
#include <QFile>
|
||||
#include <QUrl>
|
||||
#include <QMap>
|
||||
|
||||
class MedialibWindow;
|
||||
|
||||
class MedialibListItem : public QListWidgetItem
|
||||
{
|
||||
public:
|
||||
MedialibListItem (const QString &artist, const QString &album,
|
||||
const QString &song, QListWidget *parent) :
|
||||
QListWidgetItem (artist + " - " + song, parent) {
|
||||
m_artist = artist;
|
||||
m_album = album;
|
||||
m_song = song;
|
||||
}
|
||||
MedialibListItem (const QString &artist, const QString &album,
|
||||
QListWidget *parent) :
|
||||
QListWidgetItem (artist + " - " + album, parent) {
|
||||
m_artist = artist;
|
||||
m_album = album;
|
||||
}
|
||||
MedialibListItem (const QString &artist, QListWidget *parent) :
|
||||
QListWidgetItem (artist, parent) {
|
||||
m_artist = artist;
|
||||
}
|
||||
|
||||
~MedialibListItem () {}
|
||||
void setFile (QFile *f) { m_file = f; }
|
||||
QFile *getFile (void) { return m_file; }
|
||||
|
||||
QString getArtist (void) { return m_artist; }
|
||||
QString getAlbum (void) { return m_album; }
|
||||
QString getSong (void) { return m_song; }
|
||||
|
||||
private:
|
||||
QFile *m_file;
|
||||
QString m_artist;
|
||||
QString m_album;
|
||||
QString m_song;
|
||||
};
|
||||
|
||||
class MedialibList : public QListWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MedialibList (QWidget *parent, const QString &name);
|
||||
~MedialibList () {}
|
||||
void setSizes (void);
|
||||
void refresh (void) {}
|
||||
/*
|
||||
QStringList mimeTypes (void) const {};
|
||||
*/
|
||||
|
||||
public slots:
|
||||
|
||||
/*
|
||||
void queryCallback (uint, QList<QHash<QString, QString> >) {};
|
||||
QMimeData *mimeData(const QList<QListWidgetItem*> items) const {};
|
||||
*/
|
||||
|
||||
void search (const QString &);
|
||||
|
||||
protected:
|
||||
uint m_cid;
|
||||
QFont m_font;
|
||||
MedialibWindow *m_win;
|
||||
bool m_noicon;
|
||||
|
||||
private:
|
||||
QString m_name;
|
||||
|
||||
};
|
||||
|
||||
class MedialibWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MedialibWindow (QWidget *parent);
|
||||
~MedialibWindow () {}
|
||||
|
||||
void setBusy (bool b) {
|
||||
if (b) {
|
||||
m_progress->setMaximum (0);
|
||||
m_progress->setMinimum (0);
|
||||
} else {
|
||||
m_progress->setMaximum (1);
|
||||
m_progress->reset ();
|
||||
}
|
||||
}
|
||||
|
||||
void setBusy (int min, int max) {
|
||||
m_progress->setMaximum (max);
|
||||
m_progress->setMinimum (min);
|
||||
}
|
||||
|
||||
void setBusy (int cur) {
|
||||
m_progress->setValue (cur);
|
||||
}
|
||||
|
||||
void setStatusText (QString s) {
|
||||
m_status->setText (s);
|
||||
}
|
||||
|
||||
void addRequest (QUrl url, MedialibListItem *item);
|
||||
|
||||
public slots:
|
||||
void httpDone (int, bool);
|
||||
void httpStarted (int);
|
||||
void settingsSaved (void);
|
||||
|
||||
private:
|
||||
QWidget *m_dummy;
|
||||
QTabWidget *m_tab;
|
||||
QLineEdit *m_search;
|
||||
QVBoxLayout *m_vbox;
|
||||
QProgressBar *m_progress;
|
||||
QLabel *m_status;
|
||||
MedialibList *m_artist;
|
||||
MedialibList *m_album;
|
||||
MedialibList *m_song;
|
||||
|
||||
QMap<int, MedialibListItem*> m_httpmap;
|
||||
QHttp *m_http;
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue