[Patch] KDirModel fix for non-standard hierarchies

Allen Winter winter at kde.org
Sat Dec 20 13:13:03 GMT 2008

Some form of this patch was committed, right?

On Tuesday 02 December 2008 5:46:44 am David Faure wrote:
> After I tried convincing everyone that kioslaves should only produce
> predictable hierarchies (listing foo://bar/ should produce items with urls
> like foo://bar/blah and nothing else), I am finally convinced that this
> cannot always be done
> (for instance: smb:/ -> smb://workgroup -> smb://host -> smb://host/path)
> and I finally found a way to support that from KDirModel.
> In the very first iteration of KDirModel I had used a QHash<KUrl, ...> and
> it was really slow so I redesigned it not to use that, but yesterday I
> found that QHash<KUrl,...> didn't have to be slow ;) I rewrote qHash(KUrl)
> and now it's 60 times faster than before... So, back to square one,
> rewriting KDirModel::nodeForUrl to use a QHash<KUrl,Node> rather than
> navigating inside the hierarchy.
> The patch also includes a new KDirLister signal so that it emits the parent
> url together with the items, so that KDirModel doesn't have to guess what
> the parent url is anymore (and in case of non-standard hierarchies, it
> cannot guess correctly).
> All this started as a fix for bug 176555, but I know it will also help
> other kioslaves (hi nf2 and trueg ;). It also makes UDS_URL useful again
> (the fix for 176555 also includes s/UDS_TARGET_URL/UDS_URL/ in kio_smb)
> The reason I'm posting this here is... should I commit despite the freeze?
> On one hand it's a bugfix, on the other hand it's a redesign of the
> internals.... the unit tests make me quite confident about it, but of
> course they're never 100% complete.
> One thing to note is that non-standard hierarchies break the "Up" button in
> konq, though, when using an iconview rather than a treeview. From
> smb://host you cannot go up to smb://workgroup or smb:/. If we want that,
> then we can forget about this patch and hack KUrl instead :-) (the point
> being that if KUrl knows how to go up from there, then KDirModel can just
> ask KUrl like it currently does upon receiving new items...). But I guess
> we want support for non-standard hierarchies even if Up doesn't work for
> them.

More information about the kde-core-devel mailing list