1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
/*
* SPDX-FileCopyrightText: 2024 Bohdan Onofriichuk <bogdan.onofriuchuk@gmail.com>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#include <QHash>
#include <devicestatemonitor_p.h>
/**
* This class monitors the full and free size of devices
*/
class QTimer;
class SpaceMonitor : public QObject
{
Q_OBJECT
public:
static std::shared_ptr<SpaceMonitor> instance();
~SpaceMonitor() override;
void setIsVisible(bool status);
void addMonitoringDevice(const QString &udi);
void removeMonitoringDevice(const QString &udi);
void forceUpdateSize(const QString &udi);
double getFullSize(const QString &udi) const;
double getFreeSize(const QString &udi) const;
private:
explicit SpaceMonitor(QObject *parent = nullptr);
private Q_SLOTS:
void deviceStateChanged(QString udi);
void updateAllStorageSpaces();
Q_SIGNALS:
void sizeChanged(const QString &udi);
private:
void updateStorageSpace(const QString &udi);
QHash<QString, std::pair<double, double>> m_sizes;
std::shared_ptr<DevicesStateMonitor> m_stateMonitor;
QTimer *m_spaceWatcher;
};
|