//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $NoKeywords: $
//
//=============================================================================//
// FolderSelectProps.cpp : implementation file
//

#include "stdafx.h"
#include "UI.h"
#include "FolderSelectProps.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFolderSelectProps dialog


CFolderSelectProps::CFolderSelectProps(CWnd* pParent /*=NULL*/)
	: CPropertyPage(CFolderSelectProps::IDD),
	m_StrSupportHTTPPath("SupportHTTPPath"),
	m_StrPlayerHTTPPath("PlayerHTTPPath"),
	m_StrPlayerDir("PlayerDir"),
	m_StrTFStatsDir("TFStatsDir"),
	m_StrSupportDir("SupportDir"),
	m_StrRuleDir("RuleDir"),
	m_StrOutDir("OutputDir"),
	m_BoolSupportDefault("DefaultSupportDir"),
	m_BoolTFStatsDefault("DefaultTFStatsDir"),
	m_BoolOutputDefault("DefaultOutputDir"),
	m_BoolRuleDefault("DefaultRuleDir"),
	m_BoolPlayerDefault("DefaultPlayerDir")
{
	//{{AFX_DATA_INIT(CFolderSelectProps)
	//}}AFX_DATA_INIT
	m_psp.dwFlags &= ~PSP_HASHELP;

	theApp.m_OutDir=m_StrOutDir.toString();
	theApp.m_TFStatsDir=m_StrTFStatsDir.toString();
	theApp.m_RuleDir=m_StrRuleDir.toString();
	theApp.m_SupportDir=m_StrSupportDir.toString();
	theApp.m_SupportHTTPPath=m_StrSupportHTTPPath.toString();
	theApp.m_PlayerDir=m_StrPlayerDir.toString();
	theApp.m_PlayerHTTPPath=m_StrPlayerHTTPPath.toString();

	alreadyAcknowledged=false;
	lockOutDir=lockTFSDir=false;
	windowInitted=false;
}


void CFolderSelectProps::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFolderSelectProps)
	DDX_Control(pDX, IDC_DEFTFSTATS, m_DefTFStats);
	DDX_Control(pDX, IDC_DEFSUPPORT, m_DefSupport);
	DDX_Control(pDX, IDC_DEFRULE, m_DefRule);
	DDX_Control(pDX, IDC_DEFPLAYER, m_DefPlayer);
	DDX_Control(pDX, IDC_DEFOUTPUT, m_DefOutput);
	DDX_Control(pDX, IDC_SUPPORTHTTPPATH, m_SupportHTTPPath);
	DDX_Control(pDX, IDC_PLAYERHTTPPATH, m_PlayerHTTPPath);
	DDX_Control(pDX, IDC_PLAYERDIR, m_PlayerDir);
	DDX_Control(pDX, IDC_TFSTATSDIR, m_TFStatsDir);
	DDX_Control(pDX, IDC_SUPPORTDIR, m_SupportDir);
	DDX_Control(pDX, IDC_RULEDIR, m_RuleDir);
	DDX_Control(pDX, IDC_OUTPUTDIR, m_OutDir);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFolderSelectProps, CDialog)
	//{{AFX_MSG_MAP(CFolderSelectProps)
	ON_BN_CLICKED(IDC_DEFOUTPUT, OnDefaultCheckBoxClick)
	ON_EN_CHANGE(IDC_TFSTATSDIR, OnChangeTfstatsdir)
	ON_BN_CLICKED(IDC_DEFPLAYER, OnDefaultCheckBoxClick)
	ON_BN_CLICKED(IDC_DEFRULE, OnDefaultCheckBoxClick)
	ON_BN_CLICKED(IDC_DEFSUPPORT, OnDefaultCheckBoxClick)
	ON_BN_CLICKED(IDC_DEFTFSTATS, OnDefaultCheckBoxClick)
	ON_EN_CHANGE(IDC_OUTPUTDIR, OnChangeOutputdir)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CFolderSelectProps message handlers
