Example #1
0
void CSettingDlg::OnOK()
{
	int		nWriteFlag = 0;
	bool	bNeedRestart = false;
	bool	bAvatarChanged = false;
	Config*	pCfg = Singleton<Config>::getInstance();

	// 个人设置
	if (m_bPersonalChange)
	{
		CDuiString strNickName = m_pEditNickName->GetText();
		if (_tcscmp(strNickName, pCfg->szNickName) != 0) {
			_tcsncpy(pCfg->szNickName, strNickName, MAX_NAMEBUF - 1);
			nWriteFlag |= CONFIG_PERSONAL;
		}
		CDuiString strGroupName = m_pEditGroupName->GetText();
		if (_tcscmp(strGroupName, pCfg->szGroupName) != 0) {
			_tcsncpy(pCfg->szGroupName, strGroupName, MAX_NAMEBUF - 1);
			nWriteFlag |= CONFIG_PERSONAL;
		}
		CDuiString strAvatarPath = m_pLabelAvatar->GetUserData();
		if (_tcscmp(strAvatarPath, pCfg->szAvatar) != 0)
		{
			_tcsncpy(pCfg->szAvatar, strAvatarPath, MAX_PATH - 1);
			nWriteFlag |= CONFIG_PERSONAL;
			bAvatarChanged = true;
		}
	}	

	// 网络设置
	if (m_bNetworkChange)
	{
		CControlUI* pControl = m_pComboAdapter->GetItemAt(m_pComboAdapter->GetCurSel());
		CDuiString strAdapterName = pControl->GetUserData();
		if (_tcscmp(strAdapterName, pCfg->szAdapterNameUse) != 0) {
			_tcsncpy(pCfg->szAdapterNameUse, strAdapterName, MAX_PATH - 1);
			bNeedRestart = true;
			nWriteFlag |= CONFIG_NETWORK;
		}
	}	

	if (nWriteFlag != 0) {
		pCfg->WriteConfig(nWriteFlag);
	}
	CMainDlg* pMainDlg = Singleton<CMainDlg>::getInstance();
	if (m_bPersonalChange || m_bNetworkChange)
	{
		pMainDlg->UpdateInfo();
	}
	if (bNeedRestart)
	{
		::MessageBox(NULL, _T("需要重启程序"), _T("提示"), MB_OK);
		pMainDlg->RestartApplication();
	}
	if (m_bPersonalChange)
	{
		pMainDlg->BroadcastEntry();
	}
	if (bAvatarChanged)
	{
		pMainDlg->BroadcastMsg(IM_ANSAVATAR, ::PathFindFileNameA(pCfg->szAvatar));
	}
	Close();
}