This commit is contained in:
Botanic 2013-06-06 02:56:48 -07:00
parent cfc78bd614
commit b1edfcc646
25 changed files with 2539 additions and 2539 deletions

View file

@ -1,57 +1,57 @@
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
${QT_INCLUDES} ) ${QT_INCLUDES} )
FILE( GLOB SRC *.cpp *.h ) FILE( GLOB SRC *.cpp *.h )
SET( CLIENT_CONFIG_HDR SET( CLIENT_CONFIG_HDR
client_config_dialog.h client_config_dialog.h
display_settings_advanced_widget.h display_settings_advanced_widget.h
display_settings_details_widget.h display_settings_details_widget.h
display_settings_widget.h display_settings_widget.h
general_settings_widget.h general_settings_widget.h
sound_settings_widget.h sound_settings_widget.h
sys_info_d3d_widget.h sys_info_d3d_widget.h
sys_info_opengl_widget.h sys_info_opengl_widget.h
sys_info_widget.h sys_info_widget.h
widget_base.h widget_base.h
) )
SET( CLIENT_CONFIG_UIS SET( CLIENT_CONFIG_UIS
client_config_dialog.ui client_config_dialog.ui
display_settings_advanced_widget.ui display_settings_advanced_widget.ui
display_settings_details_widget.ui display_settings_details_widget.ui
display_settings_widget.ui display_settings_widget.ui
general_settings_widget.ui general_settings_widget.ui
sound_settings_widget.ui sound_settings_widget.ui
sys_info_d3d_widget.ui sys_info_d3d_widget.ui
sys_info_opengl_widget.ui sys_info_opengl_widget.ui
sys_info_widget.ui sys_info_widget.ui
) )
SET( CLIENT_CONFIG_TRANS SET( CLIENT_CONFIG_TRANS
translations/ryzom_configuration_en.ts translations/ryzom_configuration_en.ts
translations/ryzom_configuration_hu.ts translations/ryzom_configuration_hu.ts
) )
CONFIGURE_FILE( translations/translations.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc COPYONLY ) 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( CLIENT_CONFIG_RCS resources.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc )
SET( QT_USE_QTGUI TRUE ) SET( QT_USE_QTGUI TRUE )
SET( QT_USE_QTOPENGL TRUE ) SET( QT_USE_QTOPENGL TRUE )
SET( QT_USE_QTCORE TRUE ) SET( QT_USE_QTCORE TRUE )
QT4_ADD_TRANSLATION( CLIENT_CONFIG_QM ${CLIENT_CONFIG_TRANS} ) QT4_ADD_TRANSLATION( CLIENT_CONFIG_QM ${CLIENT_CONFIG_TRANS} )
QT4_ADD_RESOURCES( CLIENT_CONFIG_RC_SRCS ${CLIENT_CONFIG_RCS} ) QT4_ADD_RESOURCES( CLIENT_CONFIG_RC_SRCS ${CLIENT_CONFIG_RCS} )
QT4_WRAP_CPP( CLIENT_CONFIG_MOC_SRC ${CLIENT_CONFIG_HDR} ) QT4_WRAP_CPP( CLIENT_CONFIG_MOC_SRC ${CLIENT_CONFIG_HDR} )
QT4_WRAP_UI( CLIENT_CONFIG_UI_HDRS ${CLIENT_CONFIG_UIS} ) QT4_WRAP_UI( CLIENT_CONFIG_UI_HDRS ${CLIENT_CONFIG_UIS} )
SOURCE_GROUP( "Resources" FILES ${CLIENT_CONFIG_RCS} ) SOURCE_GROUP( "Resources" FILES ${CLIENT_CONFIG_RCS} )
SOURCE_GROUP( "Forms" FILES ${CLIENT_CONFIG_UIS} ) SOURCE_GROUP( "Forms" FILES ${CLIENT_CONFIG_UIS} )
SOURCE_GROUP( "Generated Files" FILES ${CLIENT_CONFIG_UI_HDRS} ${CLIENT_CONFIG_MOC_SRC} ) SOURCE_GROUP( "Generated Files" FILES ${CLIENT_CONFIG_UI_HDRS} ${CLIENT_CONFIG_MOC_SRC} )
SOURCE_GROUP( "Translation Files" FILES ${CLIENT_CONFIG_TRANS} ) SOURCE_GROUP( "Translation Files" FILES ${CLIENT_CONFIG_TRANS} )
ADD_DEFINITIONS( ${QT_DEFINITIONS} ) 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} ) 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_DEFAULT_PROPS( ryzom_configuration_qt "Ryzom, Tools: Ryzom Configuration Qt" )
NL_ADD_RUNTIME_FLAGS( ryzom_configuration_qt ) NL_ADD_RUNTIME_FLAGS( ryzom_configuration_qt )
NL_ADD_LIB_SUFFIX( 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} ) 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 ) INSTALL( TARGETS ryzom_configuration_qt RUNTIME DESTINATION games COMPONENT client BUNDLE DESTINATION /Applications )

View file

@ -1,259 +1,259 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "client_config_dialog.h" #include "client_config_dialog.h"
#include "general_settings_widget.h" #include "general_settings_widget.h"
#include "display_settings_widget.h" #include "display_settings_widget.h"
#include "display_settings_details_widget.h" #include "display_settings_details_widget.h"
#include "display_settings_advanced_widget.h" #include "display_settings_advanced_widget.h"
#include "sound_settings_widget.h" #include "sound_settings_widget.h"
#include "sys_info_widget.h" #include "sys_info_widget.h"
#include "sys_info_opengl_widget.h" #include "sys_info_opengl_widget.h"
#include "sys_info_d3d_widget.h" #include "sys_info_d3d_widget.h"
#include "system.h" #include "system.h"
#include <QtGui> #include <QtGui>
CClientConfigDialog::CClientConfigDialog( QWidget *parent ) : CClientConfigDialog::CClientConfigDialog( QWidget *parent ) :
QDialog( parent ) QDialog( parent )
{ {
setupUi( this ); setupUi( this );
connect( buttonBox->button( QDialogButtonBox::Cancel ), SIGNAL( clicked() ), this, SLOT( close() ) ); connect( buttonBox->button( QDialogButtonBox::Cancel ), SIGNAL( clicked() ), this, SLOT( close() ) );
connect( buttonBox->button( QDialogButtonBox::Ok ), SIGNAL( clicked() ), this, SLOT( onClickOK() ) ); connect( buttonBox->button( QDialogButtonBox::Ok ), SIGNAL( clicked() ), this, SLOT( onClickOK() ) );
connect( applyButton, SIGNAL( clicked() ), this, SLOT( onClickApply() ) ); connect( applyButton, SIGNAL( clicked() ), this, SLOT( onClickApply() ) );
connect( defaultButton, SIGNAL( clicked() ), this, SLOT( onClickDefault() ) ); connect( defaultButton, SIGNAL( clicked() ), this, SLOT( onClickDefault() ) );
connect( playButton, SIGNAL( clicked() ), this, SLOT( onClickPlay() ) ); connect( playButton, SIGNAL( clicked() ), this, SLOT( onClickPlay() ) );
connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ),
this, SLOT( onClickCategory( QTreeWidgetItem * ) ) ); this, SLOT( onClickCategory( QTreeWidgetItem * ) ) );
// General // General
QTreeWidgetItem *item = treeWidget->topLevelItem( 0 ); QTreeWidgetItem *item = treeWidget->topLevelItem( 0 );
item->setData( 0, Qt::UserRole, 0 ); item->setData( 0, Qt::UserRole, 0 );
// Display // Display
item = treeWidget->topLevelItem( 1 ); item = treeWidget->topLevelItem( 1 );
item->setData( 0, Qt::UserRole, 1 ); item->setData( 0, Qt::UserRole, 1 );
// Display details // Display details
item = treeWidget->topLevelItem( 1 )->child( 0 ); item = treeWidget->topLevelItem( 1 )->child( 0 );
item->setData( 0, Qt::UserRole, 2 ); item->setData( 0, Qt::UserRole, 2 );
// Display advanced // Display advanced
item = treeWidget->topLevelItem( 1 )->child( 1 ); item = treeWidget->topLevelItem( 1 )->child( 1 );
item->setData( 0, Qt::UserRole, 3 ); item->setData( 0, Qt::UserRole, 3 );
// Sound // Sound
item = treeWidget->topLevelItem( 2 ); item = treeWidget->topLevelItem( 2 );
item->setData( 0, Qt::UserRole, 4 ); item->setData( 0, Qt::UserRole, 4 );
// System information // System information
item = treeWidget->topLevelItem( 3 ); item = treeWidget->topLevelItem( 3 );
item->setData( 0, Qt::UserRole, 5 ); item->setData( 0, Qt::UserRole, 5 );
// OpenGL info // OpenGL info
item = treeWidget->topLevelItem( 3 )->child( 0 ); item = treeWidget->topLevelItem( 3 )->child( 0 );
item->setData( 0, Qt::UserRole, 6 ); item->setData( 0, Qt::UserRole, 6 );
// Direct3D info // Direct3D info
item = treeWidget->topLevelItem( 3 )->child( 1 ); item = treeWidget->topLevelItem( 3 )->child( 1 );
item->setData( 0, Qt::UserRole, 7 ); item->setData( 0, Qt::UserRole, 7 );
CategoryStackedWidget->addWidget( new CGeneralSettingsWidget( CategoryStackedWidget ) ); CategoryStackedWidget->addWidget( new CGeneralSettingsWidget( CategoryStackedWidget ) );
CategoryStackedWidget->addWidget( new CDisplaySettingsWidget( CategoryStackedWidget ) ); CategoryStackedWidget->addWidget( new CDisplaySettingsWidget( CategoryStackedWidget ) );
CategoryStackedWidget->addWidget( new CDisplaySettingsDetailsWidget( CategoryStackedWidget ) ); CategoryStackedWidget->addWidget( new CDisplaySettingsDetailsWidget( CategoryStackedWidget ) );
CategoryStackedWidget->addWidget( new CDisplaySettingsAdvancedWidget( CategoryStackedWidget ) ); CategoryStackedWidget->addWidget( new CDisplaySettingsAdvancedWidget( CategoryStackedWidget ) );
CategoryStackedWidget->addWidget( new CSoundSettingsWidget( CategoryStackedWidget ) ); CategoryStackedWidget->addWidget( new CSoundSettingsWidget( CategoryStackedWidget ) );
CategoryStackedWidget->addWidget( new CSysInfoWidget( CategoryStackedWidget ) ); CategoryStackedWidget->addWidget( new CSysInfoWidget( CategoryStackedWidget ) );
CategoryStackedWidget->addWidget( new CSysInfoOpenGLWidget( CategoryStackedWidget ) ); CategoryStackedWidget->addWidget( new CSysInfoOpenGLWidget( CategoryStackedWidget ) );
CategoryStackedWidget->addWidget( new CSysInfoD3DWidget( CategoryStackedWidget ) ); CategoryStackedWidget->addWidget( new CSysInfoD3DWidget( CategoryStackedWidget ) );
for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ ) for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ )
{ {
QWidget *w = CategoryStackedWidget->widget( i ); QWidget *w = CategoryStackedWidget->widget( i );
// The sysinfo pages are not derived from CWidgetBase, so they don't have this signal! // The sysinfo pages are not derived from CWidgetBase, so they don't have this signal!
if( qobject_cast< CWidgetBase * >( w ) == NULL ) if( qobject_cast< CWidgetBase * >( w ) == NULL )
continue; continue;
connect( w, SIGNAL( changed() ), this, SLOT( onSomethingChanged() ) ); connect( w, SIGNAL( changed() ), this, SLOT( onSomethingChanged() ) );
} }
applyButton->setEnabled( false ); applyButton->setEnabled( false );
} }
CClientConfigDialog::~CClientConfigDialog() CClientConfigDialog::~CClientConfigDialog()
{ {
} }
void CClientConfigDialog::closeEvent( QCloseEvent *event ) void CClientConfigDialog::closeEvent( QCloseEvent *event )
{ {
if( isOKToQuit() ) if( isOKToQuit() )
event->accept(); event->accept();
else else
event->ignore(); event->ignore();
} }
void CClientConfigDialog::changeEvent( QEvent *event ) void CClientConfigDialog::changeEvent( QEvent *event )
{ {
if( event->type() == QEvent::LanguageChange ) if( event->type() == QEvent::LanguageChange )
{ {
int pageIndex = CategoryStackedWidget->currentIndex(); int pageIndex = CategoryStackedWidget->currentIndex();
// Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget // Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget
disconnect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), disconnect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ),
this, SLOT( onClickCategory( QTreeWidgetItem * ) ) ); this, SLOT( onClickCategory( QTreeWidgetItem * ) ) );
retranslateUi( this ); retranslateUi( this );
connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ),
this, SLOT( onClickCategory( QTreeWidgetItem * ) ) ); this, SLOT( onClickCategory( QTreeWidgetItem * ) ) );
CategoryStackedWidget->setCurrentIndex( pageIndex ); CategoryStackedWidget->setCurrentIndex( pageIndex );
} }
QDialog::changeEvent( event ); QDialog::changeEvent( event );
} }
void CClientConfigDialog::onClickOK() void CClientConfigDialog::onClickOK()
{ {
saveChanges(); saveChanges();
// Since we use the apply button's enabled state to check for unsaved changes on quit, we disable it // Since we use the apply button's enabled state to check for unsaved changes on quit, we disable it
applyButton->setEnabled( false ); applyButton->setEnabled( false );
close(); close();
} }
void CClientConfigDialog::onClickApply() void CClientConfigDialog::onClickApply()
{ {
saveChanges(); saveChanges();
applyButton->setEnabled( false ); applyButton->setEnabled( false );
} }
void CClientConfigDialog::onClickDefault() void CClientConfigDialog::onClickDefault()
{ {
CSystem::GetInstance().config.revertToDefault(); CSystem::GetInstance().config.revertToDefault();
CSystem::GetInstance().config.save(); CSystem::GetInstance().config.save();
reloadPages(); reloadPages();
applyButton->setEnabled( false ); applyButton->setEnabled( false );
} }
void CClientConfigDialog::onClickPlay() void CClientConfigDialog::onClickPlay()
{ {
bool started = false; bool started = false;
#ifdef WIN32 #ifdef WIN32
started = QProcess::startDetached( "ryzom_client_r.exe" ); started = QProcess::startDetached( "ryzom_client_r.exe" );
if( !started ) if( !started )
QProcess::startDetached( "ryzom_client_rd.exe" ); QProcess::startDetached( "ryzom_client_rd.exe" );
if( !started ) if( !started )
QProcess::startDetached( "ryzom_client_d.exe" ); QProcess::startDetached( "ryzom_client_d.exe" );
#else #else
started = QProcess::startDetached( "./ryzom_client_r" ); started = QProcess::startDetached( "./ryzom_client_r" );
if( !started ) if( !started )
QProcess::startDetached( "./ryzom_client_rd" ); QProcess::startDetached( "./ryzom_client_rd" );
if( !started ) if( !started )
QProcess::startDetached( "./ryzom_client_d" ); QProcess::startDetached( "./ryzom_client_d" );
#endif #endif
onClickOK(); onClickOK();
} }
void CClientConfigDialog::onClickCategory( QTreeWidgetItem *item ) void CClientConfigDialog::onClickCategory( QTreeWidgetItem *item )
{ {
if( item == NULL ) if( item == NULL )
return; return;
static const char *iconNames[] = static const char *iconNames[] =
{ {
":/resources/general_icon.bmp", ":/resources/general_icon.bmp",
":/resources/display_icon.bmp", ":/resources/display_icon.bmp",
":/resources/display_properties_icon.bmp", ":/resources/display_properties_icon.bmp",
":/resources/display_config_icon.bmp", ":/resources/display_config_icon.bmp",
":/resources/sound_icon.bmp", ":/resources/sound_icon.bmp",
":/resources/general_icon.bmp", ":/resources/general_icon.bmp",
":/resources/card_icon.bmp", ":/resources/card_icon.bmp",
":/resources/card_icon.bmp" ":/resources/card_icon.bmp"
}; };
sint32 index = item->data( 0, Qt::UserRole ).toInt(); sint32 index = item->data( 0, Qt::UserRole ).toInt();
if( ( index < 0 ) || ( index > 7 ) ) if( ( index < 0 ) || ( index > 7 ) )
return; return;
CategoryStackedWidget->setCurrentIndex( index ); CategoryStackedWidget->setCurrentIndex( index );
categoryLabel->setText( item->text( 0 ) ); categoryLabel->setText( item->text( 0 ) );
topleftIcon->setPixmap( QPixmap( QString::fromUtf8( iconNames[ index ] ) ) ); topleftIcon->setPixmap( QPixmap( QString::fromUtf8( iconNames[ index ] ) ) );
} }
void CClientConfigDialog::onSomethingChanged() void CClientConfigDialog::onSomethingChanged()
{ {
applyButton->setEnabled( true ); applyButton->setEnabled( true );
} }
void CClientConfigDialog::saveChanges() void CClientConfigDialog::saveChanges()
{ {
// First we tell the pages to save their changes into the cached config file // First we tell the pages to save their changes into the cached config file
for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ ) for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ )
{ {
QWidget *w = CategoryStackedWidget->widget( i ); QWidget *w = CategoryStackedWidget->widget( i );
CWidgetBase *wb = qobject_cast< CWidgetBase * >( w ); CWidgetBase *wb = qobject_cast< CWidgetBase * >( w );
// The system information pages are not derived from CWidgetBase, so they can't save! // The system information pages are not derived from CWidgetBase, so they can't save!
if( wb == NULL ) if( wb == NULL )
continue; continue;
wb->save(); wb->save();
} }
// Then we write the cache to the disk // Then we write the cache to the disk
CSystem::GetInstance().config.save(); CSystem::GetInstance().config.save();
} }
void CClientConfigDialog::reloadPages() void CClientConfigDialog::reloadPages()
{ {
for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ ) for( sint32 i = 0; i < CategoryStackedWidget->count(); i++ )
{ {
QWidget *w = CategoryStackedWidget->widget( i ); QWidget *w = CategoryStackedWidget->widget( i );
CWidgetBase *wb = qobject_cast< CWidgetBase * >( w ); CWidgetBase *wb = qobject_cast< CWidgetBase * >( w );
// The system information pages are not derived from CWidgetBase, so they can't load! // The system information pages are not derived from CWidgetBase, so they can't load!
if( wb == NULL ) if( wb == NULL )
continue; continue;
wb->load(); wb->load();
} }
} }
bool CClientConfigDialog::isOKToQuit() bool CClientConfigDialog::isOKToQuit()
{ {
// If the apply button is enabled we have unsaved changes // If the apply button is enabled we have unsaved changes
if( applyButton->isEnabled() ) if( applyButton->isEnabled() )
{ {
sint32 r = QMessageBox::warning( sint32 r = QMessageBox::warning(
this, this,
tr( "Ryzom configuration" ), tr( "Ryzom configuration" ),
tr( "Are you sure you want to quit without saving the configuration?" ), tr( "Are you sure you want to quit without saving the configuration?" ),
QMessageBox::Yes | QMessageBox::No QMessageBox::Yes | QMessageBox::No
); );
if( r == QMessageBox::No ) if( r == QMessageBox::No )
return false; return false;
} }
return true; return true;
} }

