kmdichildfrm.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 #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
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
00152 public:
00153 enum MdiWindowState { Normal,Maximized,Minimized };
00154
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
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*);
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
This file is part of the documentation for kmdi Library Version 3.2.3.