]>
cloud.milkyroute.net Git - dolphin.git/blob - src/statusbar/spaceinfoobserver.cpp
2 * SPDX-FileCopyrightText: 2014 Frank Reininghaus <frank78ac@googlemail.com>
4 * SPDX-License-Identifier: GPL-2.0-or-later
7 #include "spaceinfoobserver.h"
9 #include "mountpointobserver.h"
11 SpaceInfoObserver::SpaceInfoObserver(const QUrl
&url
, QObject
*parent
)
13 , m_mountPointObserver(nullptr)
23 SpaceInfoObserver::~SpaceInfoObserver()
25 if (m_mountPointObserver
) {
26 m_mountPointObserver
->deref();
27 m_mountPointObserver
= nullptr;
31 quint64
SpaceInfoObserver::size() const
36 quint64
SpaceInfoObserver::available() const
38 return m_dataAvailable
;
41 void SpaceInfoObserver::setUrl(const QUrl
&url
)
43 MountPointObserver
*newObserver
= MountPointObserver::observerForUrl(url
);
44 if (newObserver
!= m_mountPointObserver
) {
45 if (m_mountPointObserver
) {
46 disconnect(m_mountPointObserver
, &MountPointObserver::spaceInfoChanged
, this, &SpaceInfoObserver::spaceInfoChanged
);
47 m_mountPointObserver
->deref();
48 m_mountPointObserver
= nullptr;
51 m_mountPointObserver
= newObserver
;
52 m_mountPointObserver
->ref();
53 connect(m_mountPointObserver
, &MountPointObserver::spaceInfoChanged
, this, &SpaceInfoObserver::spaceInfoChanged
);
55 // If newObserver is cached it won't call update until the next timer update,
56 // so update the observer now.
57 m_mountPointObserver
->update();
61 void SpaceInfoObserver::update()
63 if (m_mountPointObserver
) {
64 m_mountPointObserver
->update();
68 void SpaceInfoObserver::spaceInfoChanged(quint64 size
, quint64 available
)
70 // Make sure that the size has actually changed
71 if (m_dataSize
!= size
|| m_dataAvailable
!= available
|| !m_hasData
) {
74 m_dataAvailable
= available
;
76 Q_EMIT
valuesChanged();
80 #include "moc_spaceinfoobserver.cpp"