View file

@ -1,67 +1,67 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CLIENT_CONFIG_DIALOG_H #ifndef CLIENT_CONFIG_DIALOG_H
#define CLIENT_CONFIG_DIALOG_H #define CLIENT_CONFIG_DIALOG_H
#include "ui_client_config_dialog.h" #include "ui_client_config_dialog.h"
/** /**
@brief The main dialog of the configuration tool @brief The main dialog of the configuration tool
@details Sets up and controls the configuration pages, sets up navigation, @details Sets up and controls the configuration pages, sets up navigation,
sets up the ok, cancel, apply, etc buttons. sets up the ok, cancel, apply, etc buttons.
*/ */
class CClientConfigDialog : public QDialog, public Ui::client_config_dialog class CClientConfigDialog : public QDialog, public Ui::client_config_dialog
{ {
Q_OBJECT Q_OBJECT
public: public:
CClientConfigDialog( QWidget *parent = NULL ); CClientConfigDialog( QWidget *parent = NULL );
~CClientConfigDialog(); ~CClientConfigDialog();
protected: protected:
void closeEvent( QCloseEvent *event ); void closeEvent( QCloseEvent *event );
void changeEvent( QEvent *event ); void changeEvent( QEvent *event );
private slots: private slots:
//////////////////////////// Main dialog buttons ///////////////////// //////////////////////////// Main dialog buttons /////////////////////
void onClickOK(); void onClickOK();
void onClickApply(); void onClickApply();
void onClickDefault(); void onClickDefault();
void onClickPlay(); void onClickPlay();
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void onClickCategory( QTreeWidgetItem *item ); void onClickCategory( QTreeWidgetItem *item );
void onSomethingChanged(); void onSomethingChanged();
private: private:
/** /**
@brief Tells the config pages to save their changes into the config file @brief Tells the config pages to save their changes into the config file
*/ */
void saveChanges(); void saveChanges();
/** /**
@brief Reloads the pages' contents from the config file. @brief Reloads the pages' contents from the config file.
*/ */
void reloadPages(); void reloadPages();
/** /**
@brief Checks if it's OK to quit the application, may query the user @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. @return Returns true if it's OK to quit, returns false otherwise.
*/ */
bool isOKToQuit(); bool isOKToQuit();
}; };
#endif // CLIENT_CONFIG_DIALOG_H #endif // CLIENT_CONFIG_DIALOG_H

View file

@ -1,255 +1,255 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "Config.h" #include "Config.h"
CConfig::CConfig() CConfig::CConfig()
{ {
} }
CConfig::~CConfig() CConfig::~CConfig()
{ {
} }
bool CConfig::load( const char *fileName ) bool CConfig::load( const char *fileName )
{ {
try try
{ {
cf.load( fileName ); cf.load( fileName );
std::string def = getString( "RootConfigFilename" ); std::string def = getString( "RootConfigFilename" );
if( def.compare( "" ) != 0 ) if( def.compare( "" ) != 0 )
dcf.load( def ); dcf.load( def );
} }
catch( NLMISC::Exception &e ) catch( NLMISC::Exception &e )
{ {
nlwarning( "%s", e.what() ); nlwarning( "%s", e.what() );
return false; return false;
} }
return true; return true;
} }
bool CConfig::reload() bool CConfig::reload()
{ {
try try
{ {
cf.clear(); cf.clear();
cf.reparse(); cf.reparse();
} }
catch( NLMISC::Exception &e ) catch( NLMISC::Exception &e )
{ {
nlwarning( "%s", e.what() ); nlwarning( "%s", e.what() );
return false; return false;
} }
return true; return true;
} }
void CConfig::revertToDefault() void CConfig::revertToDefault()
{ {
// If there's no default config, all we can do is revert the current changes // If there's no default config, all we can do is revert the current changes
if( !dcf.loaded() ) if( !dcf.loaded() )
{ {
reload(); reload();
return; return;
} }
// If there is a default config, we can however revert to the default! // If there is a default config, we can however revert to the default!
// Code taken from the original config tool // Code taken from the original config tool
uint32 count = cf.getNumVar(); uint32 count = cf.getNumVar();
uint32 i = 0; uint32 i = 0;
for( i = 0; i < count; i++ ) for( i = 0; i < count; i++ )
{ {
NLMISC::CConfigFile::CVar *dst = cf.getVar( i ); NLMISC::CConfigFile::CVar *dst = cf.getVar( i );
// Comment from the original // Comment from the original
// Temp: avoid changing this variable (debug: binded to the actual texture set installed) // Temp: avoid changing this variable (debug: binded to the actual texture set installed)
if( dst->Name.compare( "HDTextureInstalled" ) == 0 ) if( dst->Name.compare( "HDTextureInstalled" ) == 0 )
continue; continue;
NLMISC::CConfigFile::CVar *src = dcf.getVarPtr( dst->Name ); NLMISC::CConfigFile::CVar *src = dcf.getVarPtr( dst->Name );
if( ( src != NULL ) && !dst->Root && 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_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_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_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_REAL ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_REAL ) ||
( src->Type == NLMISC::CConfigFile::CVar::T_STRING ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_STRING ) ) ) ( src->Type == NLMISC::CConfigFile::CVar::T_STRING ) && ( dst->Type == NLMISC::CConfigFile::CVar::T_STRING ) ) )
{ {
if( src->Type == NLMISC::CConfigFile::CVar::T_INT ) if( src->Type == NLMISC::CConfigFile::CVar::T_INT )
{ {
setInt( src->Name.c_str(), src->asInt() ); setInt( src->Name.c_str(), src->asInt() );
} }
else if( src->Type == NLMISC::CConfigFile::CVar::T_REAL ) else if( src->Type == NLMISC::CConfigFile::CVar::T_REAL )
{ {
setFloat( src->Name.c_str(), src->asFloat() ); setFloat( src->Name.c_str(), src->asFloat() );
} }
else if( src->Type == NLMISC::CConfigFile::CVar::T_STRING ) else if( src->Type == NLMISC::CConfigFile::CVar::T_STRING )
{ {
setString( src->Name.c_str(), src->asString() ); setString( src->Name.c_str(), src->asString() );
} }
} }
} }
} }
bool CConfig::save() bool CConfig::save()
{ {
try try
{ {
cf.save(); cf.save();
} }
catch( NLMISC::Exception &e ) catch( NLMISC::Exception &e )
{ {
nlwarning( "%s", e.what() ); nlwarning( "%s", e.what() );
return false; return false;
} }
return true; return true;
} }
bool CConfig::getBool( const char *key ) bool CConfig::getBool( const char *key )
{ {
NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
if( var != NULL ) if( var != NULL )
{ {
return var->asBool(); return var->asBool();
} }
else else
{ {
nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
return false; return false;
} }
} }
sint32 CConfig::getInt( const char *key ) sint32 CConfig::getInt( const char *key )
{ {
NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
if( var != NULL ) if( var != NULL )
{ {
return var->asInt(); return var->asInt();
} }
else else
{ {
nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
return 0; return 0;
} }
} }
float CConfig::getFloat( const char *key ) float CConfig::getFloat( const char *key )
{ {
NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
if( var != NULL ) if( var != NULL )
{ {
return var->asFloat(); return var->asFloat();
} }
else else
{ {
nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
return 0.0f; return 0.0f;
} }
} }
std::string CConfig::getString( const char *key ) std::string CConfig::getString( const char *key )
{ {
NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
if( var != NULL ) if( var != NULL )
{ {
return var->asString(); return var->asString();
} }
else else
{ {
nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
return ""; return "";
} }
} }
void CConfig::setBool( const char *key, bool value ) void CConfig::setBool( const char *key, bool value )
{ {
NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
if( var != NULL ) if( var != NULL )
{ {
if( var->Type == NLMISC::CConfigFile::CVar::T_BOOL ) if( var->Type == NLMISC::CConfigFile::CVar::T_BOOL )
{ {
if( value ) if( value )
var->setAsString( "true" ); var->setAsString( "true" );
else else
var->setAsString( "false" ); var->setAsString( "false" );
} }
else else
{ {
nlwarning( "Key %s in %s is not a boolean.", key, cf.getFilename().c_str() ); nlwarning( "Key %s in %s is not a boolean.", key, cf.getFilename().c_str() );
} }
} }
else else
{ {
nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
} }
} }
void CConfig::setInt(const char *key, sint32 value) void CConfig::setInt(const char *key, sint32 value)
{ {
NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
if( var != NULL ) if( var != NULL )
{ {
if( var->Type == NLMISC::CConfigFile::CVar::T_INT ) if( var->Type == NLMISC::CConfigFile::CVar::T_INT )
var->setAsInt( value ); var->setAsInt( value );
else else
nlwarning( "Key %s in %s is not an integer.", key, cf.getFilename().c_str() ); nlwarning( "Key %s in %s is not an integer.", key, cf.getFilename().c_str() );
} }
else else
{ {
nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
} }
} }
void CConfig::setFloat( const char *key, float value ) void CConfig::setFloat( const char *key, float value )
{ {
NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
if( var != NULL ) if( var != NULL )
{ {
if( var->Type == NLMISC::CConfigFile::CVar::T_REAL ) if( var->Type == NLMISC::CConfigFile::CVar::T_REAL )
var->setAsFloat( value ); var->setAsFloat( value );
else else
nlwarning( "Key %s in %s is not a float.", key, cf.getFilename().c_str() ); nlwarning( "Key %s in %s is not a float.", key, cf.getFilename().c_str() );
} }
else else
{ {
nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
} }
} }
void CConfig::setString( const char *key, std::string &value ) void CConfig::setString( const char *key, std::string &value )
{ {
NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key ); NLMISC::CConfigFile::CVar *var = cf.getVarPtr( key );
if( var != NULL ) if( var != NULL )
{ {
if( var->Type == NLMISC::CConfigFile::CVar::T_STRING ) if( var->Type == NLMISC::CConfigFile::CVar::T_STRING )
var->setAsString( value ); var->setAsString( value );
else else
nlwarning( "Key %s in %s is not a string.", key, cf.getFilename().c_str() ); nlwarning( "Key %s in %s is not a string.", key, cf.getFilename().c_str() );
} }
else else
{ {
nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() ); nlwarning( "Couldn't find key %s in %s.", key, cf.getFilename().c_str() );
} }
} }

