You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
213 lines
7.2 KiB
213 lines
7.2 KiB
/***************************************************************************
|
|
listpanel.h
|
|
-------------------
|
|
begin : Thu May 4 2000
|
|
copyright : (C) 2000 by Shie Erlich & Rafi Yanai
|
|
e-mail : krusader@users.sourceforge.net
|
|
web site : http://krusader.sourceforge.net
|
|
---------------------------------------------------------------------------
|
|
Description
|
|
***************************************************************************
|
|
|
|
A
|
|
|
|
db dD d8888b. db db .d8888. .d8b. d8888b. d88888b d8888b.
|
|
88 ,8P' 88 `8D 88 88 88' YP d8' `8b 88 `8D 88' 88 `8D
|
|
88,8P 88oobY' 88 88 `8bo. 88ooo88 88 88 88ooooo 88oobY'
|
|
88`8b 88`8b 88 88 `Y8b. 88~~~88 88 88 88~~~~~ 88`8b
|
|
88 `88. 88 `88. 88b d88 db 8D 88 88 88 .8D 88. 88 `88.
|
|
YP YD 88 YD ~Y8888P' `8888Y' YP YP Y8888D' Y88888P 88 YD
|
|
|
|
H e a d e r F i l e
|
|
|
|
***************************************************************************
|
|
* *
|
|
* 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. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
|
|
#ifndef LISTPANEL_H
|
|
#define LISTPANEL_H
|
|
|
|
#include <kpropsdlg.h>
|
|
#include <tdefileitem.h>
|
|
#include <kurl.h>
|
|
#include <tqwidget.h>
|
|
#include <tqlabel.h>
|
|
#include <tqlayout.h>
|
|
#include <tqstring.h>
|
|
#include <tqpixmap.h>
|
|
#include <tqtoolbutton.h>
|
|
#include <tqpopupmenu.h>
|
|
#include <tqdir.h>
|
|
#include <tqpixmapcache.h>
|
|
#include <tqiconset.h>
|
|
#include <tqptrstack.h>
|
|
#include <tqtextbrowser.h>
|
|
#include <keditcl.h>
|
|
#include <klineedit.h>
|
|
#include <tqguardedptr.h>
|
|
#include "krview.h"
|
|
#include "../Dialogs/krsqueezedtextlabel.h"
|
|
|
|
// use our version of it, until kde fixes theirs
|
|
#include "../MountMan/kdiskfreesp.h"
|
|
|
|
#define PROP_SYNC_BUTTON_ON 1
|
|
|
|
class vfs;
|
|
class vfile;
|
|
class KRdirWatch;
|
|
class KrView;
|
|
class KURLRequester;
|
|
class BookmarksButton;
|
|
class KrQuickSearch;
|
|
class DirHistoryButton;
|
|
class DirHistoryQueue;
|
|
class MediaButton;
|
|
class PanelPopup;
|
|
class SyncBrowseButton;
|
|
class KrBookmarkButton;
|
|
class KPushButton;
|
|
class ListPanelFunc;
|
|
class TQHeader;
|
|
|
|
class ListPanel : public TQWidget {
|
|
friend class ListPanelFunc;
|
|
Q_OBJECT
|
|
|
|
public:
|
|
#define ITEM2VFILE(PANEL_PTR, KRVIEWITEM) PANEL_PTR->func->files()->vfs_search(KRVIEWITEM->name())
|
|
#define NAME2VFILE(PANEL_PTR, STRING_NAME) PANEL_PTR->func->files()->vfs_search(STRING_NAME)
|
|
// constructor create the panel, but DOESN'T fill it with data, use start()
|
|
ListPanel( TQString panelType, TQWidget *parent, bool &left, const char *name = 0 );
|
|
~ListPanel();
|
|
void start( KURL url = KURL(), bool immediate = false );
|
|
|
|
const TQString & getType() { return panelType; }
|
|
void changeType( const TQString & );
|
|
|
|
KURL virtualPath() const;
|
|
TQString realPath() const;
|
|
TQString getCurrentName();
|
|
void getSelectedNames( TQStringList* fileNames ) {
|
|
view->getSelectedItems( fileNames );
|
|
}
|
|
void setPanelToolbar();
|
|
bool isLeft() {return _left;}
|
|
void jumpBack();
|
|
void setJumpBack( KURL url );
|
|
|
|
int getProperties();
|
|
void setProperties( int );
|
|
|
|
public slots:
|
|
void gotStats( const TQString &mountPoint, unsigned long kBSize, unsigned long kBUsed, unsigned long kBAvail); // displays filesystem status
|
|
void popRightClickMenu( const TQPoint& );
|
|
void popEmptyRightClickMenu( const TQPoint & );
|
|
void select( KRQuery query, bool select);
|
|
void select( bool, bool ); // see doc in ListPanel
|
|
void invertSelection(); // see doc in ListPanel
|
|
void compareDirs();
|
|
void slotFocusOnMe(); // give this VFS the focus (the path bar)
|
|
void slotUpdate(); // when the vfs finish to update...
|
|
void slotUpdateTotals();
|
|
void slotStartUpdate(); // internal
|
|
void slotGetStats( const KURL& url ); // get the disk-free stats
|
|
void setFilter( KrViewProperties::FilterSpec f );
|
|
void slotFocusAndCDRoot();
|
|
void slotFocusAndCDHome();
|
|
void slotFocusAndCDup();
|
|
void slotFocusAndCDOther();
|
|
void togglePanelPopup();
|
|
// for signals from vfs' dirwatch
|
|
void slotItemAdded(vfile *vf);
|
|
void slotItemDeleted(const TQString& name);
|
|
void slotItemUpdated(vfile *vf);
|
|
void slotCleared();
|
|
void panelActive(); // called when the panel becomes active
|
|
void panelInactive(); // called when panel becomes inactive
|
|
|
|
|
|
///////////////////////// service functions - called internally ////////////////////////
|
|
inline void setOther( ListPanel *panel ) {
|
|
otherPanel = panel;
|
|
}
|
|
void prepareToDelete(); // internal use only
|
|
|
|
protected:
|
|
virtual void keyPressEvent( TQKeyEvent *e );
|
|
virtual void showEvent( TQShowEvent * );
|
|
virtual void hideEvent( TQHideEvent * );
|
|
virtual bool eventFilter ( TQObject * watched, TQEvent * e );
|
|
|
|
void createView();
|
|
|
|
protected slots:
|
|
void handleDropOnView(TQDropEvent *, TQWidget *destWidget=0); // handles drops on the view only
|
|
void handleDropOnTotals( TQDropEvent * ); // handles drops on the totals line
|
|
void handleDropOnStatus( TQDropEvent * ); // handles drops on the status line
|
|
void startDragging( TQStringList, TQPixmap );
|
|
// those handle the in-panel refresh notifications
|
|
void slotJobStarted(TDEIO::Job* job);
|
|
void inlineRefreshInfoMessage( TDEIO::Job* job, const TQString &msg );
|
|
void inlineRefreshListResult(TDEIO::Job* job);
|
|
void inlineRefreshPercent( TDEIO::Job*, unsigned long );
|
|
void inlineRefreshCancel();
|
|
|
|
signals:
|
|
void signalStatus( TQString msg ); // emmited when we need to update the status bar
|
|
void cmdLineUpdate( TQString p ); // emitted when we need to update the command line
|
|
void pathChanged( ListPanel *panel );
|
|
void activePanelChanged( ListPanel *p ); // emitted when the user changes panels
|
|
void finishedDragging(); // currently
|
|
|
|
public:
|
|
TQString panelType;
|
|
ListPanelFunc *func;
|
|
KrView *view;
|
|
ListPanel *otherPanel;
|
|
int colorMask;
|
|
bool compareMode;
|
|
//FilterSpec filter;
|
|
KRQuery filterMask;
|
|
TQPixmap currDragPix;
|
|
TQListViewItem *currDragItem;
|
|
KDiskFreeSp* statsAgent;
|
|
KrSqueezedTextLabel *status, *totals;
|
|
KrQuickSearch *quickSearch;
|
|
KURLRequester *origin;
|
|
TQGridLayout *layout;
|
|
TQToolButton *cdRootButton;
|
|
TQToolButton *cdHomeButton;
|
|
TQToolButton *cdUpButton;
|
|
TQToolButton *cdOtherButton;
|
|
TQToolButton *popupBtn;
|
|
TQToolButton *clearOrigin;
|
|
PanelPopup *popup;
|
|
KrBookmarkButton *bookmarksButton;
|
|
DirHistoryQueue* dirHistoryQueue;
|
|
DirHistoryButton* historyButton;
|
|
MediaButton *mediaButton;
|
|
SyncBrowseButton *syncBrowseButton;
|
|
KPushButton *inlineRefreshCancelButton;
|
|
TDEIO::Job *inlineRefreshJob;
|
|
TQSplitter *splt;
|
|
TQHeader * header;
|
|
|
|
protected:
|
|
KURL _realPath; // named with _ to keep realPath() compatability
|
|
KURL _jumpBackURL;
|
|
|
|
|
|
private:
|
|
bool &_left;
|
|
TQValueList<int> popupSizes;
|
|
};
|
|
|
|
#endif
|