// DLG_Setup_SZGJ.cpp : implementation file
//

#include "stdafx.h"
#include "corpsms.h"
#include "DLG_Setup_SZGJ.h"

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

/////////////////////////////////////////////////////////////////////////////
// DLG_Setup_SZGJ dialog
#include "DLG_Setup_SZGJ_CD.h"
#include "DLG_Setup_SZGJ_Line.h"

DLG_Setup_SZGJ::DLG_Setup_SZGJ(CWnd* pParent /*=NULL*/)
	: CDialog(DLG_Setup_SZGJ::IDD, pParent)
{
	//{{AFX_DATA_INIT(DLG_Setup_SZGJ)
	m_strPath = _T("");
	//}}AFX_DATA_INIT

	memset(&m_Setup,0,sizeof(m_Setup));
	m_bRefresh1 = false;
	m_bRefresh2 = false;
}


void DLG_Setup_SZGJ::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_Setup_SZGJ)
	DDX_Control(pDX, IDC_SYSSETUP_SZGJ_LINE, m_wndList2);
	DDX_Control(pDX, IDC_SYSSETUP_SZGJ_CD, m_wndList1);
	DDX_Text(pDX, IDC_SYSSETUP_SZGJ_PATH, m_strPath);
	DDV_MaxChars(pDX, m_strPath, 126);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DLG_Setup_SZGJ, CDialog)
	//{{AFX_MSG_MAP(DLG_Setup_SZGJ)
	ON_BN_CLICKED(IDC_SYSSETUP_SZGJ_PATH_SEL, OnSyssetupSzgjPathSel)
	ON_NOTIFY(NM_DBLCLK, IDC_SYSSETUP_SZGJ_CD, OnDblclkSyssetupSzgjCd)
	ON_NOTIFY(NM_RCLICK, IDC_SYSSETUP_SZGJ_CD, OnRclickSyssetupSzgjCd)
	ON_NOTIFY(NM_DBLCLK, IDC_SYSSETUP_SZGJ_LINE, OnDblclkSyssetupSzgjLine)
	ON_NOTIFY(NM_RCLICK, IDC_SYSSETUP_SZGJ_LINE, OnRclickSyssetupSzgjLine)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_SYSSETUP_SZGJ_CD, OnItemchangedSyssetupSzgjCd)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
	ON_COMMAND(MENU_SZGJ1_ADD     , On_SZGJ1_Add )
	ON_COMMAND(MENU_SZGJ1_MODIFY  , On_SZGJ1_Modify )
	ON_COMMAND(MENU_SZGJ1_DEL     , On_SZGJ1_Del )
	ON_COMMAND(MENU_SZGJ1_REFRESH , On_SZGJ1_Refresh )

	ON_COMMAND(MENU_SZGJ2_ADD     , On_SZGJ2_Add )
	ON_COMMAND(MENU_SZGJ2_MODIFY  , On_SZGJ2_Modify )
	ON_COMMAND(MENU_SZGJ2_DEL     , On_SZGJ2_Del )
	ON_COMMAND(MENU_SZGJ2_REFRESH , On_SZGJ2_Refresh )

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_Setup_SZGJ message handlers

SM_Setup DLG_Setup_SZGJ::GetParam()
{
	return m_Setup;
}

void DLG_Setup_SZGJ::SetParam(SM_Setup setup)
{
	m_Setup = setup;

}