View file

@ -1,120 +1,120 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_H #ifndef CONFIG_H
#define CONFIG_H #define CONFIG_H
#include <nel/misc/config_file.h> #include <nel/misc/config_file.h>
/** /**
@brief Wrapper for a Ryzom config file, allows setting and querying values. @brief Wrapper for a Ryzom config file, allows setting and querying values.
*/ */
class CConfig class CConfig
{ {
public: public:
CConfig(); CConfig();
~CConfig(); ~CConfig();
/** /**
@brief Loads a config file. @brief Loads a config file.
@param fileName - The file to load @param fileName - The file to load
@return Returns true on success, returns false on failure. @return Returns true on success, returns false on failure.
*/ */
bool load( const char *fileName ); bool load( const char *fileName );
/** /**
@brief Reloads the contents of the config file @brief Reloads the contents of the config file
@return Return true on success, returns false on failure. @return Return true on success, returns false on failure.
*/ */
bool reload(); bool reload();
/** /**
@brief Reverts the config file to the default @brief Reverts the config file to the default
@details Reverts the config file to the default if possible. @details Reverts the config file to the default if possible.
If there is no default config, it reverts the current changes only. If there is no default config, it reverts the current changes only.
*/ */
void revertToDefault(); void revertToDefault();
/** /**
@brief Saves the configuration to the config file. @brief Saves the configuration to the config file.
@return Returns true on success, returns false on failure. @return Returns true on success, returns false on failure.
*/ */
bool save(); bool save();
/** /**
@brief Queries the value for the specified key. @brief Queries the value for the specified key.
@param key - The key we are interested in @param key - The key we are interested in
@return Returns the value as a bool, returns false if the key doesn't exist. @return Returns the value as a bool, returns false if the key doesn't exist.
*/ */
bool getBool( const char *key ); bool getBool( const char *key );
/** /**
@brief Queries the value for the specified key. @brief Queries the value for the specified key.
@param key - The key we are interested in @param key - The key we are interested in
@return Returns the value as an integer, returns 0 if the key doesn't exist. @return Returns the value as an integer, returns 0 if the key doesn't exist.
*/ */
sint32 getInt( const char *key ); sint32 getInt( const char *key );
/** /**
@brief Queries the value for the specified key. @brief Queries the value for the specified key.
@param key - The key we are interested in @param key - The key we are interested in
@return Returns the value as a float, returns 0.0f if the key doesn't exist. @return Returns the value as a float, returns 0.0f if the key doesn't exist.
*/ */
float getFloat( const char *key ); float getFloat( const char *key );
/** /**
@brief Queries the value for the specified key. @brief Queries the value for the specified key.
@param key - The key we are interested in @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. @return Returns the value as a std::string, returns an empty string if the key doesn't exist.
*/ */
std::string getString( const char *key ); std::string getString( const char *key );
/** /**
@brief Sets the specified key to the specified value. @brief Sets the specified key to the specified value.
@param key - the key we want to alter @param key - the key we want to alter
@param value - the value we want to set @param value - the value we want to set
*/ */
void setBool( const char *key, bool value ); void setBool( const char *key, bool value );
/** /**
@brief Sets the specified key to the specified value. @brief Sets the specified key to the specified value.
@param key - the key we want to alter @param key - the key we want to alter
@param value - the value we want to set @param value - the value we want to set
*/ */
void setInt( const char *key, sint32 value ); void setInt( const char *key, sint32 value );
/** /**
@brief Sets the specified key to the specified value. @brief Sets the specified key to the specified value.
@param key - the key we want to alter @param key - the key we want to alter
@param value - the value we want to set @param value - the value we want to set
*/ */
void setFloat( const char *key, float value ); void setFloat( const char *key, float value );
/** /**
@brief Sets the specified key to the specified value. @brief Sets the specified key to the specified value.
@param key - the key we want to alter @param key - the key we want to alter
@param value - the value we want to set @param value - the value we want to set
*/ */
void setString( const char *key, std::string &value ); void setString( const char *key, std::string &value );
private: private:
// config file // config file
NLMISC::CConfigFile cf; NLMISC::CConfigFile cf;
// default config file // default config file
NLMISC::CConfigFile dcf; NLMISC::CConfigFile dcf;
}; };
#endif #endif

View file

