kmdi Library API Documentation

kmdichildfrm.h

00001 //----------------------------------------------------------------------------
00002 //    filename             : kmdichildfrm.h
00003 //----------------------------------------------------------------------------
00004 //    Project              : KDE MDI extension
00005 //
00006 //    begin                : 07/1999       by Szymon Stefanek as part of kvirc
00007 //                                         (an IRC application)
00008 //    changes              : 09/1999       by Falk Brettschneider to create an
00009 //                           - 06/2000     stand-alone Qt extension set of
00010 //                                         classes and a Qt-based library
00011 //                           2000-2003     maintained by the KDevelop project
00012 //    patches              : */2000        Lars Beikirch (Lars.Beikirch@gmx.net)
00013 //
00014 //    copyright            : (C) 1999-2003 by Falk Brettschneider
00015 //                                         and
00016 //                                         Szymon Stefanek (stefanek@tin.it)
00017 //    email                :  falkbr@kdevelop.org (Falk Brettschneider)
00018 //----------------------------------------------------------------------------
00019 //
00020 //----------------------------------------------------------------------------
00021 //
00022 //    This program is free software; you can redistribute it and/or modify
00023 //    it under the terms of the GNU Library General Public License as
00024 //    published by the Free Software Foundation; either version 2 of the
00025 //    License, or (at your option) any later version.
00026 //
00027 //------------------------------------------------------------------------------
00028 #ifndef _KMDI_CHILD_FRM_H_
00029 #define _KMDI_CHILD_FRM_H_
00030 
00031 #include <qptrlist.h>
00032 #include <qpixmap.h>
00033 #include <qpushbutton.h>
00034 #include <qlabel.h>
00035 #include <qdatetime.h>
00036 #include <qlayout.h>
00037 
00038 #include <qdict.h>
00039 
00040 #include "kmdichildfrmcaption.h"
00041 
00042 class KMdiChildArea;
00043 class KMdiChildView;
00044 class QPopupMenu;
00045 class QToolButton;
00046 
00047 //==============================================================================
00052 class KMdiWin32IconButton : public QLabel
00053 {
00054    Q_OBJECT
00055 public:
00056    KMdiWin32IconButton( QWidget* parent, const char* name = 0);
00057    virtual void mousePressEvent( QMouseEvent*);
00058 
00059 signals:
00060    void pressed();
00061 };
00062 
00063 //==============================================================================
00064 /* some special events, see qetxtmdidefines.h
00065 */
00066 //------------------------------------------------------------------------------
00071 class KMdiChildFrmMoveEvent : public QCustomEvent
00072 {
00073 public:
00077    KMdiChildFrmMoveEvent( QMoveEvent *e) : QCustomEvent( QEvent::Type(QEvent::User + int(KMdi::EV_Move)), e) {};
00078 };
00079 
00080 //------------------------------------------------------------------------------
00085 class KMdiChildFrmDragBeginEvent : public QCustomEvent
00086 {
00087   public:
00091      KMdiChildFrmDragBeginEvent( QMouseEvent *e) : QCustomEvent( QEvent::Type(QEvent::User + int(KMdi::EV_DragBegin)), e) {};
00092 };
00093 
00094 //------------------------------------------------------------------------------
00099 class KMdiChildFrmDragEndEvent : public QCustomEvent
00100 {
00101   public:
00105     KMdiChildFrmDragEndEvent( QMouseEvent *e) : QCustomEvent( QEvent::Type(QEvent::User + int(KMdi::EV_DragEnd)), e) {};
00106 };
00107 
00108 //------------------------------------------------------------------------------
00113 class KMdiChildFrmResizeBeginEvent : public QCustomEvent
00114 {
00115   public:
00119     KMdiChildFrmResizeBeginEvent( QMouseEvent *e) : QCustomEvent( QEvent::Type(QEvent::User + int(KMdi::EV_ResizeBegin)), e) {};
00120 };
00121 
00122 //------------------------------------------------------------------------------
00127 class KMdiChildFrmResizeEndEvent : public QCustomEvent
00128 {
00129   public:
00133     KMdiChildFrmResizeEndEvent( QMouseEvent *e) : QCustomEvent( QEvent::Type(QEvent::User + int(KMdi::EV_ResizeEnd)), e) {};
00134 };
00135 
00136 
00137 class KMdiChildFrmPrivate;
00138 //==============================================================================
00143 //------------------------------------------------------------------------------
00144 class KMdiChildFrm : public QFrame
00145 {
00146   friend class KMdiChildArea;
00147   friend class KMdiChildFrmCaption;
00148 
00149   Q_OBJECT
00150 
00151   // attributes
00152   public:
00153      enum MdiWindowState { Normal,Maximized,Minimized };
00154                              //positions same in h and cpp for fast order check
00155      KMdiChildView*       m_pClient;
00156 
00157   protected:
00158      KMdiChildArea*       m_pManager;
00159      KMdiChildFrmCaption* m_pCaption;
00160      KMdiWin32IconButton* m_pWinIcon;
00161      QToolButton*            m_pUnixIcon;
00162      QToolButton*            m_pMinimize;
00163      QToolButton*            m_pMaximize;
00164      QToolButton*            m_pClose;
00165      QToolButton*            m_pUndock;
00166      MdiWindowState          m_state;
00167      QRect                   m_restoredRect;
00168      int                     m_iResizeCorner;
00169      int                     m_iLastCursorCorner;
00170      bool                    m_bResizing;
00171      bool                    m_bDragging;
00172      QPixmap*                m_pIconButtonPixmap;
00173      QPixmap*                m_pMinButtonPixmap;
00174      QPixmap*                m_pMaxButtonPixmap;
00175      QPixmap*                m_pRestoreButtonPixmap;
00176      QPixmap*                m_pCloseButtonPixmap;
00177      QPixmap*                m_pUndockButtonPixmap;
00181      int                     m_windowMenuID;
00185      QPopupMenu*             m_pSystemMenu;
00186      QSize                   m_oldClientMinSize;
00187      QSize                   m_oldClientMaxSize;
00188      QLayout::ResizeMode     m_oldLayoutResizeMode;
00189      QTime                   m_timeMeasure;
00190 
00191   // methods
00192   public:
00196      KMdiChildFrm(KMdiChildArea *parent);
00201      ~KMdiChildFrm();
00207      void setClient(KMdiChildView *w, bool bAutomaticResize = false);
00212      void unsetClient( QPoint positionOffset = QPoint(0,0));
00216      void setIcon(const QPixmap &pxm);
00220      QPixmap* icon() const;
00224      void enableClose(bool bEnable);
00228      void setCaption(const QString& text);
00233      const QString& caption(){ return m_pCaption->m_szCaption; };
00237      void setState(MdiWindowState state,bool bAnimate=true);
00242      inline MdiWindowState state() const { return m_state; };
00246      QRect mdiAreaContentsRect() const;
00250      QRect restoreGeometry() const;
00254      void  setRestoreGeometry(const QRect& newRestGeo);
00259      void updateRects(){ resizeEvent(0); };
00263      QPopupMenu* systemMenu() const;
00267      inline int captionHeight() const { return m_pCaption->height(); };
00271      void redecorateButtons();
00272 
00276      bool isInDrag() const { return m_bDragging; }
00280      bool isInResize() const { return m_bResizing; }
00284      void raiseAndActivate();
00285 
00291      virtual void setMinimumSize ( int minw, int minh );
00292 
00293   public slots:
00297      void slot_resizeViaSystemMenu();
00298 
00299   protected:
00304      virtual void resizeEvent(QResizeEvent *);
00309      virtual void mouseMoveEvent(QMouseEvent *e);
00314      virtual void mousePressEvent(QMouseEvent *e);
00318      virtual void mouseReleaseEvent(QMouseEvent *);
00323      virtual void moveEvent(QMoveEvent* me);
00327      virtual void leaveEvent(QEvent *);
00333      virtual bool eventFilter(QObject*, QEvent*);//focusInEvent(QFocusEvent *);
00337      void resizeWindow(int resizeCorner, int x, int y);
00341      void setResizeCursor(int resizeCorner);
00345      void unsetResizeCursor();
00349      virtual void switchToMinimizeLayout();
00353      void doResize();
00358      void doResize(bool captionOnly);
00359 
00360   protected slots:
00364      void maximizePressed();
00368      void restorePressed();
00372      void minimizePressed();
00376      void closePressed();
00380      void undockPressed();
00384      void showSystemMenu();
00385 
00386   protected:
00390      void linkChildren( QDict<FocusPolicy>* pFocPolDict);
00394      QDict<QWidget::FocusPolicy>* unlinkChildren();
00399      int getResizeCorner(int ax,int ay);
00400 
00401   private:
00402     KMdiChildFrmPrivate *d;
00403 };
00404 
00405 #endif //_KMDICHILDFRM_H_
00406 
00407 // kate: space-indent on; indent-width 2; replace-tabs on;
KDE Logo
This file is part of the documentation for kmdi Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Jan 21 09:58:40 2005 by doxygen 1.3.6 written by Dimitri van Heesch, © 1997-2003