2016-05-25 21:23:48 +00:00
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
# include "stdpch.h"
2016-06-12 13:40:38 +00:00
# include "migratedialog.h"
2016-05-25 21:23:48 +00:00
# include "configfile.h"
# include "utils.h"
# include "nel/misc/system_info.h"
# include "nel/misc/common.h"
# ifdef DEBUG_NEW
# define new DEBUG_NEW
# endif
2016-06-12 13:40:38 +00:00
CMigrateDialog : : CMigrateDialog ( ) : QDialog ( )
2016-05-25 21:23:48 +00:00
{
setWindowFlags ( windowFlags ( ) & ~ Qt : : WindowContextHelpButtonHint ) ;
setupUi ( this ) ;
// if launched from current directory, it means we just patched files
m_currentDirectory = CConfigFile : : getInstance ( ) - > getCurrentDirectory ( ) ;
if ( ! CConfigFile : : getInstance ( ) - > isRyzomInstalledIn ( m_currentDirectory ) )
{
// Ryzom is in the same directory as Ryzom Installer
m_currentDirectory = CConfigFile : : getInstance ( ) - > getApplicationDirectory ( ) ;
if ( ! CConfigFile : : getInstance ( ) - > isRyzomInstalledIn ( m_currentDirectory ) )
{
m_currentDirectory . clear ( ) ;
}
}
2016-09-29 14:54:50 +00:00
// update default destination
onDestinationDefaultButtonClicked ( ) ;
2016-05-25 21:23:48 +00:00
// check whether OS architecture is 32 or 64 bits
if ( CConfigFile : : has64bitsOS ( ) )
{
clientArchGroupBox - > setVisible ( true ) ;
clientArch64RadioButton - > setChecked ( true ) ;
}
else
{
clientArchGroupBox - > setVisible ( false ) ;
clientArch32RadioButton - > setChecked ( true ) ;
}
const CServer & server = CConfigFile : : getInstance ( ) - > getServer ( ) ;
destinationGroupBox - > setTitle ( tr ( " Files will be installed to (requires %1): " ) . arg ( qBytesToHumanReadable ( server . dataUncompressedSize ) ) ) ;
2016-09-29 14:54:50 +00:00
connect ( destinationDefaultButton , SIGNAL ( clicked ( ) ) , SLOT ( onDestinationDefaultButtonClicked ( ) ) ) ;
2016-05-25 21:23:48 +00:00
connect ( destinationBrowseButton , SIGNAL ( clicked ( ) ) , SLOT ( onDestinationBrowseButtonClicked ( ) ) ) ;
connect ( continueButton , SIGNAL ( clicked ( ) ) , SLOT ( accept ( ) ) ) ;
connect ( quitButton , SIGNAL ( clicked ( ) ) , SLOT ( reject ( ) ) ) ;
// TODO: if found a folder with initial data, get its total size and check if at least that size is free on the disk
// by default, advanced parameters are hidden
onShowAdvancedParameters ( Qt : : Unchecked ) ;
connect ( advancedCheckBox , SIGNAL ( stateChanged ( int ) ) , SLOT ( onShowAdvancedParameters ( int ) ) ) ;
2016-09-21 07:55:49 +00:00
raise ( ) ;
2016-05-25 21:23:48 +00:00
}
2016-06-12 13:40:38 +00:00
CMigrateDialog : : ~ CMigrateDialog ( )
2016-05-25 21:23:48 +00:00
{
}
2016-06-12 13:40:38 +00:00
void CMigrateDialog : : onShowAdvancedParameters ( int state )
2016-05-25 21:23:48 +00:00
{
advancedFrame - > setVisible ( state ! = Qt : : Unchecked ) ;
adjustSize ( ) ;
}
2016-09-29 14:54:50 +00:00
void CMigrateDialog : : onDestinationDefaultButtonClicked ( )
{
m_dstDirectory = CConfigFile : : getNewInstallationDirectory ( ) ;
updateDestinationText ( ) ;
}
2016-06-12 13:40:38 +00:00
void CMigrateDialog : : onDestinationBrowseButtonClicked ( )
2016-05-25 21:23:48 +00:00
{
2016-09-16 16:58:33 +00:00
QString directory = QFileDialog : : getExistingDirectory ( this , tr ( " Please choose directory to install Ryzom in " ) ) ;
2016-05-25 21:23:48 +00:00
if ( directory . isEmpty ( ) ) return ;
m_dstDirectory = directory ;
updateDestinationText ( ) ;
}
2016-06-12 13:40:38 +00:00
void CMigrateDialog : : updateDestinationText ( )
2016-05-25 21:23:48 +00:00
{
destinationLabel - > setText ( m_dstDirectory ) ;
}
2016-06-12 13:40:38 +00:00
void CMigrateDialog : : accept ( )
2016-05-25 21:23:48 +00:00
{
// check free disk space
qint64 freeSpace = NLMISC : : CSystemInfo : : availableHDSpace ( m_dstDirectory . toUtf8 ( ) . constData ( ) ) ;
const CServer & server = CConfigFile : : getInstance ( ) - > getServer ( ) ;
if ( freeSpace < server . dataUncompressedSize )
{
QMessageBox : : StandardButton res = QMessageBox : : warning ( this , tr ( " Not enough free disk space " ) , tr ( " You don't have enough free space on this disk, please make more space or choose a directory on another disk. " ) ) ;
return ;
}
CConfigFile : : getInstance ( ) - > setSrcServerDirectory ( m_currentDirectory ) ;
CConfigFile : : getInstance ( ) - > setInstallationDirectory ( m_dstDirectory ) ;
CConfigFile : : getInstance ( ) - > setUse64BitsClient ( clientArch64RadioButton - > isChecked ( ) ) ;
CConfigFile : : getInstance ( ) - > save ( ) ;
QDialog : : accept ( ) ;
}