mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-23 10:22:49 +00:00
kfreespace: use the device description in the notification
it's fancy alright: https://ibb.co/vzqTzsF Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
84745c78d7
commit
8dbfa6c2f4
5 changed files with 60 additions and 10 deletions
|
@ -29,6 +29,7 @@
|
|||
#include <solid/device.h>
|
||||
#include <solid/storagevolume.h>
|
||||
#include <solid/storageaccess.h>
|
||||
#include <solid/devicenotifier.h>
|
||||
|
||||
K_PLUGIN_FACTORY(KFreeSpaceModuleFactory, registerPlugin<KFreeSpaceModule>();)
|
||||
K_EXPORT_PLUGIN(KFreeSpaceModuleFactory("kfreespace"))
|
||||
|
@ -46,7 +47,18 @@ KFreeSpaceModule::KFreeSpaceModule(QObject *parent, const QList<QVariant> &args)
|
|||
m_dirwatch->addFile(kfreespacercfile);
|
||||
connect(m_dirwatch, SIGNAL(dirty(QString)), this, SLOT(slotInit()));
|
||||
|
||||
// TODO: watch storage devices to reinit
|
||||
// TODO: test it
|
||||
#if 0
|
||||
Solid::DeviceNotifier* solidnotifier = Solid::DeviceNotifier::instance();
|
||||
connect(
|
||||
solidnotifier, SIGNAL(deviceAdded(QString)),
|
||||
this, SLOT(slotDeviceAdded(QString))
|
||||
);
|
||||
connect(
|
||||
solidnotifier, SIGNAL(deviceRemoved(QString)),
|
||||
this, SLOT(slotDeviceRemoved(QString))
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
KFreeSpaceModule::~KFreeSpaceModule()
|
||||
|
@ -92,7 +104,8 @@ void KFreeSpaceModule::slotInit()
|
|||
KFreeSpaceImpl* kfreespaceimpl = new KFreeSpaceImpl(this);
|
||||
const bool kfreespacestatus = kfreespaceimpl->watch(
|
||||
kfreespacedirpath,
|
||||
kfreespacechecktime, kfreespacefreespace
|
||||
kfreespacechecktime, kfreespacefreespace,
|
||||
soliddevice.description()
|
||||
);
|
||||
if (!kfreespacestatus) {
|
||||
delete kfreespaceimpl;
|
||||
|
@ -104,8 +117,37 @@ void KFreeSpaceModule::slotInit()
|
|||
if (watcherror) {
|
||||
KNotification *knotification = new KNotification("WatchError");
|
||||
knotification->setComponentData(KComponentData("kfreespace"));
|
||||
knotification->setTitle(i18n("Disk space watch"));
|
||||
knotification->setTitle(i18n("Free Space Notifier"));
|
||||
knotification->setText(i18n("Unable to watch one or more devices"));
|
||||
knotification->sendEvent();
|
||||
}
|
||||
}
|
||||
|
||||
void KFreeSpaceModule::slotDeviceAdded(const QString &udi)
|
||||
{
|
||||
Solid::Device soliddevice(udi);
|
||||
const Solid::StorageAccess* solidaccess = soliddevice.as<Solid::StorageAccess>();
|
||||
if (solidaccess) {
|
||||
kDebug() << "Storage access added" << udi;
|
||||
connect(
|
||||
solidaccess, SIGNAL(accessibilityChanged(bool,QString)),
|
||||
this, SLOT(slotAccessibilityChanged(bool,QString))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void KFreeSpaceModule::slotDeviceRemoved(const QString &udi)
|
||||
{
|
||||
Solid::Device soliddevice(udi);
|
||||
const Solid::StorageAccess* solidaccess = soliddevice.as<Solid::StorageAccess>();
|
||||
if (solidaccess) {
|
||||
kDebug() << "Storage access removed" << udi;
|
||||
disconnect(solidaccess, 0, this, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void KFreeSpaceModule::slotAccessibilityChanged(bool accessible, const QString &udi)
|
||||
{
|
||||
kDebug() << "Storage accessibility changed" << udi << accessible;
|
||||
slotInit();
|
||||
}
|
|
@ -38,6 +38,9 @@ public:
|
|||
|
||||
private Q_SLOTS:
|
||||
void slotInit();
|
||||
void slotDeviceAdded(const QString &udi);
|
||||
void slotDeviceRemoved(const QString &udi);
|
||||
void slotAccessibilityChanged(bool accessible, const QString &udi);
|
||||
|
||||
private:
|
||||
KDirWatch* m_dirwatch;
|
||||
|
|
|
@ -43,7 +43,8 @@ KFreeSpaceImpl::~KFreeSpaceImpl()
|
|||
}
|
||||
|
||||
bool KFreeSpaceImpl::watch(const QString &dirpath,
|
||||
const qulonglong checktime, const qulonglong freespace)
|
||||
const qulonglong checktime, const qulonglong freespace,
|
||||
const QString &description)
|
||||
{
|
||||
// qDebug() << Q_FUNC_INFO << dirpath << checktime << freespace;
|
||||
m_directory = dirpath;
|
||||
|
@ -51,6 +52,7 @@ bool KFreeSpaceImpl::watch(const QString &dirpath,
|
|||
m_checktime = (qBound(s_kfreespacechecktimemin, checktime, s_kfreespacechecktimemax) * 1000);
|
||||
// NOTE: size from config is in MB, has to be in bytes here
|
||||
m_freespace = (qBound(s_kfreespacefreespacemin, freespace, s_kfreespacefreespacemax) * 1024 * 1024);
|
||||
m_description = description;
|
||||
if (!QDir(m_directory).exists()) {
|
||||
kWarning() << "Directory does not exist" << m_directory;
|
||||
return false;
|
||||
|
@ -76,13 +78,14 @@ void KFreeSpaceImpl::timerEvent(QTimerEvent *event)
|
|||
}
|
||||
|
||||
const qulonglong freespace = kdiskinfo.available();
|
||||
const QString freespacestring = KGlobal::locale()->formatByteSize(freespace);
|
||||
kDebug() << "Current" << m_directory
|
||||
<< "space is" << KGlobal::locale()->formatByteSize(freespace);
|
||||
<< "space is" << freespacestring;
|
||||
if (freespace <= m_freespace) {
|
||||
KNotification *knotification = new KNotification("WatchLow");
|
||||
knotification->setComponentData(KComponentData("kfreespace"));
|
||||
knotification->setTitle(i18n("Disk space watch"));
|
||||
knotification->setText(i18n("Low Disk Space"));
|
||||
knotification->setTitle(i18n("Low Disk Space"));
|
||||
knotification->setText(i18n("%1 has %2 free space", m_description, freespacestring));
|
||||
knotification->sendEvent();
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -30,7 +30,8 @@ public:
|
|||
~KFreeSpaceImpl();
|
||||
|
||||
bool watch(const QString &dirpath,
|
||||
const qulonglong checktime, const qulonglong freespace);
|
||||
const qulonglong checktime, const qulonglong freespace,
|
||||
const QString &description);
|
||||
|
||||
protected:
|
||||
// reimplementation
|
||||
|
@ -40,6 +41,7 @@ private:
|
|||
QString m_directory;
|
||||
qulonglong m_checktime;
|
||||
qulonglong m_freespace;
|
||||
QString m_description;
|
||||
int m_timerid;
|
||||
};
|
||||
|
||||
|
|
|
@ -20,9 +20,9 @@
|
|||
#define KFREESPACE_H
|
||||
|
||||
static const bool s_kfreespacewatch = true;
|
||||
static const qulonglong s_kfreespacechecktime = 60;
|
||||
static const qulonglong s_kfreespacechecktime = 60; // 1 minute
|
||||
static const qulonglong s_kfreespacechecktimemin = 1;
|
||||
static const qulonglong s_kfreespacechecktimemax = 60; // 1 minute
|
||||
static const qulonglong s_kfreespacechecktimemax = 60;
|
||||
static const qulonglong s_kfreespacefreespace = 1024; // 1 GB
|
||||
static const qulonglong s_kfreespacefreespacemin = 10;
|
||||
static const qulonglong s_kfreespacefreespacemax = 1024;
|
||||
|
|
Loading…
Add table
Reference in a new issue