BOOL DLG_Setup_SZGJ::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	m_strPath = m_Setup.szSZGJPath;

	UpdateData(false);

	//��ʼ��List
	m_Image1.Create(16,16,ILC_COLOR32|ILC_MASK,5,5);
	m_Image1.Add(AfxGetApp()->LoadIcon(IDI_L_BILL) );
	m_Image2.Create(16,16,ILC_COLOR32|ILC_MASK,5,5);
	m_Image2.Add(AfxGetApp()->LoadIcon(IDI_L_BILL) );
	m_wndList1.SubClassWindow2();
	m_wndList1.SetHeadings(_T("���,40;  ��������,110;�ֻ�����,90;������,90;"));
	m_wndList1.SetGridLines(true);
	//m_wndList1.SetImageList(&m_Image1,LVSIL_SMALL);
	m_wndList1.SetBkColor( RGB(237,191,175) );
	m_wndList1.SetTextBkColor( RGB(237,191,175) );

	m_wndList2.SubClassWindow2();
	m_wndList2.SetHeadings(_T("���,40;  ��·��,70;"));
	m_wndList2.SetGridLines(true);
	//m_wndList2.SetImageList(&m_Image2,LVSIL_SMALL);
	m_wndList2.SetBkColor( RGB(237,191,175) );
	m_wndList2.SetTextBkColor( RGB(237,191,175) );

	//�������ݿ��ļ���
	m_strNameCD = m_strPath+_T("\\");
	m_strNameCD = m_strNameCD+MOBSET_SZGJ_CD;

	m_strNameLine = m_strPath+_T("\\");
	m_strNameLine = m_strNameLine+MOBSET_SZGJ_LINE;


	RefreshType1();
	
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void DLG_Setup_SZGJ::OnSyssetupSzgjPathSel() 
{
	TCHAR szPath[512]={0};
	BROWSEINFO	BInfo={0};
	BInfo.hwndOwner = this->GetSafeHwnd();
	BInfo.pszDisplayName = szPath;
	BInfo.pidlRoot=0;
	BInfo.lpszTitle = _T("��ѡ��������·����");
	BInfo.ulFlags = BIF_RETURNONLYFSDIRS; //�涨ֻ��ѡ���ļ��У�������Ч
	LPCITEMIDLIST pid = SHBrowseForFolder(&BInfo);
	if ( pid && SHGetPathFromIDList(pid,szPath) )
	{
		m_strPath = szPath;
		UpdateData(false);

		//�������ݿ��ļ���
		m_strNameCD = m_strPath+_T("\\");
		m_strNameCD = m_strNameCD+MOBSET_SZGJ_CD;
		
		m_strNameLine = m_strPath+_T("\\");
		m_strNameLine = m_strNameLine+MOBSET_SZGJ_LINE;

		RefreshType1();
	}
}

void DLG_Setup_SZGJ::OnOK() 
{
	if ( !UpdateData(false))
		return ;

	_tcscpy(m_Setup.szSZGJPath , m_strPath );
	
	CDialog::OnOK();
}

void DLG_Setup_SZGJ::RefreshType1()
{
	m_wndList1.DeleteAllItems();
/*
	CString strTemp;
	m_bRefresh1  = false;
	Dbf dbf;
	if ( !dbf.Use(m_strNameCD) )
	{
		strTemp.Format( _T("�����ݿ�:%sʧ�ܣ�����·�����ã�") , m_strNameCD );
		MessageBox( strTemp , _T("����") , MB_ICONWARNING );
		return ;
	}

	m_bRefresh2  = true;
	char szTemp[256]={0};
	long lItem = 0;
	long lRecNum = dbf.RecNum();
	for ( int i=0 ; i<lRecNum;i++ )
	{
		dbf.GoTo(i+1);
		if ( !dbf.IsDelete() )
		{
			m_wndList1.InsertItem( lItem , _itot(lItem+1,szTemp,10) , 0 );
			dbf.GetRecField( szTemp , "CDNAME" );
			m_wndList1.SetItemText( lItem , 1,szTemp);
			dbf.GetRecField( szTemp , "CDMOBILE" );
			m_wndList1.SetItemText( lItem , 2,szTemp);
			dbf.GetRecField( szTemp , "CDMASTER" );
			m_wndList1.SetItemText( lItem , 3,szTemp);

			m_wndList1.SetItemData( lItem , i+1 );
			lItem++;
		}
	}
	dbf.Close();

	m_bRefresh1 = true;
	m_bRefresh2 = false;

	if ( lItem>0 )  //ѡ�е�һ����¼
	{
		m_wndList1.SelectItem(0);
		RefreshType2();
	}
*/
	return ;
}

void DLG_Setup_SZGJ::OnDblclkSyssetupSzgjCd(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	On_SZGJ1_Modify();
}

void DLG_Setup_SZGJ::OnRclickSyssetupSzgjCd(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	ShowRMenu1();
}

void DLG_Setup_SZGJ::OnDblclkSyssetupSzgjLine(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	On_SZGJ2_Modify();
}

void DLG_Setup_SZGJ::OnRclickSyssetupSzgjLine(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	ShowRMenu2();
}

