// DLG_FindNS.cpp : implementation file
//

#include "stdafx.h"
#include "corpsms.h"
#include "DLG_FindNS.h"

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

/////////////////////////////////////////////////////////////////////////////
// DLG_FindNS dialog

#include "MainFrm.h"
#include "DLG_FindSR_Send.h"


DLG_FindNS::DLG_FindNS(CWnd* pParent /*=NULL*/,long lFindType)
	: CDialog(DLG_FindNS::IDD, pParent)
{
	//{{AFX_DATA_INIT(DLG_FindNS)
	m_lMon = -1;
	m_lMon2 = -1;
	m_lDay = -1;
	//}}AFX_DATA_INIT
	m_pMainFrame = (CMainFrame*)pParent;
	m_lFindType = lFindType;
}


void DLG_FindNS::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_FindNS)
	DDX_Control(pDX, IDC_FINDNS_MON2, m_L_Mon2);
	DDX_Control(pDX, IDC_FINDNS_MON, m_L_Mon);
	DDX_Control(pDX, IDC_FINDNS_DAY, m_L_Day);
	DDX_Control(pDX, IDC_FINDNS_S1, m_S_S1);
	DDX_Control(pDX, IDC_FINDNS_LIST, m_wndList);
	DDX_CBIndex(pDX, IDC_FINDNS_MON, m_lMon);
	DDX_CBIndex(pDX, IDC_FINDNS_MON2, m_lMon2);
	DDX_CBIndex(pDX, IDC_FINDNS_DAY, m_lDay);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DLG_FindNS, CDialog)
	//{{AFX_MSG_MAP(DLG_FindNS)
	ON_NOTIFY(NM_RCLICK, IDC_FINDNS_LIST, OnRclickFindnsList)
	ON_NOTIFY(LVN_KEYDOWN, IDC_FINDNS_LIST, OnKeydownFindnsList)
	ON_BN_CLICKED(IDC_FINDNS_FIND, OnFindnsFind)
	ON_BN_CLICKED(IDC_FINDNS_ADD, OnFindnsAdd)
	//}}AFX_MSG_MAP
	ON_COMMAND( MENU_FINDNS_DEL , On_User_Del )
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_FindNS message handlers

BOOL DLG_FindNS::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//��ʼ���б�
	//����ͼ���б�
	m_Image.Create( 20 , 20 , ILC_COLOR32|ILC_MASK , 5 ,  1);
	CBitmap bmp;
	bmp.LoadBitmap( IDB_L_USER_NOR );
	m_Image.Add( &bmp , RGB(193,193,193) );             //����
	//����ͼ���б�
	m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
	m_wndList.SetBkColor( RGB(237,238,188) );
	m_wndList.SetTextBkColor( RGB(237,238,188) );

	m_wndList.SubClassWindow2();
	switch (m_lFindType)
	{
	case 1:
		m_wndList.SetHeadings(_T("  �� ��,80; �� ��,80;�ֻ�����,100;������,60;  ������,150;"));
		break;
	case 0:
	default:
		m_wndList.SetHeadings(_T("  �� ��,80; �� ��,80;�ֻ�����,100;������,60;  �� ע,150;"));
		break;
	}
	m_wndList.SetGridLines(true);

	m_lMon = 0;
	m_lMon2= 9;

	int i=0;
	CString strTemp;
	switch (m_lFindType)
	{
	case 1:
		for ( i=0 ; i<100 ; i++ )
		{
			strTemp.Format( _T("%d"), i+1 );
			m_L_Day.AddString(strTemp);
		}
		m_lDay=14;
		m_L_Mon.ResetContent();
		m_L_Mon2.ResetContent();
		for ( i=0 ; i<12 ; i++ )
		{
			strTemp.Format( _T("%d��"),i+1);
			m_L_Mon.AddString(strTemp);
			m_L_Mon2.AddString(strTemp);
		}
		m_lMon = 0;
		m_lMon2= 11;
		break;
	case 0:
	default:
		GetDlgItem(IDC_FINDNS_DAY_S1)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_FINDNS_DAY)->ShowWindow(SW_HIDE);
		break;
	}

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

