File indexing completed on 2024-04-14 04:45:10

0001 /*
0002     SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #ifndef _K3B_APP_DEVICE_MANAGER_H_
0007 #define _K3B_APP_DEVICE_MANAGER_H_
0008 
0009 #include "k3bdevicemanager.h"
0010 
0011 #include <KXMLGUIClient>
0012 #include <Solid/SolidNamespace>
0013 
0014 
0015 namespace K3b {
0016     class MediaCache;
0017 }
0018 
0019 namespace Device {
0020     class Device;
0021 }
0022 
0023 /**
0024  * Enhanced device manager which can do some additional actions
0025  * and maintains a current device
0026  */
0027 namespace K3b {
0028     class AppDeviceManager : public Device::DeviceManager, public KXMLGUIClient
0029     {
0030         Q_OBJECT
0031 
0032     public:
0033         explicit AppDeviceManager( QObject* parent = 0 );
0034         ~AppDeviceManager() override;
0035 
0036         Device::Device* currentDevice() const;
0037         void setMediaCache( MediaCache* c );
0038 
0039     Q_SIGNALS:
0040         void currentDeviceChanged( K3b::Device::Device* );
0041 
0042         /**
0043          * Emitted when starting to detect the diskinfo. This may be used to show some info
0044          * to the user since detecting the diskinfo might take some time.
0045          */
0046         void detectingDiskInfo( K3b::Device::Device* );
0047 
0048         void mountFinished( const QString& mountPoint );
0049         void unmountFinished( bool success );
0050 
0051     public Q_SLOTS:
0052         /**
0053          * \reimplemented for internal reasons. The API is unaffected.
0054          */
0055         void clear() override;
0056 
0057         void setCurrentDevice( K3b::Device::Device* );
0058 
0059         void diskInfo();
0060         void unlockDevice();
0061         void lockDevice();
0062         void mountDisk();
0063         void unmountDisk();
0064         void ejectDisk();
0065         void loadDisk();
0066         void setReadSpeed();
0067 
0068         void diskInfo( K3b::Device::Device* );
0069         void unlockDevice( K3b::Device::Device* );
0070         void lockDevice( K3b::Device::Device* );
0071         void mountDisk( K3b::Device::Device* );
0072         void unmountDisk( K3b::Device::Device* );
0073         void ejectDisk( K3b::Device::Device* );
0074         void loadDisk( K3b::Device::Device* );
0075         void setReadSpeed( K3b::Device::Device* );
0076 
0077     private Q_SLOTS:
0078         void slotMediumChanged( K3b::Device::Device* dev );
0079         void slotMountChanged( bool accessible, const QString& udi );
0080         void slotMountFinished( Solid::ErrorType error, QVariant errorData, const QString& udi );
0081         void slotUnmountFinished( Solid::ErrorType error, QVariant errorData, const QString& udi );
0082 
0083     private:
0084         /**
0085          * \reimplemented for internal reasons. The API is unaffected.
0086          */
0087         Device::Device* addDevice( const Solid::Device& solidDev ) override;
0088         void removeDevice( const Solid::Device& solidDev ) override;
0089 
0090         class Private;
0091         Private* const d;
0092     };
0093 }
0094 
0095 #endif