kmdichildview.h

00001 //----------------------------------------------------------------------------
00002 //    filename             : kmdichildview.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              : 02/2000       by Massimo Morin (mmorin@schedsys.com)
00013 //                           */2000        by Lars Beikirch (Lars.Beikirch@gmx.net)
00014 //                           02/2001       by Eva Brucherseifer (eva@rt.e-technik.tu-darmstadt.de)
00015 //                           01/2003       by Jens Zurheide (jens.zurheide@gmx.de)
00016 //
00017 //    copyright            : (C) 1999-2003 by Falk Brettschneider
00018 //                                         and
00019 //                                         Szymon Stefanek (stefanek@tin.it)
00020 //    email                :  falkbr@kdevelop.org (Falk Brettschneider)
00021 //----------------------------------------------------------------------------
00022 //
00023 //----------------------------------------------------------------------------
00024 //
00025 //    This program is free software; you can redistribute it and/or modify
00026 //    it under the terms of the GNU Library General Public License as
00027 //    published by the Free Software Foundation; either version 2 of the
00028 //    License, or (at your option) any later version.
00029 //
00030 //----------------------------------------------------------------------------
00031 #ifndef _KMDI_CHILD_VIEW_H_
00032 #define _KMDI_CHILD_VIEW_H_
00033 
00034 #include <qwidget.h>
00035 #include <qpixmap.h>
00036 #include <qrect.h>
00037 #include <qapplication.h>
00038 #include <qdatetime.h>
00039 
00040 #include "kmdichildfrm.h"
00041 
00042 class KMdiChildViewPrivate;
00043 
00108 class KMDI_EXPORT KMdiChildView : public QWidget
00109 {
00110     friend class KMdiMainFrm;
00111     friend class KMdiChildFrm;
00112     Q_OBJECT
00113 
00114     // attributes
00115 protected:
00119     QString m_szCaption;
00120     
00124     QString m_sTabCaption;
00125     
00129     QWidget* m_focusedChildWidget;
00130     
00134     QWidget* m_firstFocusableChildWidget;
00135     
00139     QWidget* m_lastFocusableChildWidget;
00140     
00144     int m_windowMenuID;
00145     
00150     bool m_stateChanged;
00151 
00155     QDateTime m_time;
00156 
00157 private:
00161     bool m_bToolView;
00162     
00168     bool m_bInterruptActivation;
00169     
00173     bool m_bMainframesActivateViewIsPending;
00174     
00178     bool m_bFocusInEventIsPending;
00179 
00180     // methods
00181 public:
00185     KMdiChildView( const QString& caption, QWidget* parentWidget = 0L, const char* name = 0L, WFlags f = 0 );
00186     
00191     KMdiChildView( QWidget* parentWidget = 0L, const char* name = 0L, WFlags f = 0 );
00192     
00196     ~KMdiChildView();
00197     
00206     void activate();
00207     
00211     void setFirstFocusableChildWidget( QWidget* );
00212     
00216     void setLastFocusableChildWidget( QWidget* );
00217     
00221     QWidget* focusedChildWidget();
00222     
00227     bool isAttached() const { return ( mdiParent() != 0L ); }
00228     
00232     const QString& caption() const { return m_szCaption; }
00233     
00237     const QString& tabCaption() const { return m_sTabCaption; }
00238     
00243     virtual void setCaption( const QString& szCaption );
00244     
00248     virtual void setTabCaption( const QString& caption );
00249     
00253     virtual void setMDICaption( const QString &caption );
00254     
00258     KMdiChildFrm *mdiParent() const;
00259     
00264     bool isMinimized() const;
00265     
00270     bool isMaximized() const;
00271     
00275     QRect internalGeometry() const;
00276     
00284     void setInternalGeometry( const QRect& newGeomety );
00285     
00289     QRect externalGeometry() const;
00290     
00298     void setExternalGeometry( const QRect& newGeomety );
00299     
00303     virtual QPixmap* myIconPtr();
00304     
00309     virtual void minimize( bool bAnimate );
00310     
00315     virtual void maximize( bool bAnimate );
00316     
00320     QRect restoreGeometry();
00321     
00325     void setRestoreGeometry( const QRect& newRestGeo );
00326     
00330     void removeEventFilterForAllChildren();
00331     
00335     void setWindowMenuID( int id );
00336     
00342     virtual void setMinimumSize ( int minw, int minh );
00343     
00349     virtual void setMaximumSize ( int maxw, int maxh );
00350     
00354     inline bool isToolView() const { return m_bToolView; }
00355     
00359     inline void updateTimeStamp()
00360     {
00361         m_time.setDate( QDate::currentDate() );
00362         m_time.setTime( QTime::currentTime() );
00363     }
00364     
00368     inline const QDateTime& getTimeStamp() const { return m_time; }
00369 
00370 public slots:
00376     virtual void attach();
00377     
00383     virtual void detach();
00384     
00390     virtual void minimize();
00391     
00397     virtual void maximize();
00398     
00402     virtual void restore();
00403     
00408     virtual void youAreAttached( KMdiChildFrm *lpC );
00409     
00414     virtual void youAreDetached();
00415     
00419     virtual void slot_clickedInWindowMenu();
00420     
00424     virtual void slot_clickedInDockMenu();
00425     
00429     virtual void show();
00430     
00434     virtual void hide();
00435     
00439     virtual void raise();
00440     
00445     virtual void showMinimized();
00446     
00451     virtual void showMaximized();
00452     
00457     virtual void showNormal();
00458     
00459 
00460 protected:
00465     virtual void closeEvent( QCloseEvent *e );
00466     
00473     virtual bool eventFilter( QObject *obj, QEvent *e );
00474     
00481     virtual void focusInEvent( QFocusEvent *e );
00482     
00486     virtual void focusOutEvent( QFocusEvent *e );
00487     
00491     virtual void resizeEvent( QResizeEvent *e );
00492 
00493     void trackIconAndCaptionChanges( QWidget *view );
00494 
00495 protected slots:
00496     void slot_childDestroyed();
00497 
00498 signals:
00502     void attachWindow( KMdiChildView*, bool );
00503     
00507     void detachWindow( KMdiChildView*, bool );
00508     
00514     void focusInEventOccurs( KMdiChildView* );
00515     
00520     void gotFocus( KMdiChildView* );
00521     
00526     void activated( KMdiChildView* );
00527     
00531     void lostFocus( KMdiChildView* );
00532     
00536     void deactivated( KMdiChildView* );
00537     
00542     void childWindowCloseRequest( KMdiChildView* );
00543     
00547     void windowCaptionChanged( const QString& );
00548     
00552     void tabCaptionChanged( const QString& );
00553     
00558     void mdiParentNowMaximized( bool );
00559     
00563     void clickedInWindowMenu( int );
00564     
00568     void clickedInDockMenu( int );
00569     
00573     void isMaximizedNow();
00574     
00578     void isMinimizedNow();
00579     
00583     void isRestoredNow();
00584     
00588     void isAttachedNow();
00589     
00593     void isDetachedNow();
00594 
00595     void iconUpdated( QWidget*, QPixmap );
00596     void captionUpdated( QWidget*, const QString& );
00597 
00598 
00599 private:
00600     KMdiChildViewPrivate *d;
00601     QWidget *m_trackChanges;
00602 };
00603 
00604 inline KMdiChildFrm *KMdiChildView::mdiParent() const
00605 {
00606     QWidget * pw = parentWidget();
00607     if ( pw != 0L )
00608         if ( pw->inherits( "KMdiChildFrm" ) )
00609             return ( KMdiChildFrm * ) pw;
00610     return 0L;
00611 }
00612 
00613 #endif //_KMDICHILDVIEW_H_
00614 
00615 // kate: space-indent off; replace-tabs off; indent-mode csands; tab-width 4;
KDE Home | KDE Accessibility Home | Description of Access Keys