add mp3 and ogg torrent url info to JamendoAlbum
[amarok.git] / src / covermanager.h
blob786922d5e5e959f23eab5ae791897c50475383e0
2 // (c) Pierpaolo Di Panfilo 2004
3 // See COPYING file for licensing information
5 #ifndef COVERMANAGER_H
6 #define COVERMANAGER_H
8 #include "coverfetcher.h"
10 #include <q3ptrlist.h>
11 #include <QSplitter>
12 //Added by qt3to4:
13 #include <QDropEvent>
14 #include <Q3ValueList>
15 #include <QLabel>
16 #include <k3iconview.h>
17 #include <QDialog>
18 #include <QPixmap>
20 class Q3ListViewItem;
21 class CoverViewItem;
22 class KLineEdit;
23 class KPushButton;
24 class KMenu;
25 class QToolButton;
26 class QLabel;
27 class K3ListView;
28 class CoverView;
29 class KHBox;
30 class QProgressBar;
31 class QHBoxLayout;
32 class PixmapViewer;
34 class CoverManager : public QSplitter
36 Q_OBJECT
38 static CoverManager *s_instance;
40 public:
41 CoverManager();
42 ~CoverManager();
44 static CoverManager *instance() { return s_instance; }
46 static void showOnce( const QString &artist = QString() );
47 static void viewCover( const QString& artist, const QString& album, QWidget *parent=0 );
49 void setStatusText( QString text );
51 // Return the top level domain for the current locale
52 static QString amazonTld();
54 public slots:
55 void updateStatusBar();
56 void changeLocale( int id );
58 private slots:
59 void init();
61 void slotArtistSelected( Q3ListViewItem* );
62 void coverItemExecuted( Q3IconViewItem *item );
63 void showCoverMenu( Q3IconViewItem *item, const QPoint& );
64 void slotSetFilter();
65 void slotSetFilterTimeout();
67 void slotShowAllAlbums() { changeView( AllAlbums ); }
68 void slotShowAlbumsWithCover() { changeView( AlbumsWithCover ); }
69 void slotShowAlbumsWithoutCover() { changeView( AlbumsWithoutCover ); }
70 void changeView( int id );
72 void slotSetLocaleIntl() { changeLocale( CoverFetcher::International ); }
73 void slotSetLocaleCa() { changeLocale( CoverFetcher::Canada ); }
74 void slotSetLocaleDe() { changeLocale( CoverFetcher::Germany ); }
75 void slotSetLocaleFr() { changeLocale( CoverFetcher::France ); }
76 void slotSetLocaleJp() { changeLocale( CoverFetcher::Japan ); }
77 void slotSetLocaleUk() { changeLocale( CoverFetcher::UK ); }
79 void fetchMissingCovers();
80 void fetchCoversLoop();
81 void coverFetched( const QString&, const QString& );
82 void coverRemoved( const QString&, const QString& );
83 void coverFetcherError();
84 void stopFetching();
87 void setCustomSelectedCovers();
88 void fetchSelectedCovers();
89 void deleteSelectedCovers();
90 void viewSelectedCover();
91 void playSelectedAlbums();
93 private:
94 enum View { AllAlbums=0, AlbumsWithCover, AlbumsWithoutCover };
96 void loadCover( const QString &, const QString & );
97 Q3PtrList<CoverViewItem> selectedItems();
99 K3ListView *m_artistView;
100 CoverView *m_coverView;
101 KLineEdit *m_searchEdit;
102 KPushButton *m_fetchButton;
103 KMenu *m_amazonLocaleMenu;
104 KMenu *m_viewMenu;
105 QToolButton *m_amazonLocaleButton;
106 QToolButton *m_viewButton;
107 int m_currentLocale;
108 int m_currentView;
110 QAction *m_selectAllAlbums;
111 QAction *m_selectAlbumsWithCover;
112 QAction *m_selectAlbumsWithoutCover;
114 //status bar widgets
115 QLabel *m_statusLabel;
116 KHBox *m_progressBox;
117 QProgressBar *m_progress;
118 QString m_oldStatusText;
120 QTimer *m_timer; //search filter timer
121 Q3PtrList<Q3IconViewItem> m_coverItems; //used for filtering
122 QString m_filter;
125 // Used by fetchCoversLoop() for temporary storage
126 QStringList m_fetchCovers;
127 uint m_fetchCounter;
129 //used to display information about cover fetching in the status bar
130 int m_fetchingCovers;
131 int m_coversFetched;
132 int m_coverErrors;
135 class CoverView : public K3IconView
137 Q_OBJECT
139 public:
140 explicit CoverView( QWidget *parent = 0, const char *name = 0, Qt::WFlags f = 0 );
142 protected:
143 Q3DragObject *dragObject();
145 private slots:
146 void setStatusText( Q3IconViewItem *item );
149 class CoverViewItem : public K3IconViewItem
151 public:
152 CoverViewItem( Q3IconView *parent, Q3IconViewItem *after, const QString &artist, const QString &album );
154 void loadCover();
155 bool hasCover() const;
156 bool canRemoveCover() const { return !m_embedded && hasCover(); }
157 QString artist() const { return m_artist; }
158 QString album() const { return m_album; }
159 QPixmap coverPixmap() const { return m_coverPixmap; }
161 protected:
162 void paintItem(QPainter* painter, const QColorGroup& colorGroup);
163 void paintFocus(QPainter *, const QColorGroup &) { }
164 void dropped( QDropEvent *, const Q3ValueList<Q3IconDragItem> & );
165 void dragEntered();
166 void dragLeft();
167 void calcRect( const QString& text_ = QString() );
169 private:
170 QString m_artist;
171 QString m_album;
172 QString m_coverImagePath;
173 QPixmap m_coverPixmap;
174 bool m_embedded;
178 class CoverViewDialog : public QDialog {
179 Q_OBJECT
181 public:
182 CoverViewDialog(const QString& artist, const QString& album, QWidget *parent);
184 private:
185 QHBoxLayout *m_layout;
186 QPixmap m_pixmap;
187 PixmapViewer *m_pixmapViewer;
188 QLabel *m_label;
191 #endif