add mp3 and ogg torrent url info to JamendoAlbum
[amarok.git] / src / MediaDevicePluginManager.h
blob00a17468fcf8f232c076c29ef7de5639e9393267
1 //
2 // C++ Interface: mediadevicepluginmanager
3 //
4 // Description:
5 //
6 //
7 // Author: Jeff Mitchell <kde-dev@emailgoeshere.com>, (C) 2005
8 //
9 // Copyright: See COPYING file that comes with this distribution
12 #ifndef MEDIUMPLUGINMANAGER_H
13 #define MEDIUMPLUGINMANAGER_H
15 #include "amarok.h"
16 #include "hintlineedit.h"
17 #include "plugin/pluginconfig.h"
20 #include <KHBox>
21 #include <KComboBox>
22 #include <KLocale>
23 #include <KPageDialog>
25 #include <QLayout>
26 #include <QMap>
27 #include <QLabel>
28 #include <Q3ValueList>
30 class QAbstractButton;
31 class Q3GroupBox;
32 class QLabel;
33 class KVBox;
34 class MediaDevice;
35 class MediaDevicePluginManager;
37 typedef QMap<QString, bool> DeletedMap;
39 /**
40 @author Jeff Mitchell <kde-dev@emailgoeshere.com>
41 @author Martin Aumueller <aumuell@reserv.at>
44 class MediaDeviceConfig : public KHBox
46 Q_OBJECT
48 public:
49 MediaDeviceConfig( QString id, MediaDevicePluginManager *mgr, const bool nographics=false, QWidget *parent=0, const char *name=0 );
50 ~MediaDeviceConfig();
51 QString oldPlugin() { return m_oldPlugin; }
52 void setOldPlugin( const QString &oldPlugin ) { m_oldPlugin = oldPlugin; }
53 QString plugin();
54 KComboBox* pluginCombo() { return m_pluginCombo; }
55 QAbstractButton *configButton() { return m_configButton; }
56 QAbstractButton *removeButton() { return m_removeButton; }
57 QString uid() { return m_uid; }
58 bool isNew() { return m_new; }
60 public slots:
61 void configureDevice();
62 void deleteDevice();
64 signals:
65 void changed();
66 void deleteDevice( const QString & );
68 protected:
69 MediaDevicePluginManager *m_manager;
70 QString m_uid;
71 QString m_oldPlugin;
72 KComboBox* m_pluginCombo;
73 QAbstractButton *m_configButton;
74 QAbstractButton *m_removeButton;
75 bool m_new;
78 class MediaDevicePluginManager : public QObject
80 Q_OBJECT
82 public:
83 //nographics only for the initial run of detectDevices...pass in
84 //directly to detectDevices after
85 explicit MediaDevicePluginManager( QWidget *widget, const bool nographics=false );
86 ~MediaDevicePluginManager();
87 void finished();
89 signals:
90 void selectedPlugin( const QString &, const QString & );
92 public slots:
93 void redetectDevices();
94 void newDevice();
95 void deleteDevice( const QString &uid );
97 private:
98 bool detectDevices( bool redetect=false, bool nographics=false );
99 DeletedMap m_deletedMap;
100 QList<MediaDeviceConfig *> m_deviceList;
101 QWidget *m_widget;
105 class MediaDevicePluginManagerDialog : public KPageDialog
107 Q_OBJECT
109 public:
110 MediaDevicePluginManagerDialog();
111 ~MediaDevicePluginManagerDialog();
113 private slots:
114 void slotOk();
116 private:
118 KVBox *m_devicesBox;
119 Q3GroupBox *m_location;
120 MediaDevicePluginManager *m_manager;
123 class ManualDeviceAdder : public KPageDialog
125 Q_OBJECT
127 public:
128 ManualDeviceAdder( MediaDevicePluginManager* mdm );
129 ~ManualDeviceAdder();
130 bool successful() const { return m_successful; }
131 QString getId( bool recreate = false );
132 QString getPlugin() const { return m_selectedPlugin; }
134 private slots:
135 void slotButtonClicked( KDialog::ButtonCode);
136 void comboChanged( const QString & );
138 private:
139 MediaDevicePluginManager* m_mpm;
140 bool m_successful;
141 QString m_comboOldText;
142 QString m_selectedPlugin;
143 QString m_newId;
145 KComboBox* m_mdaCombo;
146 HintLineEdit* m_mdaName;
147 HintLineEdit* m_mdaMountPoint;
150 #endif