@ -1,86 +1,86 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "display_settings_advanced_widget.h" #include "display_settings_advanced_widget.h"
#include "system.h" #include "system.h"
CDisplaySettingsAdvancedWidget::CDisplaySettingsAdvancedWidget( QWidget *parent ) : CDisplaySettingsAdvancedWidget::CDisplaySettingsAdvancedWidget( QWidget *parent ) :
CWidgetBase( parent ) CWidgetBase( parent )
{ {
setupUi( this ); setupUi( this );
load(); load();
connect( texcompressionCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( texcompressionCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
connect( vertexshaderCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( vertexshaderCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
connect( verticesagpCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( verticesagpCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
connect( pixelshadersCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( pixelshadersCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
} }
CDisplaySettingsAdvancedWidget::~CDisplaySettingsAdvancedWidget() CDisplaySettingsAdvancedWidget::~CDisplaySettingsAdvancedWidget()
{ {
} }
void CDisplaySettingsAdvancedWidget::load() void CDisplaySettingsAdvancedWidget::load()
{ {
CSystem &s = CSystem::GetInstance(); CSystem &s = CSystem::GetInstance();
if( s.config.getInt( "ForceDXTC" ) == 1 ) if( s.config.getInt( "ForceDXTC" ) == 1 )
texcompressionCheckBox->setChecked( true ); texcompressionCheckBox->setChecked( true );
if( s.config.getInt( "DisableVtxProgram" ) == 1 ) if( s.config.getInt( "DisableVtxProgram" ) == 1 )
vertexshaderCheckBox->setChecked( true ); vertexshaderCheckBox->setChecked( true );
if( s.config.getInt( "DisableVtxAGP" ) == 1 ) if( s.config.getInt( "DisableVtxAGP" ) == 1 )
verticesagpCheckBox->setChecked( true ); verticesagpCheckBox->setChecked( true );
if( s.config.getInt( "DisableTextureShdr" ) == 1 ) if( s.config.getInt( "DisableTextureShdr" ) == 1 )
pixelshadersCheckBox->setChecked( true ); pixelshadersCheckBox->setChecked( true );
} }
void CDisplaySettingsAdvancedWidget::save() void CDisplaySettingsAdvancedWidget::save()
{ {
CSystem &s = CSystem::GetInstance(); CSystem &s = CSystem::GetInstance();
if( texcompressionCheckBox->isChecked() ) if( texcompressionCheckBox->isChecked() )
s.config.setInt( "ForceDXTC", 1 ); s.config.setInt( "ForceDXTC", 1 );
else else
s.config.setInt( "ForceDXTC", 0 ); s.config.setInt( "ForceDXTC", 0 );
if( vertexshaderCheckBox->isChecked() ) if( vertexshaderCheckBox->isChecked() )
s.config.setInt( "DisableVtxProgram", 1 ); s.config.setInt( "DisableVtxProgram", 1 );
else else
s.config.setInt( "DisableVtxProgram", 0 ); s.config.setInt( "DisableVtxProgram", 0 );
if( verticesagpCheckBox->isChecked() ) if( verticesagpCheckBox->isChecked() )
s.config.setInt( "DisableVtxAGP", 1 ); s.config.setInt( "DisableVtxAGP", 1 );
else else
s.config.setInt( "DisableVtxAGP", 0 ); s.config.setInt( "DisableVtxAGP", 0 );
if( pixelshadersCheckBox->isChecked() ) if( pixelshadersCheckBox->isChecked() )
s.config.setInt( "DisableTextureShdr", 1 ); s.config.setInt( "DisableTextureShdr", 1 );
else else
s.config.setInt( "DisableTextureShdr", 0 ); s.config.setInt( "DisableTextureShdr", 0 );
} }
void CDisplaySettingsAdvancedWidget::changeEvent( QEvent *event ) void CDisplaySettingsAdvancedWidget::changeEvent( QEvent *event )
{ {
if( event->type() == QEvent::LanguageChange ) if( event->type() == QEvent::LanguageChange )
{ {
retranslateUi( this ); retranslateUi( this );
} }
QWidget::changeEvent( event ); QWidget::changeEvent( event );
} }

View file

@ -1,41 +1,41 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef DISPLAYSETTINGSADVANCEDWIDGET_H #ifndef DISPLAYSETTINGSADVANCEDWIDGET_H
#define DISPLAYSETTINGSADVANCEDWIDGET_H #define DISPLAYSETTINGSADVANCEDWIDGET_H
#include "ui_display_settings_advanced_widget.h" #include "ui_display_settings_advanced_widget.h"
#include "widget_base.h" #include "widget_base.h"
/** /**
@brief The advanced display settings page of the configuration tool @brief The advanced display settings page of the configuration tool
*/ */
class CDisplaySettingsAdvancedWidget : public CWidgetBase, public Ui::display_settings_advanced_widget class CDisplaySettingsAdvancedWidget : public CWidgetBase, public Ui::display_settings_advanced_widget
{ {
Q_OBJECT Q_OBJECT
public: public:
CDisplaySettingsAdvancedWidget( QWidget *parent ); CDisplaySettingsAdvancedWidget( QWidget *parent );
~CDisplaySettingsAdvancedWidget(); ~CDisplaySettingsAdvancedWidget();
void load(); void load();
void save(); void save();
protected: protected:
void changeEvent( QEvent *event ); void changeEvent( QEvent *event );
}; };
#endif // DISPLAYSETTINGSADVANCEDWIDGET_H #endif // DISPLAYSETTINGSADVANCEDWIDGET_H

View file

@ -1,268 +1,268 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "system.h" #include "system.h"
#include "display_settings_details_widget.h" #include "display_settings_details_widget.h"
CDisplaySettingsDetailsWidget::CDisplaySettingsDetailsWidget( QWidget *parent ) : CDisplaySettingsDetailsWidget::CDisplaySettingsDetailsWidget( QWidget *parent ) :
CWidgetBase( parent ) CWidgetBase( parent )
{ {
setupUi( this ); setupUi( this );
connect( landscapeSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onLandscapeSliderChange( int ) ) ); connect( landscapeSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onLandscapeSliderChange( int ) ) );
connect( charactersSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onCharactersSliderChange( int ) ) ); connect( charactersSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onCharactersSliderChange( int ) ) );
connect( fxSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onFXSliderChange( int ) ) ); connect( fxSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onFXSliderChange( int ) ) );
connect( texturesSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onTexturesSliderChange( int ) ) ); connect( texturesSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onTexturesSliderChange( int ) ) );
load(); load();
} }
CDisplaySettingsDetailsWidget::~CDisplaySettingsDetailsWidget() CDisplaySettingsDetailsWidget::~CDisplaySettingsDetailsWidget()
{ {
} }
void CDisplaySettingsDetailsWidget::load() void CDisplaySettingsDetailsWidget::load()
{ {
CSystem &s = CSystem::GetInstance(); CSystem &s = CSystem::GetInstance();
landscapeSlider->setValue( getQuality( qualityToLandscapeThreshold, s.config.getFloat( "LandscapeThreshold" ) ) ); 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( qualityToZFar, s.config.getFloat( "Vision" ) ) ) );
landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToLandscapeTileNear, s.config.getFloat( "LandscapeTileNear" ) ) ) ); landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToLandscapeTileNear, s.config.getFloat( "LandscapeTileNear" ) ) ) );
landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToMicrovegetDensity, s.config.getFloat( "MicroVegetDensity" ) ) ) ); landscapeSlider->setValue( std::min( landscapeSlider->value(), getQuality( qualityToMicrovegetDensity, s.config.getFloat( "MicroVegetDensity" ) ) ) );
charactersSlider->setValue( getQuality( qualityToSkinNbMaxPoly, s.config.getInt( "SkinNbMaxPoly" ) ) ); 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( qualityToNbMaxSkeletonNotCLod, s.config.getInt( "NbMaxSkeletonNotCLod" ) ) ) );
charactersSlider->setValue( std::min( charactersSlider->value(), getQuality( qualityToCharacterFarClip, s.config.getFloat( "CharacterFarClip" ) ) ) ); charactersSlider->setValue( std::min( charactersSlider->value(), getQuality( qualityToCharacterFarClip, s.config.getFloat( "CharacterFarClip" ) ) ) );
fxSlider->setValue( getQuality( qualityToFxNbMaxPoly, s.config.getInt( "FxNbMaxPoly" ) ) ); fxSlider->setValue( getQuality( qualityToFxNbMaxPoly, s.config.getInt( "FxNbMaxPoly" ) ) );
int hdTextureInstalled = s.config.getInt( "HDTextureInstalled" ); int hdTextureInstalled = s.config.getInt( "HDTextureInstalled" );
if( hdTextureInstalled == 1 ) if( hdTextureInstalled == 1 )
texturesSlider->setMaximum( QUALITY_NORMAL ); texturesSlider->setMaximum( QUALITY_NORMAL );
else else
texturesSlider->setMaximum( QUALITY_MEDIUM ); texturesSlider->setMaximum( QUALITY_MEDIUM );
// Comment taken from the original config tool: // Comment taken from the original config tool:
// NB: if the player changes its client.cfg, mixing HDEntityTexture=1 and DivideTextureSizeBy2=1, it will // NB: if the player changes its client.cfg, mixing HDEntityTexture=1 and DivideTextureSizeBy2=1, it will
// result to a low quality! // result to a low quality!
if( s.config.getInt( "DivideTextureSizeBy2" ) ) if( s.config.getInt( "DivideTextureSizeBy2" ) )
texturesSlider->setValue( QUALITY_LOW ); texturesSlider->setValue( QUALITY_LOW );
else if( s.config.getInt( "HDEntityTexture" ) && ( hdTextureInstalled == 1 ) ) else if( s.config.getInt( "HDEntityTexture" ) && ( hdTextureInstalled == 1 ) )
texturesSlider->setValue( QUALITY_NORMAL ); texturesSlider->setValue( QUALITY_NORMAL );
else else
texturesSlider->setValue( QUALITY_MEDIUM ); texturesSlider->setValue( QUALITY_MEDIUM );
} }
void CDisplaySettingsDetailsWidget::save() void CDisplaySettingsDetailsWidget::save()
{ {
CSystem &s = CSystem::GetInstance(); CSystem &s = CSystem::GetInstance();
s.config.setFloat( "Vision", qualityToZFar[ landscapeSlider->value() ] ); s.config.setFloat( "Vision", qualityToZFar[ landscapeSlider->value() ] );
s.config.setFloat( "LandscapeTileNear", qualityToLandscapeTileNear[ landscapeSlider->value() ] ); s.config.setFloat( "LandscapeTileNear", qualityToLandscapeTileNear[ landscapeSlider->value() ] );
s.config.setFloat( "LandscapeThreshold", qualityToLandscapeThreshold[ landscapeSlider->value() ] ); s.config.setFloat( "LandscapeThreshold", qualityToLandscapeThreshold[ landscapeSlider->value() ] );
if( landscapeSlider->value() > QUALITY_LOW ) if( landscapeSlider->value() > QUALITY_LOW )
s.config.setInt( "MicroVeget", 1 ); s.config.setInt( "MicroVeget", 1 );
else else
s.config.setInt( "MicroVeget", 0 ); s.config.setInt( "MicroVeget", 0 );
s.config.setFloat( "MicroVegetDensity", qualityToMicrovegetDensity[ landscapeSlider->value() ] ); s.config.setFloat( "MicroVegetDensity", qualityToMicrovegetDensity[ landscapeSlider->value() ] );
s.config.setInt( "SkinNbMaxPoly", qualityToSkinNbMaxPoly[ charactersSlider->value() ] ); s.config.setInt( "SkinNbMaxPoly", qualityToSkinNbMaxPoly[ charactersSlider->value() ] );
s.config.setInt( "NbMaxSkeletonNotCLod", qualityToNbMaxSkeletonNotCLod[ charactersSlider->value() ] ); s.config.setInt( "NbMaxSkeletonNotCLod", qualityToNbMaxSkeletonNotCLod[ charactersSlider->value() ] );
s.config.setFloat( "CharacterFarClip", qualityToCharacterFarClip[ charactersSlider->value() ] ); s.config.setFloat( "CharacterFarClip", qualityToCharacterFarClip[ charactersSlider->value() ] );
s.config.setInt( "FxNbMaxPoly", qualityToFxNbMaxPoly[ fxSlider->value() ] ); s.config.setInt( "FxNbMaxPoly", qualityToFxNbMaxPoly[ fxSlider->value() ] );
if( fxSlider->value() > QUALITY_LOW ) if( fxSlider->value() > QUALITY_LOW )
{ {
s.config.setInt( "Shadows", 1 ); s.config.setInt( "Shadows", 1 );
s.config.setInt( "Bloom", 1 ); s.config.setInt( "Bloom", 1 );
s.config.setInt( "SquareBloom", 1 ); s.config.setInt( "SquareBloom", 1 );
} }
else else
{ {
s.config.setInt( "Shadows", 0 ); s.config.setInt( "Shadows", 0 );
s.config.setInt( "Bloom", 0 ); s.config.setInt( "Bloom", 0 );
s.config.setInt( "SquareBloom", 0 ); s.config.setInt( "SquareBloom", 0 );
} }
if( texturesSlider->value() == QUALITY_NORMAL ) if( texturesSlider->value() == QUALITY_NORMAL )
s.config.setInt( "HDEntityTexture", 1 ); s.config.setInt( "HDEntityTexture", 1 );
else if( texturesSlider->value() == QUALITY_LOW ) else if( texturesSlider->value() == QUALITY_LOW )
s.config.setInt( "DivideTextureSizeBy2", 1 ); s.config.setInt( "DivideTextureSizeBy2", 1 );
} }
void CDisplaySettingsDetailsWidget::changeEvent( QEvent *event ) void CDisplaySettingsDetailsWidget::changeEvent( QEvent *event )
{ {
if( event->type() == QEvent::LanguageChange ) if( event->type() == QEvent::LanguageChange )
{ {
retranslateUi( this ); retranslateUi( this );
landscapeLabel->setText( getQualityString( landscapeSlider->value() ) ); landscapeLabel->setText( getQualityString( landscapeSlider->value() ) );
characterLabel->setText( getQualityString( charactersSlider->value() ) ); characterLabel->setText( getQualityString( charactersSlider->value() ) );
fxLabel->setText( getQualityString( fxSlider->value() ) ); fxLabel->setText( getQualityString( fxSlider->value() ) );
textureLabel->setText( getTextureQualityString( texturesSlider->value() ) ); textureLabel->setText( getTextureQualityString( texturesSlider->value() ) );
} }
QWidget::changeEvent( event ); QWidget::changeEvent( event );
} }
void CDisplaySettingsDetailsWidget::onLandscapeSliderChange( int value ) void CDisplaySettingsDetailsWidget::onLandscapeSliderChange( int value )
{ {
if( ( value < 0 ) || ( value > 3 ) ) if( ( value < 0 ) || ( value > 3 ) )
return; return;
landscapeLabel->setText( getQualityString( value ) ); landscapeLabel->setText( getQualityString( value ) );
emit changed(); emit changed();
} }
void CDisplaySettingsDetailsWidget::onCharactersSliderChange( int value ) void CDisplaySettingsDetailsWidget::onCharactersSliderChange( int value )
{ {
if( ( value < 0 ) || ( value > 3 ) ) if( ( value < 0 ) || ( value > 3 ) )
return; return;
characterLabel->setText( getQualityString( value ) ); characterLabel->setText( getQualityString( value ) );
emit changed(); emit changed();
} }
void CDisplaySettingsDetailsWidget::onFXSliderChange( int value ) void CDisplaySettingsDetailsWidget::onFXSliderChange( int value )
{ {
if( ( value < 0 ) || ( value > 3 ) ) if( ( value < 0 ) || ( value > 3 ) )
return; return;
fxLabel->setText( getQualityString( value ) ); fxLabel->setText( getQualityString( value ) );
emit changed(); emit changed();
} }
void CDisplaySettingsDetailsWidget::onTexturesSliderChange( int value ) void CDisplaySettingsDetailsWidget::onTexturesSliderChange( int value )
{ {
if( ( value < 0 ) || ( value > 3 ) ) if( ( value < 0 ) || ( value > 3 ) )
return; return;
textureLabel->setText( getTextureQualityString( value ) ); textureLabel->setText( getTextureQualityString( value ) );
emit changed(); emit changed();
} }
const float CDisplaySettingsDetailsWidget::qualityToZFar[ QUALITY_STEP ] = const float CDisplaySettingsDetailsWidget::qualityToZFar[ QUALITY_STEP ] =
{ {
200.0f, 200.0f,
400.0f, 400.0f,
500.0f, 500.0f,
800.0f 800.0f
}; };
const float CDisplaySettingsDetailsWidget::qualityToLandscapeTileNear[ QUALITY_STEP ] = const float CDisplaySettingsDetailsWidget::qualityToLandscapeTileNear[ QUALITY_STEP ] =
{ {
20.0f, 20.0f,
100.0f, 100.0f,
150.0f, 150.0f,
200.0f 200.0f
}; };
const float CDisplaySettingsDetailsWidget::qualityToLandscapeThreshold[ QUALITY_STEP ] = const float CDisplaySettingsDetailsWidget::qualityToLandscapeThreshold[ QUALITY_STEP ] =
{ {
100.0f, 100.0f,
1000.0f, 1000.0f,
2000.0f, 2000.0f,
3000.0f 3000.0f
}; };
const float CDisplaySettingsDetailsWidget::qualityToMicrovegetDensity[ QUALITY_STEP ] = const float CDisplaySettingsDetailsWidget::qualityToMicrovegetDensity[ QUALITY_STEP ] =
{ {
10.0f, 10.0f,
30.0f, 30.0f,
80.0f, 80.0f,
100.0f 100.0f
}; };
const sint32 CDisplaySettingsDetailsWidget::qualityToSkinNbMaxPoly[ QUALITY_STEP ] = const sint32 CDisplaySettingsDetailsWidget::qualityToSkinNbMaxPoly[ QUALITY_STEP ] =
{ {
10000, 10000,
70000, 70000,
100000, 100000,
200000 200000
}; };
const sint32 CDisplaySettingsDetailsWidget::qualityToNbMaxSkeletonNotCLod[ QUALITY_STEP ] = const sint32 CDisplaySettingsDetailsWidget::qualityToNbMaxSkeletonNotCLod[ QUALITY_STEP ] =
{ {
10, 10,
50, 50,
125, 125,
255 255
}; };
const float CDisplaySettingsDetailsWidget::qualityToCharacterFarClip[ QUALITY_STEP ] = const float CDisplaySettingsDetailsWidget::qualityToCharacterFarClip[ QUALITY_STEP ] =
{ {
50.0f, 50.0f,
100.0f, 100.0f,
200.0f, 200.0f,
500.0f 500.0f
}; };
const sint32 CDisplaySettingsDetailsWidget::qualityToFxNbMaxPoly[ QUALITY_STEP ] = const sint32 CDisplaySettingsDetailsWidget::qualityToFxNbMaxPoly[ QUALITY_STEP ] =
{ {
2000, 2000,
10000, 10000,
20000, 20000,
50000 50000
}; };
QString CDisplaySettingsDetailsWidget::getQualityString( uint32 quality ) QString CDisplaySettingsDetailsWidget::getQualityString( uint32 quality )
{ {
switch( quality ) switch( quality )
{ {
case QUALITY_LOW: case QUALITY_LOW:
return tr( "Low" ); return tr( "Low" );
break; break;
case QUALITY_MEDIUM: case QUALITY_MEDIUM:
return tr( "Medium" ); return tr( "Medium" );
break; break;
case QUALITY_NORMAL: case QUALITY_NORMAL:
return tr( "Normal" ); return tr( "Normal" );
break; break;
case QUALITY_HIGH: case QUALITY_HIGH:
return tr( "High" ); return tr( "High" );
break; break;
default: default:
return ""; return "";
break; break;
} }
} }
QString CDisplaySettingsDetailsWidget::getTextureQualityString( uint32 quality ) QString CDisplaySettingsDetailsWidget::getTextureQualityString( uint32 quality )
{ {
switch( quality ) switch( quality )
{ {
case TEXQUALITY_LOW: case TEXQUALITY_LOW:
return tr( "Low (32 MB)" ); return tr( "Low (32 MB)" );
break; break;
case TEXQUALITY_NORMAL: case TEXQUALITY_NORMAL:
return tr( "Normal (64 MB)" ); return tr( "Normal (64 MB)" );
break; break;
case TEXQUALITY_HIGH: case TEXQUALITY_HIGH:
return tr( "High (128 MB)" ); return tr( "High (128 MB)" );
break; break;
default: default:
return ""; return "";
break; break;
} }
} }

View file

