Header cleanup
[amarok.git] / src / covermanager.h
blobc24824ab8ab7ed127e4318c866ec45bd8d896f6a
2 // (c) Pierpaolo Di Panfilo 2004
3 // See COPYING file for licensing information
5 #ifndef COVERMANAGER_H
6 #define COVERMANAGER_H
8 #include <q3ptrlist.h>
9 #include <QSplitter>
10 //Added by qt3to4:
11 #include <QDropEvent>
12 #include <Q3ValueList>
13 #include <QLabel>
14 #include <k3iconview.h>
15 #include <QDialog>
16 #include <QPixmap>
18 class Q3ListViewItem;
19 class CoverViewItem;
20 class KLineEdit;
21 class KPushButton;
22 class KMenu;
23 class QToolButton;
24 class QLabel;
25 class K3ListView;
26 class CoverView;
27 class KHBox;
28 class QProgressBar;
29 class QHBoxLayout;
30 class PixmapViewer;
32 class CoverManager : public QSplitter
34 Q_OBJECT
36 static CoverManager *s_instance;
38 public:
39 CoverManager();
40 ~CoverManager();
42 static CoverManager *instance() { return s_instance; }
44 static void showOnce( const QString &artist = QString() );
45 static void viewCover( const QString& artist, const QString& album, QWidget *parent=0 );
47 void setStatusText( QString text );
49 /**
50 * Return the top level domain for the current locale
51 **/
52 static QString amazonTld();
53 public slots:
54 void updateStatusBar();
55 void changeLocale( int id );
57 private slots:
58 void slotArtistSelected( Q3ListViewItem* );
59 void coverItemExecuted( Q3IconViewItem *item );
60 void showCoverMenu( Q3IconViewItem *item, const QPoint& );
61 void slotSetFilter();
62 void slotSetFilterTimeout();
63 void changeView( int id );
64 void fetchMissingCovers();
65 void fetchCoversLoop();
66 void coverFetched( const QString&, const QString& );
67 void coverRemoved( const QString&, const QString& );
68 void coverFetcherError();
69 void stopFetching();
71 void init();
73 private slots:
74 void setCustomSelectedCovers();
75 void fetchSelectedCovers();
76 void deleteSelectedCovers();
77 void viewSelectedCover();
78 void playSelectedAlbums();
79 private:
80 enum View { AllAlbums=0, AlbumsWithCover, AlbumsWithoutCover };
82 void loadCover( const QString &, const QString & );
83 Q3PtrList<CoverViewItem> selectedItems();
85 K3ListView *m_artistView;
86 CoverView *m_coverView;
87 KLineEdit *m_searchEdit;
88 KPushButton *m_fetchButton;
89 KMenu *m_amazonLocaleMenu;
90 KMenu *m_viewMenu;
91 QToolButton *m_amazonLocaleButton;
92 QToolButton *m_viewButton;
93 int m_currentLocale;
94 int m_currentView;
96 //status bar widgets
97 QLabel *m_statusLabel;
98 KHBox *m_progressBox;
99 QProgressBar *m_progress;
100 QString m_oldStatusText;
102 QTimer *m_timer; //search filter timer
103 Q3PtrList<Q3IconViewItem> m_coverItems; //used for filtering
104 QString m_filter;
107 // Used by fetchCoversLoop() for temporary storage
108 QStringList m_fetchCovers;
109 uint m_fetchCounter;
111 //used to display information about cover fetching in the status bar
112 int m_fetchingCovers;
113 int m_coversFetched;
114 int m_coverErrors;
117 class CoverView : public K3IconView
119 Q_OBJECT
121 public:
122 explicit CoverView( QWidget *parent = 0, const char *name = 0, Qt::WFlags f = 0 );
124 protected:
125 Q3DragObject *dragObject();
127 private slots:
128 void setStatusText( Q3IconViewItem *item );
131 class CoverViewItem : public K3IconViewItem
133 public:
134 CoverViewItem( Q3IconView *parent, Q3IconViewItem *after, const QString &artist, const QString &album );
136 void loadCover();
137 bool hasCover() const;
138 bool canRemoveCover() const { return !m_embedded && hasCover(); }
139 QString artist() const { return m_artist; }
140 QString album() const { return m_album; }
141 QPixmap coverPixmap() const { return m_coverPixmap; }
143 protected:
144 void paintItem(QPainter* painter, const QColorGroup& colorGroup);
145 void paintFocus(QPainter *, const QColorGroup &) { }
146 void dropped( QDropEvent *, const Q3ValueList<Q3IconDragItem> & );
147 void dragEntered();
148 void dragLeft();
149 void calcRect( const QString& text_ = QString() );
151 private:
152 QString m_artist;
153 QString m_album;
154 QString m_coverImagePath;
155 QPixmap m_coverPixmap;
156 bool m_embedded;
160 class CoverViewDialog : public QDialog {
161 Q_OBJECT
163 public:
164 CoverViewDialog(const QString& artist, const QString& album, QWidget *parent);
166 private:
167 QHBoxLayout *m_layout;
168 QPixmap m_pixmap;
169 PixmapViewer *m_pixmapViewer;
170 QLabel *m_label;
173 #endif