// NeL - MMORPG Framework // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . #ifndef NLQT_MAIN_WINDOW_H #define NLQT_MAIN_WINDOW_H #include // STL includes // Qt includes #include // NeL includes #include #include #include #include #include // Project includes #include "configuration.h" #include "internationalization.h" #include "sound_utilities.h" class QTreeView; class QDirModel; class QUndoStack; class QScrollArea; namespace NLMISC { class CConfigFile; } namespace NL3D { class UDriver; class UScene; class UTextContext; class UVisualCollisionManager; } namespace NLPACS { class UMoveContainer; class UGlobalRetriever; } namespace NLSOUND { class UAudioMixer; class CSoundAnimManager; } namespace NLQT { class CCommandLog; class CGraphicsViewport; class CGraphicsConfig; /** * CMainWindow * \brief CMainWindow * \date 2010-02-05 13:01GMT * \author Jan Boon (Kaetemi) */ class CMainWindow : public QMainWindow { Q_OBJECT public: CMainWindow(const QMap &customSizeHints, QWidget *parent = 0, Qt::WindowFlags flags = 0); virtual ~CMainWindow(); virtual void setVisible(bool visible); private slots: void applyGraphicsConfig(); // void applySoundConfig(); void about(); void updateRender(); void printDebug(); private: void updateInitialization(bool visible); void createActions(); void translateActions(); void createMenus(); void translateMenus(); void createToolBars(); void translateToolBars(); void createStatusBar(); void createDockWindows(); void translateDockWindows(); void recalculateMinimumWidth(); void cfcbQtStyle(NLMISC::CConfigFile::CVar &var); void cfcbQtPalette(NLMISC::CConfigFile::CVar &var); void cfcbSoundEnabled(NLMISC::CConfigFile::CVar &var); void incbLanguageCode(); private: CMainWindow(const CMainWindow &); CMainWindow &operator=(const CMainWindow &); private: CConfiguration m_Configuration; CInternationalization m_Internationalization; CSoundUtilities m_SoundUtilities; QUndoStack *m_UndoStack; QPalette m_OriginalPalette; bool m_IsGraphicsInitialized, m_IsGraphicsEnabled; bool m_IsSoundInitialized, m_IsSoundEnabled; CGraphicsViewport *m_GraphicsViewport; CCommandLog *m_CommandLog; QDockWidget *m_CommandLogDock; CGraphicsConfig *m_GraphicsConfig; QScrollArea *m_GraphicsConfigScroll; QDockWidget *m_GraphicsConfigDock; QTreeView *m_AssetTreeView; QDirModel *m_AssetTreeModel; QDockWidget *m_AssetTreeDock; QMenu *m_FileMenu; QMenu *m_EditMenu; QMenu *m_ViewportMenu; QMenu *m_WidgetsMenu; QMenu *m_HelpMenu; QToolBar *m_FileToolBar; QToolBar *m_EditToolBar; QAction *m_AboutAct; QAction *m_QuitAct; QAction *m_PrintDebugAct; QAction *m_UndoAct; QAction *m_RedoAct; QAction *m_SaveScreenshotAct; //NLMISC::CConfigFile *ConfigFile; // owned by CConfiguration //CLoadingScreen LoadingScreen; // owned by CLoading (special case, always available) //NL3D::UDriver *Driver; // owned by CGraphics //NL3D::UTextContext *TextContext; // owned by CGraphics //NLSOUND::UAudioMixer *AudioMixer; // owned by CSound //NLSOUND::CSoundAnimManager *SoundAnimManager; // owned by CSound //THCOMMON::CSheetLoader *SheetLoader; // owned by initSheets and releaseSheets //NL3D::UScene *Scene; // owned by CEnvironment //NLPACS::UMoveContainer *MoveContainer; // owned by CEnvironment //NLPACS::UGlobalRetriever *GlobalRetriever; /// The global retriever used for pacs // owned by CEnvironment //NL3D::UVisualCollisionManager *VisualCollisionManager; /// The collision manager for ground snapping // owned by CEnvironment //THCLIENT::CKeyBinder *KeyBinder; // owned by CInterface //NLMISC::TLocalTime LocalTime; // use for delta only // owned by CGameTime //NLMISC::TLocalTime LocalTimeDelta; // owned by CGameTime //NL3D::TGlobalAnimationTime AnimationTime; // owned by CGameTime //NL3D::TAnimationTime AnimationTimeDelta; // owned by CGameTime //float FramesPerSecond; // owned by CGameTime //float FramesPerSecondSmooth; // owned by CGameTime //NLMISC::CVector DetailTargetPosition; // player or camera position for lod improvements // owned by camera }; /* class CMainWindow */ } /* namespace NLQT */ #endif /* #ifndef NLQT_MAIN_WINDOW_H */ /* end of file */