diff --git a/FileDialog.cpp b/FileDialog.cpp index 3eede49..6bba5a0 100644 --- a/FileDialog.cpp +++ b/FileDialog.cpp @@ -36,4 +36,3 @@ FileDialog::getDirectory () return ret; } - diff --git a/MediaAlbumList.cpp b/MediaAlbumList.cpp deleted file mode 100644 index 69f2bb3..0000000 --- a/MediaAlbumList.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include "XMMSHandler.h" - -#include "MediaAlbumList.h" - -#include "qtmd5.h" - -#include - - -MediaAlbumList::MediaAlbumList (QWidget *parent, const QString &name) : - MedialibList (parent, name) -{ - XMMSHandler *xmmsh = XMMSHandler::getInstance (); - - connect (xmmsh, SIGNAL (medialibResponse (uint, QList >)), - this, SLOT (queryCallback (uint, QList >))); - - 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 items) const -{ - QMimeData *mimeData = new QMimeData(); - QByteArray encodedData; - - MedialibListItem *it = dynamic_cast (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 >l) -{ - if (m_cid != id) - return; - - clear (); - - qDebug ("in query callback album"); - - for (int i = 0; i < l.count (); i++) { - QHash 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); - } - - } - - - } - - -} - diff --git a/MediaAlbumList.h b/MediaAlbumList.h deleted file mode 100644 index ed8b870..0000000 --- a/MediaAlbumList.h +++ /dev/null @@ -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 >); - QMimeData *mimeData(const QList items) const; - -}; - -#endif diff --git a/MediaArtistList.cpp b/MediaArtistList.cpp deleted file mode 100644 index 5cd35a6..0000000 --- a/MediaArtistList.cpp +++ /dev/null @@ -1,102 +0,0 @@ -#include "XMMSHandler.h" - -#include "MediaArtistList.h" - -#include "qtmd5.h" - -#include - -MediaArtistList::MediaArtistList (QWidget *parent, const QString &name) : - MedialibList (parent, name) -{ - XMMSHandler *xmmsh = XMMSHandler::getInstance (); - - connect (xmmsh, SIGNAL (medialibResponse (uint, QList >)), - this, SLOT (queryCallback (uint, QList >))); - - 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 items) const -{ - QMimeData *mimeData = new QMimeData(); - QByteArray encodedData; - - MedialibListItem *it = dynamic_cast (currentItem ()); - - QDataStream stream(&encodedData, QIODevice::WriteOnly); - stream << it->getArtist (); - - mimeData->setData("application/mlib.artist", encodedData); - return mimeData; -} - - -void -MediaArtistList::queryCallback (uint id, QList >l) -{ - if (m_cid != id) - return; - - clear (); - - qDebug ("in query callback artist"); - - for (int i = 0; i < l.count (); i++) { - QHash 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); - } - - } - - - } - - -} - diff --git a/MediaArtistList.h b/MediaArtistList.h deleted file mode 100644 index 30b9e9a..0000000 --- a/MediaArtistList.h +++ /dev/null @@ -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 >); - QMimeData *mimeData(const QList items) const; - -}; - -#endif diff --git a/MediaSongList.cpp b/MediaSongList.cpp deleted file mode 100644 index 4c35221..0000000 --- a/MediaSongList.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "XMMSHandler.h" - -#include "MediaSongList.h" - -#include "qtmd5.h" - -#include - -MediaSongList::MediaSongList (QWidget *parent, const QString &name) : - MedialibList (parent, name) -{ - XMMSHandler *xmmsh = XMMSHandler::getInstance (); - - connect (xmmsh, SIGNAL (medialibResponse (uint, QList >)), - this, SLOT (queryCallback (uint, QList >))); - - 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 items) const -{ - QMimeData *mimeData = new QMimeData(); - QByteArray encodedData; - - MedialibListItem *it = dynamic_cast (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 >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 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); - } - - } - - - } -} - diff --git a/MediaSongList.h b/MediaSongList.h deleted file mode 100644 index 5ca5f33..0000000 --- a/MediaSongList.h +++ /dev/null @@ -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 >); - QMimeData *mimeData(const QList items) const; - -}; - -#endif diff --git a/Medialib.cpp b/Medialib.cpp deleted file mode 100644 index 69c51b1..0000000 --- a/Medialib.cpp +++ /dev/null @@ -1,250 +0,0 @@ -#include "XMMSHandler.h" -#include "Medialib.h" - -#include -#include -#include -#include -#include -#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 (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 (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 (item (i)); - setItemHidden (it, false); - } - } - -} - - diff --git a/Medialib.h b/Medialib.h deleted file mode 100644 index 293ba08..0000000 --- a/Medialib.h +++ /dev/null @@ -1,141 +0,0 @@ -#ifndef __MEDIALIB_H__ -#define __MEDIALIB_H__ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -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 >) {}; - QMimeData *mimeData(const QList 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 m_httpmap; - QHttp *m_http; -}; - -#endif