// TakeControlForm.cpp : implementation file
//
#include "stdafx.h"
#include "ylgl.h"
#include "TakeControlForm.h"
#include "MyMdi.H"
#include "TakeControlDlg.h"

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

IMPLEMENT_DYNCREATE(TakeControlForm, MyFormView)
TakeControlForm::TakeControlForm()
: MyFormView(TakeControlForm::IDD)
{
	//{{AFX_DATA_INIT(TakeControlForm)
	m_filter = _T("");
	//}}AFX_DATA_INIT
}

TakeControlForm::~TakeControlForm()
{
}

void TakeControlForm::DoDataExchange(CDataExchange* pDX)
{
	MyFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(TakeControlForm)
	DDX_Control(pDX, IDC_COMBO1, m_combo1);
	DDX_Control(pDX, IDC_LIST2, m_List1);
	DDX_Control(pDX, IDC_STATIC1, m_static1);
	DDX_CBString(pDX, IDC_COMBO1, m_filter);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(TakeControlForm, MyFormView)
	//{{AFX_MSG_MAP(TakeControlForm)
	ON_BN_CLICKED(IDC_BUTclose, OnBUTclose)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST2, OnDblclkList2)
	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_BUTmodify, OnBUTmodify)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// TakeControlForm diagnostics

#ifdef _DEBUG
void TakeControlForm::AssertValid() const
{
	MyFormView::AssertValid();
}

void TakeControlForm::Dump(CDumpContext& dc) const
{
	MyFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// TakeControlForm message handlers

void TakeControlForm::OnInitialUpdate()
{
	MyFormView::OnInitialUpdate();
	// TODO: Add your specialized code here and/or call the base class
	CMyMdi Mdi;
	Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this);

	// Here we create the outbar control using the splitter as its parent
	// and setting its id to the first pane.
	CRect rc2;
	GetWindowRect(rc2);
	::MoveWindow(m_hWnd, g_rc.left, g_rc.top, g_rc.Width(), g_rc.Height(), TRUE);

	EnumChildWindows(m_hWnd, (WNDENUMPROC)EnumChildProc, 0);

	m_static1.SetFont(&g_titlefont);
#ifdef CHILD_VERSION
	m_List1.SetHeadings("��������,100;����ʱ��,100;������,100;�ҳ�����,100;��������,100;�ֻ�,100;�̶��绰,100;��ϵ����,100;��Ӱʦ,100;��ױʦ,100;����,100");
#else
	m_List1.SetHeadings("��������,100;����ʱ��,100;������,100;�б�����,100;Ů������,100;�б��绰,100;Ů���绰,100;��ϵ����,100;��Ӱʦ,100;��ױʦ,100;����,100" );
#endif
	m_List1.LoadColumnInfo(113);

	if (g_bShowOK == 0)
	{
		CString filter = "status3='δȡ'";
		g_sendhead.bsql = 0;
		g_sendhead.code[0] = 53;
		g_sendhead.tabcount = 1;
		g_pMainWnd->ProcessChatMessageRequest2(filter); if (g_bSendOK == 0)return;
	}
	else
	{
		g_sendhead.bsql = 0;
		g_sendhead.code[0] = 53;
		g_sendhead.tabcount = 1;
		g_pMainWnd->ProcessChatMessageRequest2(53); if (g_bSendOK == 0)return;
	}

	DataToArray(&m_List1array);

	m_combo1.AddString(g_user.name);
	for (int i = 0; i < g_userarray.GetSize(); i++)
	{
		m_combo1.AddString(g_userarray.ElementAt(i).ElementAt(1));
	}


	FillGrid();

	m_combo1.GetWindowRect(rc2);
	ScreenToClient(rc2);
	rc2.bottom += 200;
	m_combo1.MoveWindow(rc2);
	GetDlgItem(IDC_BUTclose)->GetWindowRect(rc2);
	SetComboHei(&m_combo1, rc2.Height());

	GetDlgItem(IDC_BUTmodify)->EnableWindow(IsHasRights2new(2));
}

