diff options
Diffstat (limited to 'src/app/paneltabbar.h')
-rw-r--r-- | src/app/paneltabbar.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/app/paneltabbar.h b/src/app/paneltabbar.h new file mode 100644 index 0000000..56b2e58 --- /dev/null +++ b/src/app/paneltabbar.h @@ -0,0 +1,100 @@ +/* + * The concept for this code was taken from the k3b project. k3b is an + * excellent CD burning program for KDE, http://k3b.sourceforge.net + * Anyway, original code is copyrighted by Sebastian Trueg. Thanks! + */ + + +/*************************************************************************** + * * + * 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 PANELTABBAR_H +#define PANELTABBAR_H + +#include <kurl.h> +#include <tqtabbar.h> +#include <tqvaluelist.h> + +class TQMouseEvent; +class TDEAction; +class TDEActionMenu; +class ListPanel; + +/** + * Extends TQTab to include a pointer to the panel contained in this tab + */ +class PanelTab: public TQTab { +public: + PanelTab(const TQString & text); + PanelTab(const TQString & text, ListPanel *p); + + ListPanel *panel; +}; + +/** + * This class extends TQTabBar such that right-clicking on a tab pops-up a menu + * containing relevant actions for the tab. It also emits signals (caught by PanelManager) + * to create a new tab, close the current tab and change a panel when a tab was clicked + */ +class PanelTabBar : public TQTabBar { + TQ_OBJECT + +public: + PanelTabBar( TQWidget *parent ); + +public slots: + /** + * called by PanelManager with an already created panel, and creates the corrosponding tab + */ + int addPanel(ListPanel *panel, bool setCurrent = true ); + /** + * when the user changes the current path in a panel, this method updates the tab accordingly + */ + void updateTab(ListPanel *panel); + /** + * actually removes the current tab WITHOUT actually deleting the panel. + * returns a pointer to the panel which is going to be displayed next. + * panelToDelete returns a reference to the pointer of the soon-to-die panel, to + * be used by PanelManager. + */ + ListPanel* removeCurrentPanel(ListPanel* &panelToDelete); // returns the panel focused after removing the current + +signals: + /** + * This signal is emitted when the user clicked on a tab. PanelManager should change panels accordingly + */ + void changePanel(ListPanel *p); + /** + * emitted when the user right-clicks and selected "close" + */ + void closeCurrentTab(); + /** + * emitted when the user right-clicks and selects an action that creates a new tab + */ + void newTab(const KURL& path); + +protected: + void mousePressEvent( TQMouseEvent* ); + void insertAction( TDEAction* ); + TQString squeeze(TQString text, int index=-1); + virtual void dragEnterEvent(TQDragEnterEvent *); + virtual void dragMoveEvent(TQDragMoveEvent *); + virtual void resizeEvent ( TQResizeEvent *e ); + +protected slots: + void closeTab(); + void duplicateTab(); + +private: + TDEActionMenu *_panelActionMenu; + bool _left; + int _maxTabLength; +}; + +#endif |