windows-nt/Source/XPSP1/NT/enduser/netmeeting/ui/conf/dlgcall2.h
2020-09-26 16:20:57 +08:00

233 lines
5.5 KiB
C++

// File: DlgCall.h
#ifndef _CDLGCALL2_H_
#define _CDLGCALL2_H_
#include "richaddr.h"
#include "GenContainers.h"
#include "ConfRoom.h"
class CLDAP;
class CWAB;
class CGAL;
class CSPEEDDIAL;
class CHISTORY;
class CALV;
class CTranslateAccelTable;
class CMRUList;
#define MAX_DIR_COLUMNS 7
// These are the indexes the columns are actually added to the listview in...
#define COLUMN_INDEX_ADDRESS 0
#define COLUMN_INDEX_AUDIO 1
#define COLUMN_INDEX_VIDEO 2
#define COLUMN_INDEX_LAST_NAME 3
#define COLUMN_INDEX_FIRST_NAME 4
#define COLUMN_INDEX_LOCATION 5
#define COLUMN_INDEX_COMMENTS 6
class CFindSomeone : public CFrame, public IConferenceChangeHandler
{
public:
static void findSomeone(CConfRoom *pConfRoom);
static VOID Destroy();
virtual void Layout();
virtual void OnDesiredSizeChanged()
{
ScheduleLayout();
}
public: // IConferenceChangeHandler methods
virtual HRESULT STDMETHODCALLTYPE QueryInterface(
/* [in] */ REFIID riid,
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject)
{
return(CFrame::QueryInterface(riid, ppvObject));
}
virtual ULONG STDMETHODCALLTYPE AddRef( void)
{
return(CFrame::AddRef());
}
virtual ULONG STDMETHODCALLTYPE Release( void)
{
return(CFrame::Release());
}
virtual void OnCallStarted();
virtual void OnCallEnded();
virtual void OnAudioLevelChange(BOOL fSpeaker, DWORD dwVolume) {}
virtual void OnAudioMuteChange(BOOL fSpeaker, BOOL fMute) {}
virtual void OnChangeParticipant(CParticipant *pPart, NM_MEMBER_NOTIFY uNotify) {}
virtual void OnChangePermissions() {}
virtual void OnVideoChannelChanged(NM_CHANNEL_NOTIFY uNotify, INmChannel *pChannel) {}
protected:
~CFindSomeone();
virtual LRESULT ProcessMessage(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
private:
// constants
enum { DEFAULT_NUM_LISTVIEW_COLUMNS = 2 };
// Member Vars
static CFindSomeone *s_pDlgCall;
CTranslateAccelTable *m_pAccel; // The accelerator table we need to clean up
HWND m_hwndList; // list view
HWND m_ilsListView; // ils list view
HWND m_webView; // web view
HWND m_hwndOwnerDataList; // list view ( The owner-data one )
WNDPROC m_WndOwnerDataListOldWndProc; // For subclassing the above wnd
HWND m_hwndFrame; // group box
HWND m_hwndCombo; // combo box
HWND m_hwndComboEdit; // combo box's edit control
HWND m_hwndEdit; // edit control (for type-ahead)
BOOL m_fInEdit; // TRUE if editing the name/address
DWORD m_dwOptions; // options (NM_CALLDLG_*)
LPCTSTR m_pszDefault; // initial text to put in the edit control
HIMAGELIST m_himlIcon; // small icon image list
int m_cVisible; // number of visible lines in the listbox
int m_dxButton; // width of the "Advanced..." button
int m_dyButton; // height of the "Advanced..." button
int m_dyText; // height of a line of text
int m_dyTextIntro; // height of intro text at top of dialog
LPTSTR m_pszTextIntro; // Introductory text for top of dialog
bool m_bPlacedCall; // TRUE if we successfuly placed a call
bool m_secure; // Save the state of the secure button
int m_iIlsFirst; // index of first ILS server
CMRUList * m_pMruServer; // list of ILS servers
RAI * m_pRai; // Rich Address Information
// CALV items
CLDAP * m_pUls;
CWAB * m_pWab;
CSPEEDDIAL * m_pSpeedDial;
#if USE_GAL
CGAL * m_pGAL;
#endif // USE_GAL
CHISTORY * m_pHistory;
CConfRoom * m_pConfRoom;
#ifdef ENABLE_BL
CBL * m_pBl;
#endif /* ENABLE_BL */
CALV * m_pAlv; // Current Address List View (NOTE: NULL == m_pUls)
int m_iSel; // current selection in combo box
TCHAR m_szAddress[CCHMAXSZ_ADDRESS];
TCHAR m_szDirectory[CCHMAXSZ];
CFindSomeone(CConfRoom *pConfRoom);
HWND GetHwndList();
int GetEditText(LPTSTR psz, int cchMax);
RAI * GetAddrInfo();
int AddAlv(CALV * pAlv);
int AddAlvSz(CALV * pAlv, LPCTSTR psz, int cbIndex=-1);
HRESULT doModeless(void);
HRESULT CreateDlgCall(HWND hwndParent);
BOOL FMsgSpecial(MSG * pMsg);
VOID CalcDyText(void);
VOID InitAlv(void);
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
void OnContextMenu(HWND hwnd, HWND hwndContext, UINT xPos, UINT yPos);
LRESULT OnNotifyCombo(LPARAM lParam);
LRESULT OnNotifyList(LPARAM lParam);
VOID EndComboEdit(int iWhy);
VOID UpdateIlsServer(void);
LRESULT DoCustomDraw(LPNMLVCUSTOMDRAW lplvcd);
VOID ShowList(int iSel);
HWND
createIlsListView(void);
VOID OnEditChangeDirectory(void);
int FindSz(LPCTSTR psz);
int FindSzBySortedColumn(LPCTSTR psz);
HRESULT HrGetSelection(void);
void OnDeleteIlsServer(void);
static LRESULT CALLBACK OwnerDataListWndProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
private:
// Helper Fns
int _GetCurListViewNumColumns();
bool _IsDirectoryServicePolicyDisabled();
BOOL
InitColumns(void);
BOOL
LoadColumnInfo(void);
void
StoreColumnInfo(void);
static
int
CALLBACK
CompareWrapper
(
LPARAM param1,
LPARAM param2,
LPARAM This
);
int
DirListViewCompareProc
(
LPARAM param1,
LPARAM param2
);
int
LParamToPos
(
LPARAM lParam
);
void
onAdvanced(void);
void
onCall(void);
LONG m_alColumns[MAX_DIR_COLUMNS];
int m_iSortColumn;
BOOL m_fSortAscending;
};
CMRUList * GetMruListServer(void);
#define WM_DISPLAY_MSG (WM_USER + 200)
#endif /* _CDLGCALL2_H_ */