Make plasma libs build.
[amarok.git] / src / CoverManager.h
blob40ce5daf1aa8f61128a579339e81ab4eeee33004
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 <QSplitter>
11 //Added by qt3to4:
12 #include <QDropEvent>
13 #include <QLabel>
14 #include <QListWidget>
15 #include <QListWidgetItem>
16 #include <QDialog>
17 #include <QPixmap>
19 class CoverViewItem;
20 class QTreeWidget;
21 class QTreeWidgetItem;
22 class KLineEdit;
23 class KPushButton;
24 class KMenu;
25 class QToolButton;
26 class QLabel;
27 class CoverView;
28 class KHBox;
29 class QProgressBar;
30 class QHBoxLayout;
31 class PixmapViewer;
33 class CoverManager : public QSplitter, public Meta::Observer
35 Q_OBJECT
37 static CoverManager *s_instance;
39 public:
40 CoverManager();
41 ~CoverManager();
43 static CoverManager *instance() { return s_instance; }
45 static void showOnce( const QString &artist = QString() );
46 static void viewCover( Meta::AlbumPtr album, QWidget *parent=0 );
48 void setStatusText( QString text );
50 // Return the top level domain for the current locale
51 static QString amazonTld();
53 // Reimplemented from Meta::Observer
54 void metadataChanged( Meta::Album* album );
56 public slots:
57 void updateStatusBar();
58 void changeLocale( int id );
60 private slots:
61 void init();
63 void slotArtistSelected();
64 void coverItemExecuted( QListWidgetItem *item );
65 void showCoverMenu( QListWidgetItem *item, const QPoint& );
66 void slotSetFilter();
67 void slotSetFilterTimeout();
69 void slotShowAllAlbums() { changeView( AllAlbums ); }
70 void slotShowAlbumsWithCover() { changeView( AlbumsWithCover ); }
71 void slotShowAlbumsWithoutCover() { changeView( AlbumsWithoutCover ); }
72 void changeView( int id );
74 void slotSetLocaleIntl() { changeLocale( CoverFetcher::International ); }
75 void slotSetLocaleCa() { changeLocale( CoverFetcher::Canada ); }
76 void slotSetLocaleDe() { changeLocale( CoverFetcher::Germany ); }
77 void slotSetLocaleFr() { changeLocale( CoverFetcher::France ); }
78 void slotSetLocaleJp() { changeLocale( CoverFetcher::Japan ); }
79 void slotSetLocaleUk() { changeLocale( CoverFetcher::UK ); }
81 void fetchMissingCovers();
82 void coverFetched( const QString&, const QString& );
83 void coverRemoved( const QString&, const QString& );
84 void coverFetcherError();
85 void stopFetching();
88 void setCustomSelectedCovers();
89 void fetchSelectedCovers();
90 void deleteSelectedCovers();
91 void viewSelectedCover();
92 void playSelectedAlbums();
94 private:
95 enum View { AllAlbums=0, AlbumsWithCover, AlbumsWithoutCover };
97 void loadCover( const QString &, const QString & );
98 QList<CoverViewItem*> selectedItems();
100 QTreeWidget *m_artistView;
101 CoverView *m_coverView;
102 KLineEdit *m_searchEdit;
103 KPushButton *m_fetchButton;
104 KMenu *m_amazonLocaleMenu;
105 KMenu *m_viewMenu;
106 QToolButton *m_amazonLocaleButton;
107 QToolButton *m_viewButton;
108 int m_currentLocale;
109 int m_currentView;
111 CoverFetcher *m_fetcher;
113 QAction *m_selectAllAlbums;
114 QAction *m_selectAlbumsWithCover;
115 QAction *m_selectAlbumsWithoutCover;
117 //status bar widgets
118 QLabel *m_statusLabel;
119 KHBox *m_progressBox;
120 QProgressBar *m_progress;
121 QString m_oldStatusText;
123 QTimer *m_timer; //search filter timer
124 QList<CoverViewItem*> m_coverItems; //used for filtering
125 QString m_filter;
128 // Used by fetchCoversLoop() for temporary storage
129 Meta::AlbumList m_fetchCovers;
131 //used to display information about cover fetching in the status bar
132 int m_fetchingCovers;
133 int m_coversFetched;
134 int m_coverErrors;
137 class CoverView : public QListWidget
139 Q_OBJECT
141 public:
142 explicit CoverView( QWidget *parent = 0, const char *name = 0, Qt::WFlags f = 0 );
144 private slots:
145 void setStatusText( QListWidgetItem *item );
148 class CoverViewItem : public QListWidgetItem
150 public:
151 CoverViewItem( QListWidget *parent, Meta::AlbumPtr album );
152 ~CoverViewItem();
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 Meta::AlbumPtr albumPtr() const { return m_albumPtr; }
160 QPixmap coverPixmap() const { return m_coverPixmap; }
162 protected:
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 Meta::AlbumPtr m_albumPtr;
171 QString m_artist;
172 QString m_album;
173 QString m_coverImagePath;
174 QPixmap m_coverPixmap;
175 bool m_embedded;
176 QListWidget *m_parent;
180 class CoverViewDialog : public QDialog
182 Q_OBJECT
184 public:
185 CoverViewDialog(Meta::AlbumPtr album, QWidget *parent);
187 private:
188 QHBoxLayout *m_layout;
189 QPixmap m_pixmap;
190 PixmapViewer *m_pixmapViewer;
191 QLabel *m_label;
194 #endif