[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/runtime/kioslave/trash
From: Kevin Ottens <ervin () kde ! org>
Date: 2006-10-31 22:48:21
Message-ID: 1162334901.052746.26082.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 600817 by ervin:
Change the way we compute trash ids. It's now independent from the order we discover \
the trashes. This way it won't be necessary to wake up all disks for trash \
operations.
M +26 -9 trashimpl.cpp
M +0 -1 trashimpl.h
--- trunk/KDE/kdebase/runtime/kioslave/trash/trashimpl.cpp #600816:600817
@@ -31,9 +31,6 @@
#include <kglobalsettings.h>
#include <kfileitem.h>
#include <kio/chmodjob.h>
-#include <solid/devicemanager.h>
-#include <solid/device.h>
-#include <solid/volume.h>
#include <QApplication>
#include <QEventLoop>
@@ -50,11 +47,17 @@
#include <stdlib.h>
#include <errno.h>
+#undef minor
+#undef major
+
+#include <solid/devicemanager.h>
+#include <solid/device.h>
+#include <solid/volume.h>
+
TrashImpl::TrashImpl() :
QObject(),
m_lastErrorCode( 0 ),
m_initStatus( InitToBeDone ),
- m_lastId( 0 ),
m_homeDevice( 0 ),
m_trashDirectoriesScanned( false ),
// not using kio_trashrc since KIO uses that one already for kio_trash
@@ -726,14 +729,27 @@
m_topDirectories.insert( m_lastId, mountPoint );
return m_lastId;
#endif
- scanTrashDirectories();
+
+ Solid::DeviceList lst = \
Solid::DeviceManager::self().findDevicesFromQuery(QString(), \
Solid::Capability::Volume, + \
"Volume.mounted == true AND Volume.mountPoint == '"+mountPoint+"'"); + // Pretend \
we got exactly one... + Solid::Device device = lst[0];
+
+ // new trash dir found, register it
+ id = device.as<Solid::Volume>()->major()*1000+device.as<Solid::Volume>()->minor();
+ m_trashDirectories.insert( id, trashDir );
+ kDebug() << k_funcinfo << "found " << trashDir << " gave it id " << id << endl;
+ if ( !mountPoint.endsWith( "/" ) )
+ mountPoint += '/';
+ m_topDirectories.insert( id, mountPoint );
+
return idForTrashDirectory( trashDir );
}
void TrashImpl::scanTrashDirectories() const
{
Solid::DeviceList lst = \
Solid::DeviceManager::self().findDevicesFromQuery(QString(), \
Solid::Capability::Volume,
- \
"Volume.mounted = true"); + \
"Volume.mounted == true");
for ( Solid::DeviceList::Iterator it = lst.begin() ; it != lst.end() ; ++it ) {
QString topdir = (*it).as<Solid::Volume>()->mountPoint();
QString trashDir = trashForMountPoint( topdir, false );
@@ -742,11 +758,12 @@
int trashId = idForTrashDirectory( trashDir );
if ( trashId == -1 ) {
// new trash dir found, register it
- m_trashDirectories.insert( ++m_lastId, trashDir );
- kDebug() << k_funcinfo << "found " << trashDir << " gave it id " << \
m_lastId << endl; + trashId = \
(*it).as<Solid::Volume>()->major()*1000+(*it).as<Solid::Volume>()->minor(); + \
m_trashDirectories.insert( trashId, trashDir ); + kDebug() << \
k_funcinfo << "found " << trashDir << " gave it id " << trashId << endl; if ( \
!topdir.endsWith( "/" ) ) topdir += '/';
- m_topDirectories.insert( m_lastId, topdir );
+ m_topDirectories.insert( trashId, topdir );
}
}
}
--- trunk/KDE/kdebase/runtime/kioslave/trash/trashimpl.h #600816:600817
@@ -166,7 +166,6 @@
// The home trash has id 0.
mutable TrashDirMap m_trashDirectories; // id -> path of trash directory
mutable TrashDirMap m_topDirectories; // id -> $topdir of partition
- mutable int m_lastId;
dev_t m_homeDevice;
mutable bool m_trashDirectoriesScanned;
int m_mibEnum;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic