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 
00051 class QTimer;
00052 class QPopupMenu;
00053 class QMenuBar;
00054 #include <kmditoolviewaccessor.h>
00055 
00056 class QToolButton;
00057 
00058 namespace KMDIPrivate {
00059   class KMDIGUIClient;
00060 }
00061 
00062 class KMdiDockContainer;
00063 class KMdiMainFrmPrivate;
00064 
00070 class KMdiViewCloseEvent : public QCustomEvent
00071 {
00072 public:
00073    KMdiViewCloseEvent( KMdiChildView* pWnd) : QCustomEvent(QEvent::User,pWnd) {};
00074 };
00075 
00204 class KMdiMainFrm : public KParts::DockMainWindow
00205 {
00206    friend class KMdiChildView;
00207    friend class KMdiTaskBar;
00208    Q_OBJECT
00209 
00210    friend class KMdiToolViewAccessor;
00211 
00212 protected:
00213    KMdi::MdiMode           m_mdiMode;
00214    KMdiChildArea           *m_pMdi;
00215    KMdiTaskBar             *m_pTaskBar;
00216    QPtrList<KMdiChildView> *m_pDocumentViews;
00217    QMap<QWidget*,KMdiToolViewAccessor*> *m_pToolViews;
00218    KMdiChildView           *m_pCurrentWindow;
00219    QPopupMenu              *m_pWindowPopup;
00220    QPopupMenu              *m_pTaskBarPopup;
00221    QPopupMenu              *m_pWindowMenu;
00222    QPopupMenu              *m_pDockMenu;
00223    QPopupMenu              *m_pMdiModeMenu;
00224    QPopupMenu              *m_pPlacingMenu;
00225    KMenuBar                *m_pMainMenuBar;
00226 
00227    QPixmap                 *m_pUndockButtonPixmap;
00228    QPixmap                 *m_pMinButtonPixmap;
00229    QPixmap                 *m_pRestoreButtonPixmap;
00230    QPixmap                 *m_pCloseButtonPixmap;
00231 
00232    QToolButton             *m_pUndock;
00233    QToolButton             *m_pMinimize;
00234    QToolButton             *m_pRestore;
00235    QToolButton             *m_pClose;
00236    QPoint                  m_undockPositioningOffset;
00237    bool                    m_bMaximizedChildFrmMode;
00238    int                     m_oldMainFrmHeight;
00239    int                     m_oldMainFrmMinHeight;
00240    int                     m_oldMainFrmMaxHeight;
00241    static KMdi::FrameDecor m_frameDecoration;
00242    bool                    m_bSDIApplication;
00243    KDockWidget*         m_pDockbaseAreaOfDocumentViews;
00244    QDomDocument*           m_pTempDockSession;
00245    bool                    m_bClearingOfWindowMenuBlocked;
00246 
00247    QTimer*                 m_pDragEndTimer;
00248 
00249    bool                    m_bSwitching;
00250 
00251    KDockWidget*         m_leftContainer;
00252    KDockWidget*         m_rightContainer;
00253    KDockWidget*         m_topContainer;
00254    KDockWidget*         m_bottomContainer;
00255 
00256 
00257 private:
00258    KMdiMainFrmPrivate*     d;
00259    KMDIPrivate::KMDIGUIClient*     m_mdiGUIClient;
00260    bool m_managedDockPositionMode;
00261 
00262 
00263 public:
00267    KMdiMainFrm( QWidget* parentWidget, const char* name = "", KMdi::MdiMode mdiMode=KMdi::ChildframeMode,WFlags flags = WType_TopLevel | WDestructiveClose);
00271    virtual ~KMdiMainFrm();
00272 
00273    void setStandardMDIMenuEnabled(bool showModeMenu=true);
00274 
00275    void setManagedDockPositionModeEnabled(bool enabled);
00276 
00280    bool isInMaximizedChildFrmMode() { return m_bMaximizedChildFrmMode; };
00284    KMdi::MdiMode mdiMode() { return m_mdiMode; };
00288    KMdiChildView * activeWindow();
00296    virtual QPopupMenu * taskBarPopup(KMdiChildView *pWnd,bool bIncludeWindowPopup = false);
00301    virtual QPopupMenu * windowPopup(KMdiChildView *pWnd,bool bIncludeTaskbarPopup = true);
00305    virtual void applyOptions();
00306 
00307 
00311    KMdiChildView * findWindow(const QString& caption);
00315    enum ExistsAs {DocumentView,ToolView,AnyView};
00316    bool windowExists(KMdiChildView *pWnd,ExistsAs as);
00329    virtual bool event(QEvent* e);
00333    virtual void setSysButtonsAtMenuPosition();
00337    virtual int taskBarHeight() { return m_pTaskBar ? m_pTaskBar->height() : 0; };
00342    virtual void setUndockPositioningOffset( QPoint offset) { m_undockPositioningOffset = offset; };
00348    
00349    KMdiIterator<KMdiChildView*>* createIterator() {
00350       if ( m_pDocumentViews == 0L) {
00351          return new KMdiNullIterator<KMdiChildView*>();
00352       } else {
00353          return new KMdiListIterator<KMdiChildView>( *m_pDocumentViews);
00354       }
00355    }
00359    void deleteIterator(KMdiIterator<KMdiChildView*>* pIt) { delete pIt; }
00365    QPopupMenu* windowMenu() const { return m_pWindowMenu; };
00369    virtual void setBackgroundColor( const QColor &c) { m_pMdi->setBackgroundColor( c); };
00373    virtual void setBackgroundPixmap( const QPixmap &pm) { m_pMdi->setBackgroundPixmap( pm); };
00378    void setDefaultChildFrmSize( const QSize& sz)
00379       { m_pMdi->m_defaultChildFrmSize = sz; };
00383    QSize defaultChildFrmSize()
00384       { return m_pMdi->m_defaultChildFrmSize; };
00388    virtual void setMinimumSize( int minw, int minh);
00392    int childFrameModeHeight() { return m_oldMainFrmHeight; };
00399    virtual void setMenuForSDIModeSysButtons( KMenuBar* = 0);
00400 
00404    static int frameDecorOfAttachedViews() { return m_frameDecoration; };
00411    void fakeSDIApplication();
00415    bool isFakingSDIApplication() const { return m_bSDIApplication; };
00419    virtual bool eventFilter(QObject *obj, QEvent *e );
00423    void findRootDockWidgets(QPtrList<KDockWidget>* pRootDockWidgetList, QValueList<QRect>* pPositionList);
00424 
00425    void setSwitching( const bool switching ) { m_bSwitching = switching; }
00426    bool switching(void) const { return m_bSwitching; }
00427 
00428 public slots:
00432    KMdiChildView* createWrapper(QWidget *view, const QString& name, const QString& shortName);
00443    virtual void addWindow( KMdiChildView* pView, int flags = KMdi::StandardAdd);
00447    virtual void addWindow( KMdiChildView* pView, QPoint pos, int flags = KMdi::StandardAdd);
00451    virtual void addWindow( KMdiChildView* pView, QRect rectNormal, int flags = KMdi::StandardAdd);
00456    virtual KMdiToolViewAccessor *addToolWindow( QWidget* pWnd, KDockWidget::DockPosition pos = KDockWidget::DockNone, QWidget* pTargetWnd = 0L, int percent = 50, const QString& tabToolTip = 0, const QString& tabCaption = 0);
00457    virtual void deleteToolWindow( QWidget* pWnd);
00458    virtual void deleteToolWindow( KMdiToolViewAccessor *accessor);
00463    KMdiToolViewAccessor *createToolWindow();
00468    virtual void removeWindowFromMdi(KMdiChildView *pWnd);
00473    virtual void closeWindow(KMdiChildView *pWnd, bool layoutTaskBar = true);
00477    virtual void slot_toggleTaskBar();
00483    virtual void attachWindow(KMdiChildView *pWnd,bool bShow=true,bool bAutomaticResize=false);
00488    virtual void detachWindow(KMdiChildView *pWnd,bool bShow=true);
00493    virtual void childWindowCloseRequest(KMdiChildView *pWnd);
00497    virtual void closeAllViews();
00501    virtual void iconifyAllViews();
00505    virtual void closeActiveView();
00509    virtual void switchToToplevelMode();
00510    virtual void finishToplevelMode();
00514    virtual void switchToChildframeMode();
00515    virtual void finishChildframeMode();
00519    virtual void switchToTabPageMode();
00520    virtual void finishTabPageMode();
00524    virtual void switchToIDEAlMode();
00525    virtual void finishIDEAlMode(bool full=true);
00529    void setIDEAlModeStyle(int flags);
00530    
00531 
00532 
00533    bool isViewTaskBarOn();
00537    virtual void showViewTaskBar();
00541    virtual void hideViewTaskBar();
00545    virtual void fillWindowMenu();
00546 
00550    virtual void cascadeWindows() { m_pMdi->cascadeWindows(); }
00554    virtual void cascadeMaximized() { m_pMdi->cascadeMaximized(); };
00558    virtual void expandVertical() { m_pMdi->expandVertical(); };
00562    virtual void expandHorizontal() { m_pMdi->expandHorizontal(); };
00566    virtual void tilePragma() { m_pMdi->tilePragma(); };
00570    virtual void tileAnodine() { m_pMdi->tileAnodine(); };
00574    virtual void tileVertically() { m_pMdi->tileVertically(); };
00578    virtual void setFrameDecorOfAttachedViews( int frameDecor);
00582    virtual void setEnableMaximizedChildFrmMode(bool bEnable);
00586    virtual void activateNextWin();
00590    virtual void activatePrevWin();
00594    virtual void activateFirstWin();
00598    virtual void activateLastWin();
00602    virtual void activateView(int index);
00603 
00604 private:
00605    void setupToolViewsForIDEALMode();
00606    void setupTabbedDocumentViewSpace();
00607    class KMdiDocumentViewTabWidget * m_documentTabWidget;
00608 
00609 protected:
00613    virtual void resizeEvent(QResizeEvent * );
00617    virtual void createTaskBar();
00621    virtual void createMdiManager();
00626    void blockClearingOfWindowMenu( bool bBlocked) { m_bClearingOfWindowMenuBlocked = bBlocked; };
00627 
00628    void findToolViewsDockedToMain(QPtrList<KDockWidget>* list,KDockWidget::DockPosition dprtmw);
00629    void dockToolViewsIntoContainers(QPtrList<KDockWidget>& widgetsToReparent,KDockWidget *container);
00630    QStringList prepareIdealToTabs(KDockWidget* container);
00631    void idealToolViewsToStandardTabs(QStringList widgetNames,KDockWidget::DockPosition pos,int sizee);
00632 
00633 
00634 protected slots: 
00639    virtual void activateView(KMdiChildView *pWnd);
00643    virtual void taskbarButtonRightClicked(KMdiChildView *pWnd);
00647    void switchOffMaximizeModeForMenu(KMdiChildFrm* oldChild);
00651    void updateSysButtonConnections( KMdiChildFrm* oldChild, KMdiChildFrm* newChild);
00655    void windowMenuItemActivated(int id);
00659    void dockMenuItemActivated(int id);
00663    void popupWindowMenu(QPoint p);
00667    void dragEndTimeOut();
00671    void closeViewButtonPressed();
00672 signals:
00676    void lastChildFrmClosed();
00680    void lastChildViewClosed();
00684    void leftTopLevelMode();
00688    void childViewIsDetachedNow(QWidget*);
00689 
00690    void collapseOverlapContainers();
00691 
00692    void mdiModeHasBeenChangedTo(KMdi::MdiMode);
00693 
00694    void viewActivated(KMdiChildView*);
00695    void viewDeactivated(KMdiChildView*);
00696 
00697 public slots:
00698    void prevToolViewInDock();
00699    void nextToolViewInDock();
00700 
00701 private slots:
00702    void setActiveToolDock(KMdiDockContainer*);
00703    void removeFromActiveDockList(KMdiDockContainer*);
00704    void slotDocCurrentChanged(QWidget*);
00705 #define protected public
00706 signals:
00707 #undef protected
00708     void toggleTop();
00709     void toggleLeft();
00710     void toggleRight();
00711     void toggleBottom();
00712 
00713 };
00714 
00715 #endif //_KMDIMAINFRM_H_
00716 
00717 
 
This file is part of the documentation for kmdi Library Version 3.2.0.