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