void DLG_Setup_SZGJ::ShowRMenu1()
{
	CMenu menu;
	menu.CreatePopupMenu();
	long lItem = m_wndList1.GetFirstSelectedItem();

	menu.AppendMenu(MF_STRING     , MENU_SZGJ1_ADD  , _T(" �� �� ") );
	if ( lItem >= 0 )
	{
		menu.AppendMenu(MF_STRING     , MENU_SZGJ1_MODIFY  , _T(" �� �� ") );
		menu.AppendMenu(MF_STRING     , MENU_SZGJ1_DEL     , _T(" ɾ �� ") );
	}
	else
	{
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_SZGJ1_MODIFY  , _T(" �� �� ") );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_SZGJ1_DEL     , _T(" ɾ �� ") );
	}
	menu.AppendMenu(MF_SEPARATOR );
	//ˢ��
	menu.AppendMenu(MF_STRING     , MENU_SZGJ1_REFRESH, _T(" ˢ �� ") );
	//��ʾ�˵�
	POINT pt ;
	::GetCursorPos( &pt );
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
	menu.DestroyMenu();
}

void DLG_Setup_SZGJ::ShowRMenu2()
{
	if  (!m_bRefresh1)
		return ;

	if ( m_strCurrentCDID.GetLength()<=0 )
		return ;

	CMenu menu;
	menu.CreatePopupMenu();
	long lItem = m_wndList2.GetFirstSelectedItem();

	menu.AppendMenu(MF_STRING     , MENU_SZGJ2_ADD  , _T(" �� �� ") );
	if ( lItem >= 0 )
	{
		menu.AppendMenu(MF_STRING     , MENU_SZGJ2_MODIFY  , _T(" �� �� ") );
		menu.AppendMenu(MF_STRING     , MENU_SZGJ2_DEL     , _T(" ɾ �� ") );
	}
	else
	{
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_SZGJ2_MODIFY  , _T(" �� �� ") );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_SZGJ2_DEL     , _T(" ɾ �� ") );
	}
	menu.AppendMenu(MF_SEPARATOR );
	//ˢ��
	menu.AppendMenu(MF_STRING     , MENU_SZGJ2_REFRESH, _T(" ˢ �� ") );
	//��ʾ�˵�
	POINT pt ;
	::GetCursorPos( &pt );
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
	menu.DestroyMenu();
}


