// FilterDialog.cpp : implementation file
//

#include "stdafx.h"
#include "viewex.h"
#include "fltrdlg.h"
#include "testcore.h"

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

/////////////////////////////////////////////////////////////////////////////
// CFilterDialog dialog


/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
CFilterDialog::CFilterDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CFilterDialog::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFilterDialog)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
void CFilterDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFilterDialog)
	DDX_Control(pDX, IDC_DONOTDISPLAYTHIS, m_DoNotDisplayThis);
	DDX_Control(pDX, IDC_DISPLAYTHIS, m_DisplayThis);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFilterDialog, CDialog)
	//{{AFX_MSG_MAP(CFilterDialog)
	ON_BN_CLICKED(IDC_TODISPLAY, OnMoveToDisplay)
	ON_BN_CLICKED(IDC_TONOTDISPLAY, OnMoveToNotDisplay)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFilterDialog message handlers

/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
void CFilterDialog::OnMoveToDisplay()
{
	// TODO: Add your control notification handler code here
   int      nIdx;
   DWORD    dwItemData;
   TCHAR    szText[ 128 ];

   nIdx        = m_DoNotDisplayThis.GetCurSel( );
   if( LB_ERR != nIdx )
   {
      dwItemData  = (DWORD)m_DoNotDisplayThis.GetItemData( nIdx );

      m_DoNotDisplayThis.DeleteString( nIdx );
      StringFromType( dwItemData, szText );

      nIdx  = m_DisplayThis.AddString( szText );
      m_DisplayThis.SetItemData( nIdx, dwItemData );

      m_pFilters[ dwItemData ]   = TRUE;
   }
}


/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
void CFilterDialog::OnMoveToNotDisplay()
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
   int      nIdx;
   DWORD    dwItemData;
   TCHAR    szText[ 128 ];

   nIdx        = m_DisplayThis.GetCurSel( );
   if( LB_ERR != nIdx )
   {
      dwItemData  = (DWORD)m_DisplayThis.GetItemData( nIdx );

      m_DisplayThis.DeleteString( nIdx );
      StringFromType( dwItemData, szText );

      nIdx  = m_DoNotDisplayThis.AddString( szText );
      m_DoNotDisplayThis.SetItemData( nIdx, dwItemData );

      m_pFilters[ dwItemData ]   = FALSE;
   }
}


/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
void  CFilterDialog::DisplayThisType( DWORD dwType, TCHAR* pszText )
{
   CListBox*   pListBox;
   int         nIdx;

   if( m_pFilters[ dwType ] )
   {
      pListBox = &m_DisplayThis;
   }
   else
   {
      pListBox = &m_DoNotDisplayThis;
   }

   nIdx  = pListBox->AddString( pszText );
   pListBox->SetItemData( nIdx, dwType );
}


/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
BOOL CFilterDialog::OnInitDialog()
{

	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
   TCHAR szType[ 128 ];

   for( DWORD dwType = 0L ; dwType < LIMIT ; dwType++ )
   {
      if( OTHER == dwType || SCHEMA == dwType )
         continue;

      StringFromType( dwType, szType );
      DisplayThisType( dwType, szType );
   }

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