void DLG_FindNS::OnRclickFindnsList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	ShowRMenu();
}

void DLG_FindNS::OnKeydownFindnsList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
	*pResult = 0;

	if ( pLVKeyDow->wVKey == VK_DELETE )
	{
		On_User_Del();
	}

}

void DLG_FindNS::ShowRMenu()
{
	CMenu menu;
	menu.CreatePopupMenu();
	long lCount = m_wndList.GetSelectedCount();

	//ɾ��
	if ( lCount >0 )
	{
		menu.AppendMenu(MF_STRING     , MENU_FINDNS_DEL, _T(" ɾ �� ") );
	}
	else
	{
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_FINDNS_DEL , _T(" ɾ �� ") );
	}
	//��ʾ�˵�
	POINT pt ;
	::GetCursorPos( &pt );
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
	menu.DestroyMenu();
}

void DLG_FindNS::On_User_Del()
{
	long lRet = MessageBox( _T("ȷʵҪɾ��ѡ�е��û���"),_T("����"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
	if ( lRet != IDYES )
		return ;

	long lCount = m_wndList.GetSelectedCount();
	long *lDel = new long[lCount+2];
	POSITION pos = m_wndList.GetFirstSelectedItemPosition();
	long i = 0;
	while(pos)
	{
		lDel[i]= m_wndList.GetNextSelectedItem(pos);
		i ++;
	}
	//��תɾ��
	m_wndList.ShowWindow( SW_HIDE );  //�ӿ���ʾ���ٶ�
	for ( i = lCount ; i>0 ; i-- )
	{
		m_wndList.DeleteItem(lDel[i-1]);  //���б���ɾ��
	}
	m_wndList.ShowWindow( SW_SHOW );  //�ӿ���ʾ���ٶ�
	delete lDel;

}

void DLG_FindNS::OnFindnsFind() 
{
	if ( !UpdateData(true) )
		return ;
	if ( m_lMon2<m_lMon )
	{
		MessageBox( _T("��ѯ�����·ݲ���С�ڿ�ʼ�·ݣ����顣"),_T("����"),MB_ICONWARNING );
		return ;
	}
	m_wndList.ShowWindow(SW_HIDE );
	m_wndList.DeleteAllItems();
	if ( m_pMainFrame )
	{
		switch ( m_lFindType )
		{
		case 1:
			m_pMainFrame->FindBX(m_lMon+1,m_lMon2+1,m_lDay+1,&m_wndList);
			break;
		case 0:
		default:
			m_pMainFrame->FindNS(m_lMon+3,m_lMon2+3,&m_wndList);
			break;
		}
	}

	m_wndList.ShowWindow(SW_SHOW);
	
	CString str;
	str.Format( _T("���ҽ��:%d") , m_wndList.GetItemCount() );
	m_S_S1.SetWindowText(str);	
}

void DLG_FindNS::OnFindnsAdd() 
{

	if ( !m_pMainFrame )
		return;
	long lCount = m_wndList.GetItemCount();
	if ( lCount <= 0 )
		return ;

	DLG_FindSR_Send dlg(this,1+m_lFindType);
	if ( dlg.DoModal()==IDOK )
	{
		Send_User * pUser =  new Send_User[lCount];
		memset(pUser,0,sizeof(Send_User)*lCount);
		for ( int i=0 ; i<lCount;i++ )
		{
			m_wndList.GetItemText(i,0,pUser[i].szName,sizeof(pUser->szName));
			m_wndList.GetItemText(i,1,pUser[i].szNickName,sizeof(pUser->szNickName));
			m_wndList.GetItemText(i,2,pUser[i].szMobile,sizeof(pUser->szMobile));
			m_wndList.GetItemText(i,3,pUser[i].szBZ,sizeof(pUser->szBZ));
		}
		if ( m_pMainFrame->m_pFuncView->m_DLGSend.List_New() )
		{
			m_pMainFrame->m_pFuncView->m_DLGSend.SetListSR(true);  //��������
			m_pMainFrame->m_pFuncView->On_User_List_AddUser(lCount,pUser);
			this->EndDialog(IDOK);
		}
	}
}