00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _SIDEBAR_WIDGET_
00018 #define _SIDEBAR_WIDGET_
00019
00020 #include <tqptrvector.h>
00021 #include <tqtimer.h>
00022 #include <tqstring.h>
00023 #include <tqguardedptr.h>
00024
00025 #include <kdockwidget.h>
00026 #include <kurl.h>
00027 #include <ktoolbar.h>
00028 #include <kparts/part.h>
00029 #include <kmultitabbar.h>
00030
00031 #include "konqsidebarplugin.h"
00032 #include "konqsidebariface_p.h"
00033
00034 class KDockWidget;
00035 class TQHBoxLayout;
00036 class TQSplitter;
00037 class TQStringList;
00038
00039 class ButtonInfo: public TQObject, public KonqSidebarIface
00040 {
00041 Q_OBJECT
00042 public:
00043 ButtonInfo(const TQString& file_, class KonqSidebarIface *part, class KDockWidget *dock_,
00044 const TQString &url_,const TQString &lib,
00045 const TQString &dispName_, const TQString &iconName_,
00046 TQObject *parent)
00047 : TQObject(parent), file(file_), dock(dock_), URL(url_),
00048 libName(lib), displayName(dispName_), iconName(iconName_), m_part(part)
00049 {
00050 copy = cut = paste = trash = del = rename =false;
00051 }
00052
00053 ~ButtonInfo() {}
00054
00055 TQString file;
00056 KDockWidget *dock;
00057 KonqSidebarPlugin *module;
00058 TQString URL;
00059 TQString libName;
00060 TQString displayName;
00061 TQString iconName;
00062 bool copy;
00063 bool cut;
00064 bool paste;
00065 bool trash;
00066 bool del;
00067 bool rename;
00068 KonqSidebarIface *m_part;
00069 virtual bool universalMode() {return m_part->universalMode();}
00070 };
00071
00072
00073 class addBackEnd: public QObject
00074 {
00075 Q_OBJECT
00076 public:
00077 addBackEnd(TQWidget *parent,class TQPopupMenu *addmenu, bool universal,
00078 const TQString ¤tProfile, const char *name=0);
00079 ~addBackEnd(){;}
00080 protected slots:
00081 void aboutToShowAddMenu();
00082 void activatedAddMenu(int);
00083 signals:
00084 void updateNeeded();
00085 void initialCopyNeeded();
00086 private:
00087 TQGuardedPtr<class TQPopupMenu> menu;
00088 TQPtrVector<TQString> libNames;
00089 TQPtrVector<TQString> libParam;
00090 bool m_universal;
00091 TQString m_currentProfile;
00092 void doRollBack();
00093 TQWidget *m_parent;
00094 };
00095
00096 class KDE_EXPORT Sidebar_Widget: public QWidget
00097 {
00098 Q_OBJECT
00099 public:
00100 friend class ButtonInfo;
00101 public:
00102 Sidebar_Widget(TQWidget *parent, KParts::ReadOnlyPart *par,
00103 const char * name,bool universalMode,
00104 const TQString ¤tProfile);
00105 ~Sidebar_Widget();
00106 bool openURL(const class KURL &url);
00107 void stdAction(const char *handlestd);
00108
00109 KParts::BrowserExtension *getExtension();
00110 virtual TQSize sizeHint() const;
00111
00112 public slots:
00113 void addWebSideBar(const KURL& url, const TQString& name);
00114
00115 protected:
00116 void customEvent(TQCustomEvent* ev);
00117 void resizeEvent(TQResizeEvent* ev);
00118 virtual bool eventFilter(TQObject*,TQEvent*);
00119 virtual void mousePressEvent(TQMouseEvent*);
00120
00121 protected slots:
00122 void showHidePage(int value);
00123 void createButtons();
00124 void updateButtons();
00125 void finishRollBack();
00126 void activatedMenu(int id);
00127 void buttonPopupActivate(int);
00128 void dockWidgetHasUndocked(KDockWidget*);
00129 void aboutToShowConfigMenu();
00130 void saveConfig();
00131
00132 signals:
00133 void started(KIO::Job *);
00134 void completed();
00135 void fileSelection(const KFileItemList& iems);
00136 void fileMouseOver(const KFileItem& item);
00137
00138 public:
00139
00140 KInstance *getInstance();
00141
00142
00143
00144
00145
00146
00147 public slots:
00148 void openURLRequest( const KURL &url, const KParts::URLArgs &args = KParts::URLArgs() );
00149
00150
00151
00152
00153 void submitFormRequest(const char*,const TQString&,const TQByteArray&,const TQString&,const TQString&,const TQString&);
00154 void createNewWindow( const KURL &url, const KParts::URLArgs &args = KParts::URLArgs() );
00155 void createNewWindow( const KURL &url, const KParts::URLArgs &args,
00156 const KParts::WindowArgs &windowArgs, KParts::ReadOnlyPart *&part );
00157
00158 void popupMenu( const TQPoint &global, const KFileItemList &items );
00159 void popupMenu( KXMLGUIClient *client, const TQPoint &global, const KFileItemList &items );
00160 void popupMenu( const TQPoint &global, const KURL &url,
00161 const TQString &mimeType, mode_t mode = (mode_t)-1 );
00162 void popupMenu( KXMLGUIClient *client,
00163 const TQPoint &global, const KURL &url,
00164 const TQString &mimeType, mode_t mode = (mode_t)-1 );
00165 void enableAction( const char * name, bool enabled );
00166 void userMovedSplitter();
00167
00168 private:
00169 TQSplitter *splitter() const;
00170 bool addButton(const TQString &desktoppath,int pos=-1);
00171 bool createView(ButtonInfo *data);
00172 KonqSidebarPlugin *loadModule(TQWidget *par,TQString &desktopName,TQString lib_name,ButtonInfo *bi);
00173 void readConfig();
00174 void initialCopy();
00175 void doLayout();
00176 void connectModule(TQObject *mod);
00177 void collapseExpandSidebar();
00178 bool doEnableActions();
00179 bool m_universalMode;
00180 bool m_userMovedSplitter;
00181 private:
00182 KParts::ReadOnlyPart *m_partParent;
00183 KDockArea *m_area;
00184 KDockWidget *m_mainDockWidget;
00185
00186 KMultiTabBar *m_buttonBar;
00187 TQPtrVector<ButtonInfo> m_buttons;
00188 TQHBoxLayout *m_layout;
00189 KPopupMenu *m_buttonPopup;
00190 TQPopupMenu *m_menu;
00191 TQGuardedPtr<ButtonInfo> m_activeModule;
00192 TQGuardedPtr<ButtonInfo> m_currentButton;
00193
00194 KConfig *m_config;
00195 TQTimer m_configTimer;
00196
00197 KURL m_storedUrl;
00198 int m_savedWidth;
00199 int m_latestViewed;
00200
00201 bool m_hasStoredUrl;
00202 bool m_singleWidgetMode;
00203 bool m_immutableSingleWidgetMode;
00204 bool m_showTabsLeft;
00205 bool m_immutableShowTabsLeft;
00206 bool m_hideTabs;
00207 bool m_immutableHideTabs;
00208 bool m_disableConfig;
00209 bool m_showExtraButtons;
00210 bool m_immutableShowExtraButtons;
00211 bool m_somethingVisible;
00212 bool m_noUpdate;
00213 bool m_initial;
00214
00215 TQString m_path;
00216 TQString m_relPath;
00217 TQString m_currentProfile;
00218 TQStringList m_visibleViews;
00219 TQStringList m_openViews;
00220
00221 signals:
00222 void panelHasBeenExpanded(bool);
00223 };
00224
00225 #endif