xref: /aosp_15_r20/external/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.cpp (revision 48a54d368dc4fa860885eef7b70b6c53499e7c25)
1*48a54d36SAndroid Build Coastguard Worker /* -*- Mode: C; tab-width: 4 -*-
2*48a54d36SAndroid Build Coastguard Worker  *
3*48a54d36SAndroid Build Coastguard Worker  * Copyright (c) 2002-2004 Apple Computer, Inc. All rights reserved.
4*48a54d36SAndroid Build Coastguard Worker  *
5*48a54d36SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
6*48a54d36SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
7*48a54d36SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
8*48a54d36SAndroid Build Coastguard Worker  *
9*48a54d36SAndroid Build Coastguard Worker  *     http://www.apache.org/licenses/LICENSE-2.0
10*48a54d36SAndroid Build Coastguard Worker  *
11*48a54d36SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
12*48a54d36SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
13*48a54d36SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*48a54d36SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
15*48a54d36SAndroid Build Coastguard Worker  * limitations under the License.
16*48a54d36SAndroid Build Coastguard Worker  */
17*48a54d36SAndroid Build Coastguard Worker 
18*48a54d36SAndroid Build Coastguard Worker #include "BrowsingPage.h"
19*48a54d36SAndroid Build Coastguard Worker #include "resource.h"
20*48a54d36SAndroid Build Coastguard Worker 
21*48a54d36SAndroid Build Coastguard Worker #include "ConfigPropertySheet.h"
22*48a54d36SAndroid Build Coastguard Worker 
23*48a54d36SAndroid Build Coastguard Worker #include <WinServices.h>
24*48a54d36SAndroid Build Coastguard Worker 
25*48a54d36SAndroid Build Coastguard Worker #define MAX_KEY_LENGTH 255
26*48a54d36SAndroid Build Coastguard Worker 
27*48a54d36SAndroid Build Coastguard Worker 
IMPLEMENT_DYNCREATE(CBrowsingPage,CPropertyPage)28*48a54d36SAndroid Build Coastguard Worker IMPLEMENT_DYNCREATE(CBrowsingPage, CPropertyPage)
29*48a54d36SAndroid Build Coastguard Worker 
30*48a54d36SAndroid Build Coastguard Worker 
31*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
32*48a54d36SAndroid Build Coastguard Worker //	CBrowsingPage::CBrowsingPage
33*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
34*48a54d36SAndroid Build Coastguard Worker 
35*48a54d36SAndroid Build Coastguard Worker CBrowsingPage::CBrowsingPage()
36*48a54d36SAndroid Build Coastguard Worker :
37*48a54d36SAndroid Build Coastguard Worker 	CPropertyPage(CBrowsingPage::IDD)
38*48a54d36SAndroid Build Coastguard Worker {
39*48a54d36SAndroid Build Coastguard Worker 	//{{AFX_DATA_INIT(CBrowsingPage)
40*48a54d36SAndroid Build Coastguard Worker 	//}}AFX_DATA_INIT
41*48a54d36SAndroid Build Coastguard Worker 
42*48a54d36SAndroid Build Coastguard Worker 	m_firstTime = true;
43*48a54d36SAndroid Build Coastguard Worker }
44*48a54d36SAndroid Build Coastguard Worker 
45*48a54d36SAndroid Build Coastguard Worker 
46*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
47*48a54d36SAndroid Build Coastguard Worker //	CBrowsingPage::~CBrowsingPage
48*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
49*48a54d36SAndroid Build Coastguard Worker 
~CBrowsingPage()50*48a54d36SAndroid Build Coastguard Worker CBrowsingPage::~CBrowsingPage()
51*48a54d36SAndroid Build Coastguard Worker {
52*48a54d36SAndroid Build Coastguard Worker }
53*48a54d36SAndroid Build Coastguard Worker 
54*48a54d36SAndroid Build Coastguard Worker 
55*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
56*48a54d36SAndroid Build Coastguard Worker //	CBrowsingPage::DoDataExchange
57*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
58*48a54d36SAndroid Build Coastguard Worker 
DoDataExchange(CDataExchange * pDX)59*48a54d36SAndroid Build Coastguard Worker void CBrowsingPage::DoDataExchange(CDataExchange* pDX)
60*48a54d36SAndroid Build Coastguard Worker {
61*48a54d36SAndroid Build Coastguard Worker 	CPropertyPage::DoDataExchange(pDX);
62*48a54d36SAndroid Build Coastguard Worker 	//{{AFX_DATA_MAP(CBrowsingPage)
63*48a54d36SAndroid Build Coastguard Worker 	//}}AFX_DATA_MAP
64*48a54d36SAndroid Build Coastguard Worker 	DDX_Control(pDX, IDC_BROWSE_LIST, m_browseListCtrl);
65*48a54d36SAndroid Build Coastguard Worker 	DDX_Control(pDX, IDC_REMOVE_BROWSE_DOMAIN, m_removeButton);
66*48a54d36SAndroid Build Coastguard Worker }
67*48a54d36SAndroid Build Coastguard Worker 
BEGIN_MESSAGE_MAP(CBrowsingPage,CPropertyPage)68*48a54d36SAndroid Build Coastguard Worker BEGIN_MESSAGE_MAP(CBrowsingPage, CPropertyPage)
69*48a54d36SAndroid Build Coastguard Worker 	//{{AFX_MSG_MAP(CBrowsingPage)
70*48a54d36SAndroid Build Coastguard Worker 	//}}AFX_MSG_MAP
71*48a54d36SAndroid Build Coastguard Worker 	ON_BN_CLICKED(IDC_ADD_BROWSE_DOMAIN, OnBnClickedAddBrowseDomain)
72*48a54d36SAndroid Build Coastguard Worker 	ON_BN_CLICKED(IDC_REMOVE_BROWSE_DOMAIN, OnBnClickedRemoveBrowseDomain)
73*48a54d36SAndroid Build Coastguard Worker 	ON_NOTIFY(LVN_ITEMCHANGED, IDC_BROWSE_LIST, OnLvnItemchangedBrowseList)
74*48a54d36SAndroid Build Coastguard Worker END_MESSAGE_MAP()
75*48a54d36SAndroid Build Coastguard Worker 
76*48a54d36SAndroid Build Coastguard Worker 
77*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
78*48a54d36SAndroid Build Coastguard Worker //	CBrowsingPage::SetModified
79*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
80*48a54d36SAndroid Build Coastguard Worker 
81*48a54d36SAndroid Build Coastguard Worker void CBrowsingPage::SetModified( BOOL bChanged )
82*48a54d36SAndroid Build Coastguard Worker {
83*48a54d36SAndroid Build Coastguard Worker 	m_modified = bChanged;
84*48a54d36SAndroid Build Coastguard Worker 
85*48a54d36SAndroid Build Coastguard Worker 	CPropertyPage::SetModified( bChanged );
86*48a54d36SAndroid Build Coastguard Worker }
87*48a54d36SAndroid Build Coastguard Worker 
88*48a54d36SAndroid Build Coastguard Worker 
89*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
90*48a54d36SAndroid Build Coastguard Worker //	CBrowsingPage::OnSetActive
91*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
92*48a54d36SAndroid Build Coastguard Worker 
93*48a54d36SAndroid Build Coastguard Worker BOOL
OnSetActive()94*48a54d36SAndroid Build Coastguard Worker CBrowsingPage::OnSetActive()
95*48a54d36SAndroid Build Coastguard Worker {
96*48a54d36SAndroid Build Coastguard Worker 	CConfigPropertySheet	*	psheet;
97*48a54d36SAndroid Build Coastguard Worker 	HKEY						key = NULL;
98*48a54d36SAndroid Build Coastguard Worker 	HKEY						subKey = NULL;
99*48a54d36SAndroid Build Coastguard Worker 	DWORD						dwSize;
100*48a54d36SAndroid Build Coastguard Worker 	DWORD						enabled;
101*48a54d36SAndroid Build Coastguard Worker 	DWORD						err;
102*48a54d36SAndroid Build Coastguard Worker 	TCHAR						subKeyName[MAX_KEY_LENGTH];
103*48a54d36SAndroid Build Coastguard Worker 	DWORD						cSubKeys = 0;
104*48a54d36SAndroid Build Coastguard Worker 	DWORD						cbMaxSubKey;
105*48a54d36SAndroid Build Coastguard Worker 	DWORD						cchMaxClass;
106*48a54d36SAndroid Build Coastguard Worker 	int							nIndex;
107*48a54d36SAndroid Build Coastguard Worker     DWORD						i;
108*48a54d36SAndroid Build Coastguard Worker 	BOOL						b = CPropertyPage::OnSetActive();
109*48a54d36SAndroid Build Coastguard Worker 
110*48a54d36SAndroid Build Coastguard Worker 	psheet = reinterpret_cast<CConfigPropertySheet*>(GetParent());
111*48a54d36SAndroid Build Coastguard Worker 	require_quiet( psheet, exit );
112*48a54d36SAndroid Build Coastguard Worker 
113*48a54d36SAndroid Build Coastguard Worker 	m_modified = FALSE;
114*48a54d36SAndroid Build Coastguard Worker 
115*48a54d36SAndroid Build Coastguard Worker 	if ( m_firstTime )
116*48a54d36SAndroid Build Coastguard Worker 	{
117*48a54d36SAndroid Build Coastguard Worker 		m_browseListCtrl.SetExtendedStyle((m_browseListCtrl.GetStyle() & (~LVS_EX_GRIDLINES))|LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);
118*48a54d36SAndroid Build Coastguard Worker 
119*48a54d36SAndroid Build Coastguard Worker 		m_browseListCtrl.InsertColumn(0, L"", LVCFMT_LEFT, 20 );
120*48a54d36SAndroid Build Coastguard Worker 		m_browseListCtrl.InsertColumn(1, L"", LVCFMT_LEFT, 345);
121*48a54d36SAndroid Build Coastguard Worker 
122*48a54d36SAndroid Build Coastguard Worker 		m_firstTime = false;
123*48a54d36SAndroid Build Coastguard Worker 	}
124*48a54d36SAndroid Build Coastguard Worker 
125*48a54d36SAndroid Build Coastguard Worker 	m_initialized = false;
126*48a54d36SAndroid Build Coastguard Worker 
127*48a54d36SAndroid Build Coastguard Worker 	// Clear out what's there
128*48a54d36SAndroid Build Coastguard Worker 
129*48a54d36SAndroid Build Coastguard Worker 	m_browseListCtrl.DeleteAllItems();
130*48a54d36SAndroid Build Coastguard Worker 
131*48a54d36SAndroid Build Coastguard Worker 	// Now populate the browse domain box
132*48a54d36SAndroid Build Coastguard Worker 
133*48a54d36SAndroid Build Coastguard Worker 	err = RegCreateKeyEx( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\DynDNS\\Setup\\" kServiceDynDNSBrowseDomains, 0,
134*48a54d36SAndroid Build Coastguard Worker 		                  NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &key, NULL );
135*48a54d36SAndroid Build Coastguard Worker 	require_noerr( err, exit );
136*48a54d36SAndroid Build Coastguard Worker 
137*48a54d36SAndroid Build Coastguard Worker 	// Get information about this node
138*48a54d36SAndroid Build Coastguard Worker 
139*48a54d36SAndroid Build Coastguard Worker     err = RegQueryInfoKey( key, NULL, NULL, NULL, &cSubKeys, &cbMaxSubKey, &cchMaxClass, NULL, NULL, NULL, NULL, NULL );
140*48a54d36SAndroid Build Coastguard Worker 	require_noerr( err, exit );
141*48a54d36SAndroid Build Coastguard Worker 
142*48a54d36SAndroid Build Coastguard Worker 	for ( i = 0; i < cSubKeys; i++)
143*48a54d36SAndroid Build Coastguard Worker 	{
144*48a54d36SAndroid Build Coastguard Worker 		dwSize = MAX_KEY_LENGTH;
145*48a54d36SAndroid Build Coastguard Worker 
146*48a54d36SAndroid Build Coastguard Worker 		err = RegEnumKeyEx( key, i, subKeyName, &dwSize, NULL, NULL, NULL, NULL );
147*48a54d36SAndroid Build Coastguard Worker 		require_noerr( err, exit );
148*48a54d36SAndroid Build Coastguard Worker 
149*48a54d36SAndroid Build Coastguard Worker 		err = RegOpenKey( key, subKeyName, &subKey );
150*48a54d36SAndroid Build Coastguard Worker 		require_noerr( err, exit );
151*48a54d36SAndroid Build Coastguard Worker 
152*48a54d36SAndroid Build Coastguard Worker 		dwSize = sizeof( DWORD );
153*48a54d36SAndroid Build Coastguard Worker 		err = RegQueryValueEx( subKey, L"Enabled", NULL, NULL, (LPBYTE) &enabled, &dwSize );
154*48a54d36SAndroid Build Coastguard Worker 		require_noerr( err, exit );
155*48a54d36SAndroid Build Coastguard Worker 
156*48a54d36SAndroid Build Coastguard Worker 		nIndex = m_browseListCtrl.InsertItem( m_browseListCtrl.GetItemCount(), L"");
157*48a54d36SAndroid Build Coastguard Worker 		m_browseListCtrl.SetItemText( nIndex, 1, subKeyName );
158*48a54d36SAndroid Build Coastguard Worker 		m_browseListCtrl.SetCheck( nIndex, enabled );
159*48a54d36SAndroid Build Coastguard Worker 
160*48a54d36SAndroid Build Coastguard Worker 		RegCloseKey( subKey );
161*48a54d36SAndroid Build Coastguard Worker 		subKey = NULL;
162*48a54d36SAndroid Build Coastguard Worker     }
163*48a54d36SAndroid Build Coastguard Worker 
164*48a54d36SAndroid Build Coastguard Worker 	m_browseListCtrl.SortItems( SortFunc, (DWORD_PTR) this );
165*48a54d36SAndroid Build Coastguard Worker 
166*48a54d36SAndroid Build Coastguard Worker 	m_removeButton.EnableWindow( FALSE );
167*48a54d36SAndroid Build Coastguard Worker 
168*48a54d36SAndroid Build Coastguard Worker exit:
169*48a54d36SAndroid Build Coastguard Worker 
170*48a54d36SAndroid Build Coastguard Worker 	if ( subKey )
171*48a54d36SAndroid Build Coastguard Worker 	{
172*48a54d36SAndroid Build Coastguard Worker 		RegCloseKey( subKey );
173*48a54d36SAndroid Build Coastguard Worker 	}
174*48a54d36SAndroid Build Coastguard Worker 
175*48a54d36SAndroid Build Coastguard Worker 	if ( key )
176*48a54d36SAndroid Build Coastguard Worker 	{
177*48a54d36SAndroid Build Coastguard Worker 		RegCloseKey( key );
178*48a54d36SAndroid Build Coastguard Worker 	}
179*48a54d36SAndroid Build Coastguard Worker 
180*48a54d36SAndroid Build Coastguard Worker 	m_initialized = true;
181*48a54d36SAndroid Build Coastguard Worker 
182*48a54d36SAndroid Build Coastguard Worker 	return b;
183*48a54d36SAndroid Build Coastguard Worker }
184*48a54d36SAndroid Build Coastguard Worker 
185*48a54d36SAndroid Build Coastguard Worker 
186*48a54d36SAndroid Build Coastguard Worker 
187*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
188*48a54d36SAndroid Build Coastguard Worker //	CBrowsingPage::OnOK
189*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
190*48a54d36SAndroid Build Coastguard Worker 
191*48a54d36SAndroid Build Coastguard Worker void
OnOK()192*48a54d36SAndroid Build Coastguard Worker CBrowsingPage::OnOK()
193*48a54d36SAndroid Build Coastguard Worker {
194*48a54d36SAndroid Build Coastguard Worker 	if ( m_modified )
195*48a54d36SAndroid Build Coastguard Worker 	{
196*48a54d36SAndroid Build Coastguard Worker 		Commit();
197*48a54d36SAndroid Build Coastguard Worker 	}
198*48a54d36SAndroid Build Coastguard Worker }
199*48a54d36SAndroid Build Coastguard Worker 
200*48a54d36SAndroid Build Coastguard Worker 
201*48a54d36SAndroid Build Coastguard Worker 
202*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
203*48a54d36SAndroid Build Coastguard Worker //	CBrowsingPage::Commit
204*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
205*48a54d36SAndroid Build Coastguard Worker 
206*48a54d36SAndroid Build Coastguard Worker void
Commit()207*48a54d36SAndroid Build Coastguard Worker CBrowsingPage::Commit()
208*48a54d36SAndroid Build Coastguard Worker {
209*48a54d36SAndroid Build Coastguard Worker 	HKEY		key		= NULL;
210*48a54d36SAndroid Build Coastguard Worker 	HKEY		subKey	= NULL;
211*48a54d36SAndroid Build Coastguard Worker 	TCHAR		subKeyName[MAX_KEY_LENGTH];
212*48a54d36SAndroid Build Coastguard Worker 	DWORD		cSubKeys = 0;
213*48a54d36SAndroid Build Coastguard Worker 	DWORD		cbMaxSubKey;
214*48a54d36SAndroid Build Coastguard Worker 	DWORD		cchMaxClass;
215*48a54d36SAndroid Build Coastguard Worker 	DWORD		dwSize;
216*48a54d36SAndroid Build Coastguard Worker 	int			i;
217*48a54d36SAndroid Build Coastguard Worker 	DWORD		err;
218*48a54d36SAndroid Build Coastguard Worker 
219*48a54d36SAndroid Build Coastguard Worker 	err = RegCreateKeyEx( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\DynDNS\\Setup\\" kServiceDynDNSBrowseDomains, 0,
220*48a54d36SAndroid Build Coastguard Worker 	                      NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &key, NULL );
221*48a54d36SAndroid Build Coastguard Worker 	require_noerr( err, exit );
222*48a54d36SAndroid Build Coastguard Worker 
223*48a54d36SAndroid Build Coastguard Worker 	// First, remove all the entries that are there
224*48a54d36SAndroid Build Coastguard Worker 
225*48a54d36SAndroid Build Coastguard Worker     err = RegQueryInfoKey( key, NULL, NULL, NULL, &cSubKeys, &cbMaxSubKey, &cchMaxClass, NULL, NULL, NULL, NULL, NULL );
226*48a54d36SAndroid Build Coastguard Worker 	require_noerr( err, exit );
227*48a54d36SAndroid Build Coastguard Worker 
228*48a54d36SAndroid Build Coastguard Worker 	for ( i = 0; i < (int) cSubKeys; i++ )
229*48a54d36SAndroid Build Coastguard Worker 	{
230*48a54d36SAndroid Build Coastguard Worker 		dwSize = MAX_KEY_LENGTH;
231*48a54d36SAndroid Build Coastguard Worker 
232*48a54d36SAndroid Build Coastguard Worker 		err = RegEnumKeyEx( key, 0, subKeyName, &dwSize, NULL, NULL, NULL, NULL );
233*48a54d36SAndroid Build Coastguard Worker 		require_noerr( err, exit );
234*48a54d36SAndroid Build Coastguard Worker 
235*48a54d36SAndroid Build Coastguard Worker 		err = RegDeleteKey( key, subKeyName );
236*48a54d36SAndroid Build Coastguard Worker 		require_noerr( err, exit );
237*48a54d36SAndroid Build Coastguard Worker 	}
238*48a54d36SAndroid Build Coastguard Worker 
239*48a54d36SAndroid Build Coastguard Worker 	// Now re-populate
240*48a54d36SAndroid Build Coastguard Worker 
241*48a54d36SAndroid Build Coastguard Worker 	for ( i = 0; i < m_browseListCtrl.GetItemCount(); i++ )
242*48a54d36SAndroid Build Coastguard Worker 	{
243*48a54d36SAndroid Build Coastguard Worker 		DWORD enabled = (DWORD) m_browseListCtrl.GetCheck( i );
244*48a54d36SAndroid Build Coastguard Worker 
245*48a54d36SAndroid Build Coastguard Worker 		err = RegCreateKeyEx( key, m_browseListCtrl.GetItemText( i, 1 ), 0,
246*48a54d36SAndroid Build Coastguard Worker 		                      NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &subKey, NULL );
247*48a54d36SAndroid Build Coastguard Worker 		require_noerr( err, exit );
248*48a54d36SAndroid Build Coastguard Worker 
249*48a54d36SAndroid Build Coastguard Worker 		err = RegSetValueEx( subKey, L"Enabled", NULL, REG_DWORD, (LPBYTE) &enabled, sizeof( enabled ) );
250*48a54d36SAndroid Build Coastguard Worker 		require_noerr( err, exit );
251*48a54d36SAndroid Build Coastguard Worker 
252*48a54d36SAndroid Build Coastguard Worker 		RegCloseKey( subKey );
253*48a54d36SAndroid Build Coastguard Worker 		subKey = NULL;
254*48a54d36SAndroid Build Coastguard Worker 	}
255*48a54d36SAndroid Build Coastguard Worker 
256*48a54d36SAndroid Build Coastguard Worker exit:
257*48a54d36SAndroid Build Coastguard Worker 
258*48a54d36SAndroid Build Coastguard Worker 	if ( subKey )
259*48a54d36SAndroid Build Coastguard Worker 	{
260*48a54d36SAndroid Build Coastguard Worker 		RegCloseKey( subKey );
261*48a54d36SAndroid Build Coastguard Worker 	}
262*48a54d36SAndroid Build Coastguard Worker 
263*48a54d36SAndroid Build Coastguard Worker 	if ( key )
264*48a54d36SAndroid Build Coastguard Worker 	{
265*48a54d36SAndroid Build Coastguard Worker 		RegCloseKey( key );
266*48a54d36SAndroid Build Coastguard Worker 	}
267*48a54d36SAndroid Build Coastguard Worker }
268*48a54d36SAndroid Build Coastguard Worker 
269*48a54d36SAndroid Build Coastguard Worker 
270*48a54d36SAndroid Build Coastguard Worker 
271*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
272*48a54d36SAndroid Build Coastguard Worker //	CBrowsingPage::OnBnClickedAddBrowseDomain
273*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
274*48a54d36SAndroid Build Coastguard Worker 
275*48a54d36SAndroid Build Coastguard Worker void
OnBnClickedAddBrowseDomain()276*48a54d36SAndroid Build Coastguard Worker CBrowsingPage::OnBnClickedAddBrowseDomain()
277*48a54d36SAndroid Build Coastguard Worker {
278*48a54d36SAndroid Build Coastguard Worker 	CAddBrowseDomain dlg( GetParent() );
279*48a54d36SAndroid Build Coastguard Worker 
280*48a54d36SAndroid Build Coastguard Worker 	if ( ( dlg.DoModal() == IDOK ) && ( dlg.m_text.GetLength() > 0 ) )
281*48a54d36SAndroid Build Coastguard Worker 	{
282*48a54d36SAndroid Build Coastguard Worker 		int nIndex;
283*48a54d36SAndroid Build Coastguard Worker 
284*48a54d36SAndroid Build Coastguard Worker 		nIndex = m_browseListCtrl.InsertItem( m_browseListCtrl.GetItemCount(), L"");
285*48a54d36SAndroid Build Coastguard Worker 		m_browseListCtrl.SetItemText( nIndex, 1, dlg.m_text );
286*48a54d36SAndroid Build Coastguard Worker 		m_browseListCtrl.SetCheck( nIndex, 1 );
287*48a54d36SAndroid Build Coastguard Worker 
288*48a54d36SAndroid Build Coastguard Worker 		m_browseListCtrl.SortItems( SortFunc, (DWORD_PTR) this );
289*48a54d36SAndroid Build Coastguard Worker 
290*48a54d36SAndroid Build Coastguard Worker 		m_browseListCtrl.Invalidate();
291*48a54d36SAndroid Build Coastguard Worker 
292*48a54d36SAndroid Build Coastguard Worker 		SetModified( TRUE );
293*48a54d36SAndroid Build Coastguard Worker 	}
294*48a54d36SAndroid Build Coastguard Worker }
295*48a54d36SAndroid Build Coastguard Worker 
296*48a54d36SAndroid Build Coastguard Worker 
297*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
298*48a54d36SAndroid Build Coastguard Worker //	CBrowsingPage::OnBnClickedRemoveBrowseDomain
299*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
300*48a54d36SAndroid Build Coastguard Worker 
301*48a54d36SAndroid Build Coastguard Worker void
OnBnClickedRemoveBrowseDomain()302*48a54d36SAndroid Build Coastguard Worker CBrowsingPage::OnBnClickedRemoveBrowseDomain()
303*48a54d36SAndroid Build Coastguard Worker {
304*48a54d36SAndroid Build Coastguard Worker 	UINT	selectedCount = m_browseListCtrl.GetSelectedCount();
305*48a54d36SAndroid Build Coastguard Worker 	int		nItem = -1;
306*48a54d36SAndroid Build Coastguard Worker 	UINT	i;
307*48a54d36SAndroid Build Coastguard Worker 
308*48a54d36SAndroid Build Coastguard Worker 	// Update all of the selected items.
309*48a54d36SAndroid Build Coastguard Worker 
310*48a54d36SAndroid Build Coastguard Worker 	for ( i = 0; i < selectedCount; i++ )
311*48a54d36SAndroid Build Coastguard Worker 	{
312*48a54d36SAndroid Build Coastguard Worker 		nItem = m_browseListCtrl.GetNextItem( -1, LVNI_SELECTED );
313*48a54d36SAndroid Build Coastguard Worker 		check( nItem != -1 );
314*48a54d36SAndroid Build Coastguard Worker 
315*48a54d36SAndroid Build Coastguard Worker 		m_browseListCtrl.DeleteItem( nItem );
316*48a54d36SAndroid Build Coastguard Worker 
317*48a54d36SAndroid Build Coastguard Worker 		SetModified( TRUE );
318*48a54d36SAndroid Build Coastguard Worker 	}
319*48a54d36SAndroid Build Coastguard Worker 
320*48a54d36SAndroid Build Coastguard Worker 	m_removeButton.EnableWindow( FALSE );
321*48a54d36SAndroid Build Coastguard Worker }
322*48a54d36SAndroid Build Coastguard Worker 
323*48a54d36SAndroid Build Coastguard Worker 
324*48a54d36SAndroid Build Coastguard Worker void
OnLvnItemchangedBrowseList(NMHDR * pNMHDR,LRESULT * pResult)325*48a54d36SAndroid Build Coastguard Worker CBrowsingPage::OnLvnItemchangedBrowseList(NMHDR *pNMHDR, LRESULT *pResult)
326*48a54d36SAndroid Build Coastguard Worker {
327*48a54d36SAndroid Build Coastguard Worker 	if ( m_browseListCtrl.GetSelectedCount() )
328*48a54d36SAndroid Build Coastguard Worker 	{
329*48a54d36SAndroid Build Coastguard Worker 		m_removeButton.EnableWindow( TRUE );
330*48a54d36SAndroid Build Coastguard Worker 	}
331*48a54d36SAndroid Build Coastguard Worker 
332*48a54d36SAndroid Build Coastguard Worker 	if ( m_initialized )
333*48a54d36SAndroid Build Coastguard Worker 	{
334*48a54d36SAndroid Build Coastguard Worker 		NM_LISTVIEW * pNMListView = (NM_LISTVIEW*)pNMHDR;
335*48a54d36SAndroid Build Coastguard Worker 
336*48a54d36SAndroid Build Coastguard Worker 		BOOL bPrevState = (BOOL) ( ( ( pNMListView->uOldState & LVIS_STATEIMAGEMASK ) >> 12 ) - 1 );
337*48a54d36SAndroid Build Coastguard Worker 
338*48a54d36SAndroid Build Coastguard Worker 		if ( bPrevState < 0 )
339*48a54d36SAndroid Build Coastguard Worker 		{
340*48a54d36SAndroid Build Coastguard Worker 			bPrevState = 0;
341*48a54d36SAndroid Build Coastguard Worker 		}
342*48a54d36SAndroid Build Coastguard Worker 
343*48a54d36SAndroid Build Coastguard Worker 
344*48a54d36SAndroid Build Coastguard Worker 		BOOL bChecked = ( BOOL ) ( ( ( pNMListView->uNewState & LVIS_STATEIMAGEMASK ) >> 12) - 1 );
345*48a54d36SAndroid Build Coastguard Worker 
346*48a54d36SAndroid Build Coastguard Worker 		if ( bChecked < 0 )
347*48a54d36SAndroid Build Coastguard Worker 		{
348*48a54d36SAndroid Build Coastguard Worker 			bChecked = 0;
349*48a54d36SAndroid Build Coastguard Worker 		}
350*48a54d36SAndroid Build Coastguard Worker 
351*48a54d36SAndroid Build Coastguard Worker 		if ( bPrevState != bChecked )
352*48a54d36SAndroid Build Coastguard Worker 		{
353*48a54d36SAndroid Build Coastguard Worker 			SetModified( TRUE );
354*48a54d36SAndroid Build Coastguard Worker 		}
355*48a54d36SAndroid Build Coastguard Worker 	}
356*48a54d36SAndroid Build Coastguard Worker 
357*48a54d36SAndroid Build Coastguard Worker 	*pResult = 0;
358*48a54d36SAndroid Build Coastguard Worker }
359*48a54d36SAndroid Build Coastguard Worker 
360*48a54d36SAndroid Build Coastguard Worker 
361*48a54d36SAndroid Build Coastguard Worker 
362*48a54d36SAndroid Build Coastguard Worker int CALLBACK
SortFunc(LPARAM lParam1,LPARAM lParam2,LPARAM lParamSort)363*48a54d36SAndroid Build Coastguard Worker CBrowsingPage::SortFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
364*48a54d36SAndroid Build Coastguard Worker {
365*48a54d36SAndroid Build Coastguard Worker 	CString str1;
366*48a54d36SAndroid Build Coastguard Worker 	CString	str2;
367*48a54d36SAndroid Build Coastguard Worker 	int		ret = 0;
368*48a54d36SAndroid Build Coastguard Worker 
369*48a54d36SAndroid Build Coastguard Worker 	CBrowsingPage * self = reinterpret_cast<CBrowsingPage*>( lParamSort );
370*48a54d36SAndroid Build Coastguard Worker 	require_quiet( self, exit );
371*48a54d36SAndroid Build Coastguard Worker 
372*48a54d36SAndroid Build Coastguard Worker 	str1 = self->m_browseListCtrl.GetItemText( (int) lParam1, 1 );
373*48a54d36SAndroid Build Coastguard Worker 	str2 = self->m_browseListCtrl.GetItemText( (int) lParam2, 1 );
374*48a54d36SAndroid Build Coastguard Worker 
375*48a54d36SAndroid Build Coastguard Worker 	ret = str1.Compare( str2 );
376*48a54d36SAndroid Build Coastguard Worker 
377*48a54d36SAndroid Build Coastguard Worker exit:
378*48a54d36SAndroid Build Coastguard Worker 
379*48a54d36SAndroid Build Coastguard Worker 	return ret;
380*48a54d36SAndroid Build Coastguard Worker }
381*48a54d36SAndroid Build Coastguard Worker 
382*48a54d36SAndroid Build Coastguard Worker 
383*48a54d36SAndroid Build Coastguard Worker // CAddBrowseDomain dialog
384*48a54d36SAndroid Build Coastguard Worker 
IMPLEMENT_DYNAMIC(CAddBrowseDomain,CDialog)385*48a54d36SAndroid Build Coastguard Worker IMPLEMENT_DYNAMIC(CAddBrowseDomain, CDialog)
386*48a54d36SAndroid Build Coastguard Worker CAddBrowseDomain::CAddBrowseDomain(CWnd* pParent /*=NULL*/)
387*48a54d36SAndroid Build Coastguard Worker 	: CDialog(CAddBrowseDomain::IDD, pParent)
388*48a54d36SAndroid Build Coastguard Worker {
389*48a54d36SAndroid Build Coastguard Worker }
390*48a54d36SAndroid Build Coastguard Worker 
~CAddBrowseDomain()391*48a54d36SAndroid Build Coastguard Worker CAddBrowseDomain::~CAddBrowseDomain()
392*48a54d36SAndroid Build Coastguard Worker {
393*48a54d36SAndroid Build Coastguard Worker }
394*48a54d36SAndroid Build Coastguard Worker 
DoDataExchange(CDataExchange * pDX)395*48a54d36SAndroid Build Coastguard Worker void CAddBrowseDomain::DoDataExchange(CDataExchange* pDX)
396*48a54d36SAndroid Build Coastguard Worker {
397*48a54d36SAndroid Build Coastguard Worker 	CDialog::DoDataExchange(pDX);
398*48a54d36SAndroid Build Coastguard Worker 	DDX_Control(pDX, IDC_COMBO1, m_comboBox);
399*48a54d36SAndroid Build Coastguard Worker }
400*48a54d36SAndroid Build Coastguard Worker 
401*48a54d36SAndroid Build Coastguard Worker 
402*48a54d36SAndroid Build Coastguard Worker BOOL
OnInitDialog()403*48a54d36SAndroid Build Coastguard Worker CAddBrowseDomain::OnInitDialog()
404*48a54d36SAndroid Build Coastguard Worker {
405*48a54d36SAndroid Build Coastguard Worker 	CConfigPropertySheet	*	psheet;
406*48a54d36SAndroid Build Coastguard Worker 	CConfigPropertySheet::StringList::iterator		it;
407*48a54d36SAndroid Build Coastguard Worker 
408*48a54d36SAndroid Build Coastguard Worker 	BOOL b = CDialog::OnInitDialog();
409*48a54d36SAndroid Build Coastguard Worker 
410*48a54d36SAndroid Build Coastguard Worker 	psheet = reinterpret_cast<CConfigPropertySheet*>(GetParent());
411*48a54d36SAndroid Build Coastguard Worker 	require_quiet( psheet, exit );
412*48a54d36SAndroid Build Coastguard Worker 
413*48a54d36SAndroid Build Coastguard Worker 	for ( it = psheet->m_browseDomains.begin(); it != psheet->m_browseDomains.end(); it++ )
414*48a54d36SAndroid Build Coastguard Worker 	{
415*48a54d36SAndroid Build Coastguard Worker 		CString text = *it;
416*48a54d36SAndroid Build Coastguard Worker 
417*48a54d36SAndroid Build Coastguard Worker 		if ( m_comboBox.FindStringExact( -1, *it ) == CB_ERR )
418*48a54d36SAndroid Build Coastguard Worker 		{
419*48a54d36SAndroid Build Coastguard Worker 			m_comboBox.AddString( *it );
420*48a54d36SAndroid Build Coastguard Worker 		}
421*48a54d36SAndroid Build Coastguard Worker 	}
422*48a54d36SAndroid Build Coastguard Worker 
423*48a54d36SAndroid Build Coastguard Worker exit:
424*48a54d36SAndroid Build Coastguard Worker 
425*48a54d36SAndroid Build Coastguard Worker 	return b;
426*48a54d36SAndroid Build Coastguard Worker }
427*48a54d36SAndroid Build Coastguard Worker 
428*48a54d36SAndroid Build Coastguard Worker 
429*48a54d36SAndroid Build Coastguard Worker void
OnOK()430*48a54d36SAndroid Build Coastguard Worker CAddBrowseDomain::OnOK()
431*48a54d36SAndroid Build Coastguard Worker {
432*48a54d36SAndroid Build Coastguard Worker 	m_comboBox.GetWindowText( m_text );
433*48a54d36SAndroid Build Coastguard Worker 
434*48a54d36SAndroid Build Coastguard Worker 	CDialog::OnOK();
435*48a54d36SAndroid Build Coastguard Worker }
436*48a54d36SAndroid Build Coastguard Worker 
437*48a54d36SAndroid Build Coastguard Worker 
438*48a54d36SAndroid Build Coastguard Worker 
439*48a54d36SAndroid Build Coastguard Worker BEGIN_MESSAGE_MAP(CAddBrowseDomain, CDialog)
440*48a54d36SAndroid Build Coastguard Worker END_MESSAGE_MAP()
441*48a54d36SAndroid Build Coastguard Worker 
442