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