1/* -*- Mode: C; tab-width: 4 -*-
2 *
3 * Copyright (c) 2002-2004 Apple Computer, Inc. All rights reserved.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#if !defined(AFX_CHOOSERDIALOG_H__AC258704_B307_4901_9F98_A0AC022FD8AC__INCLUDED_)
19#define AFX_CHOOSERDIALOG_H__AC258704_B307_4901_9F98_A0AC022FD8AC__INCLUDED_
20
21#if _MSC_VER > 1000
22#pragma once
23#endif // _MSC_VER > 1000
24
25#include	<string>
26#include	<vector>
27
28#include	"afxcmn.h"
29
30#include	"Resource.h"
31
32#include	"DNSServices.h"
33
34//===========================================================================================================================
35//	Structures
36//===========================================================================================================================
37
38struct	ServiceInstanceInfo
39{
40	std::string		name;
41	std::string		type;
42	std::string		domain;
43	std::string		ip;
44	std::string		text;
45	std::string		ifIP;
46	std::string		hostName;
47};
48
49struct	ServiceTypeInfo
50{
51	std::string		serviceType;
52	std::string		description;
53	std::string		urlScheme;
54};
55
56//===========================================================================================================================
57//	ChooserDialog
58//===========================================================================================================================
59
60class	ChooserDialog : public CDialog
61{
62	public:
63
64		ChooserDialog(CWnd* pParent = NULL);
65		virtual	~ChooserDialog( void );
66
67		//{{AFX_DATA(ChooserDialog)
68		enum { IDD = IDD_CHOOSER_DIALOG };
69		CListCtrl mServiceList;
70		CListCtrl mDomainList;
71		CListCtrl mChooserList;
72		//}}AFX_DATA
73
74		// ClassWizard generated virtual function overrides
75		//{{AFX_VIRTUAL(ChooserDialog)
76		public:
77		virtual BOOL PreTranslateMessage(MSG* pMsg);
78		protected:
79		virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
80		virtual void PostNcDestroy();
81		//}}AFX_VIRTUAL
82
83	protected:
84
85		typedef std::vector < ServiceInstanceInfo >		ServiceInstanceVector;
86		typedef std::vector < ServiceTypeInfo >			ServiceTypeVector;
87
88		HACCEL						mMenuAcceleratorTable;
89		DNSBrowserRef				mBrowser;
90		BOOL						mIsServiceBrowsing;
91		ServiceInstanceVector		mServiceInstances;
92		ServiceTypeVector			mServiceTypes;
93
94	public:
95
96		void	PopulateServicesList( void );
97		void	UpdateInfoDisplay( void );
98
99		void	StartBrowsing( const char *inType, const char *inDomain );
100		void	StopBrowsing( void );
101
102	protected:
103
104		//{{AFX_MSG(ChooserDialog)
105		virtual BOOL OnInitDialog();
106		afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
107		afx_msg void OnDomainListChanged(NMHDR* pNMHDR, LRESULT* pResult);
108		afx_msg void OnServiceListChanged(NMHDR* pNMHDR, LRESULT* pResult);
109		afx_msg void OnChooserListChanged(NMHDR* pNMHDR, LRESULT* pResult);
110		afx_msg void OnChooserListDoubleClick(NMHDR* pNMHDR, LRESULT* pResult);
111		afx_msg void OnAbout();
112		afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);
113		afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
114		afx_msg void OnFileClose();
115		virtual void OnCancel();
116		afx_msg void OnExit();
117		afx_msg void OnClose();
118		afx_msg void OnNcDestroy();
119		//}}AFX_MSG
120		afx_msg LONG OnDomainAdd( WPARAM inWParam, LPARAM inLParam );
121		afx_msg LONG OnDomainRemove( WPARAM inWParam, LPARAM inLParam );
122		afx_msg LONG OnServiceAdd( WPARAM inWParam, LPARAM inLParam );
123		afx_msg LONG OnServiceRemove( WPARAM inWParam, LPARAM inLParam );
124		afx_msg LONG OnResolve( WPARAM inWParam, LPARAM inLParam );
125		DECLARE_MESSAGE_MAP()
126};
127
128//{{AFX_INSERT_LOCATION}}
129// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
130
131#endif // !defined(AFX_CHOOSERDIALOG_H__AC258704_B307_4901_9F98_A0AC022FD8AC__INCLUDED_)
132