/********* * * This file is part of BibleTime's source code, http://www.bibletime.info/. * * Copyright 1999-2006 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ #ifndef CMDIAREA_H #define CMDIAREA_H //BibleTime includes #include "util/cpointers.h" #include "backend/cswordmoduleinfo.h" //TQt includes #include #include #include #include class TDEPopupMenu; class CSwordModuleInfo; class CSwordKey; /** The MDI widget we use in BibleTime. * Enhances TQWorkspace. * @author The BibleTime Team */ class CMDIArea : public TQWorkspace, public CPointers { Q_OBJECT public: /** * The options you can set for this widget. */ enum MDIOption { autoTileVertical, autoTileHorizontal, autoCascade, Nothing }; CMDIArea(TQWidget *parent, const char *name = 0 ); /** */ void readSettings(); /** */ void saveSettings(); /** * Enable / disable autoCascading */ void setGUIOption( const MDIOption& newOption ); /** * This works around a problem/limitation in TQWorkspace. TQWorkspace sets every time the * application caption on its on way. This confuses BibleTime - wrong captions are generated. * This function returns the right caption (using the MDI child). */ inline const TQString currentApplicationCaption() const; void emitWindowCaptionChanged(); /** * Forces an update of the currently chosen window arrangement. */ void triggerWindowUpdate(); TQPtrList usableWindowList(); public slots: /** * Called whan a client window was activated */ void slotClientActivated(TQWidget* client); /** * Deletes all the presenters in the MDI area. */ void deleteAll(); /** Our own cascade version which, if only one window is left, shows this maximized. * Also necessary for autoCasacde feature */ void myCascade(); /** Our own cascade version which, if only one window is left, shows this maximized. * Also necessary for autoTile feature */ void myTileVertical(); /**Qt::Horizontal tile function * This function was taken from TQt's MDI example. */ void myTileHorizontal(); /** * Emits the signal to create a new display window in the MDI area. */ inline void emitCreateDisplayWindow( ListCSwordModuleInfo modules, const TQString keyName ); protected: // Protected methods /** * Used to make use of the fixedGUIOption part. */ virtual void childEvent (TQChildEvent * e); /** * Reimplementation */ virtual void resizeEvent(TQResizeEvent* e); /** * Initializes the connectiosn to SIGNALS */ void initConnections(); /** * Initializes the view of the MDI area */ void initView(); bool eventFilter( TQObject *o, TQEvent *e ); signals: // Signals /** * Emits a signal to set the acption of the toplevel widget. */ void sigSetToplevelCaption(const TQString&); /** * Is emitted when the last presenter was closed. */ void sigLastPresenterClosed(); void createReadDisplayWindow(ListCSwordModuleInfo modules, const TQString& keyName); private: MDIOption m_guiOption; bool m_childEvent; TQString m_appCaption; }; /** This works around a problem/limitation in TQWorkspace. TQWorkspace sets every time the application caption on its on way. This confuses BibleTime - wrong captions are generated. This function returns the right caption (using the MDI child). */ inline const TQString CMDIArea::currentApplicationCaption() const { return m_appCaption; } /** Emits the signal to create a new display window in the MDI area. */ inline void CMDIArea::emitCreateDisplayWindow( ListCSwordModuleInfo modules, const TQString keyName ) { emit createReadDisplayWindow(modules, keyName); } #endif