// ShowLOg.cpp : implementation file

#include "stdafx.h"
#include "ylgl.h"
#include "ShowLOg.h"

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

/////////////////////////////////////////////////////////////////////////////
// ShowLOg dialog
ShowLOg::ShowLOg(CWnd* pParent /*=NULL*/)
	: CDialog(ShowLOg::IDD, pParent)
	, m_StartTime(0)
	, m_EndTime(0)
{
	//{{AFX_DATA_INIT(ShowLOg)
	//}}AFX_DATA_INIT
	m_nIndex = 0;
}


void ShowLOg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(ShowLOg)
	DDX_Control(pDX, IDC_COMBO1, m_combo1);
	DDX_Control(pDX, IDC_LIST1, m_List1);
	//}}AFX_DATA_MAP
	DDX_DateTimeCtrl(pDX, DTP_StartTime, m_StartTime);	// Jeff.add
	DDX_DateTimeCtrl(pDX, DTP_EndTime, m_EndTime);	// Jeff.add
}


BEGIN_MESSAGE_MAP(ShowLOg, CDialog)
	//{{AFX_MSG_MAP(ShowLOg)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(Btn_TimeFilter, OnBnClickedTimefilter)	// Jeff.add
	ON_BN_CLICKED(Btn_ContentFind, OnBnClickedContentfind)	// Jeff.add
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// ShowLOg message handlers

BOOL ShowLOg::OnInitDialog()
{
	CDialog::OnInitDialog();
	// TODO: Add extra initialization here
	m_combo1.AddString("1����");
	m_combo1.AddString("2����");
	m_combo1.AddString("3����");
	m_combo1.AddString("6����");

	CString str = g_cominfoarray.ElementAt(0).ElementAt(112);
	if (str == "")str = "6����";
	m_combo1.SetCurSel(m_combo1.FindString(0, str));

#if 1 // Jeff.add
	m_EndTime = CTime::GetCurrentTime();
	//	printf("Jeff:GetYear=%d,GetMonth=%d,GetDay=%d\n\n",m_EndTime.GetYear(),m_EndTime.GetMonth(),m_EndTime.GetDay());
	int nCurSel = m_combo1.GetCurSel();

	//	printf("Jeff:nCurSel=%d\n\n",nCurSel);
	switch (nCurSel)
	{
	case 0:
	{
		CTimeSpan ts(31, 0, 0, 0);
		m_StartTime = m_EndTime - ts;
	}
		break;
	case 1:
	{
		CTimeSpan ts(62, 0, 0, 0);
		m_StartTime = m_EndTime - ts;
	}
		break;
	case 2:
	{
		CTimeSpan ts(93, 0, 0, 0);
		m_StartTime = m_EndTime - ts;
	}
		break;
	case 3:
	{
		CTimeSpan ts(186, 0, 0, 0);
		m_StartTime = m_EndTime - ts;
	}
		break;
	default:
		break;
	}

	UpdateData(FALSE);

	//m_List1.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP);
#endif

	CRect rc;
	GetClientRect(rc);
	int wid = rc.Width() - 30;
	wid /= 5;

	str.Format("����,%d;����,%d", wid, wid * 4);
	m_List1.SetHeadings(str);
	GetData();
	CenterWindow();
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}

void ShowLOg::GetData()
{
	g_sendhead.bsql = 0;
	g_sendhead.code[0] = 185;	// Jeff.case 185: log��;
	g_sendhead.tabcount = 1;
	g_pMainWnd->ProcessChatMessageRequest2(1);
	if (g_bSendOK == 0)return;
	DataToArray(&m_List1array);
	m_List1.DeleteAllItems2();
	int ii = 0;
	m_List1.m_arLabels.SetSize(m_List1array.GetSize(), 1);
	int count = 0;
	for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++)
	{
		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 ShowLOg::OnButton1()
{
	// TODO: Add your control notification handler code here
	int pos = m_combo1.GetCurSel();
	if (pos == -1)return;
	CString str;
	m_combo1.GetLBText(pos, str);
	CString sql;
	sql.Format("update version set [logdays]='" + str + "'");
	g_sendhead.bsql = 1;
	g_pMainWnd->ProcessChatMessageRequest2(sql);

	if (g_bSendOK == 0)return;

	AfxMessageBox("����ɹ�!", MB_ICONINFORMATION);

	g_cominfoarray.ElementAt(0).SetAt(112, str);
}

// Jeff.��ѯ��־����.
// 1.��ʱ����ϻ�ȡ���ݿ����ʱ�䷶Χ;
// 2.��1�Ļ�����,ģ����ѯ��������;
// 3.�Ƿ���Ҫ��һ������xls����;
// 
void ShowLOg::OnBnClickedTimefilter()
{
	// TODO: �ڴ����ӿؼ�֪ͨ�����������
	UpdateData();
	CString strStartTime = m_StartTime.Format("%Y-%m-%d");
	CString strEndTime = m_EndTime.Format("%Y-%m-%d");

	CString strFilter;
	//strFilter.Format("date >='%s' and date <='%s'",strStartTime,strEndTime);
	strFilter.Format("date between '%s' and '%s'", strStartTime, strEndTime);

	//	printf("Jeff:strFilter=%s\n\n",strFilter);

	g_sendhead.bsql = 0;
	g_sendhead.code[0] = 185;	// Jeff.case 185: log��;
	g_sendhead.tabcount = 1;
	g_pMainWnd->ProcessChatMessageRequest2(strFilter);
	if (g_bSendOK == 0) return;
	DataToArray(&m_List1array);

	SetDlgItemText(Btn_ContentFind, "��ѯ");
	m_nIndex = 0;

	m_List1.DeleteAllItems2();
	int ii = 0;
	m_List1.m_arLabels.SetSize(m_List1array.GetSize(), 1);
	int count = 0;
	for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++)
	{
		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 ShowLOg::OnBnClickedContentfind()
{
	UpdateData();
	//static int nIndex = 0;//�ó�Ա����m_nIndex����;

	CString strFind;
	GetDlgItemText(Edt_ContentFind, strFind);

	if (strFind == "")
	{
		AfxMessageBox("�������������");
		return;
	}

	int nCount = m_List1.GetItemCount();

	BOOL bFind = FALSE;
	for (int i = m_nIndex; i < nCount; i++)
	{
		CString strContent = m_List1.m_arLabels.ElementAt(i).ElementAt(1);
		//		printf("Jeff:��ǰ����=%d,���ң�%s,���ݣ�%s\n\n",nCount,strFind,strContent);
		if (strContent.Find(strFind) != -1)
		{
			int nItem = m_List1.GetTopIndex();
			CRect rc;
			m_List1.GetItemRect(nItem, rc, LVIR_BOUNDS);
			CSize sz(0, (i - nItem)*rc.Height());
			m_List1.Scroll(sz);//m_List1.SendMessage(WM_VSCROLL,SB_LINERIGHT,0);
			m_List1.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
			//m_List1.SetItemState(i,LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
			m_List1.SetFocus();

			m_nIndex = i + 1;
			bFind = TRUE;
			SetDlgItemText(Btn_ContentFind, "��һ��");
			break;
		}
	}

	if (bFind == FALSE)
	{
		m_nIndex = 0;
		SetDlgItemText(Btn_ContentFind, "��ѯ");
		AfxMessageBox("δ�ҵ��������!");
	}
}