summaryrefslogtreecommitdiffstats
path: root/src/k3bmediaselectioncombobox.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/k3bmediaselectioncombobox.h')
-rw-r--r--src/k3bmediaselectioncombobox.h136
1 files changed, 136 insertions, 0 deletions
diff --git a/src/k3bmediaselectioncombobox.h b/src/k3bmediaselectioncombobox.h
new file mode 100644
index 0000000..8a592c9
--- /dev/null
+++ b/src/k3bmediaselectioncombobox.h
@@ -0,0 +1,136 @@
+/*
+ *
+ * $Id: sourceheader 380067 2005-01-19 13:03:46Z trueg $
+ * Copyright (C) 2005 Sebastian Trueg <trueg@k3b.org>
+ *
+ * This file is part of the K3b project.
+ * Copyright (C) 1998-2007 Sebastian Trueg <trueg@k3b.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * See the file "COPYING" for the exact licensing terms.
+ */
+
+#ifndef _K3B_MEDIA_SELECTION_COMBOBOX_H_
+#define _K3B_MEDIA_SELECTION_COMBOBOX_H_
+
+#include <kcombobox.h>
+
+#include "k3bmedium.h"
+
+namespace K3bDevice {
+ class Device;
+ class DeviceManager;
+}
+
+/**
+ * Combo box which allows to select a media (in comparison
+ * to the K3bDeviceComboBox which allows to select a device.
+ *
+ * This class uses the K3bMediaCache to update it's status.
+ */
+class K3bMediaSelectionComboBox : public KComboBox
+{
+ Q_OBJECT
+
+ public:
+ K3bMediaSelectionComboBox( QWidget* parent );
+ virtual ~K3bMediaSelectionComboBox();
+
+ /**
+ * Although the widget allows selection of media this
+ * results in a device being selected.
+ */
+ K3bDevice::Device* selectedDevice() const;
+
+ QValueList<K3bDevice::Device*> allDevices() const;
+
+ int wantedMediumType() const;
+ int wantedMediumState() const;
+ int wantedMediumContent() const;
+
+ signals:
+ /**
+ * Be aware that his signal will also be emitted in case
+ * no medium is available with a null pointer.
+ */
+ void selectionChanged( K3bDevice::Device* );
+
+ /**
+ * This signal is emitted if the selection of media changed.
+ * This includes a change due to changing the wanted medium state.
+ */
+ void newMedia();
+
+ void newMedium( K3bDevice::Device* dev );
+
+ public slots:
+ /**
+ * Only works in case the device actually contains a usable medium.
+ * Otherwise the currently selected medium stays selected.
+ */
+ void setSelectedDevice( K3bDevice::Device* );
+
+ /**
+ * Set the wanted medium type. Defaults to writable CD.
+ *
+ * \param type a bitwise combination of the K3bDevice::MediaType enum
+ */
+ void setWantedMediumType( int type );
+
+ /**
+ * Set the wanted medium state. Defaults to empty media.
+ *
+ * \param state a bitwise combination of the K3bDevice::State enum
+ */
+ void setWantedMediumState( int state );
+
+ /**
+ * Set the wanted medium content type. The default is K3bMedium::CONTENT_ALL (i.e. ignore media
+ * content)
+ * Be aware that 0 maps to K3bMedium::CONTENT_NONE, i.e. empty media.
+ *
+ * \param content A bitwise or of K3bMedium::MediumContent
+ */
+ void setWantedMediumContent( int content );
+
+ /**
+ * Set the device to ignore. This device will not be checked for
+ * wanted media. This is many useful for media copy.
+ *
+ * \param dev The device to ignore or 0 to not ignore any device.
+ */
+ void setIgnoreDevice( K3bDevice::Device* dev );
+
+ private slots:
+ void slotMediumChanged( K3bDevice::Device* );
+ void slotDeviceManagerChanged( K3bDevice::DeviceManager* );
+ void slotActivated( int i );
+ void slotUpdateToolTip( K3bDevice::Device* );
+
+ protected:
+ void updateMedia();
+ virtual bool showMedium( const K3bMedium& ) const;
+ virtual QString mediumString( const K3bMedium& ) const;
+ virtual QString mediumToolTip( const K3bMedium& ) const;
+ virtual QString noMediumMessage() const;
+
+ private:
+ void updateMedium( K3bDevice::Device* );
+ void addMedium( K3bDevice::Device* );
+ void showNoMediumMessage();
+ void clear();
+
+ // usedby the tooltip
+ K3bDevice::Device* deviceAt( unsigned int index );
+
+ class ToolTip;
+ friend class ToolTip;
+
+ class Private;
+ Private* d;
+};
+
+#endif