kmdimainfrm.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef _KMDIMAINFRM_H_
00032 #define _KMDIMAINFRM_H_
00033
00034 #include <kparts/dockmainwindow.h>
00035 #include <kmenubar.h>
00036 #include <kpopupmenu.h>
00037
00038 #include <qptrlist.h>
00039 #include <qrect.h>
00040 #include <qapplication.h>
00041 #include <qdom.h>
00042 #include <qguardedptr.h>
00043
00044 #include "kmditaskbar.h"
00045 #include "kmdichildarea.h"
00046 #include "kmdichildview.h"
00047 #include "kmdiiterator.h"
00048 #include "kmdilistiterator.h"
00049 #include "kmdinulliterator.h"
00050 #include "kmditoolviewaccessor.h"
00051
00052 class QTimer;
00053 class QPopupMenu;
00054 class QMenuBar;
00055
00056
00057 class QToolButton;
00058
00059 namespace KMDIPrivate
00060 {
00061 class KMDIGUIClient;
00062 }
00063
00064 class KMdiDockContainer;
00065 class KMdiMainFrmPrivate;
00066
00072 class KMDI_EXPORT KMdiViewCloseEvent : public QCustomEvent
00073 {
00074 public:
00075 KMdiViewCloseEvent( KMdiChildView* pWnd ) : QCustomEvent( QEvent::User, pWnd ) {}
00076 };
00077
00239 class KMDI_EXPORT KMdiMainFrm : public KParts::DockMainWindow
00240 {
00241 friend class KMdiChildView;
00242 friend class KMdiTaskBar;
00243 Q_OBJECT
00244
00245 friend class KMdiToolViewAccessor;
00246
00247 protected:
00248 KMdi::MdiMode m_mdiMode;
00249 KMdiChildArea *m_pMdi;
00250 KMdiTaskBar *m_pTaskBar;
00251 QPtrList<KMdiChildView> *m_pDocumentViews;
00252 QMap<QWidget*, KMdiToolViewAccessor*> *m_pToolViews;
00253 KMdiChildView *m_pCurrentWindow;
00254 QPopupMenu *m_pWindowPopup;
00255 QPopupMenu *m_pTaskBarPopup;
00256 QPopupMenu *m_pWindowMenu;
00257 QPopupMenu *m_pDockMenu;
00258 QPopupMenu *m_pMdiModeMenu;
00259 QPopupMenu *m_pPlacingMenu;
00260 KMenuBar *m_pMainMenuBar;
00261
00262 QPixmap *m_pUndockButtonPixmap;
00263 QPixmap *m_pMinButtonPixmap;
00264 QPixmap *m_pRestoreButtonPixmap;
00265 QPixmap *m_pCloseButtonPixmap;
00266
00267 QToolButton *m_pUndock;
00268 QToolButton *m_pMinimize;
00269 QToolButton *m_pRestore;
00270 QToolButton *m_pClose;
00271 QPoint m_undockPositioningOffset;
00272 bool m_bMaximizedChildFrmMode;
00273 int m_oldMainFrmHeight;
00274 int m_oldMainFrmMinHeight;
00275 int m_oldMainFrmMaxHeight;
00276 static KMdi::FrameDecor m_frameDecoration;
00277 bool m_bSDIApplication;
00278 KDockWidget* m_pDockbaseAreaOfDocumentViews;
00279 QDomDocument* m_pTempDockSession;
00280 bool m_bClearingOfWindowMenuBlocked;
00281
00282 QTimer* m_pDragEndTimer;
00283
00284 bool m_bSwitching;
00285
00286 KDockWidget* m_leftContainer;
00287 KDockWidget* m_rightContainer;
00288 KDockWidget* m_topContainer;
00289 KDockWidget* m_bottomContainer;
00290
00291
00292 private:
00293 KMdiMainFrmPrivate* d;
00294 KMDIPrivate::KMDIGUIClient* m_mdiGUIClient;
00295 bool m_managedDockPositionMode;
00296
00297
00298 public:
00299 KMdiMainFrm( QWidget* parentWidget, const char* name = "", KMdi::MdiMode mdiMode = KMdi::ChildframeMode, WFlags flags = WType_TopLevel | WDestructiveClose );
00300 virtual ~KMdiMainFrm();
00301
00306 void setStandardMDIMenuEnabled( bool showModeMenu = true );
00307
00308 void setManagedDockPositionModeEnabled( bool enabled );
00309
00313 bool isInMaximizedChildFrmMode() { return m_bMaximizedChildFrmMode; }
00314
00318 KMdi::MdiMode mdiMode() { return m_mdiMode; }
00319
00323 KMdiChildView* activeWindow();
00324
00332 virtual QPopupMenu * taskBarPopup( KMdiChildView *pWnd, bool bIncludeWindowPopup = false );
00333
00338 virtual QPopupMenu * windowPopup( KMdiChildView *pWnd, bool bIncludeTaskbarPopup = true );
00339
00343 virtual void applyOptions();
00344
00348 KMdiChildView * findWindow( const QString& caption );
00349
00350 enum ExistsAs {DocumentView, ToolView, AnyView};
00354 bool windowExists( KMdiChildView *pWnd, ExistsAs as );
00355
00368 virtual bool event( QEvent* e );
00369
00373 virtual void setSysButtonsAtMenuPosition();
00374
00378 virtual int taskBarHeight() { return m_pTaskBar ? m_pTaskBar->height() : 0; }
00379
00384 virtual void setUndockPositioningOffset( QPoint offset ) { m_undockPositioningOffset = offset; }
00385
00391
00392 KMdiIterator<KMdiChildView*>* createIterator()
00393 {
00394 if ( m_pDocumentViews == 0L )
00395 {
00396 return new KMdiNullIterator<KMdiChildView*>();
00397 }
00398 else
00399 {
00400 return new KMdiListIterator<KMdiChildView>( *m_pDocumentViews );
00401 }
00402 }
00403
00407 void deleteIterator( KMdiIterator<KMdiChildView*>* pIt )
00408 {
00409 delete pIt;
00410 }
00411
00417 QPopupMenu* windowMenu() const { return m_pWindowMenu; };
00418
00422 virtual void setBackgroundColor( const QColor &c ) { m_pMdi->setBackgroundColor( c ); }
00423
00427 virtual void setBackgroundPixmap( const QPixmap &pm ) { m_pMdi->setBackgroundPixmap( pm ); }
00428
00433 void setDefaultChildFrmSize( const QSize& sz ) { m_pMdi->m_defaultChildFrmSize = sz; }
00434
00438 QSize defaultChildFrmSize() { return m_pMdi->m_defaultChildFrmSize; }
00439
00443 virtual void setMinimumSize( int minw, int minh );
00444
00448 int childFrameModeHeight() { return m_oldMainFrmHeight; };
00455 virtual void setMenuForSDIModeSysButtons( KMenuBar* menuBar = 0 );
00456
00460 static int frameDecorOfAttachedViews() { return m_frameDecoration; }
00461
00468 void fakeSDIApplication();
00469
00473 bool isFakingSDIApplication() const { return m_bSDIApplication; }
00474
00475 virtual bool eventFilter( QObject *obj, QEvent *e );
00476 void findRootDockWidgets( QPtrList<KDockWidget>* pRootDockWidgetList, QValueList<QRect>* pPositionList );
00477
00479 void setSwitching( const bool switching ) { m_bSwitching = switching; }
00480 bool switching( void ) const { return m_bSwitching; }
00481
00482 public slots:
00487 KMdiChildView* createWrapper( QWidget *view, const QString& name, const QString& shortName );
00488
00497 virtual void addWindow( KMdiChildView* pView, int flags = KMdi::StandardAdd );
00498
00499
00512 void addWindow( KMdiChildView* pView, int flags, int index );
00513
00524 virtual void addWindow( KMdiChildView* pView, QPoint pos, int flags = KMdi::StandardAdd );
00525
00536 virtual void addWindow( KMdiChildView* pView, QRect rectNormal, int flags = KMdi::StandardAdd );
00537
00542 virtual KMdiToolViewAccessor *addToolWindow( QWidget* pWnd, KDockWidget::DockPosition pos = KDockWidget::DockNone,
00543 QWidget* pTargetWnd = 0L, int percent = 50, const QString& tabToolTip = 0,
00544 const QString& tabCaption = 0 );
00545
00546 virtual void deleteToolWindow( QWidget* pWnd );
00547 virtual void deleteToolWindow( KMdiToolViewAccessor *accessor );
00548
00553 KMdiToolViewAccessor *createToolWindow();
00554
00560 virtual void removeWindowFromMdi( KMdiChildView *pWnd );
00561
00566 virtual void closeWindow( KMdiChildView *pWnd, bool layoutTaskBar = true );
00567
00571 virtual void slot_toggleTaskBar();
00572
00578 virtual void attachWindow( KMdiChildView *pWnd, bool bShow = true, bool bAutomaticResize = false );
00579
00584 virtual void detachWindow( KMdiChildView *pWnd, bool bShow = true );
00585
00590 virtual void childWindowCloseRequest( KMdiChildView *pWnd );
00591
00595 virtual void closeAllViews();
00596
00600 virtual void iconifyAllViews();
00601
00605 virtual void closeActiveView();
00606
00610 virtual void switchToToplevelMode();
00611 virtual void finishToplevelMode();
00612
00616 virtual void switchToChildframeMode();
00617 virtual void finishChildframeMode();
00618
00622 virtual void switchToTabPageMode();
00623 virtual void finishTabPageMode();
00624
00628 virtual void switchToIDEAlMode();
00629 virtual void finishIDEAlMode( bool full = true );
00630
00635 void setIDEAlModeStyle( int flags ) KDE_DEPRECATED;
00636
00642 void setToolviewStyle( int flags );
00646 bool isViewTaskBarOn();
00647
00651 virtual void showViewTaskBar();
00652
00656 virtual void hideViewTaskBar();
00657
00661 virtual void fillWindowMenu();
00662
00666 virtual void cascadeWindows() { m_pMdi->cascadeWindows(); }
00667
00671 virtual void cascadeMaximized() { m_pMdi->cascadeMaximized(); }
00672
00676 virtual void expandVertical() { m_pMdi->expandVertical(); }
00677
00681 virtual void expandHorizontal() { m_pMdi->expandHorizontal(); }
00682
00686 virtual void tilePragma() { m_pMdi->tilePragma(); }
00687
00691 virtual void tileAnodine() { m_pMdi->tileAnodine(); }
00692
00696 virtual void tileVertically() { m_pMdi->tileVertically(); }
00697
00702 virtual void setFrameDecorOfAttachedViews( int frameDecor );
00703
00707 virtual void setEnableMaximizedChildFrmMode( bool bEnable );
00708
00712 virtual void activateNextWin();
00713
00717 virtual void activatePrevWin();
00718
00722 virtual void activateFirstWin();
00723
00727 virtual void activateLastWin();
00728
00732 virtual void activateView( int index );
00733
00734 private:
00735 void setupToolViewsForIDEALMode();
00736 void setupTabbedDocumentViewSpace();
00737 class KMdiDocumentViewTabWidget * m_documentTabWidget;
00738
00739 protected:
00740
00741 virtual void resizeEvent( QResizeEvent * );
00742
00746 virtual void createTaskBar();
00747
00751 virtual void createMdiManager();
00752
00757 void blockClearingOfWindowMenu( bool bBlocked ) { m_bClearingOfWindowMenuBlocked = bBlocked; }
00758
00759 void findToolViewsDockedToMain( QPtrList<KDockWidget>* list, KDockWidget::DockPosition dprtmw );
00760 void dockToolViewsIntoContainers( QPtrList<KDockWidget>& widgetsToReparent, KDockWidget *container );
00761 QStringList prepareIdealToTabs( KDockWidget* container );
00762 void idealToolViewsToStandardTabs( QStringList widgetNames, KDockWidget::DockPosition pos, int sizee );
00763
00765 KMdi::TabWidgetVisibility tabWidgetVisibility();
00766
00768 void setTabWidgetVisibility( KMdi::TabWidgetVisibility );
00769
00771 class KTabWidget * tabWidget() const;
00772
00773
00774 protected slots:
00779 virtual void activateView( KMdiChildView *pWnd );
00780
00784 virtual void taskbarButtonRightClicked( KMdiChildView *pWnd );
00785
00789 void switchOffMaximizeModeForMenu( KMdiChildFrm* oldChild );
00790
00794 void updateSysButtonConnections( KMdiChildFrm* oldChild, KMdiChildFrm* newChild );
00795
00799 void windowMenuItemActivated( int id );
00800
00804 void dockMenuItemActivated( int id );
00805
00809 void popupWindowMenu( QPoint p );
00810
00814 void dragEndTimeOut();
00815
00819 void closeViewButtonPressed();
00820
00821 signals:
00825 void lastChildFrmClosed();
00826
00830 void lastChildViewClosed();
00831
00835 void leftTopLevelMode();
00836
00840 void childViewIsDetachedNow( QWidget* );
00841
00843 void collapseOverlapContainers();
00844
00846 void mdiModeHasBeenChangedTo( KMdi::MdiMode );
00847
00848 void viewActivated( KMdiChildView* );
00849 void viewDeactivated( KMdiChildView* );
00850
00851 public slots:
00852 void prevToolViewInDock();
00853 void nextToolViewInDock();
00854
00855 private slots:
00856 void setActiveToolDock( KMdiDockContainer* );
00857 void removeFromActiveDockList( KMdiDockContainer* );
00858 void slotDocCurrentChanged( QWidget* );
00859 void verifyToplevelHeight();
00860 #define protected public
00861 signals:
00862 #undef protected
00863
00864 void toggleTop();
00865 void toggleLeft();
00866 void toggleRight();
00867 void toggleBottom();
00868 };
00869
00870 #endif //_KMDIMAINFRM_H_
00871
00872
This file is part of the documentation for kmdi Library Version 3.4.3.