@ -1,121 +1,121 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef DISPLAYSETTINGSDETAILSWIDGET_H #ifndef DISPLAYSETTINGSDETAILSWIDGET_H
#define DISPLAYSETTINGSDETAILSWIDGET_H #define DISPLAYSETTINGSDETAILSWIDGET_H
#include "ui_display_settings_details_widget.h" #include "ui_display_settings_details_widget.h"
#include "widget_base.h" #include "widget_base.h"
#include <nel/misc/types_nl.h> #include <nel/misc/types_nl.h>
enum enum
{ {
QUALITY_LOW = 0, QUALITY_LOW = 0,
QUALITY_MEDIUM = 1, QUALITY_MEDIUM = 1,
QUALITY_NORMAL = 2, QUALITY_NORMAL = 2,
QUALITY_HIGH = 3, QUALITY_HIGH = 3,
QUALITY_STEP = 4 QUALITY_STEP = 4
}; };
enum enum
{ {
TEXQUALITY_LOW = 0, TEXQUALITY_LOW = 0,
TEXQUALITY_NORMAL = 1, TEXQUALITY_NORMAL = 1,
TEXQUALITY_HIGH = 2 TEXQUALITY_HIGH = 2
}; };
/** /**
@brief The display details page of the configuration tool @brief The display details page of the configuration tool
*/ */
class CDisplaySettingsDetailsWidget : public CWidgetBase, public Ui::display_settings_details_widget class CDisplaySettingsDetailsWidget : public CWidgetBase, public Ui::display_settings_details_widget
{ {
Q_OBJECT Q_OBJECT
public: public:
CDisplaySettingsDetailsWidget( QWidget *parent = NULL ); CDisplaySettingsDetailsWidget( QWidget *parent = NULL );
~CDisplaySettingsDetailsWidget(); ~CDisplaySettingsDetailsWidget();
void load(); void load();
void save(); void save();
protected: protected:
void changeEvent( QEvent *event ); void changeEvent( QEvent *event );
private slots: private slots:
void onLandscapeSliderChange( int value ); void onLandscapeSliderChange( int value );
void onCharactersSliderChange( int value ); void onCharactersSliderChange( int value );
void onFXSliderChange( int value ); void onFXSliderChange( int value );
void onTexturesSliderChange( int value ); void onTexturesSliderChange( int value );
private: private:
/** /**
@brief Looks up and returns the "quality" ( see the enums on the top), that belongs to the specified value. @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 table - The lookup table you want to use.
@param value - The value that we want to look up. @param value - The value that we want to look up.
@return Returns the "quality" that best fits the specified value. @return Returns the "quality" that best fits the specified value.
*/ */
template< typename T > template< typename T >
int getQuality( const T *table, T value ) int getQuality( const T *table, T value )
{ {
if( table[ 0 ] < table[ QUALITY_STEP - 1 ] ) if( table[ 0 ] < table[ QUALITY_STEP - 1 ] )
{ {
uint32 i = 0; uint32 i = 0;
while( ( i < QUALITY_STEP ) && ( table[ i ] < value ) ) while( ( i < QUALITY_STEP ) && ( table[ i ] < value ) )
i++; i++;
return i; return i;
} }
else else
{ {
uint32 i = 0; uint32 i = 0;
while( ( i < QUALITY_STEP ) && ( table[ i ] > value ) ) while( ( i < QUALITY_STEP ) && ( table[ i ] > value ) )
i++; i++;
return i; return i;
} }
} }
/** /**
@brief Retrieves the string that belongs to the specified quality. @brief Retrieves the string that belongs to the specified quality.
@param quality - The quality value @param quality - The quality value
@return Returns a string describing the quality value, Returns an empty string if an invalid value is specified. @return Returns a string describing the quality value, Returns an empty string if an invalid value is specified.
*/ */
static QString getQualityString( uint32 quality ); static QString getQualityString( uint32 quality );
/** /**
@brief Retrieves the string that belongs to the specified texture quality. @brief Retrieves the string that belongs to the specified texture quality.
@param quality - The texture quality value @param quality - The texture quality value
@return Returns a string describing the texture quality, Returns an empty string if an invalid value is specified. @return Returns a string describing the texture quality, Returns an empty string if an invalid value is specified.
*/ */
static QString getTextureQualityString( uint32 quality ); static QString getTextureQualityString( uint32 quality );
///////////////////////// Landscape values /////////////////////// ///////////////////////// Landscape values ///////////////////////
static const float qualityToZFar[ QUALITY_STEP ]; static const float qualityToZFar[ QUALITY_STEP ];
static const float qualityToLandscapeTileNear[ QUALITY_STEP ]; static const float qualityToLandscapeTileNear[ QUALITY_STEP ];
static const float qualityToLandscapeThreshold[ QUALITY_STEP ]; static const float qualityToLandscapeThreshold[ QUALITY_STEP ];
static const float qualityToMicrovegetDensity[ QUALITY_STEP ]; static const float qualityToMicrovegetDensity[ QUALITY_STEP ];
//////////////////////// Character values //////////////////////// //////////////////////// Character values ////////////////////////
static const sint32 qualityToSkinNbMaxPoly[ QUALITY_STEP ]; static const sint32 qualityToSkinNbMaxPoly[ QUALITY_STEP ];
static const sint32 qualityToNbMaxSkeletonNotCLod[ QUALITY_STEP ]; static const sint32 qualityToNbMaxSkeletonNotCLod[ QUALITY_STEP ];
static const float qualityToCharacterFarClip[ QUALITY_STEP ]; static const float qualityToCharacterFarClip[ QUALITY_STEP ];
/////////////////////// FX values //////////////////////////////// /////////////////////// FX values ////////////////////////////////
static const sint32 qualityToFxNbMaxPoly[ QUALITY_STEP ]; static const sint32 qualityToFxNbMaxPoly[ QUALITY_STEP ];
}; };
#endif // DISPLAYSETTINGSDETAILSWIDGET_H #endif // DISPLAYSETTINGSDETAILSWIDGET_H

View file

@ -1,227 +1,227 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <string> #include <string>
#include <sstream> #include <sstream>
#include "display_settings_widget.h" #include "display_settings_widget.h"
#include "system.h" #include "system.h"
#include <QRegExpValidator> #include <QRegExpValidator>
CDisplaySettingsWidget::CDisplaySettingsWidget( QWidget *parent ) : CDisplaySettingsWidget::CDisplaySettingsWidget( QWidget *parent ) :
CWidgetBase( parent ) CWidgetBase( parent )
{ {
setupUi( this ); setupUi( this );
widthLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), widthLineEdit ) ); widthLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), widthLineEdit ) );
heightLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), heightLineEdit ) ); heightLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), heightLineEdit ) );
xpositionLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), xpositionLineEdit ) ); xpositionLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), xpositionLineEdit ) );
ypositionLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), ypositionLineEdit ) ); ypositionLineEdit->setValidator( new QRegExpValidator( QRegExp( "[0-9]{1,6}" ), ypositionLineEdit ) );
load(); load();
connect( autoRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( autoRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
connect( openglRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( openglRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
connect( direct3dRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( direct3dRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
connect( fullscreenRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( fullscreenRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
connect( windowedRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( windowedRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
connect( widthLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) ); connect( widthLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) );
connect( heightLineEdit, 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( xpositionLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( onSomethingChanged() ) );
connect( ypositionLineEdit, 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( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) );
connect( autoRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) ); connect( autoRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) );
connect( openglRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) ); connect( openglRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) );
connect( direct3dRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) ); connect( direct3dRadioButton, SIGNAL( clicked( bool ) ), this, SLOT( updateVideoModes() ) );
} }
CDisplaySettingsWidget::~CDisplaySettingsWidget() CDisplaySettingsWidget::~CDisplaySettingsWidget()
{ {
} }
void CDisplaySettingsWidget::load() void CDisplaySettingsWidget::load()
{ {
CSystem &s = CSystem::GetInstance(); CSystem &s = CSystem::GetInstance();
std::string driver = s.config.getString( "Driver3D" ); std::string driver = s.config.getString( "Driver3D" );
switch( getDriverFromConfigString( driver ) ) switch( getDriverFromConfigString( driver ) )
{ {
case DRV_AUTO: case DRV_AUTO:
autoRadioButton->setChecked( true ); autoRadioButton->setChecked( true );
break; break;
case DRV_OPENGL: case DRV_OPENGL:
openglRadioButton->setChecked( true ); openglRadioButton->setChecked( true );
break; break;
case DRV_DIRECT3D: case DRV_DIRECT3D:
direct3dRadioButton->setChecked( true ); direct3dRadioButton->setChecked( true );
break; break;
} }
updateVideoModes(); updateVideoModes();
CVideoMode mode; CVideoMode mode;
mode.widht = s.config.getInt( "Width" ); mode.widht = s.config.getInt( "Width" );
mode.height = s.config.getInt( "Height" ); mode.height = s.config.getInt( "Height" );
mode.depth = s.config.getInt( "Depth" ); mode.depth = s.config.getInt( "Depth" );
mode.frequency = s.config.getInt( "Frequency" ); mode.frequency = s.config.getInt( "Frequency" );
if( s.config.getInt( "FullScreen" ) == 1 ) if( s.config.getInt( "FullScreen" ) == 1 )
{ {
fullscreenRadioButton->setChecked( true ); fullscreenRadioButton->setChecked( true );
videomodeComboBox->setCurrentIndex( findVideoModeIndex( &mode ) ); videomodeComboBox->setCurrentIndex( findVideoModeIndex( &mode ) );
} }
else else
{ {
windowedRadioButton->setChecked( true ); windowedRadioButton->setChecked( true );
} }
widthLineEdit->setText( QString( "%1" ).arg( mode.widht ) ); widthLineEdit->setText( QString( "%1" ).arg( mode.widht ) );
heightLineEdit->setText( QString( "%1" ).arg( mode.height ) ); heightLineEdit->setText( QString( "%1" ).arg( mode.height ) );
xpositionLineEdit->setText( QString( "%1" ).arg( s.config.getInt( "PositionX" ) ) ); xpositionLineEdit->setText( QString( "%1" ).arg( s.config.getInt( "PositionX" ) ) );
ypositionLineEdit->setText( QString( "%1" ).arg( s.config.getInt( "PositionY" ) ) ); ypositionLineEdit->setText( QString( "%1" ).arg( s.config.getInt( "PositionY" ) ) );
} }
void CDisplaySettingsWidget::save() void CDisplaySettingsWidget::save()
{ {
CSystem &s = CSystem::GetInstance(); CSystem &s = CSystem::GetInstance();
if( openglRadioButton->isChecked() ) if( openglRadioButton->isChecked() )
s.config.setString( "Driver3D", std::string( "OpenGL" ) ); s.config.setString( "Driver3D", std::string( "OpenGL" ) );
else if( direct3dRadioButton->isChecked() ) else if( direct3dRadioButton->isChecked() )
s.config.setString( "Driver3D", std::string( "Direct3D" ) ); s.config.setString( "Driver3D", std::string( "Direct3D" ) );
else else
s.config.setString( "Driver3D", std::string( "Auto" ) ); s.config.setString( "Driver3D", std::string( "Auto" ) );
if( fullscreenRadioButton->isChecked() ) if( fullscreenRadioButton->isChecked() )
{ {
s.config.setInt( "FullScreen", 1 ); s.config.setInt( "FullScreen", 1 );
sint32 index = videomodeComboBox->currentIndex(); sint32 index = videomodeComboBox->currentIndex();
CVideoMode mode; CVideoMode mode;
// OpenGL should be available everywhere! // OpenGL should be available everywhere!
if( direct3dRadioButton->isChecked() ) if( direct3dRadioButton->isChecked() )
mode = s.d3dInfo.modes[ index ]; mode = s.d3dInfo.modes[ index ];
else else
mode = s.openglInfo.modes[ index ]; mode = s.openglInfo.modes[ index ];
s.config.setInt( "Width", mode.widht ); s.config.setInt( "Width", mode.widht );
s.config.setInt( "Height", mode.height ); s.config.setInt( "Height", mode.height );
s.config.setInt( "Depth", mode.depth ); s.config.setInt( "Depth", mode.depth );
s.config.setInt( "Frequency", mode.frequency ); s.config.setInt( "Frequency", mode.frequency );
} }
else else
{ {
s.config.setInt( "FullScreen", 0 ); s.config.setInt( "FullScreen", 0 );
s.config.setInt( "Width", widthLineEdit->text().toInt() ); s.config.setInt( "Width", widthLineEdit->text().toInt() );
s.config.setInt( "Height", heightLineEdit->text().toInt() ); s.config.setInt( "Height", heightLineEdit->text().toInt() );
} }
s.config.setInt( "PositionX", xpositionLineEdit->text().toInt() ); s.config.setInt( "PositionX", xpositionLineEdit->text().toInt() );
s.config.setInt( "PositionY", ypositionLineEdit->text().toInt() ); s.config.setInt( "PositionY", ypositionLineEdit->text().toInt() );
} }
void CDisplaySettingsWidget::changeEvent( QEvent *event ) void CDisplaySettingsWidget::changeEvent( QEvent *event )
{ {
if( event->type() == QEvent::LanguageChange ) if( event->type() == QEvent::LanguageChange )
{ {
disconnect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) ); disconnect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) );
retranslateUi( this ); retranslateUi( this );
connect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) ); connect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) );
} }
QWidget::changeEvent( event ); QWidget::changeEvent( event );
} }
void CDisplaySettingsWidget::updateVideoModes() void CDisplaySettingsWidget::updateVideoModes()
{ {
CSystem &s = CSystem::GetInstance(); CSystem &s = CSystem::GetInstance();
videomodeComboBox->clear(); videomodeComboBox->clear();
if( direct3dRadioButton->isChecked() ) if( direct3dRadioButton->isChecked() )
{ {
for( std::vector< CVideoMode >::iterator itr = s.d3dInfo.modes.begin(); itr != s.d3dInfo.modes.end(); ++itr ) for( std::vector< CVideoMode >::iterator itr = s.d3dInfo.modes.begin(); itr != s.d3dInfo.modes.end(); ++itr )
{ {
std::stringstream ss; std::stringstream ss;
ss << itr->widht << "x" << itr->height << " " << itr->depth << " bit @" << itr->frequency; ss << itr->widht << "x" << itr->height << " " << itr->depth << " bit @" << itr->frequency;
videomodeComboBox->addItem( ss.str().c_str() ); videomodeComboBox->addItem( ss.str().c_str() );
} }
} }
else else
{ {
// OpenGL should be available everywhere! // OpenGL should be available everywhere!
for( std::vector< CVideoMode >::iterator itr = s.openglInfo.modes.begin(); itr != s.openglInfo.modes.end(); ++itr ) for( std::vector< CVideoMode >::iterator itr = s.openglInfo.modes.begin(); itr != s.openglInfo.modes.end(); ++itr )
{ {
std::stringstream ss; std::stringstream ss;
ss << itr->widht << "x" << itr->height << " " << itr->depth << " bit @" << itr->frequency; ss << itr->widht << "x" << itr->height << " " << itr->depth << " bit @" << itr->frequency;
videomodeComboBox->addItem( ss.str().c_str() ); videomodeComboBox->addItem( ss.str().c_str() );
} }
} }
} }
uint32 CDisplaySettingsWidget::findVideoModeIndex( CVideoMode *mode ) uint32 CDisplaySettingsWidget::findVideoModeIndex( CVideoMode *mode )
{ {
////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////
// WARNING: // WARNING:
// This part relies on that the video mode combo box is filled as the following: // This part relies on that the video mode combo box is filled as the following:
// //
//| --------------------------------------| //| --------------------------------------|
//| Selected driver | Modes | //| Selected driver | Modes |
//| --------------------------------------| //| --------------------------------------|
//| Auto | OpenGL modes | //| Auto | OpenGL modes |
//| OpenGL | OpenGL modes | //| OpenGL | OpenGL modes |
//| Direct3D | Direct3d modes | //| Direct3D | Direct3d modes |
//| --------------------------------------| //| --------------------------------------|
// //
// //
////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////
CVideoMode &m = *mode; CVideoMode &m = *mode;
CSystem &s = CSystem::GetInstance(); CSystem &s = CSystem::GetInstance();
if( direct3dRadioButton->isChecked() ) if( direct3dRadioButton->isChecked() )
{ {
for( uint32 i = 0; i < s.d3dInfo.modes.size(); i++ ) for( uint32 i = 0; i < s.d3dInfo.modes.size(); i++ )
if( s.d3dInfo.modes[ i ] == m ) if( s.d3dInfo.modes[ i ] == m )
return i; return i;
} }
else else
{ {
// Again OpenGL should be available everywhere! // Again OpenGL should be available everywhere!
for( uint32 i = 0; i < s.openglInfo.modes.size(); i++ ) for( uint32 i = 0; i < s.openglInfo.modes.size(); i++ )
if( s.openglInfo.modes[ i ] == m ) if( s.openglInfo.modes[ i ] == m )
return i; return i;
} }
return 0; return 0;
} }
E3DDriver CDisplaySettingsWidget::getDriverFromConfigString(std::string &str) const E3DDriver CDisplaySettingsWidget::getDriverFromConfigString(std::string &str) const
{ {
if( str.compare( "0" ) == 0 ) if( str.compare( "0" ) == 0 )
return DRV_AUTO; return DRV_AUTO;
if( str.compare( "1" ) == 0 ) if( str.compare( "1" ) == 0 )
return DRV_OPENGL; return DRV_OPENGL;
if( str.compare( "2" ) == 0 ) if( str.compare( "2" ) == 0 )
return DRV_DIRECT3D; return DRV_DIRECT3D;
if( str.compare( "OpenGL" ) == 0 ) if( str.compare( "OpenGL" ) == 0 )
return DRV_OPENGL; return DRV_OPENGL;
if( str.compare( "Direct3D" ) == 0) if( str.compare( "Direct3D" ) == 0)
return DRV_DIRECT3D; return DRV_DIRECT3D;
return DRV_AUTO; return DRV_AUTO;
} }

