]>
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)
18 m_mountPointObserver
= MountPointObserver::observerForUrl(url
);
19 m_mountPointObserver
->ref();
20 connect(m_mountPointObserver
, &MountPointObserver::spaceInfoChanged
, this, &SpaceInfoObserver::spaceInfoChanged
);
21 m_mountPointObserver
->update();
24 SpaceInfoObserver::~SpaceInfoObserver()
26 if (m_mountPointObserver
) {
27 m_mountPointObserver
->deref();
28 m_mountPointObserver
= nullptr;
32 quint64
SpaceInfoObserver::size() const
37 quint64
SpaceInfoObserver::available() const
39 return m_dataAvailable
;
42 void SpaceInfoObserver::setUrl(const QUrl
&url
)
44 MountPointObserver
*newObserver
= MountPointObserver::observerForUrl(url
);
45 if (newObserver
!= m_mountPointObserver
) {
46 if (m_mountPointObserver
) {
47 disconnect(m_mountPointObserver
, &MountPointObserver::spaceInfoChanged
, this, &SpaceInfoObserver::spaceInfoChanged
);
48 m_mountPointObserver
->deref();
49 m_mountPointObserver
= nullptr;
52 m_mountPointObserver
= newObserver
;
53 m_mountPointObserver
->ref();
54 connect(m_mountPointObserver
, &MountPointObserver::spaceInfoChanged
, this, &SpaceInfoObserver::spaceInfoChanged
);
56 // If newObserver is cached it won't call update until the next timer update,
57 // so update the observer now.
58 m_mountPointObserver
->update();
62 void SpaceInfoObserver::update()
64 if (m_mountPointObserver
) {
65 m_mountPointObserver
->update();
69 void SpaceInfoObserver::spaceInfoChanged(quint64 size
, quint64 available
)
71 // Make sure that the size has actually changed
72 if (m_dataSize
!= size
|| m_dataAvailable
!= available
|| !m_hasData
) {
75 m_dataAvailable
= available
;
77 Q_EMIT
valuesChanged();
81 #include "moc_spaceinfoobserver.cpp"