File indexing completed on 2024-04-28 16:55:02

0001 /*
0002     SPDX-FileCopyrightText: 2009 Kevin Ottens <ervin@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-only
0005 */
0006 
0007 #include "solidautoeject.h"
0008 
0009 #include <kpluginfactory.h>
0010 
0011 #include <solid/device.h>
0012 #include <solid/devicenotifier.h>
0013 #include <solid/opticaldrive.h>
0014 
0015 K_PLUGIN_CLASS_WITH_JSON(SolidAutoEject, "solidautoeject.json")
0016 
0017 SolidAutoEject::SolidAutoEject(QObject *parent, const QList<QVariant> &)
0018     : KDEDModule(parent)
0019 {
0020     const QList<Solid::Device> drives = Solid::Device::listFromType(Solid::DeviceInterface::OpticalDrive);
0021     for (const Solid::Device &drive : drives) {
0022         connectDevice(drive);
0023     }
0024 
0025     connect(Solid::DeviceNotifier::instance(), &Solid::DeviceNotifier::deviceAdded, this, &SolidAutoEject::onDeviceAdded);
0026 }
0027 
0028 SolidAutoEject::~SolidAutoEject()
0029 {
0030 }
0031 
0032 void SolidAutoEject::onDeviceAdded(const QString &udi)
0033 {
0034     connectDevice(Solid::Device(udi));
0035 }
0036 
0037 void SolidAutoEject::onEjectPressed(const QString &udi)
0038 {
0039     Solid::Device dev(udi);
0040     dev.as<Solid::OpticalDrive>()->eject();
0041 }
0042 
0043 void SolidAutoEject::connectDevice(const Solid::Device &device)
0044 {
0045     connect(device.as<Solid::OpticalDrive>(), &Solid::OpticalDrive::ejectPressed, this, &SolidAutoEject::onEjectPressed);
0046 }
0047 
0048 #include "solidautoeject.moc"