View file

@ -1,72 +1,72 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef DISPLAYSETTINGSWIDGET_H #ifndef DISPLAYSETTINGSWIDGET_H
#define DISPLAYSETTINGSWIDGET_H #define DISPLAYSETTINGSWIDGET_H
#include "ui_display_settings_widget.h" #include "ui_display_settings_widget.h"
#include "widget_base.h" #include "widget_base.h"
#include <nel/misc/types_nl.h> #include <nel/misc/types_nl.h>
struct CVideoMode; struct CVideoMode;
enum E3DDriver enum E3DDriver
{ {
DRV_AUTO, DRV_AUTO,
DRV_OPENGL, DRV_OPENGL,
DRV_DIRECT3D DRV_DIRECT3D
}; };
/** /**
@brief The display settings page of the configuration tool @brief The display settings page of the configuration tool
*/ */
class CDisplaySettingsWidget : public CWidgetBase, public Ui::display_settings_widget class CDisplaySettingsWidget : public CWidgetBase, public Ui::display_settings_widget
{ {
Q_OBJECT Q_OBJECT
public: public:
CDisplaySettingsWidget( QWidget *parent = NULL ); CDisplaySettingsWidget( QWidget *parent = NULL );
~CDisplaySettingsWidget(); ~CDisplaySettingsWidget();
void load(); void load();
void save(); void save();
protected: protected:
void changeEvent( QEvent *event ); void changeEvent( QEvent *event );
private slots: private slots:
/** /**
@brief Updates the video modes combo box, based on the current driver selection. @brief Updates the video modes combo box, based on the current driver selection.
*/ */
void updateVideoModes(); void updateVideoModes();
private: private:
/** /**
@brief Finds the proper index for the video mode combobox @brief Finds the proper index for the video mode combobox
@param mode - the video mode read from config @param mode - the video mode read from config
@return Returns the proper video mode index if found, returns 0 otherwise. @return Returns the proper video mode index if found, returns 0 otherwise.
*/ */
uint32 findVideoModeIndex( CVideoMode *mode ); uint32 findVideoModeIndex( CVideoMode *mode );
/** /**
@brief Retrieves the driver type from the config string. @brief Retrieves the driver type from the config string.
@param str - Reference to the driver string. @param str - Reference to the driver string.
@return Returns the driver type on success, rReturns E3DDriver::DRV_AUTO otherwise. @return Returns the driver type on success, rReturns E3DDriver::DRV_AUTO otherwise.
*/ */
E3DDriver getDriverFromConfigString( std::string &str ) const; E3DDriver getDriverFromConfigString( std::string &str ) const;
}; };
#endif // DISPLAYSETTINGSWIDGET_H #endif // DISPLAYSETTINGSWIDGET_H

View file

@ -1,121 +1,121 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "general_settings_widget.h" #include "general_settings_widget.h"
#include "system.h" #include "system.h"
#include <QTranslator> #include <QTranslator>
const QString CGeneralSettingsWidget::languageCodes[ NUM_LANGUAGE_CODES ] = const QString CGeneralSettingsWidget::languageCodes[ NUM_LANGUAGE_CODES ] =
{ {
"en", "en",
"fr", "fr",
"de", "de",
"hu" "hu"
}; };
CGeneralSettingsWidget::CGeneralSettingsWidget( QWidget *parent ) : CGeneralSettingsWidget::CGeneralSettingsWidget( QWidget *parent ) :
CWidgetBase( parent ) CWidgetBase( parent )
{ {
currentTranslator = NULL; currentTranslator = NULL;
setupUi( this ); setupUi( this );
load(); load();
connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) ); connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) );
connect( saveConfigOnQuitCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) ); connect( saveConfigOnQuitCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) );
connect( lowPriorityProcessCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) ); connect( lowPriorityProcessCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) );
} }
CGeneralSettingsWidget::~CGeneralSettingsWidget() CGeneralSettingsWidget::~CGeneralSettingsWidget()
{ {
} }
void CGeneralSettingsWidget::load() void CGeneralSettingsWidget::load()
{ {
CSystem &s = CSystem::GetInstance(); CSystem &s = CSystem::GetInstance();
sint32 cbIndex = getIndexForLanguageCode( QString( s.config.getString( "LanguageCode" ).c_str() ) ); sint32 cbIndex = getIndexForLanguageCode( QString( s.config.getString( "LanguageCode" ).c_str() ) );
if( cbIndex != -1 ){ if( cbIndex != -1 ){
languageComboBox->setCurrentIndex( cbIndex ); languageComboBox->setCurrentIndex( cbIndex );
onLanguageChanged(); onLanguageChanged();
} }
if( s.config.getInt( "SaveConfig" ) ) if( s.config.getInt( "SaveConfig" ) )
saveConfigOnQuitCheckBox->setChecked( true ); saveConfigOnQuitCheckBox->setChecked( true );
if( s.config.getInt( "ProcessPriority" ) == -1 ) if( s.config.getInt( "ProcessPriority" ) == -1 )
lowPriorityProcessCheckBox->setChecked( true ); lowPriorityProcessCheckBox->setChecked( true );
else else
lowPriorityProcessCheckBox->setChecked( false ); lowPriorityProcessCheckBox->setChecked( false );
} }
void CGeneralSettingsWidget::save() void CGeneralSettingsWidget::save()
{ {
CSystem &s = CSystem::GetInstance(); CSystem &s = CSystem::GetInstance();
s.config.setString( "LanguageCode", std::string( languageCodes[ languageComboBox->currentIndex() ].toUtf8() ) ); s.config.setString( "LanguageCode", std::string( languageCodes[ languageComboBox->currentIndex() ].toUtf8() ) );
if( saveConfigOnQuitCheckBox->isChecked() ) if( saveConfigOnQuitCheckBox->isChecked() )
s.config.setInt( "SaveConfig", 1 ); s.config.setInt( "SaveConfig", 1 );
else else
s.config.setInt( "SaveConfig", 0 ); s.config.setInt( "SaveConfig", 0 );
if( lowPriorityProcessCheckBox->isChecked() ) if( lowPriorityProcessCheckBox->isChecked() )
s.config.setInt( "ProcessPriority", -1 ); s.config.setInt( "ProcessPriority", -1 );
else else
s.config.setInt( "ProcessPriority", 0 ); s.config.setInt( "ProcessPriority", 0 );
} }
void CGeneralSettingsWidget::onLanguageChanged() void CGeneralSettingsWidget::onLanguageChanged()
{ {
sint32 i = languageComboBox->currentIndex(); sint32 i = languageComboBox->currentIndex();
if( currentTranslator != NULL ) if( currentTranslator != NULL )
{ {
qApp->removeTranslator( currentTranslator ); qApp->removeTranslator( currentTranslator );
delete currentTranslator; delete currentTranslator;
currentTranslator = NULL; currentTranslator = NULL;
} }
currentTranslator = new QTranslator(); currentTranslator = new QTranslator();
if( currentTranslator->load( QString( ":/translations/ryzom_configuration_%1" ).arg( languageCodes[ i ] ) ) ) if( currentTranslator->load( QString( ":/translations/ryzom_configuration_%1" ).arg( languageCodes[ i ] ) ) )
qApp->installTranslator( currentTranslator ); qApp->installTranslator( currentTranslator );
emit changed(); emit changed();
} }
void CGeneralSettingsWidget::changeEvent( QEvent *event ) void CGeneralSettingsWidget::changeEvent( QEvent *event )
{ {
if( event->type() == QEvent::LanguageChange ) if( event->type() == QEvent::LanguageChange )
{ {
sint32 i = languageComboBox->currentIndex(); sint32 i = languageComboBox->currentIndex();
// Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget // Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget
disconnect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) ); disconnect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) );
retranslateUi( this ); retranslateUi( this );
languageComboBox->setCurrentIndex( i ); languageComboBox->setCurrentIndex( i );
connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) ); connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) );
} }
QWidget::changeEvent( event ); QWidget::changeEvent( event );
} }
int CGeneralSettingsWidget::getIndexForLanguageCode( QString &languageCode ) int CGeneralSettingsWidget::getIndexForLanguageCode( QString &languageCode )
{ {
for( sint32 i = 0; i < NUM_LANGUAGE_CODES; i++ ) for( sint32 i = 0; i < NUM_LANGUAGE_CODES; i++ )
if( languageCode.compare( languageCodes[ i ] ) == 0 ) if( languageCode.compare( languageCodes[ i ] ) == 0 )
return i; return i;
return -1; return -1;
} }

View file

@ -1,66 +1,66 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef GENERALSETTINGWIDGET_H #ifndef GENERALSETTINGWIDGET_H
#define GENERALSETTINGWIDGET_H #define GENERALSETTINGWIDGET_H
#include "ui_general_settings_widget.h" #include "ui_general_settings_widget.h"
#include "widget_base.h" #include "widget_base.h"
#include <nel/misc/types_nl.h> #include <nel/misc/types_nl.h>
class QTranslator; class QTranslator;
enum enum
{ {
NUM_LANGUAGE_CODES = 4 NUM_LANGUAGE_CODES = 4
}; };
/** /**
@brief The general settings page of the configuration tool @brief The general settings page of the configuration tool
*/ */
class CGeneralSettingsWidget : public CWidgetBase, public Ui::general_settings_widget class CGeneralSettingsWidget : public CWidgetBase, public Ui::general_settings_widget
{ {
Q_OBJECT Q_OBJECT
public: public:
CGeneralSettingsWidget( QWidget *parent = NULL ); CGeneralSettingsWidget( QWidget *parent = NULL );
~CGeneralSettingsWidget(); ~CGeneralSettingsWidget();
void load(); void load();
void save(); void save();
private slots: private slots:
void onLanguageChanged(); void onLanguageChanged();
protected: protected:
void changeEvent( QEvent *event ); void changeEvent( QEvent *event );
private: private:
/** /**
@brief Retrieves the language combobox index for the language code provided. @brief Retrieves the language combobox index for the language code provided.
@param languageCode - Reference to the language code, we are trying to find. @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. @return Returns the index on success, returns -1 if the language code cannot be found.
*/ */
sint32 getIndexForLanguageCode( QString &languageCode ); sint32 getIndexForLanguageCode( QString &languageCode );
// Contains the language codes used in the config file // Contains the language codes used in the config file
// They are in the same order as the options in languageComboBox // They are in the same order as the options in languageComboBox
static const QString languageCodes[ NUM_LANGUAGE_CODES ]; static const QString languageCodes[ NUM_LANGUAGE_CODES ];
QTranslator *currentTranslator; QTranslator *currentTranslator;
}; };
#endif // GENERALSETTINGWIDGET_H #endif // GENERALSETTINGWIDGET_H

View file

