File indexing completed on 2024-04-28 05:45:18
0001 /* 0002 * SPDX-FileCopyrightText: 2014 Frank Reininghaus <frank78ac@googlemail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "mountpointobserver.h" 0008 0009 #include "mountpointobservercache.h" 0010 0011 #include <KIO/FileSystemFreeSpaceJob> 0012 0013 MountPointObserver::MountPointObserver(const QUrl &url, QObject *parent) 0014 : QObject(parent) 0015 , m_url(url) 0016 , m_referenceCount(0) 0017 { 0018 } 0019 0020 MountPointObserver *MountPointObserver::observerForUrl(const QUrl &url) 0021 { 0022 MountPointObserver *observer = MountPointObserverCache::instance()->observerForUrl(url); 0023 return observer; 0024 } 0025 0026 void MountPointObserver::update() 0027 { 0028 if (m_referenceCount == 0) { 0029 delete this; 0030 } else { 0031 KIO::FileSystemFreeSpaceJob *job = KIO::fileSystemFreeSpace(m_url); 0032 connect(job, &KJob::result, this, &MountPointObserver::freeSpaceResult); 0033 } 0034 } 0035 0036 void MountPointObserver::freeSpaceResult(KJob *job) 0037 { 0038 if (!job->error()) { 0039 KIO::FileSystemFreeSpaceJob *freeSpaceJob = qobject_cast<KIO::FileSystemFreeSpaceJob *>(job); 0040 Q_ASSERT(freeSpaceJob); 0041 Q_EMIT spaceInfoChanged(freeSpaceJob->size(), freeSpaceJob->availableSize()); 0042 } else { 0043 Q_EMIT spaceInfoChanged(0, 0); 0044 } 0045 } 0046 0047 #include "moc_mountpointobserver.cpp"