Rewrite
=======

Here is the result of a long discussion between the kfile developers
(Carsten) and the konqueror developers (Simon and David), about the plans
for more integration between kfile and konqueror. 16/08/2000.



  KDirLister     -----(1)---------------------> KFileView (3)
                 <----(2)------ [Signaller] ---  |       |
                                                 |        |
                                                 |         |
                                                 |          |
                                                 |           |
                                           KFileIconView   KFileListView
                                                (4)             (5)


(1) Gives items found when listing, and the key for each item
    (KDirLister has all the sorting code)
(2) KFileView inherited classes emit requests for listing a new
    directory (with a bool for treeviews), and emit requests for
    the mimetype of a given item. If all KFileView inherited classes
    are QScrollViews, then it could even implement the "ask for mimetype
    of the visible icons first" algorithm, currently in KonqIconView.
(3) KFileView, the base class for any view, knows about KFileItem, has
    signals for dropped(), popupMenu(list of actions provided by the view),
    has a QWidget * canvas() method, xOffset() and yOffset()
(4) KFileIconView holds a QPtrDict to look up a QIconViewItem quickly from a
    given KFileItem. This will help for e.g. deleteItems and refreshItems.
(5) KFileListView holds a QPtrDict to find the QListViewItem for a
    KFileItem.  It implements different modes if we want the tree view in
    kfile ?


    KFileChooserWidget

This (base) class is the container widget that can contain any kfileview and
switch between them. It is embeddable into an application that wants a widget
for choosing a file or directory. Features listing, selecting, popupmenu for
switching modes, and a virtual createView( viewmode ) method, which
only knows about the builtin views, in this class.
It knows the current URL, has setURL(), and triggers the listing, connecting
KFileView's requests to KDirLister's methods.

   KFileManagerWidget

This class inherits from KFileChooserWidget and adds the file management
operations. It uses a KFileOperations class (taken from the current
KonqOperations) for all KIO operations, and it uses KFileUndo, taken from
the KonqUndo stuff. The popupMenu method is reimplemented to add those
operations to it.

   KFileWidget

This class is the full widget that can be seen in the dialog. It has the
toolbar buttons, the combo, etc. It embeds a KFileChooserWidget or a
KFileManagerWidget, the latter being a specialisation of the former.

The Konqueror side of things
============================

  KonqFileIconView

Inherits KFileIconView and adds image preview - unless we want it in
KFileIconView, and the line-up-icons algorithm, etc.

  KonqFileListView

Inherits KFileListView to add more stuff if needed. The mc-like text view
could be implemented here as well, unless we want it in kfile. Same for the
tree view.

  KonqFileManagerWidget

This class inherits KFileManagerWidget and adds the konqueror stuff, like
the enableAction signal. It also reimplements createView to create the
konqueror versions of the views.

  KonqDirPart

This class inherits KParts::ReadOnlyPart, and provides a BrowserExtension.
It integrates KonqFileManagerWidget as its KParts widget, and provides
KActions for it.

Important :

Make sure to take kfind into account. It would be nice if it could use the
same views as konqueror, to have access to all the view modes, as well as
image preview, etc.

Unrelated:
To Add
======

Mime Mappings?

Filter= ( Mime Type | shell glob list )
Mime Type -> shell glob list