@ -1,36 +1,36 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <QtGui> #include <QtGui>
#include "client_config_dialog.h" #include "client_config_dialog.h"
#include "system.h" #include "system.h"
int main( sint32 argc, char **argv ) int main( sint32 argc, char **argv )
{ {
QApplication app( argc, argv ); QApplication app( argc, argv );
QPixmap pixmap( ":/resources/splash_screen.bmp" ); QPixmap pixmap( ":/resources/splash_screen.bmp" );
QSplashScreen splash( pixmap ); QSplashScreen splash( pixmap );
splash.show(); splash.show();
CSystem::GetInstance().config.load( "client.cfg" ); CSystem::GetInstance().config.load( "client.cfg" );
CClientConfigDialog d; CClientConfigDialog d;
d.show(); d.show();
splash.finish( &d ); splash.finish( &d );
return app.exec(); return app.exec();
} }

View file

@ -1,99 +1,99 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "sound_settings_widget.h" #include "sound_settings_widget.h"
#include "system.h" #include "system.h"
CSoundSettingsWidget::CSoundSettingsWidget( QWidget *parent ) : CSoundSettingsWidget::CSoundSettingsWidget( QWidget *parent ) :
CWidgetBase( parent ) CWidgetBase( parent )
{ {
setupUi( this ); setupUi( this );
load(); load();
connect( tracksSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onTracksSliderChange() ) ); connect( tracksSlider, SIGNAL( valueChanged( int ) ), this, SLOT( onTracksSliderChange() ) );
connect( soundCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( soundCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
connect( eaxCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( eaxCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
connect( softwareCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( softwareCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
connect( fmodCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) ); connect( fmodCheckBox, SIGNAL( clicked( bool ) ), this, SLOT( onSomethingChanged() ) );
} }
CSoundSettingsWidget::~CSoundSettingsWidget() CSoundSettingsWidget::~CSoundSettingsWidget()
{ {
} }
void CSoundSettingsWidget::onTracksSliderChange() void CSoundSettingsWidget::onTracksSliderChange()
{ {
updateTracksLabel(); updateTracksLabel();
emit changed(); emit changed();
} }
void CSoundSettingsWidget::load() void CSoundSettingsWidget::load()
{ {
CSystem &s = CSystem::GetInstance(); CSystem &s = CSystem::GetInstance();
if( s.config.getInt( "SoundOn" ) == 1 ) if( s.config.getInt( "SoundOn" ) == 1 )
soundCheckBox->setChecked( true ); soundCheckBox->setChecked( true );
if( s.config.getInt( "UseEax" ) == 1 ) if( s.config.getInt( "UseEax" ) == 1 )
eaxCheckBox->setChecked( true ); eaxCheckBox->setChecked( true );
if( s.config.getInt( "SoundForceSoftwareBuffer" ) == 1 ) if( s.config.getInt( "SoundForceSoftwareBuffer" ) == 1 )
softwareCheckBox->setChecked( true ); softwareCheckBox->setChecked( true );
sint32 tracks = s.config.getInt( "MaxTrack" ); sint32 tracks = s.config.getInt( "MaxTrack" );
if( tracks < 4 ) if( tracks < 4 )
tracks = 4; tracks = 4;
if( tracks > 32 ) if( tracks > 32 )
tracks = 32; tracks = 32;
tracksSlider->setValue( tracks / 4 ); tracksSlider->setValue( tracks / 4 );
if( s.config.getString( "DriverSound" ).compare( "FMod" ) == 0 ) if( s.config.getString( "DriverSound" ).compare( "FMod" ) == 0 )
fmodCheckBox->setChecked( true ); fmodCheckBox->setChecked( true );
} }
void CSoundSettingsWidget::save() void CSoundSettingsWidget::save()
{ {
CSystem &s = CSystem::GetInstance(); CSystem &s = CSystem::GetInstance();
if( soundCheckBox->isChecked() ) if( soundCheckBox->isChecked() )
s.config.setInt( "SoundOn", 1 ); s.config.setInt( "SoundOn", 1 );
if( eaxCheckBox->isChecked() ) if( eaxCheckBox->isChecked() )
s.config.setInt( "UseEax", 1 ); s.config.setInt( "UseEax", 1 );
if( softwareCheckBox->isChecked() ) if( softwareCheckBox->isChecked() )
s.config.setInt( "SoundForceSoftwareBuffer", 1 ); s.config.setInt( "SoundForceSoftwareBuffer", 1 );
s.config.setInt( "MaxTrack", tracksSlider->value() * 4 ); s.config.setInt( "MaxTrack", tracksSlider->value() * 4 );
if( fmodCheckBox->isChecked() ) if( fmodCheckBox->isChecked() )
s.config.setString( "DriverSound", std::string( "FMod" ) ); s.config.setString( "DriverSound", std::string( "FMod" ) );
} }
void CSoundSettingsWidget::changeEvent( QEvent *event ) void CSoundSettingsWidget::changeEvent( QEvent *event )
{ {
if( event->type() == QEvent::LanguageChange ) if( event->type() == QEvent::LanguageChange )
{ {
retranslateUi( this ); retranslateUi( this );
updateTracksLabel(); updateTracksLabel();
} }
QWidget::changeEvent( event ); QWidget::changeEvent( event );
} }
void CSoundSettingsWidget::updateTracksLabel() void CSoundSettingsWidget::updateTracksLabel()
{ {
tracksLabel->setText( tr( "%1 tracks" ).arg( tracksSlider->value() * 4 ) ); tracksLabel->setText( tr( "%1 tracks" ).arg( tracksSlider->value() * 4 ) );
} }

View file

@ -1,50 +1,50 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef SOUNDSETTINGSWIDGET_H #ifndef SOUNDSETTINGSWIDGET_H
#define SOUNDSETTINGSWIDGET_H #define SOUNDSETTINGSWIDGET_H
#include "ui_sound_settings_widget.h" #include "ui_sound_settings_widget.h"
#include "widget_base.h" #include "widget_base.h"
#include <nel/misc/types_nl.h> #include <nel/misc/types_nl.h>
/** /**
@brief The sound settings page of the configuration tool @brief The sound settings page of the configuration tool
*/ */
class CSoundSettingsWidget : public CWidgetBase, public Ui::sound_settings_widget class CSoundSettingsWidget : public CWidgetBase, public Ui::sound_settings_widget
{ {
Q_OBJECT Q_OBJECT
public: public:
CSoundSettingsWidget( QWidget *parent = NULL ); CSoundSettingsWidget( QWidget *parent = NULL );
~CSoundSettingsWidget(); ~CSoundSettingsWidget();
void load(); void load();
void save(); void save();
protected: protected:
void changeEvent( QEvent *event ); void changeEvent( QEvent *event );
private slots: private slots:
void onTracksSliderChange(); void onTracksSliderChange();
private: private:
/** /**
@brief Updates the text on the tracks label. @brief Updates the text on the tracks label.
*/ */
void updateTracksLabel(); void updateTracksLabel();
}; };
#endif // SOUNDSETTINGSWIDGET_H #endif // SOUNDSETTINGSWIDGET_H

View file

@ -1,41 +1,41 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "sys_info_d3d_widget.h" #include "sys_info_d3d_widget.h"
#include "system.h" #include "system.h"
CSysInfoD3DWidget::CSysInfoD3DWidget( QWidget *parent ) : CSysInfoD3DWidget::CSysInfoD3DWidget( QWidget *parent ) :
QWidget( parent ) QWidget( parent )
{ {
setupUi( this ); setupUi( this );
descriptionLabel->setText( CSystem::GetInstance().d3dInfo.device.c_str() ); descriptionLabel->setText( CSystem::GetInstance().d3dInfo.device.c_str() );
driverLabel->setText( CSystem::GetInstance().d3dInfo.driver.c_str() ); driverLabel->setText( CSystem::GetInstance().d3dInfo.driver.c_str() );
versionLabel->setText( CSystem::GetInstance().d3dInfo.driverVersion.c_str() ); versionLabel->setText( CSystem::GetInstance().d3dInfo.driverVersion.c_str() );
} }
CSysInfoD3DWidget::~CSysInfoD3DWidget() CSysInfoD3DWidget::~CSysInfoD3DWidget()
{ {
} }
void CSysInfoD3DWidget::changeEvent( QEvent *event ) void CSysInfoD3DWidget::changeEvent( QEvent *event )
{ {
if( event->type() == QEvent::LanguageChange ) if( event->type() == QEvent::LanguageChange )
{ {
retranslateUi( this ); retranslateUi( this );
} }
QWidget::changeEvent( event ); QWidget::changeEvent( event );
} }

View file

@ -1,39 +1,39 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef SYSINFOD3DWIDGET_H #ifndef SYSINFOD3DWIDGET_H
#define SYSINFOD3DWIDGET_H #define SYSINFOD3DWIDGET_H
#include "ui_sys_Info_d3d_widget.h" #include "ui_sys_Info_d3d_widget.h"
/** /**
@brief The Direct3D information page of the configuration tool @brief The Direct3D information page of the configuration tool
*/ */
class CSysInfoD3DWidget : public QWidget, public Ui::sys_info_d3d_widget class CSysInfoD3DWidget : public QWidget, public Ui::sys_info_d3d_widget
{ {
Q_OBJECT Q_OBJECT
public: public:
CSysInfoD3DWidget( QWidget *parent = NULL ); CSysInfoD3DWidget( QWidget *parent = NULL );
~CSysInfoD3DWidget(); ~CSysInfoD3DWidget();
protected: protected:
void changeEvent( QEvent *event ); void changeEvent( QEvent *event );
}; };
#endif // SYSINFOD3DWIDGET_H #endif // SYSINFOD3DWIDGET_H

View file

@ -1,42 +1,42 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "sys_info_opengl_widget.h" #include "sys_info_opengl_widget.h"
#include "system.h" #include "system.h"
CSysInfoOpenGLWidget::CSysInfoOpenGLWidget( QWidget *parent ) : CSysInfoOpenGLWidget::CSysInfoOpenGLWidget( QWidget *parent ) :
QWidget( parent ) QWidget( parent )
{ {
setupUi( this ); setupUi( this );
vendorLabel->setText( CSystem::GetInstance().openglInfo.vendor.c_str() ); vendorLabel->setText( CSystem::GetInstance().openglInfo.vendor.c_str() );
rendererLabel->setText( CSystem::GetInstance().openglInfo.renderer.c_str() ); rendererLabel->setText( CSystem::GetInstance().openglInfo.renderer.c_str() );
versionLabel->setText( CSystem::GetInstance().openglInfo.driverVersion.c_str() ); versionLabel->setText( CSystem::GetInstance().openglInfo.driverVersion.c_str() );
extensionsBox->setPlainText( CSystem::GetInstance().openglInfo.extensions.c_str() ); extensionsBox->setPlainText( CSystem::GetInstance().openglInfo.extensions.c_str() );
} }
CSysInfoOpenGLWidget::~CSysInfoOpenGLWidget() CSysInfoOpenGLWidget::~CSysInfoOpenGLWidget()
{ {
} }
void CSysInfoOpenGLWidget::changeEvent( QEvent *event ) void CSysInfoOpenGLWidget::changeEvent( QEvent *event )
{ {
if( event->type() == QEvent::LanguageChange ) if( event->type() == QEvent::LanguageChange )
{ {
retranslateUi( this ); retranslateUi( this );
} }
QWidget::changeEvent( event ); QWidget::changeEvent( event );
} }

View file

@ -1,38 +1,38 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef SYSINFOOPENGLWIDGET_H #ifndef SYSINFOOPENGLWIDGET_H
#define SYSINFOOPENGLWIDGET_H #define SYSINFOOPENGLWIDGET_H
#include "ui_sys_info_opengl_widget.h" #include "ui_sys_info_opengl_widget.h"
/** /**
@brief The OpenGL information page of the configuration tool @brief The OpenGL information page of the configuration tool
*/ */
class CSysInfoOpenGLWidget : public QWidget, public Ui::sys_info_opengl_widget class CSysInfoOpenGLWidget : public QWidget, public Ui::sys_info_opengl_widget
{ {
Q_OBJECT Q_OBJECT
public: public:
CSysInfoOpenGLWidget( QWidget *parent = NULL ); CSysInfoOpenGLWidget( QWidget *parent = NULL );
~CSysInfoOpenGLWidget(); ~CSysInfoOpenGLWidget();
protected: protected:
void changeEvent( QEvent *event ); void changeEvent( QEvent *event );
}; };
#endif // SYSINFOOPENGLWIDGET_H #endif // SYSINFOOPENGLWIDGET_H

View file

@ -1,46 +1,46 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "sys_info_widget.h" #include "sys_info_widget.h"
#include "system.h" #include "system.h"
CSysInfoWidget::CSysInfoWidget( QWidget *parent ) : CSysInfoWidget::CSysInfoWidget( QWidget *parent ) :
QWidget( parent ) QWidget( parent )
{ {
setupUi( this ); setupUi( this );
osLabel->setText( CSystem::GetInstance().sysInfo.osName.c_str() ); osLabel->setText( CSystem::GetInstance().sysInfo.osName.c_str() );
cpuLabel->setText( CSystem::GetInstance().sysInfo.cpuName.c_str() ); cpuLabel->setText( CSystem::GetInstance().sysInfo.cpuName.c_str() );
ramLabel->setText( ramLabel->setText(
QString().setNum( CSystem::GetInstance().sysInfo.totalRAM ).append( " Mb" ) ); QString().setNum( CSystem::GetInstance().sysInfo.totalRAM ).append( " Mb" ) );
gfxcardLabel->setText( CSystem::GetInstance().sysInfo.videoDevice.c_str() ); gfxcardLabel->setText( CSystem::GetInstance().sysInfo.videoDevice.c_str() );
gfxdriverLabel->setText( CSystem::GetInstance().sysInfo.videoDriverVersion.c_str() ); gfxdriverLabel->setText( CSystem::GetInstance().sysInfo.videoDriverVersion.c_str() );
} }
CSysInfoWidget::~CSysInfoWidget() CSysInfoWidget::~CSysInfoWidget()
{ {
} }
void CSysInfoWidget::changeEvent( QEvent *event ) void CSysInfoWidget::changeEvent( QEvent *event )
{ {
if( event->type() == QEvent::LanguageChange ) if( event->type() == QEvent::LanguageChange )
{ {
retranslateUi( this ); retranslateUi( this );
} }
QWidget::changeEvent( event ); QWidget::changeEvent( event );
} }

View file

@ -1,38 +1,38 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef SYSINFOWIDGET_H #ifndef SYSINFOWIDGET_H
#define SYSINFOWIDGET_H #define SYSINFOWIDGET_H
#include "ui_sys_info_widget.h" #include "ui_sys_info_widget.h"
/** /**
@brief The system information page of the configuration tool @brief The system information page of the configuration tool
*/ */
class CSysInfoWidget : public QWidget, public Ui::sys_info_widget class CSysInfoWidget : public QWidget, public Ui::sys_info_widget
{ {
Q_OBJECT Q_OBJECT
public: public:
CSysInfoWidget( QWidget *parent = NULL ); CSysInfoWidget( QWidget *parent = NULL );
~CSysInfoWidget(); ~CSysInfoWidget();
protected: protected:
void changeEvent( QEvent *event ); void changeEvent( QEvent *event );
}; };
#endif // SYSINFOWIDGET_H #endif // SYSINFOWIDGET_H

View file

@ -1,181 +1,181 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "system.h" #include "system.h"
#include <sstream> #include <sstream>
#include <nel/3d/driver.h> #include <nel/3d/driver.h>
#include <nel/3d/dru.h> #include <nel/3d/dru.h>
#include <QtOpenGL/QGLWidget> #include <QtOpenGL/QGLWidget>
CSystem *CSystem::instance = NULL; CSystem *CSystem::instance = NULL;
CSystem::CSystem() CSystem::CSystem()
{ {
GatherSysInfo(); GatherSysInfo();
#ifdef WIN32 #ifdef WIN32
GatherD3DInfo(); GatherD3DInfo();
#endif #endif
GatherOpenGLInfo(); GatherOpenGLInfo();
} }
CSystem::~CSystem() CSystem::~CSystem()
{ {
instance = 0; instance = 0;
} }
void CSystem::GatherSysInfo() void CSystem::GatherSysInfo()
{ {
std::string device; std::string device;
uint64 driver; uint64 driver;
if( NLMISC::CSystemInfo::getVideoInfo( device, driver ) ) if( NLMISC::CSystemInfo::getVideoInfo( device, driver ) )
{ {
sysInfo.videoDevice = device; sysInfo.videoDevice = device;
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
// FIXME // FIXME
// This is taken from the original configuration tool, and // This is taken from the original configuration tool, and
// it generates the same *wrong* version number // it generates the same *wrong* version number
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
uint32 version = static_cast< uint32 >( driver & 0xffff ); uint32 version = static_cast< uint32 >( driver & 0xffff );
std::stringstream ss; std::stringstream ss;
ss << ( version / 1000 % 10 ); ss << ( version / 1000 % 10 );
ss << "."; ss << ".";
ss << ( version / 100 % 10 ); ss << ( version / 100 % 10 );
ss << "."; ss << ".";
ss << ( version / 10 % 10 ); ss << ( version / 10 % 10 );
ss << "."; ss << ".";
ss << ( version % 10 ); ss << ( version % 10 );
sysInfo.videoDriverVersion = ss.str(); sysInfo.videoDriverVersion = ss.str();
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
} }
else else
{ {
sysInfo.videoDevice = "video card"; sysInfo.videoDevice = "video card";
sysInfo.videoDriverVersion = "0.0.0.0"; sysInfo.videoDriverVersion = "0.0.0.0";
} }
sysInfo.osName = NLMISC::CSystemInfo::getOS(); sysInfo.osName = NLMISC::CSystemInfo::getOS();
sysInfo.cpuName = NLMISC::CSystemInfo::getProc(); sysInfo.cpuName = NLMISC::CSystemInfo::getProc();
sysInfo.totalRAM = NLMISC::CSystemInfo::totalPhysicalMemory(); sysInfo.totalRAM = NLMISC::CSystemInfo::totalPhysicalMemory();
sysInfo.totalRAM /= ( 1024 * 1024 ); sysInfo.totalRAM /= ( 1024 * 1024 );
} }
#ifdef WIN32 #ifdef WIN32
void CSystem::GatherD3DInfo() void CSystem::GatherD3DInfo()
{ {
NL3D::IDriver *driver = NULL; NL3D::IDriver *driver = NULL;
try try
{ {
driver = NL3D::CDRU::createD3DDriver(); driver = NL3D::CDRU::createD3DDriver();
NL3D::IDriver::CAdapter adapter; NL3D::IDriver::CAdapter adapter;
if( driver->getAdapter( 0xffffffff, adapter ) ) if( driver->getAdapter( 0xffffffff, adapter ) )
{ {
d3dInfo.device = adapter.Description; d3dInfo.device = adapter.Description;
d3dInfo.driver = adapter.Driver; d3dInfo.driver = adapter.Driver;
sint64 ver = adapter.DriverVersion; sint64 ver = adapter.DriverVersion;
std::stringstream ss; std::stringstream ss;
ss << static_cast< uint16 >( ver >> 48 ); ss << static_cast< uint16 >( ver >> 48 );
ss << "."; ss << ".";
ss << static_cast< uint16 >( ver >> 32 ); ss << static_cast< uint16 >( ver >> 32 );
ss << "."; ss << ".";
ss << static_cast< uint16 >( ver >> 16 ); ss << static_cast< uint16 >( ver >> 16 );
ss << "."; ss << ".";
ss << static_cast< uint16 >( ver & 0xFFFF ); ss << static_cast< uint16 >( ver & 0xFFFF );
d3dInfo.driverVersion = ss.str(); d3dInfo.driverVersion = ss.str();
} }
GetVideoModes( d3dInfo.modes, driver ); GetVideoModes( d3dInfo.modes, driver );
driver->release(); driver->release();
} }
catch( NLMISC::Exception &e ) catch( NLMISC::Exception &e )
{ {
nlwarning( e.what() ); nlwarning( e.what() );
} }
} }
#endif #endif
void CSystem::GatherOpenGLInfo() void CSystem::GatherOpenGLInfo()
{ {
QGLWidget *gl = new QGLWidget(); QGLWidget *gl = new QGLWidget();
gl->makeCurrent(); gl->makeCurrent();
const char *s = NULL; const char *s = NULL;
s = reinterpret_cast< const char * >( glGetString( GL_VENDOR ) ); s = reinterpret_cast< const char * >( glGetString( GL_VENDOR ) );
if( s != NULL ) if( s != NULL )
openglInfo.vendor.assign( s ); openglInfo.vendor.assign( s );
s = reinterpret_cast< const char * >( glGetString( GL_RENDERER ) ); s = reinterpret_cast< const char * >( glGetString( GL_RENDERER ) );
if( s != NULL ) if( s != NULL )
openglInfo.renderer.assign( s ); openglInfo.renderer.assign( s );
s = reinterpret_cast< const char * >( glGetString( GL_VERSION ) ); s = reinterpret_cast< const char * >( glGetString( GL_VERSION ) );
if( s != NULL ) if( s != NULL )
openglInfo.driverVersion.assign( s ); openglInfo.driverVersion.assign( s );
s = reinterpret_cast< const char * >( glGetString( GL_EXTENSIONS ) ); s = reinterpret_cast< const char * >( glGetString( GL_EXTENSIONS ) );
if( s != NULL ) if( s != NULL )
{ {
openglInfo.extensions.assign( s ); openglInfo.extensions.assign( s );
for( std::string::iterator itr = openglInfo.extensions.begin(); itr != openglInfo.extensions.end(); ++itr ) for( std::string::iterator itr = openglInfo.extensions.begin(); itr != openglInfo.extensions.end(); ++itr )
if( *itr == ' ' ) if( *itr == ' ' )
*itr = '\n'; *itr = '\n';
} }
delete gl; delete gl;
NL3D::IDriver *driver = NULL; NL3D::IDriver *driver = NULL;
try try
{ {
driver = NL3D::CDRU::createGlDriver(); driver = NL3D::CDRU::createGlDriver();
GetVideoModes( openglInfo.modes, driver ); GetVideoModes( openglInfo.modes, driver );
driver->release(); driver->release();
} }
catch( NLMISC::Exception &e ) catch( NLMISC::Exception &e )
{ {
nlwarning( e.what() ); nlwarning( e.what() );
} }
} }
void CSystem::GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driver ) const void CSystem::GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driver ) const
{ {
std::vector< NL3D::GfxMode > modes; std::vector< NL3D::GfxMode > modes;
driver->getModes( modes ); driver->getModes( modes );
for( std::vector< NL3D::GfxMode >::iterator itr = modes.begin(); itr != modes.end(); ++itr ) 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 ) ) if( ( itr->Width >= 800 ) && ( itr->Height >= 600 ) && ( itr->Depth == 32 ) && ( itr->Frequency >= 60 ) )
{ {
CVideoMode mode; CVideoMode mode;
mode.depth = itr->Depth; mode.depth = itr->Depth;
mode.widht = itr->Width; mode.widht = itr->Width;
mode.height = itr->Height; mode.height = itr->Height;
mode.frequency = itr->Frequency; mode.frequency = itr->Frequency;
dst.push_back( mode ); dst.push_back( mode );
} }
} }
} }

