From 8bc8384cffac607c252a546269d95ee75175a4c8 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Wed, 21 Jun 2023 23:20:55 +0300 Subject: [PATCH] kfreespace: show message that no storage devices are found when that is the case much like the joystick KCM Signed-off-by: Ivailo Monev --- kfreespace/kcm/kfreespaceconfig.cpp | 21 ++++++++++++++++++++- kfreespace/kcm/kfreespaceconfig.h | 2 ++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/kfreespace/kcm/kfreespaceconfig.cpp b/kfreespace/kcm/kfreespaceconfig.cpp index ac2b2d79..e0a1e219 100644 --- a/kfreespace/kcm/kfreespaceconfig.cpp +++ b/kfreespace/kcm/kfreespaceconfig.cpp @@ -164,7 +164,8 @@ K_EXPORT_PLUGIN(KCMFreeSpaceFactory("kcmfreespaceconfig", "kcm_freespaceconfig") KCMFreeSpace::KCMFreeSpace(QWidget *parent, const QVariantList &args) : KCModule(KCMFreeSpaceFactory::componentData(), parent), m_layout(nullptr), - m_spacer(nullptr) + m_spacer(nullptr), + m_message(nullptr) { Q_UNUSED(args); @@ -201,7 +202,12 @@ void KCMFreeSpace::load() } } Q_ASSERT(m_spacer == nullptr); + if (m_message) { + delete m_message; + m_message = nullptr; + } + bool hasdevices = false; KConfig kfreespaceconfig("kfreespacerc", KConfig::SimpleConfig); const QList storagedevices = Solid::Device::listFromType(Solid::DeviceInterface::StorageAccess); foreach (const Solid::Device &soliddevice, storagedevices) { @@ -214,6 +220,7 @@ void KCMFreeSpace::load() } // qDebug() << Q_FUNC_INFO << soliddevice.udi(); + hasdevices = true; KConfigGroup kfreespacegroup = kfreespaceconfig.group(soliddevice.udi()); const bool kfreespacewatch = kfreespacegroup.readEntry("watch", s_kfreespacewatch); const qulonglong kfreespacechecktime = kfreespacegroup.readEntry("checktime", s_kfreespacechecktime); @@ -228,8 +235,20 @@ void KCMFreeSpace::load() connect(devicebox, SIGNAL(changed()), this, SLOT(slotDeviceChanged())); m_layout->addWidget(devicebox); } + + if (!hasdevices) { + m_message = new KMessageWidget(this); + m_message->setMessageType(KMessageWidget::Error); + m_message->setCloseButtonVisible(false); + m_message->setText( + i18n("No storage device found on this computer.") + ); + m_layout->addWidget(m_message); + } + m_spacer = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Expanding); m_layout->addSpacerItem(m_spacer); + emit changed(false); } diff --git a/kfreespace/kcm/kfreespaceconfig.h b/kfreespace/kcm/kfreespaceconfig.h index f4ad3814..1621ff52 100644 --- a/kfreespace/kcm/kfreespaceconfig.h +++ b/kfreespace/kcm/kfreespaceconfig.h @@ -24,6 +24,7 @@ #include #include #include +#include class KFreeSpaceBox; @@ -50,6 +51,7 @@ public Q_SLOTS: private: QVBoxLayout* m_layout; QSpacerItem* m_spacer; + KMessageWidget* m_message; QList m_deviceboxes; };