// DLG_GroupSelect.cpp : implementation file
//

#include "stdafx.h"
#include "corpsms.h"
#include "DLG_GroupSelect.h"

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

/////////////////////////////////////////////////////////////////////////////
// DLG_GroupSelect dialog


DLG_GroupSelect::DLG_GroupSelect(CWnd* pParent /*=NULL*/)
	: CDialog(DLG_GroupSelect::IDD, pParent)
{
	//{{AFX_DATA_INIT(DLG_GroupSelect)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT

	m_lUserID  = -1;
	m_strGroup = "˽ÈËͨѶ¼";
	m_bGroup   = false;
}


void DLG_GroupSelect::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_GroupSelect)
	DDX_Control(pDX, IDC_USERSELECT_TREE, m_wndTree);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DLG_GroupSelect, CDialog)
	//{{AFX_MSG_MAP(DLG_GroupSelect)
	ON_NOTIFY(NM_DBLCLK, IDC_USERSELECT_TREE, OnDblclkUserselectTree)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_GroupSelect message handlers

BOOL DLG_GroupSelect::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//´´½¨Í¼ÏñÁбí
	m_Image.Create( 20 , 20 , ILC_COLOR32|ILC_MASK , 5 ,  1);
	CBitmap bmp;
	bmp.LoadBitmap( IDB_F_FOLDER ); 
	m_Image.Add( &bmp , RGB(255,255,255) );              //Îļþ¼Ð
	bmp.DeleteObject();	bmp.LoadBitmap( IDB_F_FOLDER_O  );
	m_Image.Add( &bmp , RGB(255,255,255) );              //Îļþ¼Ð-´ò¿ª
	bmp.DeleteObject();	bmp.LoadBitmap( IDB_F_GADDRESS );
	m_Image.Add( &bmp , RGB(255,255,255) );              //¹«ÓõØÖ·±¾
	bmp.DeleteObject();	bmp.LoadBitmap( IDB_L_USER_NOR );
	m_Image.Add( &bmp , RGB(193,193,193) );              //Óû§

	m_wndTree.SetBkColor( RGB(180,213,170) );
	m_wndTree.SetImageList(&m_Image, TVSIL_NORMAL );
	m_MainItem  = m_wndTree.InsertItem( _T("˽ÈËͨѶ¼") , 2 , 2 );
	m_wndTree.SetItemData( m_MainItem , -1 );
	ShowGGroup( m_MainItem , _T("") );
	m_wndTree.Expand(m_MainItem,TVE_EXPAND);
	m_wndTree.SelectItem( m_MainItem );

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

void DLG_GroupSelect::SetParam(CMainFrame *pFrame)
{
	m_pMainFrame = pFrame;
	m_AdoRS.SetAdoConnection( &pFrame->m_adoConnection );
}

long DLG_GroupSelect::GetParam(CString &strGroup)
{
	strGroup = m_strGroup;
	return 1;
}

BOOL DLG_GroupSelect::ShowGGroup(HTREEITEM hMainItem, TCHAR *pGroupID)
{
	CAdoRecordSet AdoRS;
	AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
	TCHAR szSelect[128]={0};
	_stprintf( szSelect , _T("select * from paddress where GroupID like '%s_' AND UserType='0' ") , pGroupID );
	BOOL b = AdoRS.Open( szSelect );
	long lCount = AdoRS.GetRecordCount();
	if ( b && lCount )
	{
		AdoRS.MoveFirst();
		while( !AdoRS.IsEOF() )
		{
			TCHAR szGroupID[16]={0};
			TCHAR szName[16]={0};
			long lUserID=0;
			AdoRS.GetCollect( _T("GroupID") , szGroupID );
			AdoRS.GetCollect( _T("Name") , szName );
			AdoRS.GetCollect( _T("UserID") , lUserID );
			HTREEITEM hItem = m_wndTree.InsertItem( szName , 0,1 , hMainItem );
			m_wndTree.SetItemData( hItem , lUserID );
			ShowGGroup( hItem , szGroupID );
			AdoRS.MoveNext();
		}
	}

	return true;
}

void DLG_GroupSelect::OnDblclkUserselectTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	OnOK();
}

void DLG_GroupSelect::OnOK() 
{
	HTREEITEM hItem = m_wndTree.GetSelectedItem();
	if ( !hItem )
	{
		MessageBox( _T("Äã±ØÐë´Ó×ó±ßµÄÊ÷×´ÁбíÖÐÑ¡ÔñÒ»¸ö²éѯ¶ÔÏó!"),_T("´íÎó"),MB_ICONWARNING);
		return ;
	}
	if ( m_MainItem == hItem )
	{
		MessageBox( _T("Äã²»ÄÜÑ¡Ôñ¸ùĿ¼×öΪ±£´æ×é!"),_T("´íÎó"),MB_ICONWARNING);
		return ;
	}
	m_strGroup = m_wndTree.GetItemText(hItem);
	m_lUserID = m_wndTree.GetItemData(hItem);
	int iImage=0;
	int iSImage=0;
	m_wndTree.GetItemImage(hItem,iImage,iSImage);
	if ( iImage==0 || iImage== 2 )
		m_bGroup = true;
	else
		m_bGroup = false;
	
	CDialog::OnOK();
}