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.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Aug 20 09:50:13 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003