13dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin/* -*- Mode: C; tab-width: 4 -*-
23dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin *
33dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin * Copyright (c) 2002-2004 Apple Computer, Inc. All rights reserved.
43dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin *
53dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin * Licensed under the Apache License, Version 2.0 (the "License");
63dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin * you may not use this file except in compliance with the License.
73dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin * You may obtain a copy of the License at
83dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin *
93dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin *     http://www.apache.org/licenses/LICENSE-2.0
103dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin *
113dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin * Unless required by applicable law or agreed to in writing, software
123dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin * distributed under the License is distributed on an "AS IS" BASIS,
133dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
143dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin * See the License for the specific language governing permissions and
153dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin * limitations under the License.
163dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin */
173dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
183dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin#ifndef _ConfigPropertySheet_h
193dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin#define _ConfigPropertySheet_h
203dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
213dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin#include "stdafx.h"
223dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin#include "ServicesPage.h"
233dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin#include "RegistrationPage.h"
243dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin#include "BrowsingPage.h"
253dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
263dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin#include <RegNames.h>
273dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin#include <dns_sd.h>
283dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin#include <list>
293dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
303dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
313dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin//---------------------------------------------------------------------------------------------------------------------------
323dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin//	CConfigPropertySheet
333dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin//---------------------------------------------------------------------------------------------------------------------------
343dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
353dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlinclass CConfigPropertySheet : public CPropertySheet
363dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin{
373dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlinpublic:
383dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
393dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	CConfigPropertySheet();
403dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	virtual ~CConfigPropertySheet();
413dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
423dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	typedef std::list<CString> StringList;
433dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
443dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	StringList	m_browseDomains;
453dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
463dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlinprotected:
473dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
483dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	CServicesPage		m_firstPage;
493dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	CRegistrationPage	m_secondPage;
503dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	CBrowsingPage		m_thirdPage;
513dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
523dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	//{{AFX_VIRTUAL(CConfigPropertySheet)
533dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	//}}AFX_VIRTUAL
543dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
553dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	DECLARE_DYNCREATE(CConfigPropertySheet)
563dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
573dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	//{{AFX_MSG(CConfigPropertySheet)
583dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	//}}AFX_MSG
593dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	DECLARE_MESSAGE_MAP()
603dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
613dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	afx_msg BOOL	OnInitDialog();
623dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	afx_msg BOOL	OnCommand( WPARAM wParam, LPARAM lParam );
633dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	afx_msg LRESULT	OnDataReady( WPARAM inWParam, LPARAM inLParam );
643dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	afx_msg LRESULT	OnRegistryChanged( WPARAM inWParam, LPARAM inLParam );
653dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	void			OnEndDialog();
663dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
673dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlinprivate:
683dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
693dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	OSStatus
703dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	SetupBrowsing();
713dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
723dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	OSStatus
733dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	TearDownBrowsing();
743dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
753dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	OSStatus
763dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	DecodeDomainName( const char * raw, CString & decoded );
773dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
783dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	static void DNSSD_API
793dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	BrowseDomainsReply
803dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin				(
813dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin				DNSServiceRef			sdRef,
823dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin				DNSServiceFlags			flags,
833dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin				uint32_t				interfaceIndex,
843dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin				DNSServiceErrorType		errorCode,
853dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin				const char			*	replyDomain,
863dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin				void				*	context
873dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin				);
883dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
893dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	// This thread will watch for registry changes
903dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
913dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	static unsigned WINAPI
923dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	WatchRegistry
933dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin				(
943dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin				LPVOID inParam
953dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin				);
963dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
973dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	HKEY				m_statusKey;
983dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	HANDLE				m_thread;
993dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	HANDLE				m_threadExited;
1003dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	DNSServiceRef		m_browseDomainsRef;
1013dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin	CRITICAL_SECTION	m_lock;
1023dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin};
1033dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
1043dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin
1053dfdc952a3e125868a0a4123e40e1f7fd868af21Casey Dahlin#endif
106