diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-03 02:15:56 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-03 02:15:56 +0000 |
commit | 50b48aec6ddd451a6d1709c0942477b503457663 (patch) | |
tree | a9ece53ec06fd0a2819de7a2a6de997193566626 /libk3bdevice/k3bdevicemanager.h | |
download | k3b-50b48aec6ddd451a6d1709c0942477b503457663.tar.gz k3b-50b48aec6ddd451a6d1709c0942477b503457663.zip |
Added abandoned KDE3 version of K3B
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/k3b@1084400 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'libk3bdevice/k3bdevicemanager.h')
-rw-r--r-- | libk3bdevice/k3bdevicemanager.h | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/libk3bdevice/k3bdevicemanager.h b/libk3bdevice/k3bdevicemanager.h new file mode 100644 index 0000000..4656538 --- /dev/null +++ b/libk3bdevice/k3bdevicemanager.h @@ -0,0 +1,247 @@ +/* + * + * $Id: k3bdevicemanager.h 619556 2007-01-03 17:38:12Z trueg $ + * Copyright (C) 2003-2007 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 K3BDEVICEMANAGER_H +#define K3BDEVICEMANAGER_H + +#include <qobject.h> +#include <qstring.h> +#include <qstringlist.h> +#include <qmemarray.h> +#include <qptrlist.h> + +#include "k3bdevice_export.h" +#include <kdebug.h> + +class KProcess; +class KConfig; +class K3bExternalBin; + + +namespace K3bDevice { + + class Device; + + /** + * \brief Manages all devices. + * + * Searches the system for devices and maintains lists of them. + * + * <b>Basic usage:</b> + * \code + * K3bDevice::DeviceManager* manager = new K3bDevice::DeviceManager( this ); + * manager->scanBus(); + * K3bDevice::Device* dev = manager->findDevice( "/dev/cdrom" ); + * \endcode + */ + class LIBK3BDEVICE_EXPORT DeviceManager : public QObject + { + Q_OBJECT + + public: + /** + * Creates a new DeviceManager + */ + DeviceManager( QObject* parent = 0, const char* name = 0 ); + virtual ~DeviceManager(); + + /** + * By default the DeviceManager makes the Devices check their writing modes. + * This includes commands to be sent which require writing permissions on the + * devices and might take some time. + * + * So if you don't need the information about the writing modes use this method + * to speed up the device detection procedure. + * + * Be aware that this only refers to CD writing modes. If you only want to handle + * DVD devices it's always save to set this to false. + */ + void setCheckWritingModes( bool b ); + + /** + * \deprecated use findDevice( const QString& ) + */ + Device* deviceByName( const QString& ); + + /** + * Search an SCSI device by SCSI bus, id, and lun. + * + * \note This method does not initialize new devices. + * Devices cannot be found until they have been added via addDevice(const QString&) + * or scanBus(). + * + * \return The corresponding device or 0 if there is no such device. + */ + Device* findDevice( int bus, int id, int lun ); + + /** + * Search a device by blockdevice name. + * + * \note This method does not initialize new devices. + * Devices cannot be found until they have been added via addDevice(const QString&) + * or scanBus(). + * + * \return The corresponding device or 0 if there is no such device. + */ + Device* findDevice( const QString& devicename ); + + /** + * Before getting the devices do a @ref scanBus(). + * \return List of all cd writer devices. + * \deprecated use cdWriter() + */ + const QPtrList<Device>& burningDevices() const; + + /** + * \return List of all reader devices without writer devices. + * \deprecated use cdReader() + **/ + const QPtrList<Device>& readingDevices() const; + + /** + * Before getting the devices do a @ref scanBus() or add + * devices via addDevice( const QString& ). + * + * \return List of all devices. + */ + const QPtrList<Device>& allDevices() const; + + /** + * Before getting the devices do a @ref scanBus() or add + * devices via addDevice( const QString& ). + * + * \return List of all cd writer devices. + */ + const QPtrList<Device>& cdWriter() const; + + /** + * Before getting the devices do a @ref scanBus() or add + * devices via addDevice( const QString& ). + * + * \return List of all cd reader devices. + */ + const QPtrList<Device>& cdReader() const; + + /** + * Before getting the devices do a @ref scanBus() or add + * devices via addDevice( const QString& ). + * + * \return List of all DVD writer devices. + */ + const QPtrList<Device>& dvdWriter() const; + + /** + * Before getting the devices do a @ref scanBus() or add + * devices via addDevice( const QString& ). + * + * \return List of all DVD reader devices. + */ + const QPtrList<Device>& dvdReader() const; + + /** + * Before getting the devices do a @ref scanBus() or add + * devices via addDevice( const QString& ). + * + * \return List of all Blue Ray reader devices. + */ + const QPtrList<Device>& blueRayReader() const; + + /** + * Before getting the devices do a @ref scanBus() or add + * devices via addDevice( const QString& ). + * + * \return List of all Blue Ray writer devices. + */ + const QPtrList<Device>& blueRayWriters() const; + + /** + * Reads the device information from the config file. + */ + virtual bool readConfig( KConfig* ); + + virtual bool saveConfig( KConfig* ); + + + public slots: + /** + * Writes a list of all devices to stderr. + */ + void printDevices(); + + /** + * Scan the system for devices. Call this to initialize all devices. + * + * If the system uses the HAL device deamon it is possible to use + * HalConnection instead of calling this method. + * + * \return Number of found devices. + **/ + virtual int scanBus(); + + /** + * Clears the writers and readers list of devices. + */ + virtual void clear(); + + /** + * Add a new device. + * + * \param dev Name of a block device or link to a block device. If the + * corresponding device has already been detected it will simply + * be returned. Otherwise if a device is found it will be initialized + * and added to the internal lists (meaning it can be accessed through + * emthods like cdReader()). + * + * Called by scanBus() + * + * \return The device if it could be found or 0 otherwise. + */ + virtual Device* addDevice( const QString& dev ); + + /** + * Remove a device from the device manager. Basicly this method + * only makes sense in combination with the HalConnection. Connect + * it to the deviceRemoved signal. + */ + virtual void removeDevice( const QString& dev ); + + signals: + /** + * Emitted if the device configuration changed, i.e. a device was added or removed. + */ + void changed( K3bDevice::DeviceManager* ); + void changed(); + + private: + bool testForCdrom( const QString& ); + bool determineBusIdLun( const QString &dev, int& bus, int& id, int& lun ); + QString resolveSymLink( const QString& path ); + + class Private; + Private* d; + + /** + * Add a device to the managers device lists and initialize the device. + */ + Device *addDevice( Device* ); + + void BSDDeviceScan(); + void NetBSDDeviceScan(); + void LinuxDeviceScan(); + }; +} + +#endif |