/*************************************************************************** sidebar_widget.h ------------------- begin : Sat June 2 16:25:27 CEST 2001 copyright : (C) 2001 Joseph Wenninger email : jowenn@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. * * * ***************************************************************************/ #ifndef _SIDEBAR_WIDGET_ #define _SIDEBAR_WIDGET_ #include #include #include #include #include #include #include #include #include #include "konqsidebarplugin.h" #include "konqsidebariface_p.h" class KDockWidget; class TQHBoxLayout; class TQSplitter; class TQStringList; class ButtonInfo: public TQObject, public KonqSidebarIface { Q_OBJECT public: ButtonInfo(const TQString& file_, class KonqSidebarIface *part, class KDockWidget *dock_, const TQString &url_,const TQString &lib, const TQString &dispName_, const TQString &iconName_, TQObject *parent) : TQObject(parent), file(file_), dock(dock_), URL(url_), libName(lib), displayName(dispName_), iconName(iconName_), m_part(part) { copy = cut = paste = trash = del = rename =false; } ~ButtonInfo() {} TQString file; KDockWidget *dock; KonqSidebarPlugin *module; TQString URL; TQString libName; TQString displayName; TQString iconName; bool copy; bool cut; bool paste; bool trash; bool del; bool rename; KonqSidebarIface *m_part; virtual bool universalMode() {return m_part->universalMode();} }; class addBackEnd: public TQObject { Q_OBJECT public: addBackEnd(TQWidget *parent,class TQPopupMenu *addmenu, bool universal, const TQString ¤tProfile, const char *name=0); ~addBackEnd(){;} protected slots: void aboutToShowAddMenu(); void activatedAddMenu(int); signals: void updateNeeded(); void initialCopyNeeded(); private: TQGuardedPtr menu; TQPtrVector libNames; TQPtrVector libParam; bool m_universal; TQString m_currentProfile; void doRollBack(); TQWidget *m_parent; }; class KDE_EXPORT Sidebar_Widget: public TQWidget { Q_OBJECT public: friend class ButtonInfo; public: Sidebar_Widget(TQWidget *parent, KParts::ReadOnlyPart *par, const char * name,bool universalMode, const TQString ¤tProfile); ~Sidebar_Widget(); bool openURL(const class KURL &url); void stdAction(const char *handlestd); //virtual KParts::ReadOnlyPart *getPart(); KParts::BrowserExtension *getExtension(); virtual TQSize sizeHint() const; public slots: void addWebSideBar(const KURL& url, const TQString& name); protected: void customEvent(TQCustomEvent* ev); void resizeEvent(TQResizeEvent* ev); virtual bool eventFilter(TQObject*,TQEvent*); virtual void mousePressEvent(TQMouseEvent*); protected slots: void showHidePage(int value); void createButtons(); void updateButtons(); void finishRollBack(); void activatedMenu(int id); void buttonPopupActivate(int); void dockWidgetHasUndocked(KDockWidget*); void aboutToShowConfigMenu(); void saveConfig(); signals: void started(TDEIO::Job *); void completed(); void fileSelection(const KFileItemList& iems); void fileMouseOver(const KFileItem& item); public: /* interface KonqSidebar_PluginInterface*/ TDEInstance *getInstance(); // virtual void showError(TQString &); for later extension // virtual void showMessage(TQString &); for later extension /* end of interface implementation */ TQStringList getRestrictedViews() const { return m_restrictedViews; } /* The following public slots are wrappers for browserextension fields */ public slots: void openURLRequest( const KURL &url, const KParts::URLArgs &args = KParts::URLArgs() ); /* @internal * @since 3.2 * ### KDE4 remove me */ void submitFormRequest(const char*,const TQString&,const TQByteArray&,const TQString&,const TQString&,const TQString&); void createNewWindow( const KURL &url, const KParts::URLArgs &args = KParts::URLArgs() ); void createNewWindow( const KURL &url, const KParts::URLArgs &args, const KParts::WindowArgs &windowArgs, KParts::ReadOnlyPart *&part ); void popupMenu( const TQPoint &global, const KFileItemList &items ); void popupMenu( KXMLGUIClient *client, const TQPoint &global, const KFileItemList &items ); void popupMenu( const TQPoint &global, const KURL &url, const TQString &mimeType, mode_t mode = (mode_t)-1 ); void popupMenu( KXMLGUIClient *client, const TQPoint &global, const KURL &url, const TQString &mimeType, mode_t mode = (mode_t)-1 ); void enableAction( const char * name, bool enabled ); void userMovedSplitter(); private: TQSplitter *splitter() const; bool addButton(const TQString &desktoppath,int pos=-1); bool createView(ButtonInfo *data); KonqSidebarPlugin *loadModule(TQWidget *par,TQString &desktopName,TQString lib_name,ButtonInfo *bi); void readConfig(); void initialCopy(); void doLayout(); void connectModule(TQObject *mod); void collapseExpandSidebar(); bool doEnableActions(); bool m_universalMode; bool m_userMovedSplitter; private: KParts::ReadOnlyPart *m_partParent; KDockArea *m_area; KDockWidget *m_mainDockWidget; KMultiTabBar *m_buttonBar; TQPtrVector m_buttons; TQHBoxLayout *m_layout; TDEPopupMenu *m_buttonPopup; TQPopupMenu *m_menu; TQGuardedPtr m_activeModule; TQGuardedPtr m_currentButton; TDEConfig *m_config; TQTimer m_configTimer; KURL m_storedUrl; int m_savedWidth; int m_latestViewed; bool m_hasStoredUrl; bool m_singleWidgetMode; bool m_immutableSingleWidgetMode; bool m_showTabsLeft; bool m_immutableShowTabsLeft; bool m_hideTabs; bool m_immutableHideTabs; bool m_disableConfig; bool m_showExtraButtons; bool m_immutableShowExtraButtons; bool m_somethingVisible; bool m_noUpdate; bool m_initial; TQString m_path; TQString m_relPath; TQString m_currentProfile; TQStringList m_visibleViews; // The views that are actually open TQStringList m_openViews; // The views that should be opened TQStringList m_restrictedViews; signals: void panelHasBeenExpanded(bool); }; #endif