void DLG_Setup_SZGJ::On_SZGJ1_Add()
{
	if  (!m_bRefresh1)
		return ;
/*
	DLG_Setup_SZGJ_CD dlg(this);
	if ( dlg.DoModal() == IDOK )
	{
		//�������ı���
		Dbf dbf;
		BOOL b = dbf.Use( m_strNameCD );
		if (!b )
			return;
		long lCount = dbf.RecNum();
		long lMax = 0;
		char szTemp[64]={0};
		for ( int i=0 ; i<lCount;i++ )
		{
			dbf.GoTo(i+1);
			dbf.GetRecField( szTemp , "CDID" );
			if ( _ttol(szTemp) > lMax )
				lMax = _ttol(szTemp);
		}
		lMax ++;
		_stprintf(szTemp,"%d",lMax);
		dbf.ClearRecBuf();
		dbf.ReplRecField( szTemp , "CDID" );
		dbf.ReplRecField( (char*)(LPCSTR)dlg.m_strCD     , "CDNAME" );
		dbf.ReplRecField( (char*)(LPCSTR)dlg.m_strMobile , "CDMOBILE" );
		dbf.ReplRecField( (char*)(LPCSTR)dlg.m_strMaster , "CDMASTER" );

		dbf.AppendRec();
		long dbfno = dbf.CurRow();
		dbf.Close();
		//���¼�¼��ʾ���б���
		long lCount2 = m_wndList1.GetItemCount();
		m_wndList1.InsertItem(lCount2,_itot(lCount2+1,szTemp,10) );
		m_wndList1.SetItemText(lCount2,1,dlg.m_strName);
		m_wndList1.SetItemText(lCount2,2,dlg.m_strMobile);
		m_wndList1.SetItemText(lCount2,3,dlg.m_strMaster);

		m_wndList1.SetItemData(lCount2,dbfno+1);
		m_wndList1.EnsureVisible(lCount2,false);
		//this->UnSelectAllItems();
		m_wndList1.SetItemState( lCount2 , LVIS_SELECTED, LVIS_SELECTED);
		RefreshType2();
	}
*/
}
void DLG_Setup_SZGJ::On_SZGJ1_Modify()
{
	if  (!m_bRefresh1)
		return ;
/*
	long lItem = m_wndList1.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

	CString strCD;
	CString strMobile;
	CString strMaster;
	strCD     = m_wndList1.GetItemText(lItem,1);
	strMobile = m_wndList1.GetItemText(lItem,2);
	strMaster = m_wndList1.GetItemText(lItem,3);
	DLG_Setup_SZGJ_CD dlg(this);
	dlg.m_strCD     = strCD;
	dlg.m_strMobile = strMobile;
	dlg.m_strMaster = strMaster;
	
	if ( dlg.DoModal() == IDOK )
	{
		//д�����ݿ�
		long lRec = m_wndList1.GetItemData(lItem);
		Dbf dbf;
		BOOL b = dbf.Use( m_strNameCD );
		if (!b )
			return;
		dbf.GoTo(lRec);
		dbf.ReplRecField((char*)(LPCSTR)dlg.m_strCD     , "CDNAME" );
		dbf.ReplRecField((char*)(LPCSTR)dlg.m_strMobile , "CDMOBILE" );
		dbf.ReplRecField((char*)(LPCSTR)dlg.m_strMaster , "CDMASTER" );
		dbf.ReplRec();
		dbf.Close();
		//д���б�
		m_wndList1.SetItemText(lItem,1,dlg.m_strCD);
		m_wndList1.SetItemText(lItem,2,dlg.m_strMobile);
		m_wndList1.SetItemText(lItem,3,dlg.m_strMaster);
	}
*/
}
void DLG_Setup_SZGJ::On_SZGJ1_Del()
{
	if  (!m_bRefresh1)
		return ;
/*
	long lRet = MessageBox( _T("����Ҫɾ���˳��ӣ��Ƿ������"), _T("����") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
	if ( lRet != IDYES )
		return;

	long lItem = m_wndList1.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

	//�����ݿ���ɾ��
	Dbf dbf;
	BOOL b = dbf.Use( m_strNameCD );
	if (!b )
		return;
	long lRec = m_wndList1.GetItemData(lItem);
	dbf.GoTo(lRec);
	BOOL b2 =dbf.Delete(lRec);
	dbf.Close();
	//���б���ɾ��
	m_wndList1.DeleteItem(lItem);
	//��������
	long lCount = m_wndList1.GetItemCount();
	char szTemp[32]={0};
	for ( int i=0 ; i<lCount;i++ )
	{
		m_wndList1.SetItemText(i,0,_itot(i+1,szTemp,10));
	}
*/
}
void DLG_Setup_SZGJ::On_SZGJ1_Refresh()
{
	RefreshType1();
}

