00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __konq_mainwindow_h__
00023 #define __konq_mainwindow_h__
00024
00025 #include <tqmap.h>
00026 #include <tqpoint.h>
00027 #include <tqtimer.h>
00028 #include <tqguardedptr.h>
00029
00030 #include <kfileitem.h>
00031 #include "konq_openurlrequest.h"
00032
00033 #include <kparts/mainwindow.h>
00034 #include <kbookmarkmanager.h>
00035 #include <kcompletion.h>
00036 #include <kurlcompletion.h>
00037 #include <kglobalsettings.h>
00038 #include <dcopobject.h>
00039 #include <kxmlguifactory.h>
00040 #include <kxmlguiclient.h>
00041 #include <ktrader.h>
00042 #include "konq_combo.h"
00043 #include "konq_frame.h"
00044
00045 class TQFile;
00046 class KAction;
00047 class KActionCollection;
00048 class KActionMenu;
00049 class KBookmarkMenu;
00050 class KCMultiDialog;
00051 class KHistoryCombo;
00052 class KNewMenu;
00053 class KProgress;
00054 class KSelectAction;
00055 class KToggleAction;
00056 class KonqBidiHistoryAction;
00057 class KBookmarkBar;
00058 class KonqView;
00059 class KonqComboAction;
00060 class KonqFrame;
00061 class KonqFrameBase;
00062 class KonqFrameContainerBase;
00063 class KonqFrameContainer;
00064 class KToolBarPopupAction;
00065 class KonqLogoAction;
00066 class KonqViewModeAction;
00067 class KonqPart;
00068 class KonqViewManager;
00069 class OpenWithGUIClient;
00070 class ToggleViewGUIClient;
00071 class ViewModeGUIClient;
00072 class KonqMainWindowIface;
00073 class KonqDirPart;
00074 class KonqRun;
00075 class KURLRequester;
00076 class KZip;
00077 struct HistoryEntry;
00078
00079 namespace KParts {
00080 class BrowserExtension;
00081 class BrowserHostExtension;
00082 class ReadOnlyPart;
00083 struct URLArgs;
00084 }
00085
00086 class KonqExtendedBookmarkOwner;
00087
00088 class KonqMainWindow : public KParts::MainWindow, public KonqFrameContainerBase
00089 {
00090 Q_OBJECT
00091 Q_PROPERTY( int viewCount READ viewCount )
00092 Q_PROPERTY( int activeViewsCount READ activeViewsCount )
00093 Q_PROPERTY( int linkableViewsCount READ linkableViewsCount )
00094 Q_PROPERTY( TQString locationBarURL READ locationBarURL )
00095 Q_PROPERTY( bool fullScreenMode READ fullScreenMode )
00096 Q_PROPERTY( TQString currentTitle READ currentTitle )
00097 Q_PROPERTY( TQString currentURL READ currentURL )
00098 Q_PROPERTY( bool isHTMLAllowed READ isHTMLAllowed )
00099 Q_PROPERTY( TQString currentProfile READ currentProfile )
00100 public:
00101 enum ComboAction { ComboClear, ComboAdd, ComboRemove };
00102 enum PageSecurity { NotCrypted, Encrypted, Mixed };
00103
00104 KonqMainWindow( const KURL &initialURL = KURL(), bool openInitialURL = true, const char *name = 0, const TQString& xmluiFile="konqueror.rc");
00105 ~KonqMainWindow();
00106
00107
00111 void openFilteredURL( const TQString & _url, KonqOpenURLRequest& _req);
00112
00116 void openFilteredURL( const TQString &_url, bool inNewTab = false, bool tempFile = false );
00117
00121 void openURL( KonqView * view, const KURL & url,
00122 const TQString &serviceType = TQString::null,
00123 KonqOpenURLRequest & req = KonqOpenURLRequest::null, bool trustedSource = false );
00124
00129 bool openView( TQString serviceType, const KURL &_url, KonqView *childView,
00130 KonqOpenURLRequest & req = KonqOpenURLRequest::null );
00131
00132
00133 void abortLoading();
00134
00135 void openMultiURL( KURL::List url );
00136
00137 KonqViewManager *viewManager() const { return m_pViewManager; }
00138
00139
00140 TQWidget *mainWidget() const;
00141
00142 virtual TQWidget *createContainer( TQWidget *parent, int index, const TQDomElement &element, int &id );
00143 virtual void removeContainer( TQWidget *container, TQWidget *parent, TQDomElement &element, int id );
00144
00145 virtual void saveProperties( KConfig *config );
00146 virtual void readProperties( KConfig *config );
00147
00148 void setInitialFrameName( const TQString &name );
00149
00150 KonqMainWindowIface * dcopObject();
00151
00152 void reparseConfiguration();
00153
00154 void insertChildView( KonqView *childView );
00155 void removeChildView( KonqView *childView );
00156 KonqView *childView( KParts::ReadOnlyPart *view );
00157 KonqView *childView( KParts::ReadOnlyPart *callingPart, const TQString &name, KParts::BrowserHostExtension **hostExtension, KParts::ReadOnlyPart **part );
00158
00159
00160 static KonqView *findChildView( KParts::ReadOnlyPart *callingPart, const TQString &name, KonqMainWindow **mainWindow, KParts::BrowserHostExtension **hostExtension, KParts::ReadOnlyPart **part );
00161
00162
00163 int viewCount() const { return m_mapViews.count(); }
00164
00165
00166 int activeViewsCount() const;
00167
00168
00169 int linkableViewsCount() const;
00170
00171
00172 int mainViewsCount() const;
00173
00174 typedef TQMap<KParts::ReadOnlyPart *, KonqView *> MapViews;
00175
00176 const MapViews & viewMap() const { return m_mapViews; }
00177
00178 KonqView *currentView() const { return m_currentView; }
00179
00180 KParts::ReadOnlyPart *currentPart() const;
00181
00183 KURL::List currentURLs() const;
00184
00185
00186 KonqView * otherView( KonqView * view ) const;
00187
00188 virtual void customEvent( TQCustomEvent *event );
00189
00191 virtual void setCaption( const TQString &caption );
00192
00196 virtual void show();
00197
00201 void setLocationBarURL( const TQString &url );
00205 void setLocationBarURL( const KURL &url );
00209 TQString locationBarURL() const;
00210 void focusLocationBar();
00211
00215 void setPageSecurity( PageSecurity );
00216
00217 void enableAllActions( bool enable );
00218
00219 void disableActionsNoView();
00220
00221 void updateToolBarActions( bool pendingActions = false );
00222 void updateOpenWithActions();
00223 void updateViewModeActions();
00224 void updateViewActions();
00225
00226 bool sidebarVisible() const;
00227
00228 void setShowHTML( bool b );
00229
00230 void showHTML( KonqView * view, bool b, bool _activateView );
00231
00232 bool fullScreenMode() const { return m_ptaFullScreen->isChecked(); }
00233
00237 KToggleAction * linkViewAction()const { return m_paLinkView; }
00238
00239 void enableAction( const char * name, bool enabled );
00240 void setActionText( const char * name, const TQString& text );
00241
00246 bool isHTMLAllowed() const { return m_bHTMLAllowed; }
00247
00248 bool saveViewPropertiesLocally() const { return m_bSaveViewPropertiesLocally; }
00249
00250 static TQPtrList<KonqMainWindow> *mainWindowList() { return s_lstViews; }
00251
00252
00253 void viewCountChanged();
00254
00255
00256 void currentProfileChanged();
00257
00258
00259
00260 static void comboAction( int action, const TQString& url,
00261 const TQCString& objId );
00262
00263 #ifndef NDEBUG
00264 void dumpViewList();
00265 #endif
00266
00267
00268
00272 void insertChildFrame( KonqFrameBase * frame, int index = -1 );
00276 void removeChildFrame( KonqFrameBase * frame );
00277
00278 void saveConfig( KConfig* config, const TQString &prefix, bool saveURLs, KonqFrameBase* docContainer, int id = 0, int depth = 0 );
00279
00280 void copyHistory( KonqFrameBase *other );
00281
00282 void printFrameInfo( const TQString &spaces );
00283
00284 void reparentFrame( TQWidget* parent,
00285 const TQPoint & p, bool showIt=FALSE );
00286
00287 KonqFrameContainerBase* parentContainer()const;
00288 void setParentContainer(KonqFrameContainerBase* parent);
00289
00290 void setTitle( const TQString &title , TQWidget* sender);
00291 void setTabIcon( const KURL &url, TQWidget* sender );
00292
00293 TQWidget* widget();
00294
00295 void listViews( ChildViewList *viewList );
00296 TQCString frameType();
00297
00298 KonqFrameBase* childFrame()const;
00299
00300 void setActiveChild( KonqFrameBase* activeChild );
00301
00302
00303
00304 KonqFrameBase* workingTab()const { return m_pWorkingTab; }
00305 void setWorkingTab( KonqFrameBase* tab ) { m_pWorkingTab = tab; }
00306
00307 static bool isMimeTypeAssociatedWithSelf( const TQString &mimeType );
00308 static bool isMimeTypeAssociatedWithSelf( const TQString &mimeType, const KService::Ptr &offer );
00309
00310 void resetWindow();
00311
00312 static void setPreloadedFlag( bool preloaded );
00313 static bool isPreloaded() { return s_preloaded; }
00314 static void setPreloadedWindow( KonqMainWindow* );
00315 static KonqMainWindow* preloadedWindow() { return s_preloadedWindow; }
00316
00317 void toggleReloadStopButton(bool isStop);
00318
00319 TQString currentTitle() const;
00320 TQString currentURL() const;
00321 TQString currentProfile() const;
00322
00323 TQStringList configModules() const;
00324
00325 void saveWindowSize() const;
00326 void restoreWindowSize();
00327
00328 signals:
00329 void viewAdded( KonqView *view );
00330 void viewRemoved( KonqView *view );
00331 void popupItemsDisturbed();
00332
00333 public slots:
00334 void slotCtrlTabPressed();
00335
00336
00337 void slotFillContextMenu( const KBookmark &, TQPopupMenu * );
00338 void slotOpenBookmarkURL( const TQString & url, Qt::ButtonState state );
00339
00340 void slotPopupMenu( const TQPoint &_global, const KURL &_url, const TQString &_mimeType, mode_t mode );
00341 void slotPopupMenu( KXMLGUIClient *client, const TQPoint &_global, const KURL &_url, const TQString &_mimeType, mode_t mode );
00342 void slotPopupMenu( KXMLGUIClient *client, const TQPoint &_global, const KURL &_url, const KParts::URLArgs &_args, KParts::BrowserExtension::PopupFlags f, mode_t mode );
00343
00344 void slotPopupMenu( const TQPoint &_global, const KFileItemList &_items );
00345 void slotPopupMenu( KXMLGUIClient *client, const TQPoint &_global, const KFileItemList &_items );
00346 void slotPopupMenu( KXMLGUIClient *client, const TQPoint &_global, const KFileItemList &_items, const KParts::URLArgs &_args, KParts::BrowserExtension::PopupFlags _flags );
00347
00348
00349 void slotPopupMenu( KXMLGUIClient *client, const TQPoint &_global, const KFileItemList &_items, const KParts::URLArgs &_args, KParts::BrowserExtension::PopupFlags f, bool showProperties );
00350
00354 void slotOpenURLRequest( const KURL &url, const KParts::URLArgs &args );
00355
00356 void openURL( KonqView *childView, const KURL &url, const KParts::URLArgs &args );
00357
00358 void slotCreateNewWindow( const KURL &url, const KParts::URLArgs &args );
00359 void slotCreateNewWindow( const KURL &url, const KParts::URLArgs &args,
00360 const KParts::WindowArgs &windowArgs, KParts::ReadOnlyPart *&part );
00361
00362 void slotNewWindow();
00363 void slotDuplicateWindow();
00364 void slotSendURL();
00365 void slotSendFile();
00366 void slotCopyFiles();
00367 void slotMoveFiles();
00368 void slotNewDir();
00369 void slotOpenTerminal();
00370 void slotOpenLocation();
00371 void slotToolFind();
00372
00373
00374 void slotViewModeToggle( bool toggle );
00375 void slotShowHTML();
00376 void slotLockView();
00377 void slotLinkView();
00378 void slotReload( KonqView* view = 0L );
00379 void slotStop();
00380 void slotReloadStop();
00381
00382
00383 void slotUp();
00384 void slotUp(KAction::ActivationReason, Qt::ButtonState state);
00385 void slotUpDelayed();
00386 void slotBack();
00387 void slotBack(KAction::ActivationReason, Qt::ButtonState state);
00388 void slotForward();
00389 void slotForward(KAction::ActivationReason, Qt::ButtonState state);
00390 void slotHome();
00391 void slotHome(KAction::ActivationReason, Qt::ButtonState state);
00392 void slotGoSystem();
00393 void slotGoApplications();
00394 void slotGoMedia();
00395 void slotGoNetworkFolders();
00396 void slotGoSettings();
00397 void slotGoDirTree();
00398 void slotGoTrash();
00399 void slotGoAutostart();
00400 void slotGoHistory();
00401
00402 void slotConfigure();
00403 void slotConfigureToolbars();
00404 void slotConfigureExtensions();
00405 void slotConfigureSpellChecking();
00406 void slotNewToolbarConfig();
00407
00408 void slotUndoAvailable( bool avail );
00409
00410 void slotPartChanged( KonqView *childView, KParts::ReadOnlyPart *oldPart, KParts::ReadOnlyPart *newPart );
00411
00412 void slotRunFinished();
00413 void slotClearLocationBar( KAction::ActivationReason reason, Qt::ButtonState state );
00414
00415
00416 virtual void slotSetStatusBarText( const TQString &text );
00417
00418
00419 void slotPartActivated( KParts::Part *part );
00420
00421 virtual void setIcon( const TQPixmap& );
00422 void slotGoHistoryActivated( int steps );
00423 void slotGoHistoryActivated( int steps, Qt::ButtonState state );
00424
00425 void slotAddTab();
00426 void slotSplitViewHorizontal();
00427 void slotSplitViewVertical();
00428
00429 protected slots:
00430 void slotViewCompleted( KonqView * view );
00431
00432 void slotURLEntered( const TQString &text, int );
00433
00434 void slotFileNewAboutToShow();
00435 void slotLocationLabelActivated();
00436
00437 void slotDuplicateTab();
00438 void slotDuplicateTabPopup();
00439
00440 void slotBreakOffTab();
00441 void slotBreakOffTabPopup();
00442 void slotBreakOffTabPopupDelayed();
00443
00444 void slotPopupNewWindow();
00445 void slotPopupThisWindow();
00446 void slotPopupNewTab();
00447 void slotPopupNewTabRight();
00448 void slotPopupPasteTo();
00449 void slotRemoveView();
00450
00451 void slotRemoveOtherTabsPopup();
00452 void slotRemoveOtherTabsPopupDelayed();
00453
00454 void slotReloadPopup();
00455 void slotReloadAllTabs();
00456 void slotRemoveTab();
00457 void slotRemoveTabPopup();
00458 void slotRemoveTabPopupDelayed();
00459
00460 void slotActivateNextTab();
00461 void slotActivatePrevTab();
00462 void slotActivateTab();
00463
00464 void slotDumpDebugInfo();
00465
00466 void slotSaveViewProfile();
00467 void slotSaveViewPropertiesLocally();
00468 void slotRemoveLocalProperties();
00469
00470 void slotOpenEmbedded();
00471 void slotOpenEmbeddedDoIt();
00472
00473
00474 void slotDatabaseChanged();
00475
00476
00477 void slotReconfigure();
00478
00479 void slotForceSaveMainWindowSettings();
00480
00481 void slotOpenWith();
00482
00483 void slotGoMenuAboutToShow();
00484 void slotUpAboutToShow();
00485 void slotBackAboutToShow();
00486 void slotForwardAboutToShow();
00487
00488 void slotUpActivated( int id );
00489 void slotBackActivated( int id );
00490 void slotForwardActivated( int id );
00491 void slotGoHistoryDelayed();
00492
00493 void slotCompletionModeChanged( KGlobalSettings::Completion );
00494 void slotMakeCompletion( const TQString& );
00495 void slotSubstringcompletion( const TQString& );
00496 void slotRotation( KCompletionBase::KeyBindingType );
00497 void slotMatch( const TQString& );
00498 void slotClearHistory();
00499 void slotClearComboHistory();
00500
00501 void slotClipboardDataChanged();
00502 void slotCheckComboSelection();
00503
00504 void slotShowMenuBar();
00505
00506 void slotOpenURL( const KURL& );
00507
00508 void slotActionStatusText( const TQString &text );
00509 void slotClearStatusText();
00510
00511 void slotFindOpen( KonqDirPart * dirPart );
00512 void slotFindClosed( KonqDirPart * dirPart );
00513
00514 void slotIconsChanged();
00515
00516 virtual bool event( TQEvent* );
00517
00518 void slotMoveTabLeft();
00519 void slotMoveTabRight();
00520
00521 void slotAddWebSideBar(const KURL& url, const TQString& name);
00522
00523 void slotUpdateFullScreen( bool set );
00524
00525 protected:
00526 virtual bool eventFilter(TQObject*obj,TQEvent *ev);
00527
00528 void fillHistoryPopup( TQPopupMenu *menu, const TQPtrList<HistoryEntry> &history );
00529
00530 bool makeViewsFollow( const KURL & url, const KParts::URLArgs &args, const TQString & serviceType,
00531 KonqView * senderView );
00532
00533 void applyKonqMainWindowSettings();
00534
00535 void saveToolBarServicesMap();
00536
00537 void viewsChanged();
00538
00539 void updateLocalPropsActions();
00540
00541 virtual void closeEvent( TQCloseEvent * );
00542 virtual bool queryExit();
00543
00544 bool askForTarget(const TQString& text, KURL& url);
00545
00546 private slots:
00547 void slotRequesterClicked( KURLRequester * );
00548 void slotIntro();
00549 void slotItemsRemoved( const KFileItemList & );
00554 void goURL();
00555
00556 void bookmarksIntoCompletion();
00557
00558 void initBookmarkBar();
00559 void slotTrashActivated( KAction::ActivationReason reason, Qt::ButtonState state );
00560
00561 void showPageSecurity();
00562
00563 private:
00568 void updateBookmarkBar();
00569
00573 static void bookmarksIntoCompletion( const KBookmarkGroup& group );
00574
00581 static TQStringList historyPopupCompletionItems( const TQString& s = TQString::null);
00582
00583 void startAnimation();
00584 void stopAnimation();
00585
00586 void setUpEnabled( const KURL &url );
00587
00588 void initCombo();
00589 void initActions();
00590
00591 void popupNewTab(bool infront, bool openAfterCurrentPage);
00592
00596 static TQString findIndexFile( const TQString &directory );
00597
00598 void connectExtension( KParts::BrowserExtension *ext );
00599 void disconnectExtension( KParts::BrowserExtension *ext );
00600
00601 void plugViewModeActions();
00602 void unplugViewModeActions();
00603 static TQString viewModeActionKey( KService::Ptr service );
00604
00605 void connectActionCollection( KActionCollection *coll );
00606 void disconnectActionCollection( KActionCollection *coll );
00607
00608 bool stayPreloaded();
00609 bool checkPreloadResourceUsage();
00610
00611 TQObject* lastFrame( KonqView *view );
00612
00613 KNewMenu * m_pMenuNew;
00614
00615 KAction *m_paPrint;
00616
00617 KActionMenu *m_pamBookmarks;
00618
00619 KToolBarPopupAction *m_paUp;
00620 KToolBarPopupAction *m_paBack;
00621 KToolBarPopupAction *m_paForward;
00622 KAction *m_paHome;
00623
00624 KonqBidiHistoryAction *m_paHistory;
00625
00626 KAction *m_paSaveViewProfile;
00627 KToggleAction *m_paSaveViewPropertiesLocally;
00628 KAction *m_paRemoveLocalProperties;
00629
00630 KAction *m_paSplitViewHor;
00631 KAction *m_paSplitViewVer;
00632 KAction *m_paAddTab;
00633 KAction *m_paDuplicateTab;
00634 KAction *m_paBreakOffTab;
00635 KAction *m_paRemoveView;
00636 KAction *m_paRemoveTab;
00637 KAction *m_paRemoveOtherTabs;
00638 KAction *m_paActivateNextTab;
00639 KAction *m_paActivatePrevTab;
00640
00641 KAction *m_paSaveRemoveViewProfile;
00642 KActionMenu *m_pamLoadViewProfile;
00643
00644 KToggleAction *m_paLockView;
00645 KToggleAction *m_paLinkView;
00646 KAction *m_paReload;
00647 KAction *m_paReloadAllTabs;
00648 KAction *m_paUndo;
00649 KAction *m_paCut;
00650 KAction *m_paCopy;
00651 KAction *m_paPaste;
00652 KAction *m_paStop;
00653 KAction *m_paRename;
00654
00655 KAction *m_paReloadStop;
00656
00657 KAction *m_paTrash;
00658 KAction *m_paDelete;
00659
00660 KAction *m_paCopyFiles;
00661 KAction *m_paMoveFiles;
00662 KAction *m_paNewDir;
00663
00664 KAction *m_paMoveTabLeft;
00665 KAction *m_paMoveTabRight;
00666
00667 KAction *m_paConfigureExtensions;
00668 KAction *m_paConfigureSpellChecking;
00669
00670 KonqLogoAction *m_paAnimatedLogo;
00671
00672 KBookmarkBar *m_paBookmarkBar;
00673
00674 KToggleAction * m_paFindFiles;
00675 KToggleAction *m_ptaUseHTML;
00676
00677 KToggleAction *m_paShowMenuBar;
00678 KToggleAction *m_paShowStatusBar;
00679
00680 KToggleFullScreenAction *m_ptaFullScreen;
00681
00682 uint m_bLocationBarConnected:1;
00683 uint m_bURLEnterLock:1;
00684
00685 uint m_bSaveViewPropertiesLocally:1;
00686 uint m_bHTMLAllowed:1;
00687
00688 uint m_bNeedApplyKonqMainWindowSettings:1;
00689 uint m_bViewModeToggled:1;
00690
00691 int m_goBuffer;
00692 Qt::ButtonState m_goState;
00693
00694 MapViews m_mapViews;
00695
00696 TQGuardedPtr<KonqView> m_currentView;
00697
00698 KBookmarkMenu* m_pBookmarkMenu;
00699 KonqExtendedBookmarkOwner *m_pBookmarksOwner;
00700 KActionCollection* m_bookmarksActionCollection;
00701 KActionCollection* m_bookmarkBarActionCollection;
00702
00703 KonqViewManager *m_pViewManager;
00704 KonqFrameBase* m_pChildFrame;
00705
00706 KonqFrameBase* m_pWorkingTab;
00707
00708 KFileItemList popupItems;
00709 KParts::URLArgs popupUrlArgs;
00710
00711 KonqRun *m_initialKonqRun;
00712
00713 TQString m_title;
00714
00718 KCMultiDialog* m_configureDialog;
00719
00725 TQStringList m_configureModules;
00726
00727 TQLabel* m_locationLabel;
00728 TQGuardedPtr<KonqCombo> m_combo;
00729 static KConfig *s_comboConfig;
00730 KURLCompletion *m_pURLCompletion;
00731
00732 static KCompletion *s_pCompletion;
00733
00734 ToggleViewGUIClient *m_toggleViewGUIClient;
00735
00736 KTrader::OfferList m_popupEmbeddingServices;
00737 TQString m_popupService;
00738 TQString m_popupServiceType;
00739 KURL m_popupURL;
00740
00741 TQString m_initialFrameName;
00742
00743 TQPtrList<KAction> m_openWithActions;
00744 KActionMenu *m_viewModeMenu;
00745 TQPtrList<KAction> m_toolBarViewModeActions;
00746
00747 TQPtrList<KRadioAction> m_viewModeActions;
00748 TQMap<TQString,KService::Ptr> m_viewModeToolBarServices;
00749
00750
00751
00752 KonqMainWindowIface * m_dcopObject;
00753
00754 static TQStringList *s_plstAnimatedLogo;
00755
00756 static TQPtrList<KonqMainWindow> *s_lstViews;
00757
00758 TQString m_currentDir;
00759
00760 bool m_urlCompletionStarted;
00761
00762 bool m_prevMenuBarVisible;
00763
00764 static bool s_preloaded;
00765 static KonqMainWindow* s_preloadedWindow;
00766 static int s_initialMemoryUsage;
00767 static time_t s_startupTime;
00768 static int s_preloadUsageCount;
00769
00770 public:
00771
00772 static TQFile *s_crashlog_file;
00773 };
00774
00775 #endif
00776