new settings classes for client and server, derived from a common base class
This commit is contained in:
parent
a192acacf9
commit
059d9ef203
7 changed files with 705 additions and 675 deletions
|
@ -27,7 +27,7 @@
|
|||
|
||||
/* Implementation *************************************************************/
|
||||
CClientDlg::CClientDlg ( CClient* pNCliP,
|
||||
CSettings* pNSetP,
|
||||
CClientSettings* pNSetP,
|
||||
const QString& strConnOnStartupAddress,
|
||||
const int iCtrlMIDIChannel,
|
||||
const bool bNewShowComplRegConnList,
|
||||
|
|
|
@ -73,7 +73,7 @@ class CClientDlg : public QDialog, private Ui_CClientDlgBase
|
|||
|
||||
public:
|
||||
CClientDlg ( CClient* pNCliP,
|
||||
CSettings* pNSetP,
|
||||
CClientSettings* pNSetP,
|
||||
const QString& strConnOnStartupAddress,
|
||||
const int iCtrlMIDIChannel,
|
||||
const bool bNewShowComplRegConnList,
|
||||
|
@ -96,7 +96,7 @@ protected:
|
|||
void Disconnect();
|
||||
|
||||
CClient* pClient;
|
||||
CSettings* pSettings;
|
||||
CClientSettings* pSettings;
|
||||
|
||||
bool bConnected;
|
||||
bool bConnectDlgWasShown;
|
||||
|
|
|
@ -617,7 +617,7 @@ int main ( int argc, char** argv )
|
|||
strClientName );
|
||||
|
||||
// load settings from init-file
|
||||
CSettings Settings ( &Client, strIniFileName );
|
||||
CClientSettings Settings ( &Client, strIniFileName );
|
||||
Settings.Load();
|
||||
|
||||
#ifndef HEADLESS
|
||||
|
@ -670,7 +670,7 @@ int main ( int argc, char** argv )
|
|||
if ( bUseGUI )
|
||||
{
|
||||
// load settings from init-file
|
||||
CSettings Settings ( &Server, strIniFileName );
|
||||
CServerSettings Settings ( &Server, strIniFileName );
|
||||
Settings.Load();
|
||||
|
||||
// update server list AFTER restoring the settings from the
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
/* Implementation *************************************************************/
|
||||
CServerDlg::CServerDlg ( CServer* pNServP,
|
||||
CSettings* pNSetP,
|
||||
CServerSettings* pNSetP,
|
||||
const bool bStartMinimized,
|
||||
QWidget* parent,
|
||||
Qt::WindowFlags f )
|
||||
|
|
|
@ -53,7 +53,7 @@ class CServerDlg : public QDialog, private Ui_CServerDlgBase
|
|||
|
||||
public:
|
||||
CServerDlg ( CServer* pNServP,
|
||||
CSettings* pNSetP,
|
||||
CServerSettings* pNSetP,
|
||||
const bool bStartMinimized,
|
||||
QWidget* parent = nullptr,
|
||||
Qt::WindowFlags f = nullptr );
|
||||
|
@ -70,7 +70,7 @@ protected:
|
|||
|
||||
QTimer Timer;
|
||||
CServer* pServer;
|
||||
CSettings* pSettings;
|
||||
CServerSettings* pSettings;
|
||||
|
||||
CVector<QTreeWidgetItem*> vecpListViewItems;
|
||||
QMutex ListViewMutex;
|
||||
|
|
533
src/settings.cpp
533
src/settings.cpp
|
@ -28,13 +28,9 @@
|
|||
/* Implementation *************************************************************/
|
||||
void CSettings::Load()
|
||||
{
|
||||
int iIdx;
|
||||
int iValue;
|
||||
bool bValue;
|
||||
QDomDocument IniXMLDocument;
|
||||
|
||||
// prepare file name for loading initialization data from XML file and read
|
||||
// data from file if possible
|
||||
QDomDocument IniXMLDocument;
|
||||
QFile file ( strFileName );
|
||||
|
||||
if ( file.open ( QIODevice::ReadOnly ) )
|
||||
|
@ -45,11 +41,203 @@ void CSettings::Load()
|
|||
file.close();
|
||||
}
|
||||
|
||||
// read the settings from the given XML file
|
||||
ReadFromXML ( IniXMLDocument );
|
||||
}
|
||||
|
||||
// Actual settings data ---------------------------------------------------
|
||||
if ( bIsClient )
|
||||
void CSettings::Save()
|
||||
{
|
||||
// client:
|
||||
// create XML document for storing initialization parameters
|
||||
QDomDocument IniXMLDocument;
|
||||
|
||||
// write the settings in the XML file
|
||||
WriteToXML ( IniXMLDocument );
|
||||
|
||||
// prepare file name for storing initialization data in XML file and store
|
||||
// XML data in file
|
||||
QFile file ( strFileName );
|
||||
if ( file.open ( QIODevice::WriteOnly ) )
|
||||
{
|
||||
QTextStream out ( &file );
|
||||
out << IniXMLDocument.toString();
|
||||
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
|
||||
void CSettings::SetFileName ( const QString& sNFiName,
|
||||
const QString& sDefaultFileName )
|
||||
{
|
||||
// return the file name with complete path, take care if given file name is
|
||||
// empty
|
||||
strFileName = sNFiName;
|
||||
|
||||
if ( strFileName.isEmpty() )
|
||||
{
|
||||
// we use the Qt default setting file paths for the different OSs by
|
||||
// utilizing the QSettings class
|
||||
const QSettings TempSettingsObject (
|
||||
QSettings::IniFormat, QSettings::UserScope, APP_NAME, APP_NAME );
|
||||
|
||||
const QString sConfigDir =
|
||||
QFileInfo ( TempSettingsObject.fileName() ).absolutePath();
|
||||
|
||||
// make sure the directory exists
|
||||
if ( !QFile::exists ( sConfigDir ) )
|
||||
{
|
||||
QDir TempDirectoryObject;
|
||||
TempDirectoryObject.mkpath ( sConfigDir );
|
||||
}
|
||||
|
||||
// append the actual file name
|
||||
strFileName = sConfigDir + "/" + sDefaultFileName;
|
||||
}
|
||||
}
|
||||
|
||||
void CSettings::SetNumericIniSet ( QDomDocument& xmlFile,
|
||||
const QString& strSection,
|
||||
const QString& strKey,
|
||||
const int iValue )
|
||||
{
|
||||
// convert input parameter which is an integer to string and store
|
||||
PutIniSetting ( xmlFile, strSection, strKey, QString("%1").arg(iValue) );
|
||||
}
|
||||
|
||||
bool CSettings::GetNumericIniSet ( const QDomDocument& xmlFile,
|
||||
const QString& strSection,
|
||||
const QString& strKey,
|
||||
const int iRangeStart,
|
||||
const int iRangeStop,
|
||||
int& iValue )
|
||||
{
|
||||
// init return value
|
||||
bool bReturn = false;
|
||||
|
||||
const QString strGetIni = GetIniSetting ( xmlFile, strSection, strKey );
|
||||
|
||||
// check if it is a valid parameter
|
||||
if ( !strGetIni.isEmpty() )
|
||||
{
|
||||
// convert string from init file to integer
|
||||
iValue = strGetIni.toInt();
|
||||
|
||||
// check range
|
||||
if ( ( iValue >= iRangeStart ) && ( iValue <= iRangeStop ) )
|
||||
{
|
||||
bReturn = true;
|
||||
}
|
||||
}
|
||||
|
||||
return bReturn;
|
||||
}
|
||||
|
||||
void CSettings::SetFlagIniSet ( QDomDocument& xmlFile,
|
||||
const QString& strSection,
|
||||
const QString& strKey,
|
||||
const bool bValue )
|
||||
{
|
||||
// we encode true -> "1" and false -> "0"
|
||||
if ( bValue == true )
|
||||
{
|
||||
PutIniSetting ( xmlFile, strSection, strKey, "1" );
|
||||
}
|
||||
else
|
||||
{
|
||||
PutIniSetting ( xmlFile, strSection, strKey, "0" );
|
||||
}
|
||||
}
|
||||
|
||||
bool CSettings::GetFlagIniSet ( const QDomDocument& xmlFile,
|
||||
const QString& strSection,
|
||||
const QString& strKey,
|
||||
bool& bValue )
|
||||
{
|
||||
// init return value
|
||||
bool bReturn = false;
|
||||
|
||||
const QString strGetIni = GetIniSetting ( xmlFile, strSection, strKey );
|
||||
|
||||
if ( !strGetIni.isEmpty() )
|
||||
{
|
||||
if ( strGetIni.toInt() )
|
||||
{
|
||||
bValue = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
bValue = false;
|
||||
}
|
||||
|
||||
bReturn = true;
|
||||
}
|
||||
|
||||
return bReturn;
|
||||
}
|
||||
|
||||
|
||||
// Init-file routines using XML ***********************************************
|
||||
QString CSettings::GetIniSetting ( const QDomDocument& xmlFile,
|
||||
const QString& sSection,
|
||||
const QString& sKey,
|
||||
const QString& sDefaultVal )
|
||||
{
|
||||
// init return parameter with default value
|
||||
QString sResult ( sDefaultVal );
|
||||
|
||||
// get section
|
||||
QDomElement xmlSection = xmlFile.firstChildElement ( sSection );
|
||||
|
||||
if ( !xmlSection.isNull() )
|
||||
{
|
||||
// get key
|
||||
QDomElement xmlKey = xmlSection.firstChildElement ( sKey );
|
||||
|
||||
if ( !xmlKey.isNull() )
|
||||
{
|
||||
// get value
|
||||
sResult = xmlKey.text();
|
||||
}
|
||||
}
|
||||
|
||||
return sResult;
|
||||
}
|
||||
|
||||
void CSettings::PutIniSetting ( QDomDocument& xmlFile,
|
||||
const QString& sSection,
|
||||
const QString& sKey,
|
||||
const QString& sValue )
|
||||
{
|
||||
// check if section is already there, if not then create it
|
||||
QDomElement xmlSection = xmlFile.firstChildElement ( sSection );
|
||||
|
||||
if ( xmlSection.isNull() )
|
||||
{
|
||||
// create new root element and add to document
|
||||
xmlSection = xmlFile.createElement ( sSection );
|
||||
xmlFile.appendChild ( xmlSection );
|
||||
}
|
||||
|
||||
// check if key is already there, if not then create it
|
||||
QDomElement xmlKey = xmlSection.firstChildElement ( sKey );
|
||||
|
||||
if ( xmlKey.isNull() )
|
||||
{
|
||||
xmlKey = xmlFile.createElement ( sKey );
|
||||
xmlSection.appendChild ( xmlKey );
|
||||
}
|
||||
|
||||
// add actual data to the key
|
||||
QDomText currentValue = xmlFile.createTextNode ( sValue );
|
||||
xmlKey.appendChild ( currentValue );
|
||||
}
|
||||
|
||||
|
||||
// Client settings -------------------------------------------------------------
|
||||
void CClientSettings::ReadFromXML ( const QDomDocument& IniXMLDocument )
|
||||
{
|
||||
int iIdx;
|
||||
int iValue;
|
||||
bool bValue;
|
||||
|
||||
// IP addresses
|
||||
for ( iIdx = 0; iIdx < MAX_NUM_SERVER_ADDR_ITEMS; iIdx++ )
|
||||
|
@ -365,89 +553,11 @@ if ( GetFlagIniSet ( IniXMLDocument, "client", "defcentservaddr", bValue ) )
|
|||
pClient->bWindowWasShownConnect = bValue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// server:
|
||||
|
||||
// central server address type (note that it is important
|
||||
// to set this setting prior to the "central server address")
|
||||
if ( GetNumericIniSet ( IniXMLDocument, "server", "centservaddrtype",
|
||||
0, static_cast<int> ( AT_CUSTOM ), iValue ) )
|
||||
{
|
||||
pServer->SetCentralServerAddressType ( static_cast<ECSAddType> ( iValue ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
// if no address type is given, choose one from the operating system locale
|
||||
pServer->SetCentralServerAddressType ( CLocale::GetCentralServerAddressType ( QLocale::system().country() ) );
|
||||
}
|
||||
|
||||
// TODO compatibility to old version
|
||||
if ( GetFlagIniSet ( IniXMLDocument, "server", "defcentservaddr", bValue ) )
|
||||
{
|
||||
// only the case that manual was set in old ini must be considered
|
||||
if ( !bValue )
|
||||
{
|
||||
pServer->SetCentralServerAddressType ( AT_CUSTOM );
|
||||
}
|
||||
}
|
||||
|
||||
// central server address (to be set after the "use default central
|
||||
// server address)
|
||||
pServer->SetServerListCentralServerAddress (
|
||||
GetIniSetting ( IniXMLDocument, "server", "centralservaddr" ) );
|
||||
|
||||
// server list enabled flag
|
||||
if ( GetFlagIniSet ( IniXMLDocument, "server", "servlistenabled", bValue ) )
|
||||
{
|
||||
pServer->SetServerListEnabled ( bValue );
|
||||
}
|
||||
|
||||
// name
|
||||
pServer->SetServerName ( GetIniSetting ( IniXMLDocument, "server", "name" ) );
|
||||
|
||||
// city
|
||||
pServer->SetServerCity ( GetIniSetting ( IniXMLDocument, "server", "city" ) );
|
||||
|
||||
// country
|
||||
if ( GetNumericIniSet ( IniXMLDocument, "server", "country",
|
||||
0, static_cast<int> ( QLocale::LastCountry ), iValue ) )
|
||||
{
|
||||
pServer->SetServerCountry ( static_cast<QLocale::Country> ( iValue ) );
|
||||
}
|
||||
|
||||
// start minimized on OS start
|
||||
if ( GetFlagIniSet ( IniXMLDocument, "server", "autostartmin", bValue ) )
|
||||
{
|
||||
pServer->SetAutoRunMinimized ( bValue );
|
||||
}
|
||||
|
||||
// licence type
|
||||
if ( GetNumericIniSet ( IniXMLDocument, "server", "licencetype",
|
||||
0, 1 /* LT_CREATIVECOMMONS */, iValue ) )
|
||||
{
|
||||
pServer->SetLicenceType ( static_cast<ELicenceType> ( iValue ) );
|
||||
}
|
||||
|
||||
// window position of the main window
|
||||
pServer->vecWindowPosMain = FromBase64ToByteArray (
|
||||
GetIniSetting ( IniXMLDocument, "server", "winposmain_base64" ) );
|
||||
}
|
||||
}
|
||||
|
||||
void CSettings::Save()
|
||||
void CClientSettings::WriteToXML ( QDomDocument& IniXMLDocument )
|
||||
{
|
||||
int iIdx;
|
||||
|
||||
// create XML document for storing initialization parameters
|
||||
QDomDocument IniXMLDocument;
|
||||
|
||||
|
||||
// Actual settings data ---------------------------------------------------
|
||||
if ( bIsClient )
|
||||
{
|
||||
// client:
|
||||
|
||||
// IP addresses
|
||||
for ( iIdx = 0; iIdx < MAX_NUM_SERVER_ADDR_ITEMS; iIdx++ )
|
||||
{
|
||||
|
@ -636,10 +746,81 @@ void CSettings::Save()
|
|||
SetFlagIniSet ( IniXMLDocument, "client", "winviscon",
|
||||
pClient->bWindowWasShownConnect );
|
||||
}
|
||||
|
||||
|
||||
// Server settings -------------------------------------------------------------
|
||||
void CServerSettings::ReadFromXML ( const QDomDocument& IniXMLDocument )
|
||||
{
|
||||
int iValue;
|
||||
bool bValue;
|
||||
|
||||
// central server address type (note that it is important
|
||||
// to set this setting prior to the "central server address")
|
||||
if ( GetNumericIniSet ( IniXMLDocument, "server", "centservaddrtype",
|
||||
0, static_cast<int> ( AT_CUSTOM ), iValue ) )
|
||||
{
|
||||
pServer->SetCentralServerAddressType ( static_cast<ECSAddType> ( iValue ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
// server:
|
||||
// if no address type is given, choose one from the operating system locale
|
||||
pServer->SetCentralServerAddressType ( CLocale::GetCentralServerAddressType ( QLocale::system().country() ) );
|
||||
}
|
||||
|
||||
// TODO compatibility to old version
|
||||
if ( GetFlagIniSet ( IniXMLDocument, "server", "defcentservaddr", bValue ) )
|
||||
{
|
||||
// only the case that manual was set in old ini must be considered
|
||||
if ( !bValue )
|
||||
{
|
||||
pServer->SetCentralServerAddressType ( AT_CUSTOM );
|
||||
}
|
||||
}
|
||||
|
||||
// central server address (to be set after the "use default central
|
||||
// server address)
|
||||
pServer->SetServerListCentralServerAddress (
|
||||
GetIniSetting ( IniXMLDocument, "server", "centralservaddr" ) );
|
||||
|
||||
// server list enabled flag
|
||||
if ( GetFlagIniSet ( IniXMLDocument, "server", "servlistenabled", bValue ) )
|
||||
{
|
||||
pServer->SetServerListEnabled ( bValue );
|
||||
}
|
||||
|
||||
// name
|
||||
pServer->SetServerName ( GetIniSetting ( IniXMLDocument, "server", "name" ) );
|
||||
|
||||
// city
|
||||
pServer->SetServerCity ( GetIniSetting ( IniXMLDocument, "server", "city" ) );
|
||||
|
||||
// country
|
||||
if ( GetNumericIniSet ( IniXMLDocument, "server", "country",
|
||||
0, static_cast<int> ( QLocale::LastCountry ), iValue ) )
|
||||
{
|
||||
pServer->SetServerCountry ( static_cast<QLocale::Country> ( iValue ) );
|
||||
}
|
||||
|
||||
// start minimized on OS start
|
||||
if ( GetFlagIniSet ( IniXMLDocument, "server", "autostartmin", bValue ) )
|
||||
{
|
||||
pServer->SetAutoRunMinimized ( bValue );
|
||||
}
|
||||
|
||||
// licence type
|
||||
if ( GetNumericIniSet ( IniXMLDocument, "server", "licencetype",
|
||||
0, 1 /* LT_CREATIVECOMMONS */, iValue ) )
|
||||
{
|
||||
pServer->SetLicenceType ( static_cast<ELicenceType> ( iValue ) );
|
||||
}
|
||||
|
||||
// window position of the main window
|
||||
pServer->vecWindowPosMain = FromBase64ToByteArray (
|
||||
GetIniSetting ( IniXMLDocument, "server", "winposmain_base64" ) );
|
||||
}
|
||||
|
||||
void CServerSettings::WriteToXML ( QDomDocument& IniXMLDocument )
|
||||
{
|
||||
// central server address
|
||||
PutIniSetting ( IniXMLDocument, "server", "centralservaddr",
|
||||
pServer->GetServerListCentralServerAddress() );
|
||||
|
@ -676,179 +857,3 @@ void CSettings::Save()
|
|||
PutIniSetting ( IniXMLDocument, "server", "winposmain_base64",
|
||||
ToBase64 ( pServer->vecWindowPosMain ) );
|
||||
}
|
||||
|
||||
// prepare file name for storing initialization data in XML file and store
|
||||
// XML data in file
|
||||
QFile file ( strFileName );
|
||||
if ( file.open ( QIODevice::WriteOnly ) )
|
||||
{
|
||||
QTextStream out ( &file );
|
||||
out << IniXMLDocument.toString();
|
||||
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Help functions **************************************************************
|
||||
void CSettings::SetFileName ( const QString& sNFiName,
|
||||
const QString& sDefaultFileName )
|
||||
{
|
||||
// return the file name with complete path, take care if given file name is
|
||||
// empty
|
||||
strFileName = sNFiName;
|
||||
|
||||
if ( strFileName.isEmpty() )
|
||||
{
|
||||
// we use the Qt default setting file paths for the different OSs by
|
||||
// utilizing the QSettings class
|
||||
const QSettings TempSettingsObject (
|
||||
QSettings::IniFormat, QSettings::UserScope, APP_NAME, APP_NAME );
|
||||
|
||||
const QString sConfigDir =
|
||||
QFileInfo ( TempSettingsObject.fileName() ).absolutePath();
|
||||
|
||||
// make sure the directory exists
|
||||
if ( !QFile::exists ( sConfigDir ) )
|
||||
{
|
||||
QDir TempDirectoryObject;
|
||||
TempDirectoryObject.mkpath ( sConfigDir );
|
||||
}
|
||||
|
||||
// append the actual file name
|
||||
strFileName = sConfigDir + "/" + sDefaultFileName;
|
||||
}
|
||||
}
|
||||
|
||||
void CSettings::SetNumericIniSet ( QDomDocument& xmlFile,
|
||||
const QString& strSection,
|
||||
const QString& strKey,
|
||||
const int iValue )
|
||||
{
|
||||
// convert input parameter which is an integer to string and store
|
||||
PutIniSetting ( xmlFile, strSection, strKey, QString("%1").arg(iValue) );
|
||||
}
|
||||
|
||||
bool CSettings::GetNumericIniSet ( const QDomDocument& xmlFile,
|
||||
const QString& strSection,
|
||||
const QString& strKey,
|
||||
const int iRangeStart,
|
||||
const int iRangeStop,
|
||||
int& iValue )
|
||||
{
|
||||
// init return value
|
||||
bool bReturn = false;
|
||||
|
||||
const QString strGetIni = GetIniSetting ( xmlFile, strSection, strKey );
|
||||
|
||||
// check if it is a valid parameter
|
||||
if ( !strGetIni.isEmpty() )
|
||||
{
|
||||
// convert string from init file to integer
|
||||
iValue = strGetIni.toInt();
|
||||
|
||||
// check range
|
||||
if ( ( iValue >= iRangeStart ) && ( iValue <= iRangeStop ) )
|
||||
{
|
||||
bReturn = true;
|
||||
}
|
||||
}
|
||||
|
||||
return bReturn;
|
||||
}
|
||||
|
||||
void CSettings::SetFlagIniSet ( QDomDocument& xmlFile,
|
||||
const QString& strSection,
|
||||
const QString& strKey,
|
||||
const bool bValue )
|
||||
{
|
||||
// we encode true -> "1" and false -> "0"
|
||||
if ( bValue == true )
|
||||
{
|
||||
PutIniSetting ( xmlFile, strSection, strKey, "1" );
|
||||
}
|
||||
else
|
||||
{
|
||||
PutIniSetting ( xmlFile, strSection, strKey, "0" );
|
||||
}
|
||||
}
|
||||
|
||||
bool CSettings::GetFlagIniSet ( const QDomDocument& xmlFile,
|
||||
const QString& strSection,
|
||||
const QString& strKey,
|
||||
bool& bValue )
|
||||
{
|
||||
// init return value
|
||||
bool bReturn = false;
|
||||
|
||||
const QString strGetIni = GetIniSetting ( xmlFile, strSection, strKey );
|
||||
|
||||
if ( !strGetIni.isEmpty() )
|
||||
{
|
||||
if ( strGetIni.toInt() )
|
||||
{
|
||||
bValue = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
bValue = false;
|
||||
}
|
||||
|
||||
bReturn = true;
|
||||
}
|
||||
|
||||
return bReturn;
|
||||
}
|
||||
|
||||
|
||||
// Init-file routines using XML ***********************************************
|
||||
QString CSettings::GetIniSetting ( const QDomDocument& xmlFile,
|
||||
const QString& sSection,
|
||||
const QString& sKey,
|
||||
const QString& sDefaultVal )
|
||||
{
|
||||
// init return parameter with default value
|
||||
QString sResult ( sDefaultVal );
|
||||
|
||||
// get section
|
||||
QDomElement xmlSection = xmlFile.firstChildElement ( sSection );
|
||||
if ( !xmlSection.isNull() )
|
||||
{
|
||||
// get key
|
||||
QDomElement xmlKey = xmlSection.firstChildElement ( sKey );
|
||||
if ( !xmlKey.isNull() )
|
||||
{
|
||||
// get value
|
||||
sResult = xmlKey.text();
|
||||
}
|
||||
}
|
||||
|
||||
return sResult;
|
||||
}
|
||||
|
||||
void CSettings::PutIniSetting ( QDomDocument& xmlFile,
|
||||
const QString& sSection,
|
||||
const QString& sKey,
|
||||
const QString& sValue )
|
||||
{
|
||||
// check if section is already there, if not then create it
|
||||
QDomElement xmlSection = xmlFile.firstChildElement ( sSection );
|
||||
if ( xmlSection.isNull() )
|
||||
{
|
||||
// create new root element and add to document
|
||||
xmlSection = xmlFile.createElement ( sSection );
|
||||
xmlFile.appendChild ( xmlSection );
|
||||
}
|
||||
|
||||
// check if key is already there, if not then create it
|
||||
QDomElement xmlKey = xmlSection.firstChildElement ( sKey );
|
||||
if ( xmlKey.isNull() )
|
||||
{
|
||||
xmlKey = xmlFile.createElement ( sKey );
|
||||
xmlSection.appendChild ( xmlKey );
|
||||
}
|
||||
|
||||
// add actual data to the key
|
||||
QDomText currentValue = xmlFile.createTextNode ( sValue );
|
||||
xmlKey.appendChild ( currentValue );
|
||||
}
|
||||
|
|
|
@ -39,18 +39,15 @@
|
|||
class CSettings
|
||||
{
|
||||
public:
|
||||
CSettings ( CClient* pNCliP, const QString& sNFiName ) :
|
||||
pClient ( pNCliP ), bIsClient ( true ), strFileName ( "" )
|
||||
{ SetFileName ( sNFiName, DEFAULT_INI_FILE_NAME ); }
|
||||
|
||||
CSettings ( CServer* pNSerP, const QString& sNFiName ) :
|
||||
pServer ( pNSerP ), bIsClient ( false ), strFileName ( "" )
|
||||
{ SetFileName ( sNFiName, DEFAULT_INI_FILE_NAME_SERVER); }
|
||||
CSettings() : strFileName ( "" ) {}
|
||||
|
||||
void Load();
|
||||
void Save();
|
||||
|
||||
protected:
|
||||
virtual void ReadFromXML ( const QDomDocument& IniXMLDocument ) = 0;
|
||||
virtual void WriteToXML ( QDomDocument& IniXMLDocument ) = 0;
|
||||
|
||||
void SetFileName ( const QString& sNFiName,
|
||||
const QString& sDefaultFileName );
|
||||
|
||||
|
@ -106,10 +103,38 @@ protected:
|
|||
const QString& sKey,
|
||||
const QString& sValue = "" );
|
||||
|
||||
// pointer to the client/server object which stores the various settings
|
||||
CClient* pClient; // for client
|
||||
CServer* pServer; // for server
|
||||
|
||||
bool bIsClient;
|
||||
QString strFileName;
|
||||
};
|
||||
|
||||
|
||||
class CClientSettings : public CSettings
|
||||
{
|
||||
public:
|
||||
CClientSettings ( CClient* pNCliP, const QString& sNFiName ) : pClient ( pNCliP )
|
||||
{ SetFileName ( sNFiName, DEFAULT_INI_FILE_NAME ); }
|
||||
|
||||
protected:
|
||||
virtual void ReadFromXML ( const QDomDocument& IniXMLDocument ) override;
|
||||
virtual void WriteToXML ( QDomDocument& IniXMLDocument ) override;
|
||||
|
||||
CClient* pClient;
|
||||
};
|
||||
|
||||
|
||||
class CServerSettings : public CSettings
|
||||
{
|
||||
public:
|
||||
CServerSettings ( CServer* pNSerP, const QString& sNFiName ) : pServer ( pNSerP )
|
||||
{ SetFileName ( sNFiName, DEFAULT_INI_FILE_NAME_SERVER); }
|
||||
|
||||
protected:
|
||||
virtual void ReadFromXML ( const QDomDocument& IniXMLDocument ) override;
|
||||
virtual void WriteToXML ( QDomDocument& IniXMLDocument ) override;
|
||||
|
||||
CServer* pServer;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue