diff --git a/code/ryzom/tools/client/client_config_qt/CMakeLists.txt b/code/ryzom/tools/client/client_config_qt/CMakeLists.txt index c69bb6aed..87c5d7b05 100644 --- a/code/ryzom/tools/client/client_config_qt/CMakeLists.txt +++ b/code/ryzom/tools/client/client_config_qt/CMakeLists.txt @@ -1,57 +1,57 @@ -INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} - ${QT_INCLUDES} ) - -FILE( GLOB SRC *.cpp *.h ) - -SET( CLIENT_CONFIG_HDR - client_config_dialog.h - display_settings_advanced_widget.h - display_settings_details_widget.h - display_settings_widget.h - general_settings_widget.h - sound_settings_widget.h - sys_info_d3d_widget.h - sys_info_opengl_widget.h - sys_info_widget.h - widget_base.h -) - -SET( CLIENT_CONFIG_UIS - client_config_dialog.ui - display_settings_advanced_widget.ui - display_settings_details_widget.ui - display_settings_widget.ui - general_settings_widget.ui - sound_settings_widget.ui - sys_info_d3d_widget.ui - sys_info_opengl_widget.ui - sys_info_widget.ui -) - -SET( CLIENT_CONFIG_TRANS - translations/ryzom_configuration_en.ts - translations/ryzom_configuration_hu.ts -) - -CONFIGURE_FILE( translations/translations.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc COPYONLY ) -SET( CLIENT_CONFIG_RCS resources.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc ) -SET( QT_USE_QTGUI TRUE ) -SET( QT_USE_QTOPENGL TRUE ) -SET( QT_USE_QTCORE TRUE ) -QT4_ADD_TRANSLATION( CLIENT_CONFIG_QM ${CLIENT_CONFIG_TRANS} ) -QT4_ADD_RESOURCES( CLIENT_CONFIG_RC_SRCS ${CLIENT_CONFIG_RCS} ) -QT4_WRAP_CPP( CLIENT_CONFIG_MOC_SRC ${CLIENT_CONFIG_HDR} ) -QT4_WRAP_UI( CLIENT_CONFIG_UI_HDRS ${CLIENT_CONFIG_UIS} ) -SOURCE_GROUP( "Resources" FILES ${CLIENT_CONFIG_RCS} ) -SOURCE_GROUP( "Forms" FILES ${CLIENT_CONFIG_UIS} ) -SOURCE_GROUP( "Generated Files" FILES ${CLIENT_CONFIG_UI_HDRS} ${CLIENT_CONFIG_MOC_SRC} ) -SOURCE_GROUP( "Translation Files" FILES ${CLIENT_CONFIG_TRANS} ) -ADD_DEFINITIONS( ${QT_DEFINITIONS} ) -ADD_EXECUTABLE( ryzom_configuration_qt WIN32 MACOSX_BUNDLE ${SRC} ${CLIENT_CONFIG_MOC_SRC} ${CLIENT_CONFIG_UI_HDRS} ${CLIENT_CONFIG_RC_SRCS} ${CLIENT_CONFIG_TRANS} ) -NL_DEFAULT_PROPS( ryzom_configuration_qt "Ryzom, Tools: Ryzom Configuration Qt" ) -NL_ADD_RUNTIME_FLAGS( ryzom_configuration_qt ) -NL_ADD_LIB_SUFFIX( ryzom_configuration_qt ) -TARGET_LINK_LIBRARIES( ryzom_configuration_qt nelmisc nel3d ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTOPENGL_LIBRARY} ${OPENGL_gl_LIBRARY} ) -INSTALL( TARGETS ryzom_configuration_qt RUNTIME DESTINATION games COMPONENT client BUNDLE DESTINATION /Applications ) - +INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${QT_INCLUDES} ) + +FILE( GLOB SRC *.cpp *.h ) + +SET( CLIENT_CONFIG_HDR + client_config_dialog.h + display_settings_advanced_widget.h + display_settings_details_widget.h + display_settings_widget.h + general_settings_widget.h + sound_settings_widget.h + sys_info_d3d_widget.h + sys_info_opengl_widget.h + sys_info_widget.h + widget_base.h +) + +SET( CLIENT_CONFIG_UIS + client_config_dialog.ui + display_settings_advanced_widget.ui + display_settings_details_widget.ui + display_settings_widget.ui + general_settings_widget.ui + sound_settings_widget.ui + sys_info_d3d_widget.ui + sys_info_opengl_widget.ui + sys_info_widget.ui +) + +SET( CLIENT_CONFIG_TRANS + translations/ryzom_configuration_en.ts + translations/ryzom_configuration_hu.ts +) + +CONFIGURE_FILE( translations/translations.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc COPYONLY ) +SET( CLIENT_CONFIG_RCS resources.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc ) +SET( QT_USE_QTGUI TRUE ) +SET( QT_USE_QTOPENGL TRUE ) +SET( QT_USE_QTCORE TRUE ) +QT4_ADD_TRANSLATION( CLIENT_CONFIG_QM ${CLIENT_CONFIG_TRANS} ) +QT4_ADD_RESOURCES( CLIENT_CONFIG_RC_SRCS ${CLIENT_CONFIG_RCS} ) +QT4_WRAP_CPP( CLIENT_CONFIG_MOC_SRC ${CLIENT_CONFIG_HDR} ) +QT4_WRAP_UI( CLIENT_CONFIG_UI_HDRS ${CLIENT_CONFIG_UIS} ) +SOURCE_GROUP( "Resources" FILES ${CLIENT_CONFIG_RCS} ) +SOURCE_GROUP( "Forms" FILES ${CLIENT_CONFIG_UIS} ) +SOURCE_GROUP( "Generated Files" FILES ${CLIENT_CONFIG_UI_HDRS} ${CLIENT_CONFIG_MOC_SRC} ) +SOURCE_GROUP( "Translation Files" FILES ${CLIENT_CONFIG_TRANS} ) +ADD_DEFINITIONS( ${QT_DEFINITIONS} ) +ADD_EXECUTABLE( ryzom_configuration_qt WIN32 MACOSX_BUNDLE ${SRC} ${CLIENT_CONFIG_MOC_SRC} ${CLIENT_CONFIG_UI_HDRS} ${CLIENT_CONFIG_RC_SRCS} ${CLIENT_CONFIG_TRANS} ) +NL_DEFAULT_PROPS( ryzom_configuration_qt "Ryzom, Tools: Ryzom Configuration Qt" ) +NL_ADD_RUNTIME_FLAGS( ryzom_configuration_qt ) +NL_ADD_LIB_SUFFIX( ryzom_configuration_qt ) +TARGET_LINK_LIBRARIES( ryzom_configuration_qt nelmisc nel3d ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTOPENGL_LIBRARY} ${OPENGL_gl_LIBRARY} ) +INSTALL( TARGETS ryzom_configuration_qt RUNTIME DESTINATION games COMPONENT client BUNDLE DESTINATION /Applications ) + diff --git a/code/ryzom/tools/client/client_config_qt/client_config_dialog.cpp b/code/ryzom/tools/client/client_config_qt/client_config_dialog.cpp index 2f1e2225f..5c6801152 100644 --- a/code/ryzom/tools/client/client_config_qt/client_config_dialog.cpp +++ b/code/ryzom/tools/client/client_config_qt/client_config_dialog.cpp @@ -1,259 +1,259 @@ -// Ryzom - 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 . - -#include "client_config_dialog.h" - -#include "general_settings_widget.h" -#include "display_settings_widget.h" -#include "display_settings_details_widget.h" -#include "display_settings_advanced_widget.h" -#include "sound_settings_widget.h" -#include "sys_info_widget.h" -#include "sys_info_opengl_widget.h" -#include "sys_info_d3d_widget.h" - -#include "system.h" - -#include - -CClientConfigDialog::CClientConfigDialog( QWidget *parent ) : - QDialog( parent ) -{ - setupUi( this ); - connect( buttonBox->button( QDialogButtonBox::Cancel ), SIGNAL( clicked() ), this, SLOT( close() ) ); - connect( buttonBox->button( QDialogButtonBox::Ok ), SIGNAL( clicked() ), this, SLOT( onClickOK() ) ); - connect( applyButton, SIGNAL( clicked() ), this, SLOT( onClickApply() ) ); - connect( defaultButton, SIGNAL( clicked() ), this, SLOT( onClickDefault() ) ); - connect( playButton, SIGNAL( clicked() ), this, SLOT( onClickPlay() ) ); - connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), - this, SLOT( onClickCategory( QTreeWidgetItem * ) ) ); - - // General - QTreeWidgetItem *item = treeWidget->topLevelItem( 0 ); - item->setData( 0, Qt::UserRole, 0 ); - - // Display - item = treeWidget->topLevelItem( 1 ); - item->setData( 0, Qt::UserRole, 1 ); - - // Display details - item = treeWidget->topLevelItem( 1 )->child( 0 ); - item->setData( 0, Qt::UserRole, 2 ); - - // Display advanced - item = treeWidget->topLevelItem( 1 )->child( 1 ); - item->setData( 0, Qt::UserRole, 3 ); - - // Sound - item = treeWidget->topLevelItem( 2 ); - item->setData( 0, Qt::UserRole, 4 ); - - // System information - item = treeWidget->topLevelItem( 3 ); - item->setData( 0, Qt::UserRole, 5 ); - - // OpenGL info - item = treeWidget->topLevelItem( 3 )->child( 0 ); - item->setData( 0, Qt::UserRole, 6 ); - - // Direct3D info - item = treeWidget->topLevelItem( 3 )->child( 1 ); - item->setData( 0, Qt::UserRole, 7 ); - - - CategoryStackedWidget->addWidget( new CGeneralSettingsWidget( CategoryStackedWidget ) ); - CategoryStackedWidget->addWidget( new CDisplaySettingsWidget( CategoryStackedWidget ) ); - CategoryStackedWidget->addWidget( new CDisplaySettingsDetailsWidget( CategoryStackedWidget ) ); - CategoryStackedWidget->addWidget( new CDisplaySettingsAdvancedWidget( CategoryStackedWidget ) ); - CategoryStackedWidget->addWidget( new CSoundSettingsWidget( CategoryStackedWidget ) ); - CategoryStackedWidget->addWidget( new CSysInfoWidget( CategoryStackedWidget ) ); - CategoryStackedWidget->addWidget( new CSysInfoOpenGLWidget( CategoryStackedWidget ) ); - CategoryStackedWidget->addWidget( new CSysInfoD3DWidget( CategoryStackedWidget ) ); - - for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ ) - { - QWidget *w = CategoryStackedWidget->widget( i ); - - // The sysinfo pages are not derived from CWidgetBase, so they don't have this signal! - if( qobject_cast< CWidgetBase * >( w ) == NULL ) - continue; - - connect( w, SIGNAL( changed() ), this, SLOT( onSomethingChanged() ) ); - } - - applyButton->setEnabled( false ); -} - -CClientConfigDialog::~CClientConfigDialog() -{ -} - -void CClientConfigDialog::closeEvent( QCloseEvent *event ) -{ - if( isOKToQuit() ) - event->accept(); - else - event->ignore(); -} - -void CClientConfigDialog::changeEvent( QEvent *event ) -{ - if( event->type() == QEvent::LanguageChange ) - { - int pageIndex = CategoryStackedWidget->currentIndex(); - // Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget - disconnect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), - this, SLOT( onClickCategory( QTreeWidgetItem * ) ) ); - - retranslateUi( this ); - - connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), - this, SLOT( onClickCategory( QTreeWidgetItem * ) ) ); - - CategoryStackedWidget->setCurrentIndex( pageIndex ); - } - - QDialog::changeEvent( event ); -} - -void CClientConfigDialog::onClickOK() -{ - saveChanges(); - // Since we use the apply button's enabled state to check for unsaved changes on quit, we disable it - applyButton->setEnabled( false ); - close(); -} - -void CClientConfigDialog::onClickApply() -{ - saveChanges(); - applyButton->setEnabled( false ); -} - -void CClientConfigDialog::onClickDefault() -{ - CSystem::GetInstance().config.revertToDefault(); - CSystem::GetInstance().config.save(); - reloadPages(); - applyButton->setEnabled( false ); -} - -void CClientConfigDialog::onClickPlay() -{ - bool started = false; - -#ifdef WIN32 - started = QProcess::startDetached( "ryzom_client_r.exe" ); - if( !started ) - QProcess::startDetached( "ryzom_client_rd.exe" ); - if( !started ) - QProcess::startDetached( "ryzom_client_d.exe" ); -#else - started = QProcess::startDetached( "./ryzom_client_r" ); - if( !started ) - QProcess::startDetached( "./ryzom_client_rd" ); - if( !started ) - QProcess::startDetached( "./ryzom_client_d" ); -#endif - - onClickOK(); -} - -void CClientConfigDialog::onClickCategory( QTreeWidgetItem *item ) -{ - if( item == NULL ) - return; - - static const char *iconNames[] = - { - ":/resources/general_icon.bmp", - ":/resources/display_icon.bmp", - ":/resources/display_properties_icon.bmp", - ":/resources/display_config_icon.bmp", - ":/resources/sound_icon.bmp", - ":/resources/general_icon.bmp", - ":/resources/card_icon.bmp", - ":/resources/card_icon.bmp" - }; - - sint32 index = item->data( 0, Qt::UserRole ).toInt(); - - if( ( index < 0 ) || ( index > 7 ) ) - return; - - CategoryStackedWidget->setCurrentIndex( index ); - categoryLabel->setText( item->text( 0 ) ); - topleftIcon->setPixmap( QPixmap( QString::fromUtf8( iconNames[ index ] ) ) ); -} - -void CClientConfigDialog::onSomethingChanged() -{ - applyButton->setEnabled( true ); -} - -void CClientConfigDialog::saveChanges() -{ - // First we tell the pages to save their changes into the cached config file - for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ ) - { - QWidget *w = CategoryStackedWidget->widget( i ); - CWidgetBase *wb = qobject_cast< CWidgetBase * >( w ); - - // The system information pages are not derived from CWidgetBase, so they can't save! - if( wb == NULL ) - continue; - - wb->save(); - } - - // Then we write the cache to the disk - CSystem::GetInstance().config.save(); -} - -void CClientConfigDialog::reloadPages() -{ - for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ ) - { - QWidget *w = CategoryStackedWidget->widget( i ); - CWidgetBase *wb = qobject_cast< CWidgetBase * >( w ); - - // The system information pages are not derived from CWidgetBase, so they can't load! - if( wb == NULL ) - continue; - - wb->load(); - } -} - -bool CClientConfigDialog::isOKToQuit() -{ - // If the apply button is enabled we have unsaved changes - if( applyButton->isEnabled() ) - { - sint32 r = QMessageBox::warning( - this, - tr( "Ryzom configuration" ), - tr( "Are you sure you want to quit without saving the configuration?" ), - QMessageBox::Yes | QMessageBox::No - ); - - if( r == QMessageBox::No ) - return false; - } - - return true; -} - +// Ryzom - 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 . + +#include "client_config_dialog.h" + +#include "general_settings_widget.h" +#include "display_settings_widget.h" +#include "display_settings_details_widget.h" +#include "display_settings_advanced_widget.h" +#include "sound_settings_widget.h" +#include "sys_info_widget.h" +#include "sys_info_opengl_widget.h" +#include "sys_info_d3d_widget.h" + +#include "system.h" + +#include + +CClientConfigDialog::CClientConfigDialog( QWidget *parent ) : + QDialog( parent ) +{ + setupUi( this ); + connect( buttonBox->button( QDialogButtonBox::Cancel ), SIGNAL( clicked() ), this, SLOT( close() ) ); + connect( buttonBox->button( QDialogButtonBox::Ok ), SIGNAL( clicked() ), this, SLOT( onClickOK() ) ); + connect( applyButton, SIGNAL( clicked() ), this, SLOT( onClickApply() ) ); + connect( defaultButton, SIGNAL( clicked() ), this, SLOT( onClickDefault() ) ); + connect( playButton, SIGNAL( clicked() ), this, SLOT( onClickPlay() ) ); + connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), + this, SLOT( onClickCategory( QTreeWidgetItem * ) ) ); + + // General + QTreeWidgetItem *item = treeWidget->topLevelItem( 0 ); + item->setData( 0, Qt::UserRole, 0 ); + + // Display + item = treeWidget->topLevelItem( 1 ); + item->setData( 0, Qt::UserRole, 1 ); + + // Display details + item = treeWidget->topLevelItem( 1 )->child( 0 ); + item->setData( 0, Qt::UserRole, 2 ); + + // Display advanced + item = treeWidget->topLevelItem( 1 )->child( 1 ); + item->setData( 0, Qt::UserRole, 3 ); + + // Sound + item = treeWidget->topLevelItem( 2 ); + item->setData( 0, Qt::UserRole, 4 ); + + // System information + item = treeWidget->topLevelItem( 3 ); + item->setData( 0, Qt::UserRole, 5 ); + + // OpenGL info + item = treeWidget->topLevelItem( 3 )->child( 0 ); + item->setData( 0, Qt::UserRole, 6 ); + + // Direct3D info + item = treeWidget->topLevelItem( 3 )->child( 1 ); + item->setData( 0, Qt::UserRole, 7 ); + + + CategoryStackedWidget->addWidget( new CGeneralSettingsWidget( CategoryStackedWidget ) ); + CategoryStackedWidget->addWidget( new CDisplaySettingsWidget( CategoryStackedWidget ) ); + CategoryStackedWidget->addWidget( new CDisplaySettingsDetailsWidget( CategoryStackedWidget ) ); + CategoryStackedWidget->addWidget( new CDisplaySettingsAdvancedWidget( CategoryStackedWidget ) ); + CategoryStackedWidget->addWidget( new CSoundSettingsWidget( CategoryStackedWidget ) ); + CategoryStackedWidget->addWidget( new CSysInfoWidget( CategoryStackedWidget ) ); + CategoryStackedWidget->addWidget( new CSysInfoOpenGLWidget( CategoryStackedWidget ) ); + CategoryStackedWidget->addWidget( new CSysInfoD3DWidget( CategoryStackedWidget ) ); + + for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ ) + { + QWidget *w = CategoryStackedWidget->widget( i ); + + // The sysinfo pages are not derived from CWidgetBase, so they don't have this signal! + if( qobject_cast< CWidgetBase * >( w ) == NULL ) + continue; + + connect( w, SIGNAL( changed() ), this, SLOT( onSomethingChanged() ) ); + } + + applyButton->setEnabled( false ); +} + +CClientConfigDialog::~CClientConfigDialog() +{ +} + +void CClientConfigDialog::closeEvent( QCloseEvent *event ) +{ + if( isOKToQuit() ) + event->accept(); + else + event->ignore(); +} + +void CClientConfigDialog::changeEvent( QEvent *event ) +{ + if( event->type() == QEvent::LanguageChange ) + { + int pageIndex = CategoryStackedWidget->currentIndex(); + // Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget + disconnect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), + this, SLOT( onClickCategory( QTreeWidgetItem * ) ) ); + + retranslateUi( this ); + + connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), + this, SLOT( onClickCategory( QTreeWidgetItem * ) ) ); + + CategoryStackedWidget->setCurrentIndex( pageIndex ); + } + + QDialog::changeEvent( event ); +} + +void CClientConfigDialog::onClickOK() +{ + saveChanges(); + // Since we use the apply button's enabled state to check for unsaved changes on quit, we disable it + applyButton->setEnabled( false ); + close(); +} + +void CClientConfigDialog::onClickApply() +{ + saveChanges(); + applyButton->setEnabled( false ); +} + +void CClientConfigDialog::onClickDefault() +{ + CSystem::GetInstance().config.revertToDefault(); + CSystem::GetInstance().config.save(); + reloadPages(); + applyButton->setEnabled( false ); +} + +void CClientConfigDialog::onClickPlay() +{ + bool started = false; + +#ifdef WIN32 + started = QProcess::startDetached( "ryzom_client_r.exe" ); + if( !started ) + QProcess::startDetached( "ryzom_client_rd.exe" ); + if( !started ) + QProcess::startDetached( "ryzom_client_d.exe" ); +#else + started = QProcess::startDetached( "./ryzom_client_r" ); + if( !started ) + QProcess::startDetached( "./ryzom_client_rd" ); + if( !started ) + QProcess::startDetached( "./ryzom_client_d" ); +#endif + + onClickOK(); +} + +void CClientConfigDialog::onClickCategory( QTreeWidgetItem *item ) +{ + if( item == NULL ) + return; + + static const char *iconNames[] = + { + ":/resources/general_icon.bmp", + ":/resources/display_icon.bmp", + ":/resources/display_properties_icon.bmp", + ":/resources/display_config_icon.bmp", + ":/resources/sound_icon.bmp", + ":/resources/general_icon.bmp", + ":/resources/card_icon.bmp", + ":/resources/card_icon.bmp" + }; + + sint32 index = item->data( 0, Qt::UserRole ).toInt(); + + if( ( index < 0 ) || ( index > 7 ) ) + return; + + CategoryStackedWidget->setCurrentIndex( index ); + categoryLabel->setText( item->text( 0 ) ); + topleftIcon->setPixmap( QPixmap( QString::fromUtf8( iconNames[ index ] ) ) ); +} + +void CClientConfigDialog::onSomethingChanged() +{ + applyButton->setEnabled( true ); +} + +void CClientConfigDialog::saveChanges() +{ + // First we tell the pages to save their changes into the cached config file + for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ ) + { + QWidget *w = CategoryStackedWidget->widget( i ); + CWidgetBase *wb = qobject_cast< CWidgetBase * >( w ); + + // The system information pages are not derived from CWidgetBase, so they can't save! + if( wb == NULL ) + continue; + + wb->save(); + } + + // Then we write the cache to the disk + CSystem::GetInstance().config.save(); +} + +void CClientConfigDialog::reloadPages() +{ + for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ ) + { + QWidget *w = CategoryStackedWidget->widget( i ); + CWidgetBase *wb = qobject_cast< CWidgetBase * >( w ); + + // The system information pages are not derived from CWidgetBase, so they can't load! + if( wb == NULL ) + continue; + + wb->load(); + } +} + +bool CClientConfigDialog::isOKToQuit() +{ + // If the apply button is enabled we have unsaved changes + if( applyButton->isEnabled() ) + { + sint32 r = QMessageBox::warning( + this, + tr( "Ryzom configuration" ), + tr( "Are you sure you want to quit without saving the configuration?" ), + QMessageBox::Yes | QMessageBox::No + ); + + if( r == QMessageBox::No ) + return false; + } + + return true; +} + diff --git a/code/ryzom/tools/client/client_config_qt/client_config_dialog.h b/code/ryzom/tools/client/client_config_qt/client_config_dialog.h index f4902b3f3..d9855afc0 100644 --- a/code/ryzom/tools/client/client_config_qt/client_config_dialog.h +++ b/code/ryzom/tools/client/client_config_qt/client_config_dialog.h @@ -1,67 +1,67 @@ -// Ryzom - 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 CLIENT_CONFIG_DIALOG_H -#define CLIENT_CONFIG_DIALOG_H - -#include "ui_client_config_dialog.h" - -/** - @brief The main dialog of the configuration tool - @details Sets up and controls the configuration pages, sets up navigation, - sets up the ok, cancel, apply, etc buttons. -*/ -class CClientConfigDialog : public QDialog, public Ui::client_config_dialog -{ - Q_OBJECT - -public: - CClientConfigDialog( QWidget *parent = NULL ); - ~CClientConfigDialog(); - -protected: - void closeEvent( QCloseEvent *event ); - void changeEvent( QEvent *event ); - -private slots: - //////////////////////////// Main dialog buttons ///////////////////// - void onClickOK(); - void onClickApply(); - void onClickDefault(); - void onClickPlay(); - ////////////////////////////////////////////////////////////////////// - void onClickCategory( QTreeWidgetItem *item ); - void onSomethingChanged(); - -private: - /** - @brief Tells the config pages to save their changes into the config file - */ - void saveChanges(); - - /** - @brief Reloads the pages' contents from the config file. - */ - void reloadPages(); - - /** - @brief Checks if it's OK to quit the application, may query the user - @return Returns true if it's OK to quit, returns false otherwise. - */ - bool isOKToQuit(); -}; - -#endif // CLIENT_CONFIG_DIALOG_H +// Ryzom - 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 CLIENT_CONFIG_DIALOG_H +#define CLIENT_CONFIG_DIALOG_H + +#include "ui_client_config_dialog.h" + +/** + @brief The main dialog of the configuration tool + @details Sets up and controls the configuration pages, sets up navigation, + sets up the ok, cancel, apply, etc buttons. +*/ +class CClientConfigDialog : public QDialog, public Ui::client_config_dialog +{ + Q_OBJECT + +public: + CClientConfigDialog( QWidget *parent = NULL ); + ~CClientConfigDialog(); + +protected: + void closeEvent( QCloseEvent *event ); + void changeEvent( QEvent *event ); + +private slots: + //////////////////////////// Main dialog buttons ///////////////////// + void onClickOK(); + void onClickApply(); + void onClickDefault(); + void onClickPlay(); + ////////////////////////////////////////////////////////////////////// + void onClickCategory( QTreeWidgetItem *item ); + void onSomethingChanged(); + +private: + /** + @brief Tells the config pages to save their changes into the config file + */ + void saveChanges(); + + /** + @brief Reloads the pages' contents from the config file. + */ + void reloadPages(); + + /** + @brief Checks if it's OK to quit the application, may query the user + @return Returns true if it's OK to quit, returns false otherwise. + */ + bool isOKToQuit(); +}; + +#endif // CLIENT_CONFIG_DIALOG_H diff --git a/code/ryzom/tools/client/client_config_qt/config.cpp b/code/ryzom/tools/client/client_config_qt/config.cpp index f215a87ff..93a757b27 100644 --- a/code/ryzom/tools/client/client_config_qt/config.cpp +++ b/code/ryzom/tools/client/client_config_qt/config.cpp @@ -1,255 +1,255 @@ -// Ryzom - 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 . - -#include "Config.h" - -CConfig::CConfig() -{ -} - -CConfig::~CConfig() -{ -} - -bool CConfig::load( const char *fileName ) -{ - try - { - cf.load( fileName ); - - std::string def = getString( "RootConfigFilename" ); - if( def.compare( "" ) != 0 ) - dcf.load( def ); - } - catch( NLMISC::Exception &e ) - { - nlwarning( "%s", e.what() ); - return false; - } - - return true; -} - -bool CConfig::reload() -{ - try - { - cf.clear(); - cf.reparse(); - } - catch( NLMISC::Exception &e ) - { - nlwarning( "%s", e.what() ); - return false; - } - return true; -} - -void CConfig::revertToDefault() -{ - // If there's no default config, all we can do is revert the current changes - if( !dcf.loaded() ) - { - reload(); - return; - } - - // If there is a default config, we can however revert to the default! - // Code taken from the original config tool - uint32 count = cf.getNumVar(); - uint32 i = 0; - for( i = 0; i < count; i++ ) - { - NLMISC::CConfigFile::CVar *dst = cf.getVar( i ); - - // Comment from the original - // Temp: avoid changing this variable (debug: binded to the actual texture set installed) - if( dst->Name.compare( "HDTextureInstalled" ) == 0 ) - continue; - - NLMISC::CConfigFile::CVar *src = dcf.getVarPtr( dst->Name ); - if( ( src != NULL ) && !dst->Root && - ( ( src->Type == NLMISC::CConfigFile::CVar::T_INT ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_INT ) || - ( src->Type == NLMISC::CConfigFile::CVar::T_REAL ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_INT ) || - ( src->Type == NLMISC::CConfigFile::CVar::T_INT ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_REAL ) || - ( src->Type == NLMISC::CConfigFile::CVar::T_REAL ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_REAL ) || - ( src->Type == NLMISC::CConfigFile::CVar::T_STRING ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_STRING ) ) ) - { - - if( src->Type == NLMISC::CConfigFile::CVar::T_INT ) - { - setInt( src->Name.c_str(), src->asInt() ); - } - else if( src->Type == NLMISC::CConfigFile::CVar::T_REAL ) - { - setFloat( src->Name.c_str(), src->asFloat() ); - } - else if( src->Type == NLMISC::CConfigFile::CVar::T_STRING ) - { - setString( src->Name.c_str(), src->asString() ); - } - } - } -} - -bool CConfig::save() -{ - try - { - cf.save(); - } - catch( NLMISC::Exception &e ) - { - nlwarning( "%s", e.what() ); - return false; - } - return true; -} - -bool CConfig::getBool( const char *key ) -{ - NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); - - if( var != NULL ) - { - return var->asBool(); - } - else - { - nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); - return false; - } -} - -sint32 CConfig::getInt( const char *key ) -{ - NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); - - if( var != NULL ) - { - return var->asInt(); - } - else - { - nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); - return 0; - } -} - -float CConfig::getFloat( const char *key ) -{ - NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); - - if( var != NULL ) - { - return var->asFloat(); - } - else - { - nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); - return 0.0f; - } -} - -std::string CConfig::getString( const char *key ) -{ - NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); - - if( var != NULL ) - { - return var->asString(); - } - else - { - nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); - return ""; - } -} - -void CConfig::setBool( const char *key, bool value ) -{ - NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); - - if( var != NULL ) - { - if( var->Type == NLMISC::CConfigFile::CVar::T_BOOL ) - { - if( value ) - var->setAsString( "true" ); - else - var->setAsString( "false" ); - } - else - { - nlwarning( "Key %s in %s is not a boolean.", key, cf.getFilename().c_str() ); - } - } - else - { - nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); - } -} - -void CConfig::setInt(const char *key, sint32 value) -{ - NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); - - if( var != NULL ) - { - if( var->Type == NLMISC::CConfigFile::CVar::T_INT ) - var->setAsInt( value ); - else - nlwarning( "Key %s in %s is not an integer.", key, cf.getFilename().c_str() ); - } - else - { - nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); - } -} - -void CConfig::setFloat( const char *key, float value ) -{ - NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); - - if( var != NULL ) - { - if( var->Type == NLMISC::CConfigFile::CVar::T_REAL ) - var->setAsFloat( value ); - else - nlwarning( "Key %s in %s is not a float.", key, cf.getFilename().c_str() ); - } - else - { - nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); - } -} - -void CConfig::setString( const char *key, std::string &value ) -{ - NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); - - if( var != NULL ) - { - if( var->Type == NLMISC::CConfigFile::CVar::T_STRING ) - var->setAsString( value ); - else - nlwarning( "Key %s in %s is not a string.", key, cf.getFilename().c_str() ); - } - else - { - nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); - } +// Ryzom - 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 . + +#include "Config.h" + +CConfig::CConfig() +{ +} + +CConfig::~CConfig() +{ +} + +bool CConfig::load( const char *fileName ) +{ + try + { + cf.load( fileName ); + + std::string def = getString( "RootConfigFilename" ); + if( def.compare( "" ) != 0 ) + dcf.load( def ); + } + catch( NLMISC::Exception &e ) + { + nlwarning( "%s", e.what() ); + return false; + } + + return true; +} + +bool CConfig::reload() +{ + try + { + cf.clear(); + cf.reparse(); + } + catch( NLMISC::Exception &e ) + { + nlwarning( "%s", e.what() ); + return false; + } + return true; +} + +void CConfig::revertToDefault() +{ + // If there's no default config, all we can do is revert the current changes + if( !dcf.loaded() ) + { + reload(); + return; + } + + // If there is a default config, we can however revert to the default! + // Code taken from the original config tool + uint32 count = cf.getNumVar(); + uint32 i = 0; + for( i = 0; i < count; i++ ) + { + NLMISC::CConfigFile::CVar *dst = cf.getVar( i ); + + // Comment from the original + // Temp: avoid changing this variable (debug: binded to the actual texture set installed) + if( dst->Name.compare( "HDTextureInstalled" ) == 0 ) + continue; + + NLMISC::CConfigFile::CVar *src = dcf.getVarPtr( dst->Name ); + if( ( src != NULL ) && !dst->Root && + ( ( src->Type == NLMISC::CConfigFile::CVar::T_INT ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_INT ) || + ( src->Type == NLMISC::CConfigFile::CVar::T_REAL ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_INT ) || + ( src->Type == NLMISC::CConfigFile::CVar::T_INT ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_REAL ) || + ( src->Type == NLMISC::CConfigFile::CVar::T_REAL ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_REAL ) || + ( src->Type == NLMISC::CConfigFile::CVar::T_STRING ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_STRING ) ) ) + { + + if( src->Type == NLMISC::CConfigFile::CVar::T_INT ) + { + setInt( src->Name.c_str(), src->asInt() ); + } + else if( src->Type == NLMISC::CConfigFile::CVar::T_REAL ) + { + setFloat( src->Name.c_str(), src->asFloat() ); + } + else if( src->Type == NLMISC::CConfigFile::CVar::T_STRING ) + { + setString( src->Name.c_str(), src->asString() ); + } + } + } +} + +bool CConfig::save() +{ + try + { + cf.save(); + } + catch( NLMISC::Exception &e ) + { + nlwarning( "%s", e.what() ); + return false; + } + return true; +} + +bool CConfig::getBool( const char *key ) +{ + NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); + + if( var != NULL ) + { + return var->asBool(); + } + else + { + nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); + return false; + } +} + +sint32 CConfig::getInt( const char *key ) +{ + NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); + + if( var != NULL ) + { + return var->asInt(); + } + else + { + nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); + return 0; + } +} + +float CConfig::getFloat( const char *key ) +{ + NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); + + if( var != NULL ) + { + return var->asFloat(); + } + else + { + nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); + return 0.0f; + } +} + +std::string CConfig::getString( const char *key ) +{ + NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); + + if( var != NULL ) + { + return var->asString(); + } + else + { + nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); + return ""; + } +} + +void CConfig::setBool( const char *key, bool value ) +{ + NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); + + if( var != NULL ) + { + if( var->Type == NLMISC::CConfigFile::CVar::T_BOOL ) + { + if( value ) + var->setAsString( "true" ); + else + var->setAsString( "false" ); + } + else + { + nlwarning( "Key %s in %s is not a boolean.", key, cf.getFilename().c_str() ); + } + } + else + { + nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); + } +} + +void CConfig::setInt(const char *key, sint32 value) +{ + NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); + + if( var != NULL ) + { + if( var->Type == NLMISC::CConfigFile::CVar::T_INT ) + var->setAsInt( value ); + else + nlwarning( "Key %s in %s is not an integer.", key, cf.getFilename().c_str() ); + } + else + { + nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); + } +} + +void CConfig::setFloat( const char *key, float value ) +{ + NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); + + if( var != NULL ) + { + if( var->Type == NLMISC::CConfigFile::CVar::T_REAL ) + var->setAsFloat( value ); + else + nlwarning( "Key %s in %s is not a float.", key, cf.getFilename().c_str() ); + } + else + { + nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); + } +} + +void CConfig::setString( const char *key, std::string &value ) +{ + NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); + + if( var != NULL ) + { + if( var->Type == NLMISC::CConfigFile::CVar::T_STRING ) + var->setAsString( value ); + else + nlwarning( "Key %s in %s is not a string.", key, cf.getFilename().c_str() ); + } + else + { + nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); + } } \ No newline at end of file diff --git a/code/ryzom/tools/client/client_config_qt/config.h b/code/ryzom/tools/client/client_config_qt/config.h index 7749b41b1..df48e19e0 100644 --- a/code/ryzom/tools/client/client_config_qt/config.h +++ b/code/ryzom/tools/client/client_config_qt/config.h @@ -1,120 +1,120 @@ -// Ryzom - 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 CONFIG_H -#define CONFIG_H - -#include - -/** - @brief Wrapper for a Ryzom config file, allows setting and querying values. -*/ -class CConfig -{ -public: - CConfig(); - ~CConfig(); - - /** - @brief Loads a config file. - @param fileName - The file to load - @return Returns true on success, returns false on failure. - */ - bool load( const char *fileName ); - - /** - @brief Reloads the contents of the config file - @return Return true on success, returns false on failure. - */ - bool reload(); - - /** - @brief Reverts the config file to the default - @details Reverts the config file to the default if possible. - If there is no default config, it reverts the current changes only. - */ - void revertToDefault(); - - /** - @brief Saves the configuration to the config file. - @return Returns true on success, returns false on failure. - */ - bool save(); - - /** - @brief Queries the value for the specified key. - @param key - The key we are interested in - @return Returns the value as a bool, returns false if the key doesn't exist. - */ - bool getBool( const char *key ); - - /** - @brief Queries the value for the specified key. - @param key - The key we are interested in - @return Returns the value as an integer, returns 0 if the key doesn't exist. - */ - sint32 getInt( const char *key ); - - /** - @brief Queries the value for the specified key. - @param key - The key we are interested in - @return Returns the value as a float, returns 0.0f if the key doesn't exist. - */ - float getFloat( const char *key ); - - /** - @brief Queries the value for the specified key. - @param key - The key we are interested in - @return Returns the value as a std::string, returns an empty string if the key doesn't exist. - */ - std::string getString( const char *key ); - - /** - @brief Sets the specified key to the specified value. - @param key - the key we want to alter - @param value - the value we want to set - */ - void setBool( const char *key, bool value ); - - /** - @brief Sets the specified key to the specified value. - @param key - the key we want to alter - @param value - the value we want to set - */ - void setInt( const char *key, sint32 value ); - - /** - @brief Sets the specified key to the specified value. - @param key - the key we want to alter - @param value - the value we want to set - */ - void setFloat( const char *key, float value ); - - /** - @brief Sets the specified key to the specified value. - @param key - the key we want to alter - @param value - the value we want to set - */ - void setString( const char *key, std::string &value ); - -private: - // config file - NLMISC::CConfigFile cf; - // default config file - NLMISC::CConfigFile dcf; -}; - -#endif +// Ryzom - 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 CONFIG_H +#define CONFIG_H + +#include + +/** + @brief Wrapper for a Ryzom config file, allows setting and querying values. +*/ +class CConfig +{ +public: + CConfig(); + ~CConfig(); + + /** + @brief Loads a config file. + @param fileName - The file to load + @return Returns true on success, returns false on failure. + */ + bool load( const char *fileName ); + + /** + @brief Reloads the contents of the config file + @return Return true on success, returns false on failure. + */ + bool reload(); + + /** + @brief Reverts the config file to the default + @details Reverts the config file to the default if possible. + If there is no default config, it reverts the current changes only. + */ + void revertToDefault(); + + /** + @brief Saves the configuration to the config file. + @return Returns true on success, returns false on failure. + */ + bool save(); + + /** + @brief Queries the value for the specified key. + @param key - The key we are interested in + @return Returns the value as a bool, returns false if the key doesn't exist. + */ + bool getBool( const char *key ); + + /** + @brief Queries the value for the specified key. + @param key - The key we are interested in + @return Returns the value as an integer, returns 0 if the key doesn't exist. + */ + sint32 getInt( const char *key ); + + /** + @brief Queries the value for the specified key. + @param key - The key we are interested in + @return Returns the value as a float, returns 0.0f if the key doesn't exist. + */ + float getFloat( const char *key ); + + /** + @brief Queries the value for the specified key. + @param key - The key we are interested in + @return Returns the value as a std::string, returns an empty string if the key doesn't exist. + */ + std::string getString( const char *key ); + + /** + @brief Sets the specified key to the specified value. + @param key - the key we want to alter + @param value - the value we want to set + */ + void setBool( const char *key, bool value ); + + /** + @brief Sets the specified key to the specified value. + @param key - the key we want to alter + @param value - the value we want to set + */ + void setInt( const char *key, sint32 value ); + + /** + @brief Sets the specified key to the specified value. + @param key - the key we want to alter + @param value - the value we want to set + */ + void setFloat( const char *key, float value ); + + /** + @brief Sets the specified key to the specified value. + @param key - the key we want to alter + @param value - the value we want to set + */ + void setString( const char *key, std::string &value ); + +private: + // config file + NLMISC::CConfigFile cf; + // default config file + NLMISC::CConfigFile dcf; +}; + +#endif diff --git a/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.cpp b/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.cpp index 7f324f40c..211a4911b 100644 --- a/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.cpp +++ b/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.cpp @@ -1,86 +1,86 @@ -// Ryzom - 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 . - -#include "display_settings_advanced_widget.h" -#include "system.h" - -CDisplaySettingsAdvancedWidget::CDisplaySettingsAdvancedWidget( QWidget *parent ) : - CWidgetBase( parent ) -{ - setupUi( this ); - load(); - - connect( texcompressionCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); - connect( vertexshaderCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); - connect( verticesagpCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); - connect( pixelshadersCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); -} - -CDisplaySettingsAdvancedWidget::~CDisplaySettingsAdvancedWidget() -{ -} - -void CDisplaySettingsAdvancedWidget::load() -{ - CSystem &s = CSystem::GetInstance(); - - if( s.config.getInt( "ForceDXTC" ) == 1 ) - texcompressionCheckBox->setChecked( true ); - - if( s.config.getInt( "DisableVtxProgram" ) == 1 ) - vertexshaderCheckBox->setChecked( true ); - - if( s.config.getInt( "DisableVtxAGP" ) == 1 ) - verticesagpCheckBox->setChecked( true ); - - if( s.config.getInt( "DisableTextureShdr" ) == 1 ) - pixelshadersCheckBox->setChecked( true ); -} - -void CDisplaySettingsAdvancedWidget::save() -{ - CSystem &s = CSystem::GetInstance(); - - if( texcompressionCheckBox->isChecked() ) - s.config.setInt( "ForceDXTC", 1 ); - else - s.config.setInt( "ForceDXTC", 0 ); - - if( vertexshaderCheckBox->isChecked() ) - s.config.setInt( "DisableVtxProgram", 1 ); - else - s.config.setInt( "DisableVtxProgram", 0 ); - - if( verticesagpCheckBox->isChecked() ) - s.config.setInt( "DisableVtxAGP", 1 ); - else - s.config.setInt( "DisableVtxAGP", 0 ); - - if( pixelshadersCheckBox->isChecked() ) - s.config.setInt( "DisableTextureShdr", 1 ); - else - s.config.setInt( "DisableTextureShdr", 0 ); -} - -void CDisplaySettingsAdvancedWidget::changeEvent( QEvent *event ) -{ - if( event->type() == QEvent::LanguageChange ) - { - retranslateUi( this ); - } - - QWidget::changeEvent( event ); -} +// Ryzom - 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 . + +#include "display_settings_advanced_widget.h" +#include "system.h" + +CDisplaySettingsAdvancedWidget::CDisplaySettingsAdvancedWidget( QWidget *parent ) : + CWidgetBase( parent ) +{ + setupUi( this ); + load(); + + connect( texcompressionCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); + connect( vertexshaderCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); + connect( verticesagpCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); + connect( pixelshadersCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); +} + +CDisplaySettingsAdvancedWidget::~CDisplaySettingsAdvancedWidget() +{ +} + +void CDisplaySettingsAdvancedWidget::load() +{ + CSystem &s = CSystem::GetInstance(); + + if( s.config.getInt( "ForceDXTC" ) == 1 ) + texcompressionCheckBox->setChecked( true ); + + if( s.config.getInt( "DisableVtxProgram" ) == 1 ) + vertexshaderCheckBox->setChecked( true ); + + if( s.config.getInt( "DisableVtxAGP" ) == 1 ) + verticesagpCheckBox->setChecked( true ); + + if( s.config.getInt( "DisableTextureShdr" ) == 1 ) + pixelshadersCheckBox->setChecked( true ); +} + +void CDisplaySettingsAdvancedWidget::save() +{ + CSystem &s = CSystem::GetInstance(); + + if( texcompressionCheckBox->isChecked() ) + s.config.setInt( "ForceDXTC", 1 ); + else + s.config.setInt( "ForceDXTC", 0 ); + + if( vertexshaderCheckBox->isChecked() ) + s.config.setInt( "DisableVtxProgram", 1 ); + else + s.config.setInt( "DisableVtxProgram", 0 ); + + if( verticesagpCheckBox->isChecked() ) + s.config.setInt( "DisableVtxAGP", 1 ); + else + s.config.setInt( "DisableVtxAGP", 0 ); + + if( pixelshadersCheckBox->isChecked() ) + s.config.setInt( "DisableTextureShdr", 1 ); + else + s.config.setInt( "DisableTextureShdr", 0 ); +} + +void CDisplaySettingsAdvancedWidget::changeEvent( QEvent *event ) +{ + if( event->type() == QEvent::LanguageChange ) + { + retranslateUi( this ); + } + + QWidget::changeEvent( event ); +} diff --git a/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.h b/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.h index 92ca1775a..3f956f626 100644 --- a/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.h +++ b/code/ryzom/tools/client/client_config_qt/display_settings_advanced_widget.h @@ -1,41 +1,41 @@ -// Ryzom - 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 DISPLAYSETTINGSADVANCEDWIDGET_H -#define DISPLAYSETTINGSADVANCEDWIDGET_H - -#include "ui_display_settings_advanced_widget.h" -#include "widget_base.h" - -/** - @brief The advanced display settings page of the configuration tool -*/ -class CDisplaySettingsAdvancedWidget : public CWidgetBase, public Ui::display_settings_advanced_widget -{ - Q_OBJECT -public: - CDisplaySettingsAdvancedWidget( QWidget *parent ); - ~CDisplaySettingsAdvancedWidget(); - - void load(); - void save(); - -protected: - void changeEvent( QEvent *event ); - -}; - -#endif // DISPLAYSETTINGSADVANCEDWIDGET_H +// Ryzom - 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 DISPLAYSETTINGSADVANCEDWIDGET_H +#define DISPLAYSETTINGSADVANCEDWIDGET_H + +#include "ui_display_settings_advanced_widget.h" +#include "widget_base.h" + +/** + @brief The advanced display settings page of the configuration tool +*/ +class CDisplaySettingsAdvancedWidget : public CWidgetBase, public Ui::display_settings_advanced_widget +{ + Q_OBJECT +public: + CDisplaySettingsAdvancedWidget( QWidget *parent ); + ~CDisplaySettingsAdvancedWidget(); + + void load(); + void save(); + +protected: + void changeEvent( QEvent *event ); + +}; + +#endif // DISPLAYSETTINGSADVANCEDWIDGET_H diff --git a/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.cpp b/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.cpp index fdc47d2bd..aeddcf628 100644 --- a/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.cpp +++ b/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.cpp @@ -1,268 +1,268 @@ -// Ryzom - 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 . - -#include "system.h" -#include "display_settings_details_widget.h" - -CDisplaySettingsDetailsWidget::CDisplaySettingsDetailsWidget( QWidget *parent ) : - CWidgetBase( parent ) -{ - setupUi( this ); - connect( landscapeSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onLandscapeSliderChange( int ) ) ); - connect( charactersSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onCharactersSliderChange( int ) ) ); - connect( fxSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onFXSliderChange( int ) ) ); - connect( texturesSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onTexturesSliderChange( int ) ) ); - load(); -} - -CDisplaySettingsDetailsWidget::~CDisplaySettingsDetailsWidget() -{ -} - -void CDisplaySettingsDetailsWidget::load() -{ - CSystem &s = CSystem::GetInstance(); - - landscapeSlider->setValue( getQuality( qualityToLandscapeThreshold, s.config.getFloat( "LandscapeThreshold" ) ) ); - landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToZFar, s.config.getFloat( "Vision" ) ) ) ); - landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToLandscapeTileNear, s.config.getFloat( "LandscapeTileNear" ) ) ) ); - landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToMicrovegetDensity, s.config.getFloat( "MicroVegetDensity" ) ) ) ); - - charactersSlider->setValue( getQuality( qualityToSkinNbMaxPoly, s.config.getInt( "SkinNbMaxPoly" ) ) ); - charactersSlider->setValue( std::min( charactersSlider->value(), getQuality( qualityToNbMaxSkeletonNotCLod, s.config.getInt( "NbMaxSkeletonNotCLod" ) ) ) ); - charactersSlider->setValue( std::min( charactersSlider->value(), getQuality( qualityToCharacterFarClip, s.config.getFloat( "CharacterFarClip" ) ) ) ); - - fxSlider->setValue( getQuality( qualityToFxNbMaxPoly, s.config.getInt( "FxNbMaxPoly" ) ) ); - - int hdTextureInstalled = s.config.getInt( "HDTextureInstalled" ); - if( hdTextureInstalled == 1 ) - texturesSlider->setMaximum( QUALITY_NORMAL ); - else - texturesSlider->setMaximum( QUALITY_MEDIUM ); - - // Comment taken from the original config tool: - // NB: if the player changes its client.cfg, mixing HDEntityTexture=1 and DivideTextureSizeBy2=1, it will - // result to a low quality! - if( s.config.getInt( "DivideTextureSizeBy2" ) ) - texturesSlider->setValue( QUALITY_LOW ); - else if( s.config.getInt( "HDEntityTexture" ) && ( hdTextureInstalled == 1 ) ) - texturesSlider->setValue( QUALITY_NORMAL ); - else - texturesSlider->setValue( QUALITY_MEDIUM ); -} - -void CDisplaySettingsDetailsWidget::save() -{ - CSystem &s = CSystem::GetInstance(); - - s.config.setFloat( "Vision", qualityToZFar[ landscapeSlider->value() ] ); - s.config.setFloat( "LandscapeTileNear", qualityToLandscapeTileNear[ landscapeSlider->value() ] ); - s.config.setFloat( "LandscapeThreshold", qualityToLandscapeThreshold[ landscapeSlider->value() ] ); - - if( landscapeSlider->value() > QUALITY_LOW ) - s.config.setInt( "MicroVeget", 1 ); - else - s.config.setInt( "MicroVeget", 0 ); - - s.config.setFloat( "MicroVegetDensity", qualityToMicrovegetDensity[ landscapeSlider->value() ] ); - - - s.config.setInt( "SkinNbMaxPoly", qualityToSkinNbMaxPoly[ charactersSlider->value() ] ); - s.config.setInt( "NbMaxSkeletonNotCLod", qualityToNbMaxSkeletonNotCLod[ charactersSlider->value() ] ); - s.config.setFloat( "CharacterFarClip", qualityToCharacterFarClip[ charactersSlider->value() ] ); - - - s.config.setInt( "FxNbMaxPoly", qualityToFxNbMaxPoly[ fxSlider->value() ] ); - if( fxSlider->value() > QUALITY_LOW ) - { - s.config.setInt( "Shadows", 1 ); - s.config.setInt( "Bloom", 1 ); - s.config.setInt( "SquareBloom", 1 ); - } - else - { - s.config.setInt( "Shadows", 0 ); - s.config.setInt( "Bloom", 0 ); - s.config.setInt( "SquareBloom", 0 ); - } - - - if( texturesSlider->value() == QUALITY_NORMAL ) - s.config.setInt( "HDEntityTexture", 1 ); - else if( texturesSlider->value() == QUALITY_LOW ) - s.config.setInt( "DivideTextureSizeBy2", 1 ); -} - -void CDisplaySettingsDetailsWidget::changeEvent( QEvent *event ) -{ - if( event->type() == QEvent::LanguageChange ) - { - retranslateUi( this ); - - landscapeLabel->setText( getQualityString( landscapeSlider->value() ) ); - characterLabel->setText( getQualityString( charactersSlider->value() ) ); - fxLabel->setText( getQualityString( fxSlider->value() ) ); - textureLabel->setText( getTextureQualityString( texturesSlider->value() ) ); - } - QWidget::changeEvent( event ); -} - - -void CDisplaySettingsDetailsWidget::onLandscapeSliderChange( int value ) -{ - if( ( value < 0 ) || ( value > 3 ) ) - return; - - landscapeLabel->setText( getQualityString( value ) ); - emit changed(); -} - -void CDisplaySettingsDetailsWidget::onCharactersSliderChange( int value ) -{ - if( ( value < 0 ) || ( value > 3 ) ) - return; - - characterLabel->setText( getQualityString( value ) ); - emit changed(); -} - -void CDisplaySettingsDetailsWidget::onFXSliderChange( int value ) -{ - if( ( value < 0 ) || ( value > 3 ) ) - return; - - fxLabel->setText( getQualityString( value ) ); - emit changed(); -} - -void CDisplaySettingsDetailsWidget::onTexturesSliderChange( int value ) -{ - if( ( value < 0 ) || ( value > 3 ) ) - return; - - textureLabel->setText( getTextureQualityString( value ) ); - emit changed(); -} - -const float CDisplaySettingsDetailsWidget::qualityToZFar[ QUALITY_STEP ] = -{ - 200.0f, - 400.0f, - 500.0f, - 800.0f -}; - -const float CDisplaySettingsDetailsWidget::qualityToLandscapeTileNear[ QUALITY_STEP ] = -{ - 20.0f, - 100.0f, - 150.0f, - 200.0f -}; - -const float CDisplaySettingsDetailsWidget::qualityToLandscapeThreshold[ QUALITY_STEP ] = -{ - 100.0f, - 1000.0f, - 2000.0f, - 3000.0f -}; - - -const float CDisplaySettingsDetailsWidget::qualityToMicrovegetDensity[ QUALITY_STEP ] = -{ - 10.0f, - 30.0f, - 80.0f, - 100.0f -}; - - -const sint32 CDisplaySettingsDetailsWidget::qualityToSkinNbMaxPoly[ QUALITY_STEP ] = -{ - 10000, - 70000, - 100000, - 200000 -}; - -const sint32 CDisplaySettingsDetailsWidget::qualityToNbMaxSkeletonNotCLod[ QUALITY_STEP ] = -{ - 10, - 50, - 125, - 255 -}; - -const float CDisplaySettingsDetailsWidget::qualityToCharacterFarClip[ QUALITY_STEP ] = -{ - 50.0f, - 100.0f, - 200.0f, - 500.0f -}; - -const sint32 CDisplaySettingsDetailsWidget::qualityToFxNbMaxPoly[ QUALITY_STEP ] = -{ - 2000, - 10000, - 20000, - 50000 -}; - -QString CDisplaySettingsDetailsWidget::getQualityString( uint32 quality ) -{ - switch( quality ) - { - case QUALITY_LOW: - return tr( "Low" ); - break; - case QUALITY_MEDIUM: - return tr( "Medium" ); - break; - case QUALITY_NORMAL: - return tr( "Normal" ); - break; - case QUALITY_HIGH: - return tr( "High" ); - break; - default: - return ""; - break; - } -} - -QString CDisplaySettingsDetailsWidget::getTextureQualityString( uint32 quality ) -{ - switch( quality ) - { - case TEXQUALITY_LOW: - return tr( "Low (32 MB)" ); - break; - - case TEXQUALITY_NORMAL: - return tr( "Normal (64 MB)" ); - break; - - case TEXQUALITY_HIGH: - return tr( "High (128 MB)" ); - break; - - default: - return ""; - break; - } +// Ryzom - 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 . + +#include "system.h" +#include "display_settings_details_widget.h" + +CDisplaySettingsDetailsWidget::CDisplaySettingsDetailsWidget( QWidget *parent ) : + CWidgetBase( parent ) +{ + setupUi( this ); + connect( landscapeSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onLandscapeSliderChange( int ) ) ); + connect( charactersSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onCharactersSliderChange( int ) ) ); + connect( fxSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onFXSliderChange( int ) ) ); + connect( texturesSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onTexturesSliderChange( int ) ) ); + load(); +} + +CDisplaySettingsDetailsWidget::~CDisplaySettingsDetailsWidget() +{ +} + +void CDisplaySettingsDetailsWidget::load() +{ + CSystem &s = CSystem::GetInstance(); + + landscapeSlider->setValue( getQuality( qualityToLandscapeThreshold, s.config.getFloat( "LandscapeThreshold" ) ) ); + landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToZFar, s.config.getFloat( "Vision" ) ) ) ); + landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToLandscapeTileNear, s.config.getFloat( "LandscapeTileNear" ) ) ) ); + landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToMicrovegetDensity, s.config.getFloat( "MicroVegetDensity" ) ) ) ); + + charactersSlider->setValue( getQuality( qualityToSkinNbMaxPoly, s.config.getInt( "SkinNbMaxPoly" ) ) ); + charactersSlider->setValue( std::min( charactersSlider->value(), getQuality( qualityToNbMaxSkeletonNotCLod, s.config.getInt( "NbMaxSkeletonNotCLod" ) ) ) ); + charactersSlider->setValue( std::min( charactersSlider->value(), getQuality( qualityToCharacterFarClip, s.config.getFloat( "CharacterFarClip" ) ) ) ); + + fxSlider->setValue( getQuality( qualityToFxNbMaxPoly, s.config.getInt( "FxNbMaxPoly" ) ) ); + + int hdTextureInstalled = s.config.getInt( "HDTextureInstalled" ); + if( hdTextureInstalled == 1 ) + texturesSlider->setMaximum( QUALITY_NORMAL ); + else + texturesSlider->setMaximum( QUALITY_MEDIUM ); + + // Comment taken from the original config tool: + // NB: if the player changes its client.cfg, mixing HDEntityTexture=1 and DivideTextureSizeBy2=1, it will + // result to a low quality! + if( s.config.getInt( "DivideTextureSizeBy2" ) ) + texturesSlider->setValue( QUALITY_LOW ); + else if( s.config.getInt( "HDEntityTexture" ) && ( hdTextureInstalled == 1 ) ) + texturesSlider->setValue( QUALITY_NORMAL ); + else + texturesSlider->setValue( QUALITY_MEDIUM ); +} + +void CDisplaySettingsDetailsWidget::save() +{ + CSystem &s = CSystem::GetInstance(); + + s.config.setFloat( "Vision", qualityToZFar[ landscapeSlider->value() ] ); + s.config.setFloat( "LandscapeTileNear", qualityToLandscapeTileNear[ landscapeSlider->value() ] ); + s.config.setFloat( "LandscapeThreshold", qualityToLandscapeThreshold[ landscapeSlider->value() ] ); + + if( landscapeSlider->value() > QUALITY_LOW ) + s.config.setInt( "MicroVeget", 1 ); + else + s.config.setInt( "MicroVeget", 0 ); + + s.config.setFloat( "MicroVegetDensity", qualityToMicrovegetDensity[ landscapeSlider->value() ] ); + + + s.config.setInt( "SkinNbMaxPoly", qualityToSkinNbMaxPoly[ charactersSlider->value() ] ); + s.config.setInt( "NbMaxSkeletonNotCLod", qualityToNbMaxSkeletonNotCLod[ charactersSlider->value() ] ); + s.config.setFloat( "CharacterFarClip", qualityToCharacterFarClip[ charactersSlider->value() ] ); + + + s.config.setInt( "FxNbMaxPoly", qualityToFxNbMaxPoly[ fxSlider->value() ] ); + if( fxSlider->value() > QUALITY_LOW ) + { + s.config.setInt( "Shadows", 1 ); + s.config.setInt( "Bloom", 1 ); + s.config.setInt( "SquareBloom", 1 ); + } + else + { + s.config.setInt( "Shadows", 0 ); + s.config.setInt( "Bloom", 0 ); + s.config.setInt( "SquareBloom", 0 ); + } + + + if( texturesSlider->value() == QUALITY_NORMAL ) + s.config.setInt( "HDEntityTexture", 1 ); + else if( texturesSlider->value() == QUALITY_LOW ) + s.config.setInt( "DivideTextureSizeBy2", 1 ); +} + +void CDisplaySettingsDetailsWidget::changeEvent( QEvent *event ) +{ + if( event->type() == QEvent::LanguageChange ) + { + retranslateUi( this ); + + landscapeLabel->setText( getQualityString( landscapeSlider->value() ) ); + characterLabel->setText( getQualityString( charactersSlider->value() ) ); + fxLabel->setText( getQualityString( fxSlider->value() ) ); + textureLabel->setText( getTextureQualityString( texturesSlider->value() ) ); + } + QWidget::changeEvent( event ); +} + + +void CDisplaySettingsDetailsWidget::onLandscapeSliderChange( int value ) +{ + if( ( value < 0 ) || ( value > 3 ) ) + return; + + landscapeLabel->setText( getQualityString( value ) ); + emit changed(); +} + +void CDisplaySettingsDetailsWidget::onCharactersSliderChange( int value ) +{ + if( ( value < 0 ) || ( value > 3 ) ) + return; + + characterLabel->setText( getQualityString( value ) ); + emit changed(); +} + +void CDisplaySettingsDetailsWidget::onFXSliderChange( int value ) +{ + if( ( value < 0 ) || ( value > 3 ) ) + return; + + fxLabel->setText( getQualityString( value ) ); + emit changed(); +} + +void CDisplaySettingsDetailsWidget::onTexturesSliderChange( int value ) +{ + if( ( value < 0 ) || ( value > 3 ) ) + return; + + textureLabel->setText( getTextureQualityString( value ) ); + emit changed(); +} + +const float CDisplaySettingsDetailsWidget::qualityToZFar[ QUALITY_STEP ] = +{ + 200.0f, + 400.0f, + 500.0f, + 800.0f +}; + +const float CDisplaySettingsDetailsWidget::qualityToLandscapeTileNear[ QUALITY_STEP ] = +{ + 20.0f, + 100.0f, + 150.0f, + 200.0f +}; + +const float CDisplaySettingsDetailsWidget::qualityToLandscapeThreshold[ QUALITY_STEP ] = +{ + 100.0f, + 1000.0f, + 2000.0f, + 3000.0f +}; + + +const float CDisplaySettingsDetailsWidget::qualityToMicrovegetDensity[ QUALITY_STEP ] = +{ + 10.0f, + 30.0f, + 80.0f, + 100.0f +}; + + +const sint32 CDisplaySettingsDetailsWidget::qualityToSkinNbMaxPoly[ QUALITY_STEP ] = +{ + 10000, + 70000, + 100000, + 200000 +}; + +const sint32 CDisplaySettingsDetailsWidget::qualityToNbMaxSkeletonNotCLod[ QUALITY_STEP ] = +{ + 10, + 50, + 125, + 255 +}; + +const float CDisplaySettingsDetailsWidget::qualityToCharacterFarClip[ QUALITY_STEP ] = +{ + 50.0f, + 100.0f, + 200.0f, + 500.0f +}; + +const sint32 CDisplaySettingsDetailsWidget::qualityToFxNbMaxPoly[ QUALITY_STEP ] = +{ + 2000, + 10000, + 20000, + 50000 +}; + +QString CDisplaySettingsDetailsWidget::getQualityString( uint32 quality ) +{ + switch( quality ) + { + case QUALITY_LOW: + return tr( "Low" ); + break; + case QUALITY_MEDIUM: + return tr( "Medium" ); + break; + case QUALITY_NORMAL: + return tr( "Normal" ); + break; + case QUALITY_HIGH: + return tr( "High" ); + break; + default: + return ""; + break; + } +} + +QString CDisplaySettingsDetailsWidget::getTextureQualityString( uint32 quality ) +{ + switch( quality ) + { + case TEXQUALITY_LOW: + return tr( "Low (32 MB)" ); + break; + + case TEXQUALITY_NORMAL: + return tr( "Normal (64 MB)" ); + break; + + case TEXQUALITY_HIGH: + return tr( "High (128 MB)" ); + break; + + default: + return ""; + break; + } } \ No newline at end of file diff --git a/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.h b/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.h index 535c3710c..001189432 100644 --- a/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.h +++ b/code/ryzom/tools/client/client_config_qt/display_settings_details_widget.h @@ -1,121 +1,121 @@ -// Ryzom - 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 DISPLAYSETTINGSDETAILSWIDGET_H -#define DISPLAYSETTINGSDETAILSWIDGET_H - -#include "ui_display_settings_details_widget.h" -#include "widget_base.h" -#include - -enum -{ - QUALITY_LOW = 0, - QUALITY_MEDIUM = 1, - QUALITY_NORMAL = 2, - QUALITY_HIGH = 3, - QUALITY_STEP = 4 -}; - -enum -{ - TEXQUALITY_LOW = 0, - TEXQUALITY_NORMAL = 1, - TEXQUALITY_HIGH = 2 -}; - -/** - @brief The display details page of the configuration tool -*/ -class CDisplaySettingsDetailsWidget : public CWidgetBase, public Ui::display_settings_details_widget -{ - Q_OBJECT -public: - CDisplaySettingsDetailsWidget( QWidget *parent = NULL ); - ~CDisplaySettingsDetailsWidget(); - - void load(); - void save(); - -protected: - void changeEvent( QEvent *event ); - -private slots: - void onLandscapeSliderChange( int value ); - void onCharactersSliderChange( int value ); - void onFXSliderChange( int value ); - void onTexturesSliderChange( int value ); - -private: - /** - @brief Looks up and returns the "quality" ( see the enums on the top), that belongs to the specified value. - @param table - The lookup table you want to use. - @param value - The value that we want to look up. - @return Returns the "quality" that best fits the specified value. - */ - template< typename T > - int getQuality( const T *table, T value ) - { - if( table[ 0 ] < table[ QUALITY_STEP - 1 ] ) - { - uint32 i = 0; - while( ( i < QUALITY_STEP ) && ( table[ i ] < value ) ) - i++; - return i; - } - else - { - uint32 i = 0; - while( ( i < QUALITY_STEP ) && ( table[ i ] > value ) ) - i++; - return i; - } - } - - - /** - @brief Retrieves the string that belongs to the specified quality. - @param quality - The quality value - @return Returns a string describing the quality value, Returns an empty string if an invalid value is specified. - */ - static QString getQualityString( uint32 quality ); - - - /** - @brief Retrieves the string that belongs to the specified texture quality. - @param quality - The texture quality value - @return Returns a string describing the texture quality, Returns an empty string if an invalid value is specified. - */ - static QString getTextureQualityString( uint32 quality ); - - - ///////////////////////// Landscape values /////////////////////// - static const float qualityToZFar[ QUALITY_STEP ]; - static const float qualityToLandscapeTileNear[ QUALITY_STEP ]; - static const float qualityToLandscapeThreshold[ QUALITY_STEP ]; - static const float qualityToMicrovegetDensity[ QUALITY_STEP ]; - - //////////////////////// Character values //////////////////////// - static const sint32 qualityToSkinNbMaxPoly[ QUALITY_STEP ]; - static const sint32 qualityToNbMaxSkeletonNotCLod[ QUALITY_STEP ]; - static const float qualityToCharacterFarClip[ QUALITY_STEP ]; - - /////////////////////// FX values //////////////////////////////// - static const sint32 qualityToFxNbMaxPoly[ QUALITY_STEP ]; - -}; - -#endif // DISPLAYSETTINGSDETAILSWIDGET_H +// Ryzom - 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 DISPLAYSETTINGSDETAILSWIDGET_H +#define DISPLAYSETTINGSDETAILSWIDGET_H + +#include "ui_display_settings_details_widget.h" +#include "widget_base.h" +#include + +enum +{ + QUALITY_LOW = 0, + QUALITY_MEDIUM = 1, + QUALITY_NORMAL = 2, + QUALITY_HIGH = 3, + QUALITY_STEP = 4 +}; + +enum +{ + TEXQUALITY_LOW = 0, + TEXQUALITY_NORMAL = 1, + TEXQUALITY_HIGH = 2 +}; + +/** + @brief The display details page of the configuration tool +*/ +class CDisplaySettingsDetailsWidget : public CWidgetBase, public Ui::display_settings_details_widget +{ + Q_OBJECT +public: + CDisplaySettingsDetailsWidget( QWidget *parent = NULL ); + ~CDisplaySettingsDetailsWidget(); + + void load(); + void save(); + +protected: + void changeEvent( QEvent *event ); + +private slots: + void onLandscapeSliderChange( int value ); + void onCharactersSliderChange( int value ); + void onFXSliderChange( int value ); + void onTexturesSliderChange( int value ); + +private: + /** + @brief Looks up and returns the "quality" ( see the enums on the top), that belongs to the specified value. + @param table - The lookup table you want to use. + @param value - The value that we want to look up. + @return Returns the "quality" that best fits the specified value. + */ + template< typename T > + int getQuality( const T *table, T value ) + { + if( table[ 0 ] < table[ QUALITY_STEP - 1 ] ) + { + uint32 i = 0; + while( ( i < QUALITY_STEP ) && ( table[ i ] < value ) ) + i++; + return i; + } + else + { + uint32 i = 0; + while( ( i < QUALITY_STEP ) && ( table[ i ] > value ) ) + i++; + return i; + } + } + + + /** + @brief Retrieves the string that belongs to the specified quality. + @param quality - The quality value + @return Returns a string describing the quality value, Returns an empty string if an invalid value is specified. + */ + static QString getQualityString( uint32 quality ); + + + /** + @brief Retrieves the string that belongs to the specified texture quality. + @param quality - The texture quality value + @return Returns a string describing the texture quality, Returns an empty string if an invalid value is specified. + */ + static QString getTextureQualityString( uint32 quality ); + + + ///////////////////////// Landscape values /////////////////////// + static const float qualityToZFar[ QUALITY_STEP ]; + static const float qualityToLandscapeTileNear[ QUALITY_STEP ]; + static const float qualityToLandscapeThreshold[ QUALITY_STEP ]; + static const float qualityToMicrovegetDensity[ QUALITY_STEP ]; + + //////////////////////// Character values //////////////////////// + static const sint32 qualityToSkinNbMaxPoly[ QUALITY_STEP ]; + static const sint32 qualityToNbMaxSkeletonNotCLod[ QUALITY_STEP ]; + static const float qualityToCharacterFarClip[ QUALITY_STEP ]; + + /////////////////////// FX values //////////////////////////////// + static const sint32 qualityToFxNbMaxPoly[ QUALITY_STEP ]; + +}; + +#endif // DISPLAYSETTINGSDETAILSWIDGET_H diff --git a/code/ryzom/tools/client/client_config_qt/display_settings_widget.cpp b/code/ryzom/tools/client/client_config_qt/display_settings_widget.cpp index 89ed62783..f6775a0b7 100644 --- a/code/ryzom/tools/client/client_config_qt/display_settings_widget.cpp +++ b/code/ryzom/tools/client/client_config_qt/display_settings_widget.cpp @@ -1,227 +1,227 @@ -// Ryzom - 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 . - -#include -#include -#include "display_settings_widget.h" -#include "system.h" -#include - -CDisplaySettingsWidget::CDisplaySettingsWidget( QWidget *parent ) : - CWidgetBase( parent ) -{ - setupUi( this ); - widthLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), widthLineEdit ) ); - heightLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), heightLineEdit ) ); - xpositionLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), xpositionLineEdit ) ); - ypositionLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), ypositionLineEdit ) ); - load(); - - connect( autoRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); - connect( openglRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); - connect( direct3dRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); - connect( fullscreenRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); - connect( windowedRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); - connect( widthLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) ); - connect( heightLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) ); - connect( xpositionLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) ); - connect( ypositionLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) ); - connect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) ); - connect( autoRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) ); - connect( openglRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) ); - connect( direct3dRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) ); -} - -CDisplaySettingsWidget::~CDisplaySettingsWidget() -{ -} - -void CDisplaySettingsWidget::load() -{ - CSystem &s = CSystem::GetInstance(); - - std::string driver = s.config.getString( "Driver3D" ); - switch( getDriverFromConfigString( driver ) ) - { - case DRV_AUTO: - autoRadioButton->setChecked( true ); - break; - case DRV_OPENGL: - openglRadioButton->setChecked( true ); - break; - case DRV_DIRECT3D: - direct3dRadioButton->setChecked( true ); - break; - } - - updateVideoModes(); - - - CVideoMode mode; - mode.widht = s.config.getInt( "Width" ); - mode.height = s.config.getInt( "Height" ); - mode.depth = s.config.getInt( "Depth" ); - mode.frequency = s.config.getInt( "Frequency" ); - - if( s.config.getInt( "FullScreen" ) == 1 ) - { - fullscreenRadioButton->setChecked( true ); - videomodeComboBox->setCurrentIndex( findVideoModeIndex( &mode ) ); - } - else - { - windowedRadioButton->setChecked( true ); - } - - widthLineEdit->setText( QString( "%1" ).arg( mode.widht ) ); - heightLineEdit->setText( QString( "%1" ).arg( mode.height ) ); - xpositionLineEdit->setText( QString( "%1" ).arg( s.config.getInt( "PositionX" ) ) ); - ypositionLineEdit->setText( QString( "%1" ).arg( s.config.getInt( "PositionY" ) ) ); - -} - -void CDisplaySettingsWidget::save() -{ - CSystem &s = CSystem::GetInstance(); - - if( openglRadioButton->isChecked() ) - s.config.setString( "Driver3D", std::string( "OpenGL" ) ); - else if( direct3dRadioButton->isChecked() ) - s.config.setString( "Driver3D", std::string( "Direct3D" ) ); - else - s.config.setString( "Driver3D", std::string( "Auto" ) ); - - if( fullscreenRadioButton->isChecked() ) - { - s.config.setInt( "FullScreen", 1 ); - - sint32 index = videomodeComboBox->currentIndex(); - CVideoMode mode; - - // OpenGL should be available everywhere! - if( direct3dRadioButton->isChecked() ) - mode = s.d3dInfo.modes[ index ]; - else - mode = s.openglInfo.modes[ index ]; - - s.config.setInt( "Width", mode.widht ); - s.config.setInt( "Height", mode.height ); - s.config.setInt( "Depth", mode.depth ); - s.config.setInt( "Frequency", mode.frequency ); - - } - else - { - s.config.setInt( "FullScreen", 0 ); - s.config.setInt( "Width", widthLineEdit->text().toInt() ); - s.config.setInt( "Height", heightLineEdit->text().toInt() ); - } - - s.config.setInt( "PositionX", xpositionLineEdit->text().toInt() ); - s.config.setInt( "PositionY", ypositionLineEdit->text().toInt() ); -} - -void CDisplaySettingsWidget::changeEvent( QEvent *event ) -{ - if( event->type() == QEvent::LanguageChange ) - { - disconnect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) ); - retranslateUi( this ); - connect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) ); - } - QWidget::changeEvent( event ); -} - -void CDisplaySettingsWidget::updateVideoModes() -{ - CSystem &s = CSystem::GetInstance(); - - videomodeComboBox->clear(); - - if( direct3dRadioButton->isChecked() ) - { - for( std::vector< CVideoMode >::iterator itr = s.d3dInfo.modes.begin(); itr != s.d3dInfo.modes.end(); ++itr ) - { - std::stringstream ss; - ss << itr->widht << "x" << itr->height << " " << itr->depth << " bit @" << itr->frequency; - videomodeComboBox->addItem( ss.str().c_str() ); - } - } - else - { - // OpenGL should be available everywhere! - for( std::vector< CVideoMode >::iterator itr = s.openglInfo.modes.begin(); itr != s.openglInfo.modes.end(); ++itr ) - { - std::stringstream ss; - ss << itr->widht << "x" << itr->height << " " << itr->depth << " bit @" << itr->frequency; - videomodeComboBox->addItem( ss.str().c_str() ); - } - } -} - -uint32 CDisplaySettingsWidget::findVideoModeIndex( CVideoMode *mode ) -{ - ////////////////////////////////////////////////////////////////////////////////// - // WARNING: - // This part relies on that the video mode combo box is filled as the following: - // - //| --------------------------------------| - //| Selected driver | Modes | - //| --------------------------------------| - //| Auto | OpenGL modes | - //| OpenGL | OpenGL modes | - //| Direct3D | Direct3d modes | - //| --------------------------------------| - // - // - ////////////////////////////////////////////////////////////////////////////////// - - CVideoMode &m = *mode; - CSystem &s = CSystem::GetInstance(); - - if( direct3dRadioButton->isChecked() ) - { - for( uint32 i = 0; i < s.d3dInfo.modes.size(); i++ ) - if( s.d3dInfo.modes[ i ] == m ) - return i; - } - else - { - // Again OpenGL should be available everywhere! - for( uint32 i = 0; i < s.openglInfo.modes.size(); i++ ) - if( s.openglInfo.modes[ i ] == m ) - return i; - } - - return 0; -} - -E3DDriver CDisplaySettingsWidget::getDriverFromConfigString(std::string &str) const -{ - if( str.compare( "0" ) == 0 ) - return DRV_AUTO; - if( str.compare( "1" ) == 0 ) - return DRV_OPENGL; - if( str.compare( "2" ) == 0 ) - return DRV_DIRECT3D; - if( str.compare( "OpenGL" ) == 0 ) - return DRV_OPENGL; - if( str.compare( "Direct3D" ) == 0) - return DRV_DIRECT3D; - - - return DRV_AUTO; -} +// Ryzom - 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 . + +#include +#include +#include "display_settings_widget.h" +#include "system.h" +#include + +CDisplaySettingsWidget::CDisplaySettingsWidget( QWidget *parent ) : + CWidgetBase( parent ) +{ + setupUi( this ); + widthLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), widthLineEdit ) ); + heightLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), heightLineEdit ) ); + xpositionLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), xpositionLineEdit ) ); + ypositionLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), ypositionLineEdit ) ); + load(); + + connect( autoRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); + connect( openglRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); + connect( direct3dRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); + connect( fullscreenRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); + connect( windowedRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); + connect( widthLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) ); + connect( heightLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) ); + connect( xpositionLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) ); + connect( ypositionLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) ); + connect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) ); + connect( autoRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) ); + connect( openglRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) ); + connect( direct3dRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) ); +} + +CDisplaySettingsWidget::~CDisplaySettingsWidget() +{ +} + +void CDisplaySettingsWidget::load() +{ + CSystem &s = CSystem::GetInstance(); + + std::string driver = s.config.getString( "Driver3D" ); + switch( getDriverFromConfigString( driver ) ) + { + case DRV_AUTO: + autoRadioButton->setChecked( true ); + break; + case DRV_OPENGL: + openglRadioButton->setChecked( true ); + break; + case DRV_DIRECT3D: + direct3dRadioButton->setChecked( true ); + break; + } + + updateVideoModes(); + + + CVideoMode mode; + mode.widht = s.config.getInt( "Width" ); + mode.height = s.config.getInt( "Height" ); + mode.depth = s.config.getInt( "Depth" ); + mode.frequency = s.config.getInt( "Frequency" ); + + if( s.config.getInt( "FullScreen" ) == 1 ) + { + fullscreenRadioButton->setChecked( true ); + videomodeComboBox->setCurrentIndex( findVideoModeIndex( &mode ) ); + } + else + { + windowedRadioButton->setChecked( true ); + } + + widthLineEdit->setText( QString( "%1" ).arg( mode.widht ) ); + heightLineEdit->setText( QString( "%1" ).arg( mode.height ) ); + xpositionLineEdit->setText( QString( "%1" ).arg( s.config.getInt( "PositionX" ) ) ); + ypositionLineEdit->setText( QString( "%1" ).arg( s.config.getInt( "PositionY" ) ) ); + +} + +void CDisplaySettingsWidget::save() +{ + CSystem &s = CSystem::GetInstance(); + + if( openglRadioButton->isChecked() ) + s.config.setString( "Driver3D", std::string( "OpenGL" ) ); + else if( direct3dRadioButton->isChecked() ) + s.config.setString( "Driver3D", std::string( "Direct3D" ) ); + else + s.config.setString( "Driver3D", std::string( "Auto" ) ); + + if( fullscreenRadioButton->isChecked() ) + { + s.config.setInt( "FullScreen", 1 ); + + sint32 index = videomodeComboBox->currentIndex(); + CVideoMode mode; + + // OpenGL should be available everywhere! + if( direct3dRadioButton->isChecked() ) + mode = s.d3dInfo.modes[ index ]; + else + mode = s.openglInfo.modes[ index ]; + + s.config.setInt( "Width", mode.widht ); + s.config.setInt( "Height", mode.height ); + s.config.setInt( "Depth", mode.depth ); + s.config.setInt( "Frequency", mode.frequency ); + + } + else + { + s.config.setInt( "FullScreen", 0 ); + s.config.setInt( "Width", widthLineEdit->text().toInt() ); + s.config.setInt( "Height", heightLineEdit->text().toInt() ); + } + + s.config.setInt( "PositionX", xpositionLineEdit->text().toInt() ); + s.config.setInt( "PositionY", ypositionLineEdit->text().toInt() ); +} + +void CDisplaySettingsWidget::changeEvent( QEvent *event ) +{ + if( event->type() == QEvent::LanguageChange ) + { + disconnect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) ); + retranslateUi( this ); + connect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) ); + } + QWidget::changeEvent( event ); +} + +void CDisplaySettingsWidget::updateVideoModes() +{ + CSystem &s = CSystem::GetInstance(); + + videomodeComboBox->clear(); + + if( direct3dRadioButton->isChecked() ) + { + for( std::vector< CVideoMode >::iterator itr = s.d3dInfo.modes.begin(); itr != s.d3dInfo.modes.end(); ++itr ) + { + std::stringstream ss; + ss << itr->widht << "x" << itr->height << " " << itr->depth << " bit @" << itr->frequency; + videomodeComboBox->addItem( ss.str().c_str() ); + } + } + else + { + // OpenGL should be available everywhere! + for( std::vector< CVideoMode >::iterator itr = s.openglInfo.modes.begin(); itr != s.openglInfo.modes.end(); ++itr ) + { + std::stringstream ss; + ss << itr->widht << "x" << itr->height << " " << itr->depth << " bit @" << itr->frequency; + videomodeComboBox->addItem( ss.str().c_str() ); + } + } +} + +uint32 CDisplaySettingsWidget::findVideoModeIndex( CVideoMode *mode ) +{ + ////////////////////////////////////////////////////////////////////////////////// + // WARNING: + // This part relies on that the video mode combo box is filled as the following: + // + //| --------------------------------------| + //| Selected driver | Modes | + //| --------------------------------------| + //| Auto | OpenGL modes | + //| OpenGL | OpenGL modes | + //| Direct3D | Direct3d modes | + //| --------------------------------------| + // + // + ////////////////////////////////////////////////////////////////////////////////// + + CVideoMode &m = *mode; + CSystem &s = CSystem::GetInstance(); + + if( direct3dRadioButton->isChecked() ) + { + for( uint32 i = 0; i < s.d3dInfo.modes.size(); i++ ) + if( s.d3dInfo.modes[ i ] == m ) + return i; + } + else + { + // Again OpenGL should be available everywhere! + for( uint32 i = 0; i < s.openglInfo.modes.size(); i++ ) + if( s.openglInfo.modes[ i ] == m ) + return i; + } + + return 0; +} + +E3DDriver CDisplaySettingsWidget::getDriverFromConfigString(std::string &str) const +{ + if( str.compare( "0" ) == 0 ) + return DRV_AUTO; + if( str.compare( "1" ) == 0 ) + return DRV_OPENGL; + if( str.compare( "2" ) == 0 ) + return DRV_DIRECT3D; + if( str.compare( "OpenGL" ) == 0 ) + return DRV_OPENGL; + if( str.compare( "Direct3D" ) == 0) + return DRV_DIRECT3D; + + + return DRV_AUTO; +} diff --git a/code/ryzom/tools/client/client_config_qt/display_settings_widget.h b/code/ryzom/tools/client/client_config_qt/display_settings_widget.h index 5da578bbf..f67ec8b15 100644 --- a/code/ryzom/tools/client/client_config_qt/display_settings_widget.h +++ b/code/ryzom/tools/client/client_config_qt/display_settings_widget.h @@ -1,72 +1,72 @@ -// Ryzom - 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 DISPLAYSETTINGSWIDGET_H -#define DISPLAYSETTINGSWIDGET_H - -#include "ui_display_settings_widget.h" -#include "widget_base.h" -#include - -struct CVideoMode; - -enum E3DDriver -{ - DRV_AUTO, - DRV_OPENGL, - DRV_DIRECT3D -}; - -/** - @brief The display settings page of the configuration tool -*/ -class CDisplaySettingsWidget : public CWidgetBase, public Ui::display_settings_widget -{ - Q_OBJECT -public: - CDisplaySettingsWidget( QWidget *parent = NULL ); - ~CDisplaySettingsWidget(); - - void load(); - void save(); - -protected: - void changeEvent( QEvent *event ); - -private slots: - /** - @brief Updates the video modes combo box, based on the current driver selection. - */ - void updateVideoModes(); - -private: - /** - @brief Finds the proper index for the video mode combobox - @param mode - the video mode read from config - @return Returns the proper video mode index if found, returns 0 otherwise. - */ - uint32 findVideoModeIndex( CVideoMode *mode ); - - - /** - @brief Retrieves the driver type from the config string. - @param str - Reference to the driver string. - @return Returns the driver type on success, rReturns E3DDriver::DRV_AUTO otherwise. - */ - E3DDriver getDriverFromConfigString( std::string &str ) const; -}; - -#endif // DISPLAYSETTINGSWIDGET_H +// Ryzom - 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 DISPLAYSETTINGSWIDGET_H +#define DISPLAYSETTINGSWIDGET_H + +#include "ui_display_settings_widget.h" +#include "widget_base.h" +#include + +struct CVideoMode; + +enum E3DDriver +{ + DRV_AUTO, + DRV_OPENGL, + DRV_DIRECT3D +}; + +/** + @brief The display settings page of the configuration tool +*/ +class CDisplaySettingsWidget : public CWidgetBase, public Ui::display_settings_widget +{ + Q_OBJECT +public: + CDisplaySettingsWidget( QWidget *parent = NULL ); + ~CDisplaySettingsWidget(); + + void load(); + void save(); + +protected: + void changeEvent( QEvent *event ); + +private slots: + /** + @brief Updates the video modes combo box, based on the current driver selection. + */ + void updateVideoModes(); + +private: + /** + @brief Finds the proper index for the video mode combobox + @param mode - the video mode read from config + @return Returns the proper video mode index if found, returns 0 otherwise. + */ + uint32 findVideoModeIndex( CVideoMode *mode ); + + + /** + @brief Retrieves the driver type from the config string. + @param str - Reference to the driver string. + @return Returns the driver type on success, rReturns E3DDriver::DRV_AUTO otherwise. + */ + E3DDriver getDriverFromConfigString( std::string &str ) const; +}; + +#endif // DISPLAYSETTINGSWIDGET_H diff --git a/code/ryzom/tools/client/client_config_qt/general_settings_widget.cpp b/code/ryzom/tools/client/client_config_qt/general_settings_widget.cpp index 357bd45d4..fcb85dec2 100644 --- a/code/ryzom/tools/client/client_config_qt/general_settings_widget.cpp +++ b/code/ryzom/tools/client/client_config_qt/general_settings_widget.cpp @@ -1,121 +1,121 @@ -// Ryzom - 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 . - -#include "general_settings_widget.h" -#include "system.h" -#include - -const QString CGeneralSettingsWidget::languageCodes[ NUM_LANGUAGE_CODES ] = -{ - "en", - "fr", - "de", - "hu" -}; - -CGeneralSettingsWidget::CGeneralSettingsWidget( QWidget *parent ) : - CWidgetBase( parent ) -{ - currentTranslator = NULL; - setupUi( this ); - load(); - - connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) ); - connect( saveConfigOnQuitCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) ); - connect( lowPriorityProcessCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) ); -} - -CGeneralSettingsWidget::~CGeneralSettingsWidget() -{ -} - -void CGeneralSettingsWidget::load() -{ - CSystem &s = CSystem::GetInstance(); - - sint32 cbIndex = getIndexForLanguageCode( QString( s.config.getString( "LanguageCode" ).c_str() ) ); - if( cbIndex != -1 ){ - languageComboBox->setCurrentIndex( cbIndex ); - onLanguageChanged(); - } - - if( s.config.getInt( "SaveConfig" ) ) - saveConfigOnQuitCheckBox->setChecked( true ); - - if( s.config.getInt( "ProcessPriority" ) == -1 ) - lowPriorityProcessCheckBox->setChecked( true ); - else - lowPriorityProcessCheckBox->setChecked( false ); -} - -void CGeneralSettingsWidget::save() -{ - CSystem &s = CSystem::GetInstance(); - - s.config.setString( "LanguageCode", std::string( languageCodes[ languageComboBox->currentIndex() ].toUtf8() ) ); - - if( saveConfigOnQuitCheckBox->isChecked() ) - s.config.setInt( "SaveConfig", 1 ); - else - s.config.setInt( "SaveConfig", 0 ); - - if( lowPriorityProcessCheckBox->isChecked() ) - s.config.setInt( "ProcessPriority", -1 ); - else - s.config.setInt( "ProcessPriority", 0 ); -} - -void CGeneralSettingsWidget::onLanguageChanged() -{ - sint32 i = languageComboBox->currentIndex(); - - if( currentTranslator != NULL ) - { - qApp->removeTranslator( currentTranslator ); - delete currentTranslator; - currentTranslator = NULL; - } - - currentTranslator = new QTranslator(); - if( currentTranslator->load( QString( ":/translations/ryzom_configuration_%1" ).arg( languageCodes[ i ] ) ) ) - qApp->installTranslator( currentTranslator ); - - emit changed(); -} - -void CGeneralSettingsWidget::changeEvent( QEvent *event ) -{ - if( event->type() == QEvent::LanguageChange ) - { - sint32 i = languageComboBox->currentIndex(); - // Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget - disconnect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) ); - retranslateUi( this ); - languageComboBox->setCurrentIndex( i ); - connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) ); - } - - QWidget::changeEvent( event ); -} - -int CGeneralSettingsWidget::getIndexForLanguageCode( QString &languageCode ) -{ - for( sint32 i = 0; i < NUM_LANGUAGE_CODES; i++ ) - if( languageCode.compare( languageCodes[ i ] ) == 0 ) - return i; - - return -1; -} +// Ryzom - 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 . + +#include "general_settings_widget.h" +#include "system.h" +#include + +const QString CGeneralSettingsWidget::languageCodes[ NUM_LANGUAGE_CODES ] = +{ + "en", + "fr", + "de", + "hu" +}; + +CGeneralSettingsWidget::CGeneralSettingsWidget( QWidget *parent ) : + CWidgetBase( parent ) +{ + currentTranslator = NULL; + setupUi( this ); + load(); + + connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) ); + connect( saveConfigOnQuitCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) ); + connect( lowPriorityProcessCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) ); +} + +CGeneralSettingsWidget::~CGeneralSettingsWidget() +{ +} + +void CGeneralSettingsWidget::load() +{ + CSystem &s = CSystem::GetInstance(); + + sint32 cbIndex = getIndexForLanguageCode( QString( s.config.getString( "LanguageCode" ).c_str() ) ); + if( cbIndex != -1 ){ + languageComboBox->setCurrentIndex( cbIndex ); + onLanguageChanged(); + } + + if( s.config.getInt( "SaveConfig" ) ) + saveConfigOnQuitCheckBox->setChecked( true ); + + if( s.config.getInt( "ProcessPriority" ) == -1 ) + lowPriorityProcessCheckBox->setChecked( true ); + else + lowPriorityProcessCheckBox->setChecked( false ); +} + +void CGeneralSettingsWidget::save() +{ + CSystem &s = CSystem::GetInstance(); + + s.config.setString( "LanguageCode", std::string( languageCodes[ languageComboBox->currentIndex() ].toUtf8() ) ); + + if( saveConfigOnQuitCheckBox->isChecked() ) + s.config.setInt( "SaveConfig", 1 ); + else + s.config.setInt( "SaveConfig", 0 ); + + if( lowPriorityProcessCheckBox->isChecked() ) + s.config.setInt( "ProcessPriority", -1 ); + else + s.config.setInt( "ProcessPriority", 0 ); +} + +void CGeneralSettingsWidget::onLanguageChanged() +{ + sint32 i = languageComboBox->currentIndex(); + + if( currentTranslator != NULL ) + { + qApp->removeTranslator( currentTranslator ); + delete currentTranslator; + currentTranslator = NULL; + } + + currentTranslator = new QTranslator(); + if( currentTranslator->load( QString( ":/translations/ryzom_configuration_%1" ).arg( languageCodes[ i ] ) ) ) + qApp->installTranslator( currentTranslator ); + + emit changed(); +} + +void CGeneralSettingsWidget::changeEvent( QEvent *event ) +{ + if( event->type() == QEvent::LanguageChange ) + { + sint32 i = languageComboBox->currentIndex(); + // Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget + disconnect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) ); + retranslateUi( this ); + languageComboBox->setCurrentIndex( i ); + connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) ); + } + + QWidget::changeEvent( event ); +} + +int CGeneralSettingsWidget::getIndexForLanguageCode( QString &languageCode ) +{ + for( sint32 i = 0; i < NUM_LANGUAGE_CODES; i++ ) + if( languageCode.compare( languageCodes[ i ] ) == 0 ) + return i; + + return -1; +} diff --git a/code/ryzom/tools/client/client_config_qt/general_settings_widget.h b/code/ryzom/tools/client/client_config_qt/general_settings_widget.h index dd6e41752..c8d530ea5 100644 --- a/code/ryzom/tools/client/client_config_qt/general_settings_widget.h +++ b/code/ryzom/tools/client/client_config_qt/general_settings_widget.h @@ -1,66 +1,66 @@ -// Ryzom - 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 GENERALSETTINGWIDGET_H -#define GENERALSETTINGWIDGET_H - -#include "ui_general_settings_widget.h" -#include "widget_base.h" -#include - -class QTranslator; - -enum -{ - NUM_LANGUAGE_CODES = 4 -}; - -/** - @brief The general settings page of the configuration tool -*/ -class CGeneralSettingsWidget : public CWidgetBase, public Ui::general_settings_widget -{ - Q_OBJECT - -public: - CGeneralSettingsWidget( QWidget *parent = NULL ); - ~CGeneralSettingsWidget(); - - void load(); - void save(); - -private slots: - void onLanguageChanged(); - -protected: - void changeEvent( QEvent *event ); - -private: - /** - @brief Retrieves the language combobox index for the language code provided. - @param languageCode - Reference to the language code, we are trying to find. - @return Returns the index on success, returns -1 if the language code cannot be found. - */ - sint32 getIndexForLanguageCode( QString &languageCode ); - - // Contains the language codes used in the config file - // They are in the same order as the options in languageComboBox - static const QString languageCodes[ NUM_LANGUAGE_CODES ]; - - QTranslator *currentTranslator; -}; - -#endif // GENERALSETTINGWIDGET_H +// Ryzom - 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 GENERALSETTINGWIDGET_H +#define GENERALSETTINGWIDGET_H + +#include "ui_general_settings_widget.h" +#include "widget_base.h" +#include + +class QTranslator; + +enum +{ + NUM_LANGUAGE_CODES = 4 +}; + +/** + @brief The general settings page of the configuration tool +*/ +class CGeneralSettingsWidget : public CWidgetBase, public Ui::general_settings_widget +{ + Q_OBJECT + +public: + CGeneralSettingsWidget( QWidget *parent = NULL ); + ~CGeneralSettingsWidget(); + + void load(); + void save(); + +private slots: + void onLanguageChanged(); + +protected: + void changeEvent( QEvent *event ); + +private: + /** + @brief Retrieves the language combobox index for the language code provided. + @param languageCode - Reference to the language code, we are trying to find. + @return Returns the index on success, returns -1 if the language code cannot be found. + */ + sint32 getIndexForLanguageCode( QString &languageCode ); + + // Contains the language codes used in the config file + // They are in the same order as the options in languageComboBox + static const QString languageCodes[ NUM_LANGUAGE_CODES ]; + + QTranslator *currentTranslator; +}; + +#endif // GENERALSETTINGWIDGET_H diff --git a/code/ryzom/tools/client/client_config_qt/main.cpp b/code/ryzom/tools/client/client_config_qt/main.cpp index f643005bc..758598e92 100644 --- a/code/ryzom/tools/client/client_config_qt/main.cpp +++ b/code/ryzom/tools/client/client_config_qt/main.cpp @@ -1,36 +1,36 @@ -// Ryzom - 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 . - -#include -#include "client_config_dialog.h" -#include "system.h" - -int main( sint32 argc, char **argv ) -{ - QApplication app( argc, argv ); - QPixmap pixmap( ":/resources/splash_screen.bmp" ); - QSplashScreen splash( pixmap ); - - splash.show(); - - CSystem::GetInstance().config.load( "client.cfg" ); - - CClientConfigDialog d; - d.show(); - splash.finish( &d ); - - return app.exec(); -} +// Ryzom - 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 . + +#include +#include "client_config_dialog.h" +#include "system.h" + +int main( sint32 argc, char **argv ) +{ + QApplication app( argc, argv ); + QPixmap pixmap( ":/resources/splash_screen.bmp" ); + QSplashScreen splash( pixmap ); + + splash.show(); + + CSystem::GetInstance().config.load( "client.cfg" ); + + CClientConfigDialog d; + d.show(); + splash.finish( &d ); + + return app.exec(); +} diff --git a/code/ryzom/tools/client/client_config_qt/sound_settings_widget.cpp b/code/ryzom/tools/client/client_config_qt/sound_settings_widget.cpp index 1b7dc5248..5436ac2b4 100644 --- a/code/ryzom/tools/client/client_config_qt/sound_settings_widget.cpp +++ b/code/ryzom/tools/client/client_config_qt/sound_settings_widget.cpp @@ -1,99 +1,99 @@ -// Ryzom - 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 . - -#include "sound_settings_widget.h" -#include "system.h" - -CSoundSettingsWidget::CSoundSettingsWidget( QWidget *parent ) : - CWidgetBase( parent ) -{ - setupUi( this ); - load(); - - connect( tracksSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onTracksSliderChange() ) ); - connect( soundCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); - connect( eaxCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); - connect( softwareCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); - connect( fmodCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); -} - -CSoundSettingsWidget::~CSoundSettingsWidget() -{ -} - -void CSoundSettingsWidget::onTracksSliderChange() -{ - updateTracksLabel(); - emit changed(); -} - -void CSoundSettingsWidget::load() -{ - CSystem &s = CSystem::GetInstance(); - - if( s.config.getInt( "SoundOn" ) == 1 ) - soundCheckBox->setChecked( true ); - - if( s.config.getInt( "UseEax" ) == 1 ) - eaxCheckBox->setChecked( true ); - - if( s.config.getInt( "SoundForceSoftwareBuffer" ) == 1 ) - softwareCheckBox->setChecked( true ); - - sint32 tracks = s.config.getInt( "MaxTrack" ); - if( tracks < 4 ) - tracks = 4; - if( tracks > 32 ) - tracks = 32; - tracksSlider->setValue( tracks / 4 ); - - if( s.config.getString( "DriverSound" ).compare( "FMod" ) == 0 ) - fmodCheckBox->setChecked( true ); -} - -void CSoundSettingsWidget::save() -{ - CSystem &s = CSystem::GetInstance(); - - if( soundCheckBox->isChecked() ) - s.config.setInt( "SoundOn", 1 ); - - if( eaxCheckBox->isChecked() ) - s.config.setInt( "UseEax", 1 ); - - if( softwareCheckBox->isChecked() ) - s.config.setInt( "SoundForceSoftwareBuffer", 1 ); - - s.config.setInt( "MaxTrack", tracksSlider->value() * 4 ); - - if( fmodCheckBox->isChecked() ) - s.config.setString( "DriverSound", std::string( "FMod" ) ); -} - -void CSoundSettingsWidget::changeEvent( QEvent *event ) -{ - if( event->type() == QEvent::LanguageChange ) - { - retranslateUi( this ); - updateTracksLabel(); - } - QWidget::changeEvent( event ); -} - -void CSoundSettingsWidget::updateTracksLabel() -{ - tracksLabel->setText( tr( "%1 tracks" ).arg( tracksSlider->value() * 4 ) ); +// Ryzom - 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 . + +#include "sound_settings_widget.h" +#include "system.h" + +CSoundSettingsWidget::CSoundSettingsWidget( QWidget *parent ) : + CWidgetBase( parent ) +{ + setupUi( this ); + load(); + + connect( tracksSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onTracksSliderChange() ) ); + connect( soundCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); + connect( eaxCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); + connect( softwareCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); + connect( fmodCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); +} + +CSoundSettingsWidget::~CSoundSettingsWidget() +{ +} + +void CSoundSettingsWidget::onTracksSliderChange() +{ + updateTracksLabel(); + emit changed(); +} + +void CSoundSettingsWidget::load() +{ + CSystem &s = CSystem::GetInstance(); + + if( s.config.getInt( "SoundOn" ) == 1 ) + soundCheckBox->setChecked( true ); + + if( s.config.getInt( "UseEax" ) == 1 ) + eaxCheckBox->setChecked( true ); + + if( s.config.getInt( "SoundForceSoftwareBuffer" ) == 1 ) + softwareCheckBox->setChecked( true ); + + sint32 tracks = s.config.getInt( "MaxTrack" ); + if( tracks < 4 ) + tracks = 4; + if( tracks > 32 ) + tracks = 32; + tracksSlider->setValue( tracks / 4 ); + + if( s.config.getString( "DriverSound" ).compare( "FMod" ) == 0 ) + fmodCheckBox->setChecked( true ); +} + +void CSoundSettingsWidget::save() +{ + CSystem &s = CSystem::GetInstance(); + + if( soundCheckBox->isChecked() ) + s.config.setInt( "SoundOn", 1 ); + + if( eaxCheckBox->isChecked() ) + s.config.setInt( "UseEax", 1 ); + + if( softwareCheckBox->isChecked() ) + s.config.setInt( "SoundForceSoftwareBuffer", 1 ); + + s.config.setInt( "MaxTrack", tracksSlider->value() * 4 ); + + if( fmodCheckBox->isChecked() ) + s.config.setString( "DriverSound", std::string( "FMod" ) ); +} + +void CSoundSettingsWidget::changeEvent( QEvent *event ) +{ + if( event->type() == QEvent::LanguageChange ) + { + retranslateUi( this ); + updateTracksLabel(); + } + QWidget::changeEvent( event ); +} + +void CSoundSettingsWidget::updateTracksLabel() +{ + tracksLabel->setText( tr( "%1 tracks" ).arg( tracksSlider->value() * 4 ) ); } \ No newline at end of file diff --git a/code/ryzom/tools/client/client_config_qt/sound_settings_widget.h b/code/ryzom/tools/client/client_config_qt/sound_settings_widget.h index f1a54114b..d98a89d82 100644 --- a/code/ryzom/tools/client/client_config_qt/sound_settings_widget.h +++ b/code/ryzom/tools/client/client_config_qt/sound_settings_widget.h @@ -1,50 +1,50 @@ -// Ryzom - 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 SOUNDSETTINGSWIDGET_H -#define SOUNDSETTINGSWIDGET_H - -#include "ui_sound_settings_widget.h" -#include "widget_base.h" -#include - -/** - @brief The sound settings page of the configuration tool -*/ -class CSoundSettingsWidget : public CWidgetBase, public Ui::sound_settings_widget -{ - Q_OBJECT -public: - CSoundSettingsWidget( QWidget *parent = NULL ); - ~CSoundSettingsWidget(); - - void load(); - void save(); - -protected: - void changeEvent( QEvent *event ); - -private slots: - void onTracksSliderChange(); - -private: - /** - @brief Updates the text on the tracks label. - */ - void updateTracksLabel(); -}; - -#endif // SOUNDSETTINGSWIDGET_H +// Ryzom - 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 SOUNDSETTINGSWIDGET_H +#define SOUNDSETTINGSWIDGET_H + +#include "ui_sound_settings_widget.h" +#include "widget_base.h" +#include + +/** + @brief The sound settings page of the configuration tool +*/ +class CSoundSettingsWidget : public CWidgetBase, public Ui::sound_settings_widget +{ + Q_OBJECT +public: + CSoundSettingsWidget( QWidget *parent = NULL ); + ~CSoundSettingsWidget(); + + void load(); + void save(); + +protected: + void changeEvent( QEvent *event ); + +private slots: + void onTracksSliderChange(); + +private: + /** + @brief Updates the text on the tracks label. + */ + void updateTracksLabel(); +}; + +#endif // SOUNDSETTINGSWIDGET_H diff --git a/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.cpp b/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.cpp index 2852a98dd..894ea07ac 100644 --- a/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.cpp +++ b/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.cpp @@ -1,41 +1,41 @@ -// Ryzom - 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 . - -#include "sys_info_d3d_widget.h" -#include "system.h" - -CSysInfoD3DWidget::CSysInfoD3DWidget( QWidget *parent ) : - QWidget( parent ) -{ - setupUi( this ); - - descriptionLabel->setText( CSystem::GetInstance().d3dInfo.device.c_str() ); - driverLabel->setText( CSystem::GetInstance().d3dInfo.driver.c_str() ); - versionLabel->setText( CSystem::GetInstance().d3dInfo.driverVersion.c_str() ); -} - -CSysInfoD3DWidget::~CSysInfoD3DWidget() -{ -} - -void CSysInfoD3DWidget::changeEvent( QEvent *event ) -{ - if( event->type() == QEvent::LanguageChange ) - { - retranslateUi( this ); - } - QWidget::changeEvent( event ); -} +// Ryzom - 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 . + +#include "sys_info_d3d_widget.h" +#include "system.h" + +CSysInfoD3DWidget::CSysInfoD3DWidget( QWidget *parent ) : + QWidget( parent ) +{ + setupUi( this ); + + descriptionLabel->setText( CSystem::GetInstance().d3dInfo.device.c_str() ); + driverLabel->setText( CSystem::GetInstance().d3dInfo.driver.c_str() ); + versionLabel->setText( CSystem::GetInstance().d3dInfo.driverVersion.c_str() ); +} + +CSysInfoD3DWidget::~CSysInfoD3DWidget() +{ +} + +void CSysInfoD3DWidget::changeEvent( QEvent *event ) +{ + if( event->type() == QEvent::LanguageChange ) + { + retranslateUi( this ); + } + QWidget::changeEvent( event ); +} diff --git a/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.h b/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.h index 64d13a6a4..6f79782ae 100644 --- a/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.h +++ b/code/ryzom/tools/client/client_config_qt/sys_info_d3d_widget.h @@ -1,39 +1,39 @@ -// Ryzom - 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 SYSINFOD3DWIDGET_H -#define SYSINFOD3DWIDGET_H - -#include "ui_sys_Info_d3d_widget.h" - - -/** - @brief The Direct3D information page of the configuration tool -*/ -class CSysInfoD3DWidget : public QWidget, public Ui::sys_info_d3d_widget -{ - Q_OBJECT -public: - CSysInfoD3DWidget( QWidget *parent = NULL ); - ~CSysInfoD3DWidget(); - -protected: - void changeEvent( QEvent *event ); - -}; - - -#endif // SYSINFOD3DWIDGET_H +// Ryzom - 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 SYSINFOD3DWIDGET_H +#define SYSINFOD3DWIDGET_H + +#include "ui_sys_Info_d3d_widget.h" + + +/** + @brief The Direct3D information page of the configuration tool +*/ +class CSysInfoD3DWidget : public QWidget, public Ui::sys_info_d3d_widget +{ + Q_OBJECT +public: + CSysInfoD3DWidget( QWidget *parent = NULL ); + ~CSysInfoD3DWidget(); + +protected: + void changeEvent( QEvent *event ); + +}; + + +#endif // SYSINFOD3DWIDGET_H diff --git a/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.cpp b/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.cpp index 9792bbdbc..0665025be 100644 --- a/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.cpp +++ b/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.cpp @@ -1,42 +1,42 @@ -// Ryzom - 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 . - -#include "sys_info_opengl_widget.h" -#include "system.h" - -CSysInfoOpenGLWidget::CSysInfoOpenGLWidget( QWidget *parent ) : - QWidget( parent ) -{ - setupUi( this ); - vendorLabel->setText( CSystem::GetInstance().openglInfo.vendor.c_str() ); - rendererLabel->setText( CSystem::GetInstance().openglInfo.renderer.c_str() ); - versionLabel->setText( CSystem::GetInstance().openglInfo.driverVersion.c_str() ); - extensionsBox->setPlainText( CSystem::GetInstance().openglInfo.extensions.c_str() ); - -} - -CSysInfoOpenGLWidget::~CSysInfoOpenGLWidget() -{ -} - -void CSysInfoOpenGLWidget::changeEvent( QEvent *event ) -{ - if( event->type() == QEvent::LanguageChange ) - { - retranslateUi( this ); - } - QWidget::changeEvent( event ); -} +// Ryzom - 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 . + +#include "sys_info_opengl_widget.h" +#include "system.h" + +CSysInfoOpenGLWidget::CSysInfoOpenGLWidget( QWidget *parent ) : + QWidget( parent ) +{ + setupUi( this ); + vendorLabel->setText( CSystem::GetInstance().openglInfo.vendor.c_str() ); + rendererLabel->setText( CSystem::GetInstance().openglInfo.renderer.c_str() ); + versionLabel->setText( CSystem::GetInstance().openglInfo.driverVersion.c_str() ); + extensionsBox->setPlainText( CSystem::GetInstance().openglInfo.extensions.c_str() ); + +} + +CSysInfoOpenGLWidget::~CSysInfoOpenGLWidget() +{ +} + +void CSysInfoOpenGLWidget::changeEvent( QEvent *event ) +{ + if( event->type() == QEvent::LanguageChange ) + { + retranslateUi( this ); + } + QWidget::changeEvent( event ); +} diff --git a/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.h b/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.h index 6f40db7d7..f1d396f51 100644 --- a/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.h +++ b/code/ryzom/tools/client/client_config_qt/sys_info_opengl_widget.h @@ -1,38 +1,38 @@ -// Ryzom - 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 SYSINFOOPENGLWIDGET_H -#define SYSINFOOPENGLWIDGET_H - -#include "ui_sys_info_opengl_widget.h" - - -/** - @brief The OpenGL information page of the configuration tool -*/ -class CSysInfoOpenGLWidget : public QWidget, public Ui::sys_info_opengl_widget -{ - Q_OBJECT -public: - CSysInfoOpenGLWidget( QWidget *parent = NULL ); - ~CSysInfoOpenGLWidget(); - -protected: - void changeEvent( QEvent *event ); - -}; - -#endif // SYSINFOOPENGLWIDGET_H +// Ryzom - 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 SYSINFOOPENGLWIDGET_H +#define SYSINFOOPENGLWIDGET_H + +#include "ui_sys_info_opengl_widget.h" + + +/** + @brief The OpenGL information page of the configuration tool +*/ +class CSysInfoOpenGLWidget : public QWidget, public Ui::sys_info_opengl_widget +{ + Q_OBJECT +public: + CSysInfoOpenGLWidget( QWidget *parent = NULL ); + ~CSysInfoOpenGLWidget(); + +protected: + void changeEvent( QEvent *event ); + +}; + +#endif // SYSINFOOPENGLWIDGET_H diff --git a/code/ryzom/tools/client/client_config_qt/sys_info_widget.cpp b/code/ryzom/tools/client/client_config_qt/sys_info_widget.cpp index 58845fd38..26d52ddb8 100644 --- a/code/ryzom/tools/client/client_config_qt/sys_info_widget.cpp +++ b/code/ryzom/tools/client/client_config_qt/sys_info_widget.cpp @@ -1,46 +1,46 @@ -// Ryzom - 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 . - -#include "sys_info_widget.h" -#include "system.h" - -CSysInfoWidget::CSysInfoWidget( QWidget *parent ) : - QWidget( parent ) -{ - setupUi( this ); - - osLabel->setText( CSystem::GetInstance().sysInfo.osName.c_str() ); - cpuLabel->setText( CSystem::GetInstance().sysInfo.cpuName.c_str() ); - - ramLabel->setText( - QString().setNum( CSystem::GetInstance().sysInfo.totalRAM ).append( " Mb" ) ); - - gfxcardLabel->setText( CSystem::GetInstance().sysInfo.videoDevice.c_str() ); - gfxdriverLabel->setText( CSystem::GetInstance().sysInfo.videoDriverVersion.c_str() ); -} - -CSysInfoWidget::~CSysInfoWidget() -{ -} - -void CSysInfoWidget::changeEvent( QEvent *event ) -{ - if( event->type() == QEvent::LanguageChange ) - { - retranslateUi( this ); - } - QWidget::changeEvent( event ); -} +// Ryzom - 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 . + +#include "sys_info_widget.h" +#include "system.h" + +CSysInfoWidget::CSysInfoWidget( QWidget *parent ) : + QWidget( parent ) +{ + setupUi( this ); + + osLabel->setText( CSystem::GetInstance().sysInfo.osName.c_str() ); + cpuLabel->setText( CSystem::GetInstance().sysInfo.cpuName.c_str() ); + + ramLabel->setText( + QString().setNum( CSystem::GetInstance().sysInfo.totalRAM ).append( " Mb" ) ); + + gfxcardLabel->setText( CSystem::GetInstance().sysInfo.videoDevice.c_str() ); + gfxdriverLabel->setText( CSystem::GetInstance().sysInfo.videoDriverVersion.c_str() ); +} + +CSysInfoWidget::~CSysInfoWidget() +{ +} + +void CSysInfoWidget::changeEvent( QEvent *event ) +{ + if( event->type() == QEvent::LanguageChange ) + { + retranslateUi( this ); + } + QWidget::changeEvent( event ); +} diff --git a/code/ryzom/tools/client/client_config_qt/sys_info_widget.h b/code/ryzom/tools/client/client_config_qt/sys_info_widget.h index 8bb885aee..d266c119d 100644 --- a/code/ryzom/tools/client/client_config_qt/sys_info_widget.h +++ b/code/ryzom/tools/client/client_config_qt/sys_info_widget.h @@ -1,38 +1,38 @@ -// Ryzom - 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 SYSINFOWIDGET_H -#define SYSINFOWIDGET_H - -#include "ui_sys_info_widget.h" - - -/** - @brief The system information page of the configuration tool -*/ -class CSysInfoWidget : public QWidget, public Ui::sys_info_widget -{ - Q_OBJECT -public: - CSysInfoWidget( QWidget *parent = NULL ); - ~CSysInfoWidget(); - -protected: - void changeEvent( QEvent *event ); - -}; - -#endif // SYSINFOWIDGET_H +// Ryzom - 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 SYSINFOWIDGET_H +#define SYSINFOWIDGET_H + +#include "ui_sys_info_widget.h" + + +/** + @brief The system information page of the configuration tool +*/ +class CSysInfoWidget : public QWidget, public Ui::sys_info_widget +{ + Q_OBJECT +public: + CSysInfoWidget( QWidget *parent = NULL ); + ~CSysInfoWidget(); + +protected: + void changeEvent( QEvent *event ); + +}; + +#endif // SYSINFOWIDGET_H diff --git a/code/ryzom/tools/client/client_config_qt/system.cpp b/code/ryzom/tools/client/client_config_qt/system.cpp index 1bb50e845..c4c93f76d 100644 --- a/code/ryzom/tools/client/client_config_qt/system.cpp +++ b/code/ryzom/tools/client/client_config_qt/system.cpp @@ -1,181 +1,181 @@ -// Ryzom - 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 . - -#include "system.h" -#include -#include -#include -#include - -CSystem *CSystem::instance = NULL; - -CSystem::CSystem() -{ - GatherSysInfo(); -#ifdef WIN32 - GatherD3DInfo(); -#endif - GatherOpenGLInfo(); -} - -CSystem::~CSystem() -{ - instance = 0; -} - - -void CSystem::GatherSysInfo() -{ - std::string device; - uint64 driver; - - if( NLMISC::CSystemInfo::getVideoInfo( device, driver ) ) - { - sysInfo.videoDevice = device; - - ////////////////////////////////////////////////////////////// - // FIXME - // This is taken from the original configuration tool, and - // it generates the same *wrong* version number - ////////////////////////////////////////////////////////////// - uint32 version = static_cast< uint32 >( driver & 0xffff ); - std::stringstream ss; - - ss << ( version / 1000 % 10 ); - ss << "."; - ss << ( version / 100 % 10 ); - ss << "."; - ss << ( version / 10 % 10 ); - ss << "."; - ss << ( version % 10 ); - - sysInfo.videoDriverVersion = ss.str(); - ////////////////////////////////////////////////////////////// - } - else - { - sysInfo.videoDevice = "video card"; - sysInfo.videoDriverVersion = "0.0.0.0"; - } - - sysInfo.osName = NLMISC::CSystemInfo::getOS(); - sysInfo.cpuName = NLMISC::CSystemInfo::getProc(); - sysInfo.totalRAM = NLMISC::CSystemInfo::totalPhysicalMemory(); - sysInfo.totalRAM /= ( 1024 * 1024 ); -} - -#ifdef WIN32 -void CSystem::GatherD3DInfo() -{ - NL3D::IDriver *driver = NULL; - try - { - driver = NL3D::CDRU::createD3DDriver(); - - NL3D::IDriver::CAdapter adapter; - - if( driver->getAdapter( 0xffffffff, adapter ) ) - { - d3dInfo.device = adapter.Description; - d3dInfo.driver = adapter.Driver; - - sint64 ver = adapter.DriverVersion; - std::stringstream ss; - ss << static_cast< uint16 >( ver >> 48 ); - ss << "."; - ss << static_cast< uint16 >( ver >> 32 ); - ss << "."; - ss << static_cast< uint16 >( ver >> 16 ); - ss << "."; - ss << static_cast< uint16 >( ver & 0xFFFF ); - d3dInfo.driverVersion = ss.str(); - } - - GetVideoModes( d3dInfo.modes, driver ); - - driver->release(); - } - - catch( NLMISC::Exception &e ) - { - nlwarning( e.what() ); - } -} -#endif - -void CSystem::GatherOpenGLInfo() -{ - QGLWidget *gl = new QGLWidget(); - - gl->makeCurrent(); - - const char *s = NULL; - s = reinterpret_cast< const char * >( glGetString( GL_VENDOR ) ); - if( s != NULL ) - openglInfo.vendor.assign( s ); - - s = reinterpret_cast< const char * >( glGetString( GL_RENDERER ) ); - if( s != NULL ) - openglInfo.renderer.assign( s ); - - s = reinterpret_cast< const char * >( glGetString( GL_VERSION ) ); - if( s != NULL ) - openglInfo.driverVersion.assign( s ); - - s = reinterpret_cast< const char * >( glGetString( GL_EXTENSIONS ) ); - if( s != NULL ) - { - openglInfo.extensions.assign( s ); - for( std::string::iterator itr = openglInfo.extensions.begin(); itr != openglInfo.extensions.end(); ++itr ) - if( *itr == ' ' ) - *itr = '\n'; - } - - delete gl; - - NL3D::IDriver *driver = NULL; - try - { - driver = NL3D::CDRU::createGlDriver(); - GetVideoModes( openglInfo.modes, driver ); - driver->release(); - } - - catch( NLMISC::Exception &e ) - { - nlwarning( e.what() ); - } -} - -void CSystem::GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driver ) const -{ - std::vector< NL3D::GfxMode > modes; - driver->getModes( modes ); - - for( std::vector< NL3D::GfxMode >::iterator itr = modes.begin(); itr != modes.end(); ++itr ) - { - if( ( itr->Width >= 800 ) && ( itr->Height >= 600 ) && ( itr->Depth == 32 ) && ( itr->Frequency >= 60 ) ) - { - CVideoMode mode; - mode.depth = itr->Depth; - mode.widht = itr->Width; - mode.height = itr->Height; - mode.frequency = itr->Frequency; - - dst.push_back( mode ); - } - } +// Ryzom - 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 . + +#include "system.h" +#include +#include +#include +#include + +CSystem *CSystem::instance = NULL; + +CSystem::CSystem() +{ + GatherSysInfo(); +#ifdef WIN32 + GatherD3DInfo(); +#endif + GatherOpenGLInfo(); +} + +CSystem::~CSystem() +{ + instance = 0; +} + + +void CSystem::GatherSysInfo() +{ + std::string device; + uint64 driver; + + if( NLMISC::CSystemInfo::getVideoInfo( device, driver ) ) + { + sysInfo.videoDevice = device; + + ////////////////////////////////////////////////////////////// + // FIXME + // This is taken from the original configuration tool, and + // it generates the same *wrong* version number + ////////////////////////////////////////////////////////////// + uint32 version = static_cast< uint32 >( driver & 0xffff ); + std::stringstream ss; + + ss << ( version / 1000 % 10 ); + ss << "."; + ss << ( version / 100 % 10 ); + ss << "."; + ss << ( version / 10 % 10 ); + ss << "."; + ss << ( version % 10 ); + + sysInfo.videoDriverVersion = ss.str(); + ////////////////////////////////////////////////////////////// + } + else + { + sysInfo.videoDevice = "video card"; + sysInfo.videoDriverVersion = "0.0.0.0"; + } + + sysInfo.osName = NLMISC::CSystemInfo::getOS(); + sysInfo.cpuName = NLMISC::CSystemInfo::getProc(); + sysInfo.totalRAM = NLMISC::CSystemInfo::totalPhysicalMemory(); + sysInfo.totalRAM /= ( 1024 * 1024 ); +} + +#ifdef WIN32 +void CSystem::GatherD3DInfo() +{ + NL3D::IDriver *driver = NULL; + try + { + driver = NL3D::CDRU::createD3DDriver(); + + NL3D::IDriver::CAdapter adapter; + + if( driver->getAdapter( 0xffffffff, adapter ) ) + { + d3dInfo.device = adapter.Description; + d3dInfo.driver = adapter.Driver; + + sint64 ver = adapter.DriverVersion; + std::stringstream ss; + ss << static_cast< uint16 >( ver >> 48 ); + ss << "."; + ss << static_cast< uint16 >( ver >> 32 ); + ss << "."; + ss << static_cast< uint16 >( ver >> 16 ); + ss << "."; + ss << static_cast< uint16 >( ver & 0xFFFF ); + d3dInfo.driverVersion = ss.str(); + } + + GetVideoModes( d3dInfo.modes, driver ); + + driver->release(); + } + + catch( NLMISC::Exception &e ) + { + nlwarning( e.what() ); + } +} +#endif + +void CSystem::GatherOpenGLInfo() +{ + QGLWidget *gl = new QGLWidget(); + + gl->makeCurrent(); + + const char *s = NULL; + s = reinterpret_cast< const char * >( glGetString( GL_VENDOR ) ); + if( s != NULL ) + openglInfo.vendor.assign( s ); + + s = reinterpret_cast< const char * >( glGetString( GL_RENDERER ) ); + if( s != NULL ) + openglInfo.renderer.assign( s ); + + s = reinterpret_cast< const char * >( glGetString( GL_VERSION ) ); + if( s != NULL ) + openglInfo.driverVersion.assign( s ); + + s = reinterpret_cast< const char * >( glGetString( GL_EXTENSIONS ) ); + if( s != NULL ) + { + openglInfo.extensions.assign( s ); + for( std::string::iterator itr = openglInfo.extensions.begin(); itr != openglInfo.extensions.end(); ++itr ) + if( *itr == ' ' ) + *itr = '\n'; + } + + delete gl; + + NL3D::IDriver *driver = NULL; + try + { + driver = NL3D::CDRU::createGlDriver(); + GetVideoModes( openglInfo.modes, driver ); + driver->release(); + } + + catch( NLMISC::Exception &e ) + { + nlwarning( e.what() ); + } +} + +void CSystem::GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driver ) const +{ + std::vector< NL3D::GfxMode > modes; + driver->getModes( modes ); + + for( std::vector< NL3D::GfxMode >::iterator itr = modes.begin(); itr != modes.end(); ++itr ) + { + if( ( itr->Width >= 800 ) && ( itr->Height >= 600 ) && ( itr->Depth == 32 ) && ( itr->Frequency >= 60 ) ) + { + CVideoMode mode; + mode.depth = itr->Depth; + mode.widht = itr->Width; + mode.height = itr->Height; + mode.frequency = itr->Frequency; + + dst.push_back( mode ); + } + } } \ No newline at end of file diff --git a/code/ryzom/tools/client/client_config_qt/system.h b/code/ryzom/tools/client/client_config_qt/system.h index fceb6cdd3..bcb5f90bf 100644 --- a/code/ryzom/tools/client/client_config_qt/system.h +++ b/code/ryzom/tools/client/client_config_qt/system.h @@ -1,112 +1,112 @@ -// Ryzom - 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 SYSTEM_H -#define SYSTEM_H - -#include -#include "config.h" - -namespace NL3D -{ -class IDriver; -} - -struct CVideoMode -{ - unsigned int widht; - unsigned int height; - unsigned int depth; - unsigned int frequency; - - CVideoMode() - { - widht = 0; - height = 0; - depth = 0; - frequency = 0; - } - - bool operator==( CVideoMode &o ) - { - if( ( o.widht == widht ) && ( o.height == height ) && ( o.depth == depth ) && ( o.frequency == frequency ) ) - return true; - else - return false; - } -}; - -/** - @brief Singleton class that holds the system information, configs, etc -*/ -class CSystem -{ -public: - CSystem(); - ~CSystem(); - - static CSystem &GetInstance() - { - if( instance == 0 ) - { - instance = new CSystem; - } - return *instance; - } - - struct CSysInfo - { - std::string videoDevice; - std::string videoDriverVersion; - std::string osName; - std::string cpuName; - uint64 totalRAM; - } sysInfo; - -#ifdef WIN32 - struct CD3DInfo - { - std::string device; - std::string driver; - std::string driverVersion; - std::vector< CVideoMode > modes; - } d3dInfo; -#endif - - struct COpenGLInfo - { - std::string vendor; - std::string renderer; - std::string driverVersion; - std::string extensions; - std::vector< CVideoMode > modes; - } openglInfo; - - CConfig config; - -private: - void GatherSysInfo(); -#ifdef WIN32 - void GatherD3DInfo(); -#endif - void GatherOpenGLInfo(); - - void GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driver ) const; - - static CSystem *instance; -}; - -#endif // SYSTEM_H +// Ryzom - 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 SYSTEM_H +#define SYSTEM_H + +#include +#include "config.h" + +namespace NL3D +{ +class IDriver; +} + +struct CVideoMode +{ + unsigned int widht; + unsigned int height; + unsigned int depth; + unsigned int frequency; + + CVideoMode() + { + widht = 0; + height = 0; + depth = 0; + frequency = 0; + } + + bool operator==( CVideoMode &o ) + { + if( ( o.widht == widht ) && ( o.height == height ) && ( o.depth == depth ) && ( o.frequency == frequency ) ) + return true; + else + return false; + } +}; + +/** + @brief Singleton class that holds the system information, configs, etc +*/ +class CSystem +{ +public: + CSystem(); + ~CSystem(); + + static CSystem &GetInstance() + { + if( instance == 0 ) + { + instance = new CSystem; + } + return *instance; + } + + struct CSysInfo + { + std::string videoDevice; + std::string videoDriverVersion; + std::string osName; + std::string cpuName; + uint64 totalRAM; + } sysInfo; + +#ifdef WIN32 + struct CD3DInfo + { + std::string device; + std::string driver; + std::string driverVersion; + std::vector< CVideoMode > modes; + } d3dInfo; +#endif + + struct COpenGLInfo + { + std::string vendor; + std::string renderer; + std::string driverVersion; + std::string extensions; + std::vector< CVideoMode > modes; + } openglInfo; + + CConfig config; + +private: + void GatherSysInfo(); +#ifdef WIN32 + void GatherD3DInfo(); +#endif + void GatherOpenGLInfo(); + + void GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driver ) const; + + static CSystem *instance; +}; + +#endif // SYSTEM_H diff --git a/code/ryzom/tools/client/client_config_qt/widget_base.h b/code/ryzom/tools/client/client_config_qt/widget_base.h index 1cc30c0c3..d9948aeac 100644 --- a/code/ryzom/tools/client/client_config_qt/widget_base.h +++ b/code/ryzom/tools/client/client_config_qt/widget_base.h @@ -1,61 +1,61 @@ -// Ryzom - 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 WIDGETBASE_H -#define WIDGETBASE_H - -#include - -/** - @brief Base class for the config tool's settings page widgets. -*/ -class CWidgetBase : public QWidget -{ - Q_OBJECT - -public: - CWidgetBase( QWidget *parent = NULL ) : QWidget( parent ) {} - ~CWidgetBase() {} - - /** - @brief Tells the widget to load it's values from the config. - */ - virtual void load() = 0; - - /** - @brief Tells the widget to save it's values into the config. - */ - virtual void save() = 0; - -signals: - /** - @brief Emitted when the user changes a setting. - */ - void changed(); - - -private slots: - /** - @brief Triggered when something changes in the widget, emits the Changed() signal. - */ - void onSomethingChanged() - { - emit changed(); - } -}; - - -#endif +// Ryzom - 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 WIDGETBASE_H +#define WIDGETBASE_H + +#include + +/** + @brief Base class for the config tool's settings page widgets. +*/ +class CWidgetBase : public QWidget +{ + Q_OBJECT + +public: + CWidgetBase( QWidget *parent = NULL ) : QWidget( parent ) {} + ~CWidgetBase() {} + + /** + @brief Tells the widget to load it's values from the config. + */ + virtual void load() = 0; + + /** + @brief Tells the widget to save it's values into the config. + */ + virtual void save() = 0; + +signals: + /** + @brief Emitted when the user changes a setting. + */ + void changed(); + + +private slots: + /** + @brief Triggered when something changes in the widget, emits the Changed() signal. + */ + void onSomethingChanged() + { + emit changed(); + } +}; + + +#endif