#include "propsht.h"
#include <winerror.h>
BOOL CFolderSelectProps::OnSetActive()
{
		//call superclass
	BOOL bRes=this->CPropertyPage::OnSetActive();

	if (theApp.FirstEverTimeRun && !alreadyAcknowledged)
	{
		alreadyAcknowledged=true;
		m_DefSupport.SetCheck(1);
		m_DefPlayer.SetCheck(1);
		m_DefOutput.SetCheck(1);
		m_DefTFStats.SetCheck(1);
		m_DefRule.SetCheck(1);
		
		m_BoolSupportDefault=1;
		m_BoolTFStatsDefault=1;
		m_BoolOutputDefault=1;
		m_BoolRuleDefault=1;
		m_BoolPlayerDefault=1;
	}

	
	m_TFStatsDir.EnableWindow(!m_DefTFStats.GetCheck());

	m_SupportHTTPPath.EnableWindow(!m_DefSupport.GetCheck());
	m_SupportDir.EnableWindow(!m_DefSupport.GetCheck());

	m_RuleDir.EnableWindow(!m_DefRule.GetCheck());

	m_PlayerHTTPPath.EnableWindow(!m_DefPlayer.GetCheck());
	m_PlayerDir.EnableWindow(!m_DefPlayer.GetCheck());

	m_OutDir.EnableWindow(!m_DefOutput.GetCheck());


	m_DefSupport.SetCheck(m_BoolSupportDefault.toBool());
	m_DefTFStats.SetCheck(m_BoolTFStatsDefault.toBool());
	m_DefOutput.SetCheck(m_BoolOutputDefault.toBool());
	m_DefRule.SetCheck(m_BoolRuleDefault.toBool());
	m_DefPlayer.SetCheck(m_BoolPlayerDefault.toBool());

	m_SupportHTTPPath.SetWindowText(m_StrSupportHTTPPath.toChars());
	m_PlayerHTTPPath.SetWindowText(m_StrPlayerHTTPPath.toChars());
	m_PlayerDir.SetWindowText(m_StrPlayerDir.toChars());
	m_TFStatsDir.SetWindowText(m_StrTFStatsDir.toChars());
	m_SupportDir.SetWindowText(m_StrSupportDir.toChars());
	m_RuleDir.SetWindowText(m_StrRuleDir.toChars());
	m_OutDir.SetWindowText(m_StrOutDir.toChars());

	char buf[500];
	string sbuf;
	m_TFStatsDir.GetWindowText(buf,500);
	sbuf=buf;
	addSlash(sbuf);
	m_TFStatsDir.SetWindowText(sbuf.c_str());

	OnDefaultCheckBoxClick() ;	
	
	windowInitted=true;
	UpdateFolders();
	return bRes;
}



BOOL CFolderSelectProps::OnKillActive()
{
		//call superclass
	BOOL bRes=this->CPropertyPage::OnKillActive();

	m_BoolSupportDefault=m_DefSupport.GetCheck();
	m_BoolTFStatsDefault=m_DefTFStats.GetCheck();
	m_BoolOutputDefault=m_DefOutput.GetCheck();
	m_BoolRuleDefault=m_DefRule.GetCheck();
	m_BoolPlayerDefault=m_DefPlayer.GetCheck();

	

	

	DWORD numbytes;
	char tempbuf[1000];
	numbytes=m_OutDir.GetWindowText(tempbuf,1000);
	m_StrOutDir=theApp.m_OutDir=tempbuf;
		
	numbytes=m_TFStatsDir.GetWindowText(tempbuf,1000);
	m_StrTFStatsDir=theApp.m_TFStatsDir=(tempbuf);
		
	numbytes=m_SupportDir.GetWindowText(tempbuf,1000);
	m_StrSupportDir=theApp.m_SupportDir=(tempbuf);
	

	numbytes=m_SupportHTTPPath.GetWindowText(tempbuf,1000);
	m_StrSupportHTTPPath=theApp.m_SupportHTTPPath=(tempbuf);
	
	
	numbytes=m_RuleDir.GetWindowText(tempbuf,1000);
	m_StrRuleDir=theApp.m_RuleDir=(tempbuf);
	
	numbytes=m_PlayerDir.GetWindowText(tempbuf,1000);
	m_StrPlayerDir=theApp.m_PlayerDir=(tempbuf);
	
		
	numbytes=m_PlayerHTTPPath.GetWindowText(tempbuf,1000);
	m_StrPlayerHTTPPath=theApp.m_PlayerHTTPPath=(tempbuf);
	

	windowInitted=false;
	return bRes;

}