void TakeControlForm::FillGrid(BOOL bStatus)
{
	m_List1.DeleteAllItems2();
	int ii = 0;
	m_List1.m_arLabels.SetSize(m_List1array.GetSize(), 1);
	int count = 0;
	if (m_filter.IsEmpty())
	{
		if (bStatus)
		{
			for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++)
			{
				if (m_List1array.ElementAt(ii).ElementAt(0).IsEmpty())
					m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii));
			}
		}
		else
		{
			for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++)
			{
				m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii));
			}
		}
	}
	else
	{

		if (bStatus)
		{
			int type = GetType(m_filter);
			if (type == 1)//�绰
			{
				for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++)
				{
					if (m_List1array.ElementAt(ii).ElementAt(0).IsEmpty() && (m_List1array.ElementAt(ii).ElementAt(5).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(6).Find(m_filter) != -1))
					{
						m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii));
					}
				}
			}
			else if (type == 2)//ƴ��
			{
				m_filter.MakeUpper();
				for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++)
				{
					if (m_List1array.ElementAt(ii).ElementAt(0).IsEmpty() && (m_List1array.ElementAt(ii).ElementAt(11).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(12).Find(m_filter) != -1))
					{
						m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii));
					}
				}
			}
			else
			{
				for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++)
				{//0,2,3,4,5,6,7,8,9,10
					if (m_List1array.ElementAt(ii).ElementAt(0).IsEmpty() && (m_List1array.ElementAt(ii).ElementAt(0).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(2).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(3).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(4).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(5).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(6).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(7).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(8).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(9).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(10).Find(m_filter) != -1))
					{
						m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii));
					}
				}
			}
		}
		else
		{
			int type = GetType(m_filter);
			if (type == 1)//�绰
			{
				for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++)
				{
					if (m_List1array.ElementAt(ii).ElementAt(5).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(6).Find(m_filter) != -1)
					{
						m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii));
					}
				}
			}
			else if (type == 2)//ƴ��
			{
				m_filter.MakeUpper();
				for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++)
				{
					if (m_List1array.ElementAt(ii).ElementAt(11).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(12).Find(m_filter) != -1)
					{
						m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii));
					}
				}
			}
			else
			{
				for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++)
				{//0,2,3,4,5,6,7,8,9,10
					if (m_List1array.ElementAt(ii).ElementAt(0).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(2).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(3).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(4).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(5).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(6).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(7).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(8).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(9).Find(m_filter) != -1 || \
						m_List1array.ElementAt(ii).ElementAt(10).Find(m_filter) != -1)
					{
						m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii));
					}
				}
			}
		}
	}
	m_List1.m_arLabels.SetSize(count, 1);
	ii = count;
	m_List1.m_LabelCount = ii;
	m_List1.SetItemCountEx(ii);
}

void TakeControlForm::OnBUTclose()
{
	// TODO: Add your control notification handler code here
	GetParent()->SendMessage(WM_CLOSE);
}

void TakeControlForm::OnButton1()
{
	// TODO: Add your control notification handler code here
	UpdateData();
	m_filter.TrimLeft();
	m_filter.TrimRight();
	FillGrid();
}

void TakeControlForm::OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult)
{
	// TODO: Add your control notification handler code here
	OnBUTmodify();
	*pResult = 0;
}

void TakeControlForm::OnSelchangeCombo1()
{
	// TODO: Add your control notification handler code here

	SetTimer(1, 100, NULL);
}

void TakeControlForm::OnTimer(UINT nIDEvent)
{
	// TODO: Add your message handler code here and/or call default
	KillTimer(nIDEvent);
	OnButton1();
}

void TakeControlForm::OnBUTmodify()
{
	// TODO: Add your control notification handler code here
	if (IsHasRights2new(2) == 0)return;
	POSITION pos;
	pos = m_List1.GetFirstSelectedItemPosition();
	if (pos == NULL)
	{
		return;
	}
	int iItem = m_List1.GetNextSelectedItem(pos);
	CString id = m_List1.GetItemText(iItem, 2);
	TakeControlDlg dlg;
	dlg.id = id;
	if (dlg.DoModal() == IDOK)
	{

		for (int i = 0; i < m_List1array.GetSize(); i++)
		{
			if (dlg.id == m_List1array.ElementAt(i).ElementAt(2))
			{
				m_List1array.ElementAt(i).SetAt(0, dlg.m_time2);
				m_List1array.ElementAt(i).SetAt(1, dlg.m_taketime);
				m_List1array.ElementAt(i).SetAt(8, dlg.m_waiter1);
				m_List1array.ElementAt(i).SetAt(9, dlg.m_waiter2);
				FillGrid();
				break;
			}
		}
	}
}

BOOL TakeControlForm::PreTranslateMessage(MSG* pMsg)
{
	// TODO: Add your specialized code here and/or call the base class
	try
	{
		if (pMsg->message == WM_KEYDOWN)
		{
			switch (pMsg->wParam)
			{
			case VK_RETURN:
				OnButton1();
				return 1;
			case 0x43: // copy
				if ((GetKeyState(VK_CONTROL) & 0x80))
				{
					GetFocus()->SendMessage(WM_COPY);
					return TRUE;
				}
				break;
			case 0x56: //Ctrl + V:
				if ((GetKeyState(VK_CONTROL) & 0x80))
				{
					GetFocus()->SendMessage(WM_PASTE);
					return TRUE;
				}
				break;
			case 0x58: // cut
				if ((GetKeyState(VK_CONTROL) & 0x80))
				{
					GetFocus()->SendMessage(WM_CUT);
					return TRUE;
				}
				break;
			case 0x5A: //undo
			case 0x59: //redo
				if ((GetKeyState(VK_CONTROL) & 0x80))
				{
					GetFocus()->SendMessage(WM_UNDO);
					return TRUE;
				}
				break;
			}
		}
		return MyFormView::PreTranslateMessage(pMsg);
	}
	catch (...)
	{
	}
}

void TakeControlForm::OnButton2()
{
	// TODO: Add your control notification handler code here
	UpdateData();
	m_filter.TrimLeft();
	m_filter.TrimRight();
	FillGrid(1);
}