home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * The contents of this file are subject to the Netscape Public License
- * Version 1.0 (the "NPL"); you may not use this file except in
- * compliance with the NPL. You may obtain a copy of the NPL at
- * http://www.mozilla.org/NPL/
- *
- * Software distributed under the NPL is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
- * for the specific language governing rights and limitations under the
- * NPL.
- *
- * The Initial Developer of this code under the NPL is Netscape
- * Communications Corporation. Portions created by Netscape are
- * Copyright (C) 1998 Netscape Communications Corporation. All Rights
- * Reserved.
- */
- // srchdlg.cpp : implementation file
- //
-
- #include "stdafx.h"
- #include "srchdlg.h"
- #include "template.h"
- #include "wfemsg.h"
- #include "msg_srch.h"
- #include "dirprefs.h"
- #include "nethelp.h"
- #include "xp_help.h"
- #include "prefapi.h"
- #include "intlwin.h"
- #include "xp_time.h"
- #include "xplocale.h"
- #include "dateedit.h"
- #include "intl_csi.h"
-
-
- ////////////////////////////////////////////////////////////////////////////
- // CAddrEditProperities
-
- CSearchDialog::CSearchDialog (LPCTSTR lpszCaption, MSG_Pane* pSearchPane, DIR_Server* pServer, CWnd * parent,
- UINT numButtons, ButtonPosition buttonPosition, CPtrArray* buttonLabels)
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- :CButtonPropertySheet ( lpszCaption, parent, numButtons, buttonPosition, buttonLabels )
- #endif
- {
- m_pServer = pServer;
- m_pSearchPane = pSearchPane;
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- m_pBasicSearch = new CBasicSearch (this);
- AddPage( m_pBasicSearch );
- m_pAdvancedSearch = new CAdvancedSearch (this);
- AddPage( m_pAdvancedSearch );
- #endif
- }
-
- CSearchDialog::CSearchDialog (UINT nIDCaption, MSG_Pane* pSearchPane, DIR_Server* pServer, CWnd * parent,
- UINT numButtons, ButtonPosition buttonPosition, CUIntArray* buttonLabels)
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- :CButtonPropertySheet ( nIDCaption, parent, numButtons, buttonPosition, buttonLabels )
- #endif
- {
- m_pServer = pServer;
- m_pSearchPane = pSearchPane;
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- m_pBasicSearch = new CBasicSearch (this);
- AddPage( m_pBasicSearch );
- m_pAdvancedSearch = new CAdvancedSearch (this);
- AddPage( m_pAdvancedSearch );
- #endif
- }
-
- CSearchDialog::~CSearchDialog ( )
- {
-
- }
-
- void CSearchDialog::PostNcDestroy( )
- {
- if ( m_pAdvancedSearch )
- delete m_pAdvancedSearch;
- if ( m_pBasicSearch )
- delete m_pBasicSearch;
- }
-
- void CSearchDialog::OnHelp()
- {
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- if (GetActivePage() == m_pAdvancedSearch)
- NetHelp(HELP_ADD_USER_PROPS);
- if (GetActivePage() == m_pBasicSearch)
- NetHelp(HELP_ADD_USER_PROPS);
- #endif
- }
-
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- BEGIN_MESSAGE_MAP(CSearchDialog, CButtonPropertySheet)
- #else
- BEGIN_MESSAGE_MAP(CSearchDialog, CWnd)
- #endif
- //{{AFX_MSG_MAP(CSearchDialog)
- // NOTE: the ClassWizard will add message map macros here
- ON_WM_CREATE()
- ON_MESSAGE(LDS_GETSERVER,OnGetServer)
- ON_MESSAGE(LDS_GETSEARCHPANE,OnGetSearchPane)
- ON_MESSAGE(LDS_RECALC_LAYOUT,OnRecalcLayout)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- LRESULT CSearchDialog::OnGetServer(WPARAM wParam, LPARAM lParam)
- {
- DIR_Server ** server = (DIR_Server **) lParam;
- (*server) = m_pServer;
- return 1;
- }
-
- LRESULT CSearchDialog::OnGetSearchPane(WPARAM wParam, LPARAM lParam)
- {
- MSG_Pane ** pane = (MSG_Pane **) lParam;
- (*pane) = m_pSearchPane;
- return 1;
- }
-
- LRESULT CSearchDialog::OnRecalcLayout(WPARAM wParam, LPARAM lParam)
- {
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- RecalcLayout();
- #endif
- return 1;
- }
-
- int CSearchDialog::OnCreate( LPCREATESTRUCT lpCreateStruct )
- {
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- if (CButtonPropertySheet::OnCreate(lpCreateStruct) == -1)
- #else
- if (CWnd::OnCreate(lpCreateStruct) == -1)
- #endif
- return -1;
-
- int16 guicsid = 0;
- CString cs;
-
- guicsid = CIntlWin::GetSystemLocaleCsid();
-
- HDC hDC = ::GetDC(m_hWnd);
- LOGFONT lf;
- memset(&lf,0,sizeof(LOGFONT));
-
- lf.lfPitchAndFamily = FF_SWISS;
- lf.lfWeight = FW_NORMAL;
- lf.lfCharSet = IntlGetLfCharset(CIntlWin::GetSystemLocaleCsid());
- if (CIntlWin::GetSystemLocaleCsid() == CS_LATIN1)
- _tcscpy(lf.lfFaceName, "MS Sans Serif");
- else
- _tcscpy(lf.lfFaceName, IntlGetUIPropFaceName(CIntlWin::GetSystemLocaleCsid()));
- lf.lfHeight = -MulDiv(9, ::GetDeviceCaps(hDC, LOGPIXELSY), 72);
- m_pFont = theApp.CreateAppFont( lf );
-
- ::ReleaseDC(m_hWnd,hDC);
-
- XP_Bool prefBool= FALSE;
-
- PREF_GetBoolPref("mail.addr_book.useAdvancedSearch", &prefBool);
- if (prefBool) {
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- SetActivePage (1);
- #endif
- cs.LoadString (IDS_BASICSEARCH);
- GetDlgItem(IDC_BUTTON4)->SetWindowText(cs);
- cs.LoadString (IDS_ADVSEARCH_TITLE);
- SetWindowText (cs);
- ((CAdvancedSearch*)m_pAdvancedSearch)->InitializePrevSearch ();
- }
- else {
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- SetActivePage (0);
- #endif
- cs.LoadString (IDS_BASICSEARCH_TITLE);
- SetWindowText (cs);
- ((CBasicSearch*)m_pBasicSearch)->InitializeSearchValues ();
- }
-
- return 0;
- }
-
- void CSearchDialog::OnButton2()
- {
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- if (GetActiveIndex() == 0) {
- // save basic search
- ((CBasicSearch*)m_pBasicSearch)->SavePreviousSearch();
- }
- else {
- // save advanced search
- ((CAdvancedSearch*)m_pAdvancedSearch)->SavePreviousSearch();
- }
-
-
- CButtonPropertySheet::OnButton2();
- #endif
-
- } // END OF FUNCTION CSearchDialog::OnButton2()
-
- void CSearchDialog::OnButton3()
- {
- OnHelp();
-
- } // END OF FUNCTION CSearchDialog::OnButton3()
-
- void CSearchDialog::OnButton4()
- {
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- CString cs;
- if (GetActiveIndex() == 0) {
- // switch to advanced
- cs.LoadString (IDS_BASICSEARCH);
- GetDlgItem(IDC_BUTTON4)->SetWindowText(cs);
- ((CBasicSearch*)m_pBasicSearch)->SavePreviousSearch();
- SetActivePage(1);
- cs.LoadString (IDS_ADVSEARCH_TITLE);
- SetWindowText (cs);
- ((CAdvancedSearch*)m_pAdvancedSearch)->InitializePrevSearch ();
- }
- else {
- // switch to basic
- cs.LoadString (IDS_ADVSEARCH);
- GetDlgItem(IDC_BUTTON4)->SetWindowText(cs);
- ((CAdvancedSearch*)m_pAdvancedSearch)->SavePreviousSearch();
- SetActivePage(0);
- cs.LoadString (IDS_BASICSEARCH_TITLE);
- SetWindowText (cs);
- ((CBasicSearch*)m_pBasicSearch)->InitializeSearchValues ();
- }
- PREF_SetBoolPref("mail.addr_book.useAdvancedSearch", GetActiveIndex());
- #endif
- } // END OF FUNCTION CSearchDialog::OnButton4()
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CAdvancedSearch property page
-
- CAdvancedSearch::CAdvancedSearch(CWnd *pParent)
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- : CButtonPropertyPage(CAdvancedSearch::IDD)
- #endif
- {
- //{{AFX_DATA_INIT(CAddressUser)
- //}}AFX_DATA_INIT
- m_iMoreCount = 0;
- m_bLogicType = 0;
- m_bChanged = FALSE;
- }
-
- CAdvancedSearch::~CAdvancedSearch()
- {
- }
-
- void CAdvancedSearch::DoDataExchange(CDataExchange* pDX)
- {
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- CButtonPropertyPage::DoDataExchange(pDX);
- #else
- CDialog::DoDataExchange(pDX);
- #endif
-
- //{{AFX_DATA_MAP(CAdvancedSearch)
- //}}AFX_DATA_MAP
- }
-
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- BEGIN_MESSAGE_MAP(CAdvancedSearch, CButtonPropertyPage)
- #else
- BEGIN_MESSAGE_MAP(CAdvancedSearch, CDialog)
- #endif
- //{{AFX_MSG_MAP(CAdvancedSearch)
- // NOTE: the ClassWizard will add message map macros here
- ON_BN_CLICKED(IDC_MORE, OnMore)
- ON_BN_CLICKED(IDC_FEWER, OnFewer)
- ON_BN_CLICKED(IDC_CLEAR_SEARCH, OnClearSearch)
- ON_CBN_SELCHANGE(IDC_COMBO_ATTRIB1, OnAttrib1)
- ON_CBN_SELCHANGE(IDC_COMBO_ATTRIB2, OnAttrib2)
- ON_CBN_SELCHANGE(IDC_COMBO_ATTRIB3, OnAttrib3)
- ON_CBN_SELCHANGE(IDC_COMBO_ATTRIB4, OnAttrib4)
- ON_CBN_SELCHANGE(IDC_COMBO_ATTRIB5, OnAttrib5)
- ON_CBN_SELCHANGE(IDC_COMBO_OP1, OnOperatorValueChanged)
- ON_CBN_SELCHANGE(IDC_COMBO_OP2, OnOperatorValueChanged)
- ON_CBN_SELCHANGE(IDC_COMBO_OP3, OnOperatorValueChanged)
- ON_CBN_SELCHANGE(IDC_COMBO_OP4, OnOperatorValueChanged)
- ON_CBN_SELCHANGE(IDC_COMBO_OP5, OnOperatorValueChanged)
- ON_CBN_SELCHANGE(IDC_COMBO_AND_OR, OnAndOr)
- ON_EN_CHANGE( IDC_EDIT_VALUE1, OnEditValueChanged )
- ON_EN_CHANGE( IDC_EDIT_VALUE2, OnEditValueChanged )
- ON_EN_CHANGE( IDC_EDIT_VALUE3, OnEditValueChanged )
- ON_EN_CHANGE( IDC_EDIT_VALUE4, OnEditValueChanged )
- #ifdef ON_UPDATE_COMMAND_UI_RANGE
- ON_UPDATE_COMMAND_UI_RANGE( IDC_COMBO_ATTRIB1, IDC_EDIT_VALUE5, OnUpdateQuery )
- #endif
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- #ifndef ON_UPDATE_COMMAND_UI_RANGE
-
- BOOL CAdvancedSearch::OnCmdMsg( UINT nID, int nCode, void* pExtra,
- AFX_CMDHANDLERINFO* pHandlerInfo )
- {
- if ((nID >= IDC_COMBO_ATTRIB1) && (nID <= IDC_EDIT_VALUE5) &&
- ( nCode == CN_UPDATE_COMMAND_UI) ) {
- OnUpdateQuery( (CCmdUI *) pExtra );
- return TRUE;
- }
- return CDialog::OnCmdMsg( nID, nCode, pExtra, pHandlerInfo );
- }
-
- #endif
-
- void CAdvancedSearch::OnUpdateQuery( CCmdUI *pCmdUI )
- {
- pCmdUI->Enable( TRUE );
- }
-
- void CAdvancedSearch::AdjustHeight(int dy)
- {
- CRect rect;
- GetWindowRect(&rect);
-
- CSize size = rect.Size();
- size.cy += dy;
-
- SetWindowPos( NULL, 0, 0, size.cx, size.cy, SWP_NOACTIVATE|SWP_NOZORDER|SWP_SHOWWINDOW);
- GetWindowRect(&rect);
- }
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CAddressUser message handlers
-
- BOOL CAdvancedSearch::OnInitDialog()
- {
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- // TODO: Add your specialized code here and/or call the base class
- CButtonPropertyPage::OnInitDialog();
- #endif
- m_searchObj.InitializeAttributes (widgetText, attribCommonName);
-
- DIR_Server * pServer = NULL;
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &pServer);
-
- m_searchObj.New (this);
-
- m_searchObj.UpdateAttribList(scopeLdapDirectory, pServer);
- m_searchObj.UpdateOpList(scopeLdapDirectory, pServer);
-
- GetDlgItem(IDC_STATIC1)->SetWindowText(pServer->description);
-
- return TRUE;
- }
-
-
- void CAdvancedSearch::InitializePrevSearch()
- {
- int dy = 0;
- MSG_Pane * pane = NULL;
- DIR_Server * pServer = NULL;
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &pServer);
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSEARCHPANE, 0, (LPARAM) &pane);
-
- dy += m_searchObj.InitializeLDAPSearchWindow (pane, pServer, &m_iMoreCount, m_bLogicType);
-
- if (m_iMoreCount < 4)
- GetDlgItem(IDC_MORE)->EnableWindow (TRUE);
- else
- GetDlgItem(IDC_MORE)->EnableWindow (FALSE);
- if (m_iMoreCount > 0)
- GetDlgItem(IDC_FEWER)->EnableWindow (TRUE);
- else
- GetDlgItem(IDC_FEWER)->EnableWindow (FALSE);
-
- AdjustHeight (dy);
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_RECALC_LAYOUT, 0, 0);
- }
-
-
- BOOL CAdvancedSearch::SavePreviousSearch( )
- {
- // save the query
- if (m_bChanged)
- {
- MSG_Pane * pane = NULL;
- DIR_Server * server = NULL;
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &server);
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSEARCHPANE, 0, (LPARAM) &pane);
- MSG_SearchFree (pane);
- MSG_SearchAlloc (pane);
- MSG_AddLdapScope(pane, server);
- m_searchObj.BuildQuery(pane, m_iMoreCount, m_bLogicType);
- }
-
- return (TRUE);
- }
-
-
- BOOL CAdvancedSearch::OnSetActive()
- {
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- // TODO: Add your specialized code here and/or call the base class
- if(!CButtonPropertyPage::OnSetActive())
- return(FALSE);
-
- m_bChanged = FALSE;
- #endif
- return(TRUE);
- }
-
-
- void CAdvancedSearch::OnOK()
- {
- MSG_Pane * pane = NULL;
- DIR_Server * server = NULL;
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &server);
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSEARCHPANE, 0, (LPARAM) &pane);
- MSG_SearchFree (pane);
- MSG_SearchAlloc (pane);
- MSG_AddLdapScope(pane, server);
- m_searchObj.BuildQuery(pane, m_iMoreCount, m_bLogicType);
- }
-
- void CAdvancedSearch::OnAndOr()
- {
- m_searchObj.OnAndOr(m_iMoreCount, &m_bLogicType);
- m_bChanged = TRUE;
- }
-
- void CAdvancedSearch::OnMore()
- {
- int dy = 0;
-
- dy = m_searchObj.More(&m_iMoreCount, m_bLogicType);
-
- if (m_iMoreCount < 4)
- GetDlgItem(IDC_MORE)->EnableWindow (TRUE);
- else
- GetDlgItem(IDC_MORE)->EnableWindow (FALSE);
- if (m_iMoreCount > 0)
- GetDlgItem(IDC_FEWER)->EnableWindow (TRUE);
- else
- GetDlgItem(IDC_FEWER)->EnableWindow (FALSE);
-
- AdjustHeight (dy);
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_RECALC_LAYOUT, 0, 0);
- }
-
- void CAdvancedSearch::OnFewer()
- {
- int dy = 0;
-
- dy = m_searchObj.Fewer(&m_iMoreCount, m_bLogicType);
-
- if (m_iMoreCount < 4)
- GetDlgItem(IDC_MORE)->EnableWindow (TRUE);
- else
- GetDlgItem(IDC_MORE)->EnableWindow (FALSE);
- if (m_iMoreCount > 0)
- GetDlgItem(IDC_FEWER)->EnableWindow (TRUE);
- else
- GetDlgItem(IDC_FEWER)->EnableWindow (FALSE);
-
- AdjustHeight (dy);
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_RECALC_LAYOUT, 0, 0);
- }
-
- void CAdvancedSearch::OnClearSearch()
- {
- int dy = 0;
-
- MSG_Pane * pane = NULL;
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSEARCHPANE, 0, (LPARAM) &pane);
-
- MSG_SearchFree (pane);
-
- dy = m_searchObj.ClearSearch(&m_iMoreCount, TRUE);
-
- AdjustHeight (dy);
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_RECALC_LAYOUT, 0, 0);
- m_bChanged = TRUE;
- }
-
- void CAdvancedSearch::OnEditValueChanged ()
- {
- m_bChanged = TRUE;
- }
-
- void CAdvancedSearch::OnOperatorValueChanged ()
- {
- m_bChanged = TRUE;
- }
-
- void CAdvancedSearch::OnAttrib1()
- {
- DIR_Server * server = NULL;
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &server);
-
- m_searchObj.UpdateOpList(0, scopeLdapDirectory, server);
- m_bChanged = TRUE;
- }
-
- void CAdvancedSearch::OnAttrib2()
- {
- DIR_Server * server = NULL;
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &server);
- m_searchObj.UpdateOpList(1, scopeLdapDirectory, server);
- m_bChanged = TRUE;
- }
-
- void CAdvancedSearch::OnAttrib3()
- {
- DIR_Server * server = NULL;
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &server);
- m_searchObj.UpdateOpList(2, scopeLdapDirectory, server);
- m_bChanged = TRUE;
- }
-
- void CAdvancedSearch::OnAttrib4()
- {
- DIR_Server * server = NULL;
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &server);
- m_searchObj.UpdateOpList(3, scopeLdapDirectory, server);
- m_bChanged = TRUE;
- }
-
- void CAdvancedSearch::OnAttrib5()
- {
- DIR_Server * server = NULL;
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &server);
- m_searchObj.UpdateOpList(4, scopeLdapDirectory, server);
- m_bChanged = TRUE;
- }
-
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CBasicSearch property page
-
- static int BasicChoicesTable[][2] =
- {{IDC_STATIC1, IDC_EDIT_VALUE1},
- {IDC_STATIC2, IDC_EDIT_VALUE2},
- {IDC_STATIC3, IDC_EDIT_VALUE3},
- {IDC_STATIC4, IDC_EDIT_VALUE4}};
-
- #define BASIC_COL_LABEL 0
- #define BASIC_COL_VALUE 1
- #define BASIC_COL_COUNT 2
-
- static _TCHAR szResultText[64];
-
- CBasicSearch::CBasicSearch(CWnd *pParent)
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- : CButtonPropertyPage(CBasicSearch::IDD)
- #endif
- {
- //{{AFX_DATA_INIT(CBasicSearch)
- //}}AFX_DATA_INIT
- m_bChanged = FALSE;
- }
-
- CBasicSearch::~CBasicSearch()
- {
- m_bLogicType = 1;
- }
-
- void CBasicSearch::DoDataExchange(CDataExchange* pDX)
- {
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- CButtonPropertyPage::DoDataExchange(pDX);
- #else
- CDialog::DoDataExchange(pDX);
- #endif
- //{{AFX_DATA_MAP(CBasicSearch)
- //}}AFX_DATA_MAP
- }
-
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- BEGIN_MESSAGE_MAP(CBasicSearch, CButtonPropertyPage)
- #else
- BEGIN_MESSAGE_MAP(CBasicSearch, CDialog)
- #endif
-
- //{{AFX_MSG_MAP(CBasicSearch)
- // NOTE: the ClassWizard will add message map macros here
- ON_EN_CHANGE( IDC_EDIT_VALUE1, OnEditValueChanged )
- ON_EN_CHANGE( IDC_EDIT_VALUE2, OnEditValueChanged )
- ON_EN_CHANGE( IDC_EDIT_VALUE3, OnEditValueChanged )
- ON_EN_CHANGE( IDC_EDIT_VALUE4, OnEditValueChanged )
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
- /////////////////////////////////////////////////////////////////////////////
- // CAddressUser message handlers
-
- BOOL CBasicSearch::OnInitDialog()
- {
- MSG_SearchMenuItem items[4];
- int maxItems = 4;
-
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- CButtonPropertyPage::OnInitDialog();
- #endif
-
- DIR_Server * pServer = NULL;
- int j = 0;
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &pServer);
- GetDlgItem(IDC_STATIC5)->SetWindowText(pServer->description);
-
- MSG_GetBasicLdapSearchAttributes (pServer, items, &maxItems);
-
- for (j = 0; j < maxItems; j++) {
- (GetDlgItem (BasicChoicesTable[j][BASIC_COL_LABEL]))->SetWindowText (items[j].name);
- }
-
- return TRUE;
- }
-
- void CBasicSearch::InitializeSearchValues ()
- {
- MSG_Pane * pane = NULL;
- int numTerms = 0;
- MSG_SearchAttribute attrib;
- MSG_SearchOperator op;
- MSG_SearchValue value;
- MSG_SearchMenuItem items[4];
- int maxItems = 4;
- int j = 0;
- DIR_Server * pServer = NULL;
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &pServer);
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSEARCHPANE, 0, (LPARAM) &pane);
-
- MSG_GetBasicLdapSearchAttributes (pServer, items, &maxItems);
- MSG_CountSearchTerms (pane, &numTerms);
-
- // set all the terms back to empty strings
- for (j = 0; j < maxItems; j++) {
- (GetDlgItem (BasicChoicesTable[j][BASIC_COL_VALUE]))->SetWindowText("");
- }
-
- // get the attributes for the directory used in the last search
- // and make sure that
- // it hasn't been remaped from customization
- int numScopes = 0;
- DIR_Server * server = NULL;
- uint16 maxItems2 = 16;
- MSG_SearchMenuItem items2[16];
- MSG_ScopeAttribute scope = scopeLdapDirectory;
- MSG_CountSearchScopes (pane, &numScopes);
- BOOL bCompareAttrib = FALSE;
-
- // find the attributes
- if (numScopes) {
- ASSERT (numScopes == 1);
- MSG_GetNthSearchScope (pane, 0, &scope, (void**) &server);
- if (server && !DIR_AreServersSame (pServer, server)) {
- MSG_GetAttributesForSearchScopes (WFE_MSGGetMaster(), scopeLdapDirectory,
- (void**) &server, 1, items2, &maxItems2);
- bCompareAttrib = TRUE;
- }
- }
-
- // set them to the values in the search pane
- for (int i = 0; i < maxItems && i < numTerms; i++)
- {
- BOOL found = FALSE;
- int k = 0;
- MSG_GetNthSearchTerm (pane, i, &attrib, &op, &value);
- if (bCompareAttrib)
- {
- while (k < maxItems2 && !found) {
- if (items2 [k].attrib != attrib)
- k++;
- else
- found = TRUE;
- }
- }
-
- for (j = 0; j < maxItems; j++) {
- if ((items[j].attrib == attrib) && (!(GetDlgItem (BasicChoicesTable[j][BASIC_COL_VALUE]))->GetWindowTextLength())) {
- if (bCompareAttrib) {
- if (found && (strcmp (items2 [k].name, items[j].name ) == 0))
- (GetDlgItem (BasicChoicesTable[j][BASIC_COL_VALUE]))->SetWindowText(value.u.string);
- }
- else
- (GetDlgItem (BasicChoicesTable[j][BASIC_COL_VALUE]))->SetWindowText(value.u.string);
- }
- }
- }
- }
-
- void CBasicSearch::OnEditValueChanged ()
- {
- m_bChanged = TRUE;
- }
-
-
- BOOL CBasicSearch::SavePreviousSearch( )
- {
- // save the query
- if (m_bChanged)
- {
- MSG_Pane * pane = NULL;
- DIR_Server * server = NULL;
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &server);
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSEARCHPANE, 0, (LPARAM) &pane);
- MSG_SearchFree (pane);
- MSG_SearchAlloc (pane);
- MSG_AddLdapScope(pane, server);
- BuildQuery(pane, m_bLogicType);
- }
-
- return (TRUE);
- }
-
-
- BOOL CBasicSearch::OnSetActive()
- {
- #ifdef FEATURE_BUTTONPROPERTYPAGE
- if(!CButtonPropertyPage::OnSetActive())
- return(FALSE);
-
- m_bChanged = FALSE;
- #endif
-
- return(TRUE);
- }
-
-
- void CBasicSearch::OnOK()
- {
- MSG_Pane * pane = NULL;
- DIR_Server * server = NULL;
-
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &server);
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSEARCHPANE, 0, (LPARAM) &pane);
- MSG_SearchFree (pane);
- MSG_SearchAlloc (pane);
- MSG_AddLdapScope(pane, server);
- BuildQuery(pane, m_bLogicType);
- }
-
- void CBasicSearch::BuildQuery (MSG_Pane* searchPane, BOOL bLogicType)
- {
- MSG_SearchAttribute attrib;
- MSG_SearchOperator op;
- MSG_SearchValue value;
- CNSDateEdit *date = NULL;
- CComboBox * combo = NULL;
- int iCurSel = 0;
- CWnd * widget = NULL;
- MSG_SearchMenuItem items[4];
- int maxItems = 4;
-
- DIR_Server * pServer = NULL;
- ::SendMessage (GetParent()->GetSafeHwnd(), LDS_GETSERVER, 0, (LPARAM) &pServer);
-
- MSG_GetBasicLdapSearchAttributes (pServer, items, &maxItems);
-
- for (int i = 0; i <= 3; i++) {
- attrib = (MSG_SearchAttribute) items[i].attrib;
-
- op = (MSG_SearchOperator) opContains;
-
- widget = GetDlgItem(BasicChoicesTable[i][BASIC_COL_VALUE]);
- widget->GetWindowText(szResultText, sizeof(szResultText));
-
- value.attribute = attrib;
- switch (attrib) {
- case attribDate:
- {
- CTime ctime;
- date = (CNSDateEdit *) GetDlgItem(BasicChoicesTable[i][BASIC_COL_VALUE]);
- date->GetDate(ctime);
- value.u.date = ctime.GetTime();
- }
- break;
- case attribPriority:
- combo = (CComboBox *) GetDlgItem(BasicChoicesTable[i][BASIC_COL_VALUE]);
- iCurSel = combo->GetCurSel();
- value.u.priority = (MSG_PRIORITY) combo->GetItemData(iCurSel);
- break;
- case attribMsgStatus:
- combo = (CComboBox *) GetDlgItem(BasicChoicesTable[i][BASIC_COL_VALUE]);
- iCurSel = combo->GetCurSel();
- value.u.msgStatus = combo->GetItemData(iCurSel);
- break;
- default:
- if (XP_STRLEN (szResultText))
- value.u.string = XP_STRDUP (szResultText);
- else
- value.u.string = NULL;
- }
- if (value.u.string)
- {
- MSG_AddSearchTerm(searchPane, attrib, op, &value, !bLogicType, NULL);
- XP_FREE(value.u.string);
- }
- }
-
- }
-
-
-