View file

@ -1,112 +1,112 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef SYSTEM_H #ifndef SYSTEM_H
#define SYSTEM_H #define SYSTEM_H
#include <nel/misc/system_info.h> #include <nel/misc/system_info.h>
#include "config.h" #include "config.h"
namespace NL3D namespace NL3D
{ {
class IDriver; class IDriver;
} }
struct CVideoMode struct CVideoMode
{ {
unsigned int widht; unsigned int widht;
unsigned int height; unsigned int height;
unsigned int depth; unsigned int depth;
unsigned int frequency; unsigned int frequency;
CVideoMode() CVideoMode()
{ {
widht = 0; widht = 0;
height = 0; height = 0;
depth = 0; depth = 0;
frequency = 0; frequency = 0;
} }
bool operator==( CVideoMode &o ) bool operator==( CVideoMode &o )
{ {
if( ( o.widht == widht ) && ( o.height == height ) && ( o.depth == depth ) && ( o.frequency == frequency ) ) if( ( o.widht == widht ) && ( o.height == height ) && ( o.depth == depth ) && ( o.frequency == frequency ) )
return true; return true;
else else
return false; return false;
} }
}; };
/** /**
@brief Singleton class that holds the system information, configs, etc @brief Singleton class that holds the system information, configs, etc
*/ */
class CSystem class CSystem
{ {
public: public:
CSystem(); CSystem();
~CSystem(); ~CSystem();
static CSystem &GetInstance() static CSystem &GetInstance()
{ {
if( instance == 0 ) if( instance == 0 )
{ {
instance = new CSystem; instance = new CSystem;
} }
return *instance; return *instance;
} }
struct CSysInfo struct CSysInfo
{ {
std::string videoDevice; std::string videoDevice;
std::string videoDriverVersion; std::string videoDriverVersion;
std::string osName; std::string osName;
std::string cpuName; std::string cpuName;
uint64 totalRAM; uint64 totalRAM;
} sysInfo; } sysInfo;
#ifdef WIN32 #ifdef WIN32
struct CD3DInfo struct CD3DInfo
{ {
std::string device; std::string device;
std::string driver; std::string driver;
std::string driverVersion; std::string driverVersion;
std::vector< CVideoMode > modes; std::vector< CVideoMode > modes;
} d3dInfo; } d3dInfo;
#endif #endif
struct COpenGLInfo struct COpenGLInfo
{ {
std::string vendor; std::string vendor;
std::string renderer; std::string renderer;
std::string driverVersion; std::string driverVersion;
std::string extensions; std::string extensions;
std::vector< CVideoMode > modes; std::vector< CVideoMode > modes;
} openglInfo; } openglInfo;
CConfig config; CConfig config;
private: private:
void GatherSysInfo(); void GatherSysInfo();
#ifdef WIN32 #ifdef WIN32
void GatherD3DInfo(); void GatherD3DInfo();
#endif #endif
void GatherOpenGLInfo(); void GatherOpenGLInfo();
void GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driver ) const; void GetVideoModes( std::vector< CVideoMode > &dst, NL3D::IDriver *driver ) const;
static CSystem *instance; static CSystem *instance;
}; };
#endif // SYSTEM_H #endif // SYSTEM_H

View file

@ -1,61 +1,61 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details. // GNU Affero General Public License for more details.
// //
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef WIDGETBASE_H #ifndef WIDGETBASE_H
#define WIDGETBASE_H #define WIDGETBASE_H
#include <QWidget> #include <QWidget>
/** /**
@brief Base class for the config tool's settings page widgets. @brief Base class for the config tool's settings page widgets.
*/ */
class CWidgetBase : public QWidget class CWidgetBase : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
CWidgetBase( QWidget *parent = NULL ) : QWidget( parent ) {} CWidgetBase( QWidget *parent = NULL ) : QWidget( parent ) {}
~CWidgetBase() {} ~CWidgetBase() {}
/** /**
@brief Tells the widget to load it's values from the config. @brief Tells the widget to load it's values from the config.
*/ */
virtual void load() = 0; virtual void load() = 0;
/** /**
@brief Tells the widget to save it's values into the config. @brief Tells the widget to save it's values into the config.
*/ */
virtual void save() = 0; virtual void save() = 0;
signals: signals:
/** /**
@brief Emitted when the user changes a setting. @brief Emitted when the user changes a setting.
*/ */
void changed(); void changed();
private slots: private slots:
/** /**
@brief Triggered when something changes in the widget, emits the Changed() signal. @brief Triggered when something changes in the widget, emits the Changed() signal.
*/ */
void onSomethingChanged() void onSomethingChanged()
{ {
emit changed(); emit changed();
} }
}; };
#endif #endif