void DLG_Setup_SZGJ::On_SZGJ2_Add()
{
	if  (!m_bRefresh1)
		return ;

	if ( m_strCurrentCDID.GetLength()<=0 )
		return ;
/*
	DLG_Setup_SZGJ_Line dlg(this);
	if ( dlg.DoModal() == IDOK )
	{
		//�������ı���
		char szTemp[64]={0};
		Dbf dbf;
		BOOL b = dbf.Use( m_strNameLine );
		if (!b )
			return;
		dbf.ClearRecBuf();
		dbf.ReplRecField( (char*)(LPCSTR)m_strCurrentCDID , "CDID" );
		dbf.ReplRecField( (char*)(LPCSTR)dlg.m_strLine , "LINENO" );
		dbf.AppendRec();
		dbf.Close();

		//���¼�¼��ʾ���б���
		long lCount2 = m_wndList2.GetItemCount();
		m_wndList2.InsertItem(lCount2,_itot(lCount2+1,szTemp,10) );
		m_wndList2.SetItemText(lCount2,1,dlg.m_strLine);
		m_wndList2.EnsureVisible(lCount2,false);
		//this->UnSelectAllItems();
		m_wndList2.SetItemState( lCount2 , LVIS_SELECTED, LVIS_SELECTED);
	}
*/
}
void DLG_Setup_SZGJ::On_SZGJ2_Modify()
{
	if  (!m_bRefresh1)
		return ;
/*
	if ( m_strCurrentCDID.GetLength()<=0 )
		return ;

	long lItem = m_wndList2.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

	CString strLine;
	strLine = m_wndList2.GetItemText(lItem,1);
	DLG_Setup_SZGJ_Line dlg(this);
	dlg.m_strLine = strLine;
	if ( dlg.DoModal() == IDOK )
	{
		//д�����ݿ�
		long lRec = m_wndList2.GetItemData(lItem);
		Dbf dbf;
		BOOL b = dbf.Use( m_strNameLine );
		if (!b )
			return;
		dbf.GoTo(lRec);
		dbf.ReplRecField((char*)(LPCSTR)dlg.m_strLine , "LINENO" );
		dbf.ReplRec();
		dbf.Close();
		//д���б�
		m_wndList2.SetItemText(lItem,1,dlg.m_strLine);
	}
*/
}
void DLG_Setup_SZGJ::On_SZGJ2_Del()
{
	if  (!m_bRefresh1)
		return ;

	if ( m_strCurrentCDID.GetLength()<=0 )
		return ;

	long lRet = MessageBox( _T("����Ҫɾ������·���Ƿ������") , _T("����") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
	if ( lRet != IDYES )
		return;

	long lItem = m_wndList2.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;
/*
	//�����ݿ���ɾ��
	Dbf dbf;
	BOOL b = dbf.Use( m_strNameLine );
	if (!b )
		return;
	long lRec = m_wndList2.GetItemData(lItem);
	dbf.GoTo(lRec);
	dbf.Delete(lRec);
	dbf.Close();
	//���б���ɾ��
	m_wndList2.DeleteItem(lItem);
	//��������
	long lCount = m_wndList2.GetItemCount();
	char szTemp[32]={0};
	for ( int i=0 ; i<lCount;i++ )
	{
		m_wndList2.SetItemText(i,0,_itot(i+1,szTemp,10));
	}
*/
}
void DLG_Setup_SZGJ::On_SZGJ2_Refresh()
{
	if  (!m_bRefresh1)
		return ;

	RefreshType2();
}

void DLG_Setup_SZGJ::OnItemchangedSyssetupSzgjCd(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
	
	*pResult = 0;

	if ( m_bRefresh2 )
		return ;

	if ( m_wndList1.GetSelectedCount() > 1 )  //ֻ����һ��
		return; 

	RefreshType2();
}

void DLG_Setup_SZGJ::RefreshType2()
{
	m_wndList2.DeleteAllItems();

	if  (!m_bRefresh1)
		return ;

	long lItem = m_wndList1.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;
/*
	//ȡ����ID��
	long lRec = m_wndList1.GetItemData(lItem);
	char szCDID[64]={0};
	Dbf dbf;
	BOOL b = dbf.Use( m_strNameCD );
	if (!b )
	{
		return ;
	}
	dbf.GoTo(lRec);
	dbf.GetRecField(szCDID,"CDID" );
	dbf.Close();

	if ( _tcslen(szCDID)<=0 )
		return ;

	m_strCurrentCDID = szCDID;

	//����·��
	b = dbf.Use( m_strNameLine );
	if (!b )
	{
		CString strTemp;
		strTemp.Format( "�����ݿ�:%sʧ�ܣ�����·�����ã�" , m_strNameLine );
		MessageBox( strTemp , "����" , MB_ICONWARNING );
		return ;
	}
	char szTemp[64]={0};
	long lCount = dbf.RecNum();
	lItem = 0;
	for ( int i=0 ; i<lCount;i++ )
	{
		dbf.GoTo(i+1);
		if ( !dbf.IsDelete() )
		{
			dbf.GetRecField(szTemp,"CDID");
			if ( !_tcscmp(szTemp , szCDID ) )
			{
				m_wndList2.InsertItem(lItem,_itot(lItem+1,szTemp,10));
				m_wndList2.SetItemData(lItem,i+1);
				dbf.GetRecField(szTemp,"LINENO");
				m_wndList2.SetItemText(lItem,1,szTemp);
				lItem++;
			}
		}
	}
	dbf.Close();
*/
}

void DLG_Setup_SZGJ::OnDestroy() 
{
	m_bRefresh2=true;

	CDialog::OnDestroy();
}