/********* * * 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 CDISPLAYWINDOW_H #define CDISPLAYWINDOW_H //BibleTime includes #include "util/cpointers.h" #include "backend/cswordmoduleinfo.h" #include "backend/cswordbackend.h" #include "backend/cswordkey.h" #include "backend/cswordversekey.h" #include "backend/cswordtreekey.h" #include "backend/cswordldkey.h" #include "frontend/cprofilewindow.h" //TQt includes #include //TDE includes #include //Forward declarations class CMDIArea; class CReadWindow; class CWriteWindow; class CMDIArea; class CDisplaySettingsButton; class CDisplay; class CKeyChooser; class CModuleChooserBar; class CDisplaySettingsButton; class TDEAccel; class TDEToolBar; class TDEPopupMenu; /** The base class for all display windows of BibleTime. * @author The BibleTime team */ class CDisplayWindow : public TDEMainWindow, public CPointers { TQ_OBJECT public: enum WriteWindowType { HTMLWindow = 1, PlainTextWindow = 2 }; static CReadWindow* createReadInstance(ListCSwordModuleInfo modules, CMDIArea* parent, const char* name = 0); static CWriteWindow* createWriteInstance(ListCSwordModuleInfo modules, CMDIArea* parent, const WriteWindowType type = HTMLWindow, const char* name = 0); /** * Insert the keyboard accelerators of this window into the given TDEAccel object. */ // static void insertKeyboardActions( TDEAccel* const accel ); static void insertKeyboardActions( TDEActionCollection* const a ); CMDIArea* const mdi() const; /** * Returns the right window caption. */ const TQString windowCaption(); /** * Returns the used modules as a TQPtrList */ ListCSwordModuleInfo modules(); /** * Store the settings of this window in the given CProfileWindow object. */ virtual void storeProfileSettings( Profile::CProfileWindow* profileWindow ) = 0; /** * Store the settings of this window in the given profile window. */ virtual void applyProfileSettings( Profile::CProfileWindow* profileWindow ) = 0; /** * Set the window caption. */ virtual void setCaption( const TQString& ); /** * Sets the new filter options of this window. */ void setFilterOptions( CSwordBackend::FilterOptions& filterOptions ); /** * Sets the new display options for this window. */ void setDisplayOptions( const CSwordBackend::DisplayOptions& displayOptions ); /** * Returns the display options used by this display window. */ CSwordBackend::DisplayOptions& displayOptions(); /** * Returns the filter options used by this window. */ CSwordBackend::FilterOptions& filterOptions(); /** * Set the ready status */ void setReady( const bool& ready ); /** * Returns true if the widget is ready for use. */ const bool isReady() const; /** * Returns true if the window may be closed. */ virtual bool queryClose(); /** * Returns the keychooser widget of this display window. */ CKeyChooser* const keyChooser() const; /** * Sets the new sword key. */ void setKey( CSwordKey* key ); /** * Returns the key of this display window. */ CSwordKey* key() const; /** * Initialize the window. Call this method from the outside, because calling this in the constructor is not possible! */ virtual const bool init(); /** * Sets the main toolbar. */ void setMainToolBar( TDEToolBar* bar ); /** * Sets the buttons toolbar. */ void setButtonsToolBar( TDEToolBar* bar ); /** * Returns the main toolbar. */ TDEToolBar* const mainToolBar() const; /** * Returns the buttons toolbar. */ TDEToolBar* const buttonsToolBar() const; /** * Initialize the toolbars */ virtual void initToolbars() = 0; /** * Returns the display settings button */ CDisplaySettingsButton* const displaySettingsButton() const; /** * Sets the display settings button. */ void setDisplaySettingsButton( CDisplaySettingsButton* button ); virtual void setupPopupMenu() = 0; /** * Returns the display widget used by this implementation of CDisplayWindow. */ virtual CDisplay* const displayWidget() const; /** * Sets the display widget used by this display window. */ virtual void setDisplayWidget( CDisplay* newDisplay ); /** Returns whether syncs to the active window are allowed at this time for this display window * @return boolean value whether sync is allowed */ virtual const bool syncAllowed() const { return false; }; public slots: /** * Lookup the specified key in the given module. If the module is not chosen withing * this display window create a new displaywindow with the right module in it. */ virtual void lookup( const TQString& module, const TQString& key ); /** * Lookup the key in the chosen modules. */ virtual void lookup( const TQString& key ); /** * Refresh the settings of this window. */ virtual void reload(); protected: friend class CMDIArea; friend class CBibleReadWindow; CDisplayWindow(ListCSwordModuleInfo modules, CMDIArea* parent, const char *name=0); virtual ~CDisplayWindow(); /** * Initializes the intern keyboard actions. */ virtual void initActions(); /** Is called when this window gets the focus or looses the focus. */ virtual void windowActivated( const bool hasFocus ); /** * Sets the keychooser widget for this display window. */ void setKeyChooser( CKeyChooser* ck ); /** * Returns the module chooser bar. */ CModuleChooserBar* const moduleChooserBar() const; /** * Lookup the given key. */ virtual void lookup( CSwordKey* ) = 0; /** * Sets the module chooser bar. */ void setModuleChooserBar( CModuleChooserBar* bar ); /** * Sets the modules. */ void setModules( const ListCSwordModuleInfo& modules ); /** * Initializes the signal / slot connections of this display window. */ virtual void initConnections() = 0; /** * Initialize the view of this display window. */ virtual void initView() = 0; /** * Returns the installed popup menu. */ TDEPopupMenu* const popup(); virtual void closeEvent(TQCloseEvent* e); protected slots: virtual void modulesChanged(); /** * Lookup the current key. Used to refresh the display. */ void lookup(); virtual void updatePopupMenu(); void slotSearchInModules(); void printAll(); void printAnchorWithText(); private: CMDIArea* m_mdi; //we may only cache the module names bacause after a backend relaod the pointers are invalid! TQStringList m_modules; CSwordBackend::FilterOptions m_filterOptions; CSwordBackend::DisplayOptions m_displayOptions; CDisplaySettingsButton* m_displaySettingsButton; CKeyChooser* m_keyChooser; CSwordKey* m_swordKey; bool m_isReady; CModuleChooserBar* m_moduleChooserBar; TDEToolBar* m_mainToolBar; TDEToolBar* m_buttonsToolBar; TDEPopupMenu* m_popupMenu; CDisplay* m_displayWidget; }; #endif