void CFolderSelectProps::OnDefaultCheckBoxClick() 
{
	
UpdateFolders();
}

void CFolderSelectProps::UpdateFolders(bool safe)
{
	
	if (!windowInitted)
		return;
	

	char buf[1000];

	m_TFStatsDir.EnableWindow(!m_DefTFStats.GetCheck());
	//m_SupportHTTPPath.EnableWindow(!m_DefSupport.GetCheck());
	//m_SupportDir.EnableWindow(!m_DefSupport.GetCheck());
	m_RuleDir.EnableWindow(!m_DefRule.GetCheck());
	//m_PlayerHTTPPath.EnableWindow(!m_DefPlayer.GetCheck());
	//m_PlayerDir.EnableWindow(!m_DefPlayer.GetCheck());
	m_OutDir.EnableWindow(!m_DefOutput.GetCheck());

	this->m_PlayerDir.EnableWindow(theApp.persistPlayerStats && !m_DefPlayer.GetCheck());
	this->m_PlayerHTTPPath.EnableWindow(theApp.persistPlayerStats && !m_DefPlayer.GetCheck());
	this->m_SupportDir.EnableWindow(theApp.useSupportDir && !m_DefSupport.GetCheck());
	this->m_SupportHTTPPath.EnableWindow(theApp.useSupportDir && !m_DefSupport.GetCheck());



	string basedir;	
	if (m_DefTFStats.GetCheck())
	{
		//find in registry
		CPersistentString cps("InstallPath","Software\\Valve\\Half-Life");
		basedir=addSlash(cps.toString());
		basedir+="tfc\\TFStats\\";
		if (!lockTFSDir)
			m_TFStatsDir.SetWindowText(basedir.c_str());

	}
	else
	{
		m_TFStatsDir.GetWindowText(buf,1000);
		basedir=buf;
		addSlash(basedir);
	}
	
	
	string outputdir;
	if (m_DefOutput.GetCheck())
	{
		outputdir=basedir+"output\\";
		if (!lockOutDir)
			m_OutDir.SetWindowText(outputdir.c_str());
	}
	else 
	{
		m_OutDir.GetWindowText(buf,1000);
		outputdir=buf;
		addSlash(outputdir);
	}
	
	string supportdir=outputdir+"support\\";
	string playerdir=outputdir+"players\\";
	

		
	if (m_DefSupport.GetCheck())
	{
		m_SupportDir.SetWindowText(supportdir.c_str());
	//if (m_DefSupportHTTP.GetCheck())
		m_SupportHTTPPath.SetWindowText("../support");
	}
	if (m_DefRule.GetCheck())
		m_RuleDir.SetWindowText(basedir.c_str());
	if (m_DefPlayer.GetCheck())
	{
		m_PlayerDir.SetWindowText(playerdir.c_str());
	//if (m_DefPlayerHTTP.GetCheck())
		m_PlayerHTTPPath.SetWindowText("../players");
	}
}
void CFolderSelectProps::OnChangeTfstatsdir() 
{
	// TODO: Add your control notification handler code here
	if (!lockTFSDir)
	{
		lockTFSDir=true;
		UpdateFolders();
		lockTFSDir=false;
	}
	
}

void CFolderSelectProps::OnChangeOutputdir() 
{

	// TODO: Add your control notification handler code here
	if (!lockOutDir)
	{
		lockOutDir=true;
		UpdateFolders();
		lockOutDir=false;
	}
}