/* * * $Id: sourceheader 380067 2005-01-19 13:03:46Z trueg $ * Copyright (C) 2005 Sebastian Trueg * * This file is part of the K3b project. * Copyright (C) 1998-2007 Sebastian Trueg * * 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 #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 { TQ_OBJECT public: K3bMediaSelectionComboBox( TQWidget* parent ); virtual ~K3bMediaSelectionComboBox(); /** * Although the widget allows selection of media this * results in a device being selected. */ K3bDevice::Device* selectedDevice() const; TQValueList 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 TQString mediumString( const K3bMedium& ) const; virtual TQString mediumToolTip( const K3bMedium& ) const; virtual TQString 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