|
|
|
/* This file is part of the KDE project
|
|
|
|
Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program; see the file COPYING. If not, write to
|
|
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
|
|
Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __konq_listview_h__
|
|
|
|
#define __konq_listview_h__
|
|
|
|
|
|
|
|
#include <tdeparts/browserextension.h>
|
|
|
|
#include <tdeglobalsettings.h>
|
|
|
|
#include <konq_operations.h>
|
|
|
|
#include <tdeparts/factory.h>
|
|
|
|
#include <konq_dirpart.h>
|
|
|
|
#include <kmimetyperesolver.h>
|
|
|
|
|
|
|
|
#include <tqvaluelist.h>
|
|
|
|
#include <tqlistview.h>
|
|
|
|
#include <tqstringlist.h>
|
|
|
|
|
|
|
|
#include <konq_propsview.h>
|
|
|
|
#include "konq_listviewwidget.h"
|
|
|
|
|
|
|
|
class TDEAction;
|
|
|
|
class TDEToggleAction;
|
|
|
|
class ListViewBrowserExtension;
|
|
|
|
|
|
|
|
class KonqListViewFactory : public KParts::Factory
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
KonqListViewFactory();
|
|
|
|
virtual ~KonqListViewFactory();
|
|
|
|
|
|
|
|
virtual KParts::Part* createPartObject( TQWidget *parentWidget, const char *, TQObject *parent, const char *name, const char*, const TQStringList &args );
|
|
|
|
|
|
|
|
static TDEInstance *instance();
|
|
|
|
static KonqPropsView *defaultViewProps();
|
|
|
|
|
|
|
|
private:
|
|
|
|
static TDEInstance *s_instance;
|
|
|
|
static KonqPropsView *s_defaultViewProps;
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The part for the tree view. It does quite nothing, just the
|
|
|
|
* konqueror interface. Most of the functionality is in the
|
|
|
|
* widget, KonqListViewWidget.
|
|
|
|
*/
|
|
|
|
class KonqListView : public KonqDirPart
|
|
|
|
{
|
|
|
|
friend class KonqBaseListViewWidget;
|
|
|
|
friend class ListViewBrowserExtension;
|
|
|
|
Q_OBJECT
|
|
|
|
TQ_PROPERTY( bool supportsUndo READ supportsUndo )
|
|
|
|
public:
|
|
|
|
KonqListView( TQWidget *parentWidget, TQObject *parent, const char *name, const TQString& mode );
|
|
|
|
virtual ~KonqListView();
|
|
|
|
|
|
|
|
virtual const KFileItem * currentItem();
|
|
|
|
virtual KFileItemList selectedFileItems() {return m_pListView->selectedFileItems();};
|
|
|
|
|
|
|
|
KonqBaseListViewWidget *listViewWidget() const { return m_pListView; }
|
|
|
|
|
|
|
|
bool supportsUndo() const { return true; }
|
|
|
|
|
|
|
|
virtual void saveState( TQDataStream &stream );
|
|
|
|
virtual void restoreState( TQDataStream &stream );
|
|
|
|
|
|
|
|
// "Cut" icons : disable those whose URL is in lst, enable the others
|
|
|
|
virtual void disableIcons( const KURL::List & lst );
|
|
|
|
|
|
|
|
// See KMimeTypeResolver
|
|
|
|
void mimeTypeDeterminationFinished() {}
|
|
|
|
//int iconSize() { return m_pListView->iconSize(); }
|
|
|
|
void determineIcon( KonqBaseListViewItem * item );
|
|
|
|
|
|
|
|
TQPtrList<KonqBaseListViewItem> & lstPendingMimeIconItems() { return m_mimeTypeResolver->m_lstPendingMimeIconItems; }
|
|
|
|
void listingComplete();
|
|
|
|
|
|
|
|
virtual void newIconSize( int );
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual bool doOpenURL( const KURL &url );
|
|
|
|
virtual bool doCloseURL();
|
|
|
|
virtual bool openFile() { return true; }
|
|
|
|
|
|
|
|
void setupActions();
|
|
|
|
void guiActivateEvent( KParts::GUIActivateEvent *event );
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void slotSelect();
|
|
|
|
void slotUnselect();
|
|
|
|
void slotSelectAll();
|
|
|
|
void slotUnselectAll();
|
|
|
|
void slotInvertSelection();
|
|
|
|
void slotCaseInsensitive();
|
|
|
|
void slotSelectionChanged();
|
|
|
|
|
|
|
|
void slotShowDot();
|
|
|
|
//this is called if a item in the submenu is toggled
|
|
|
|
//it saves the new configuration according to the menu items
|
|
|
|
//and calls createColumns()
|
|
|
|
//it adjusts the indece of the remaining columns
|
|
|
|
void slotColumnToggled();
|
|
|
|
//this is called when the user changes the order of the
|
|
|
|
//columns by dragging them
|
|
|
|
//at this moment the columns haven't changed their order yet, so
|
|
|
|
//it starts a singleshottimer, after which the columns changed their order
|
|
|
|
//and then slotSaveAfterHeaderDrag is called
|
|
|
|
void headerDragged(int sec, int from, int to);
|
|
|
|
//saves the new order of the columns
|
|
|
|
void slotSaveAfterHeaderDrag();
|
|
|
|
// column width changed
|
|
|
|
void slotHeaderSizeChanged();
|
|
|
|
void slotSaveColumnWidths(); // delayed
|
|
|
|
void slotHeaderClicked(int sec);
|
|
|
|
|
|
|
|
// This comes from KonqDirPart, it's for the "Find" feature
|
|
|
|
virtual void slotStarted() { m_pListView->slotStarted(); }
|
|
|
|
virtual void slotCanceled() { m_pListView->slotCanceled(); }
|
|
|
|
virtual void slotCompleted() { m_pListView->slotCompleted(); }
|
|
|
|
virtual void slotNewItems( const KFileItemList& lst ) { m_pListView->slotNewItems( lst ); }
|
|
|
|
virtual void slotDeleteItem( KFileItem * item ) { m_pListView->slotDeleteItem( item ); }
|
|
|
|
virtual void slotRefreshItems( const KFileItemList& lst ) { m_pListView->slotRefreshItems( lst ); }
|
|
|
|
virtual void slotClear() { m_pListView->slotClear(); }
|
|
|
|
virtual void slotRedirection( const KURL & u ) { m_pListView->slotRedirection( u ); }
|
|
|
|
|
|
|
|
// Connected to KonqDirPart
|
|
|
|
void slotKFindOpened();
|
|
|
|
void slotKFindClosed();
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
KonqBaseListViewWidget *m_pListView;
|
|
|
|
KMimeTypeResolver<KonqBaseListViewItem,KonqListView> *m_mimeTypeResolver;
|
|
|
|
TQTimer *m_headerTimer;
|
|
|
|
|
|
|
|
TDEAction *m_paSelect;
|
|
|
|
TDEAction *m_paUnselect;
|
|
|
|
TDEAction *m_paSelectAll;
|
|
|
|
TDEAction *m_paUnselectAll;
|
|
|
|
TDEAction *m_paInvertSelection;
|
|
|
|
|
|
|
|
// These 2 actions are 'fake' actions. They are defined so that the keyboard shortcuts
|
|
|
|
// can be set from the 'Configure Shortcuts..." dialog.
|
|
|
|
// The real actions are performed in the TDEListViewLineEdit::keyPressEvent() in tdeui
|
|
|
|
TDEAction *m_paRenameMoveNext;
|
|
|
|
TDEAction *m_paRenameMovePrev;
|
|
|
|
|
|
|
|
TDEToggleAction *m_paCaseInsensitive;
|
|
|
|
|
|
|
|
TDEToggleAction *m_paShowDot;
|
|
|
|
TDEToggleAction *m_paShowTime;
|
|
|
|
TDEToggleAction *m_paShowType;
|
|
|
|
TDEToggleAction *m_paShowMimeType;
|
|
|
|
TDEToggleAction *m_paShowAccessTime;
|
|
|
|
TDEToggleAction *m_paShowCreateTime;
|
|
|
|
TDEToggleAction *m_paShowLinkDest;
|
|
|
|
TDEToggleAction *m_paShowSize;
|
|
|
|
TDEToggleAction *m_paShowOwner;
|
|
|
|
TDEToggleAction *m_paShowGroup;
|
|
|
|
TDEToggleAction *m_paShowPermissions;
|
|
|
|
TDEToggleAction *m_paShowURL;
|
|
|
|
};
|
|
|
|
|
|
|
|
class ListViewBrowserExtension : public KonqDirPartBrowserExtension
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
friend class KonqListView;
|
|
|
|
friend class KonqBaseListViewWidget;
|
|
|
|
public:
|
|
|
|
ListViewBrowserExtension( KonqListView *listView );
|
|
|
|
|
|
|
|
virtual int xOffset();
|
|
|
|
virtual int yOffset();
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void updateActions();
|
|
|
|
|
|
|
|
void copy() { copySelection( false ); }
|
|
|
|
void cut() { copySelection( true ); }
|
|
|
|
void paste();
|
|
|
|
void pasteTo( const KURL & );
|
|
|
|
void rename();
|
|
|
|
void trash();
|
|
|
|
void del() { KonqOperations::del(m_listView->listViewWidget(),
|
|
|
|
KonqOperations::DEL,
|
|
|
|
m_listView->listViewWidget()->selectedUrls()); }
|
|
|
|
|
|
|
|
void reparseConfiguration();
|
|
|
|
void setSaveViewPropertiesLocally( bool value );
|
|
|
|
void setNameFilter( const TQString &nameFilter );
|
|
|
|
// void refreshMimeTypes is missing
|
|
|
|
|
|
|
|
void properties();
|
|
|
|
void editMimeType();
|
|
|
|
|
|
|
|
private:
|
|
|
|
void copySelection( bool move );
|
|
|
|
|
|
|
|
KonqListView *m_listView;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|