X-Git-Url: https://git.saurik.com/apple/mdnsresponder.git/blobdiff_plain/7dc706029db60e343022e1be32a35a5958ad1a84..263eeeabe5fb4d3daa8a9134371ca9a3e45875b0:/mDNSWindows/ControlPanel/ThirdPage.cpp diff --git a/mDNSWindows/ControlPanel/ThirdPage.cpp b/mDNSWindows/ControlPanel/ThirdPage.cpp deleted file mode 100755 index a483418..0000000 --- a/mDNSWindows/ControlPanel/ThirdPage.cpp +++ /dev/null @@ -1,456 +0,0 @@ -/* -*- Mode: C; tab-width: 4 -*- - * - * Copyright (c) 2002-2004 Apple Computer, Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - - Change History (most recent first): - -$Log: ThirdPage.cpp,v $ -Revision 1.5 2006/08/14 23:25:29 cheshire -Re-licensed mDNSResponder daemon source code under Apache License, Version 2.0 - -Revision 1.4 2005/10/05 20:46:50 herscher - Move Wide-Area preferences to another part of the registry so they don't removed during an update-install. - -Revision 1.3 2005/03/07 18:27:42 shersche - Fix problem when ControlPanel commits changes to the browse domain list - -Revision 1.2 2005/03/03 19:55:22 shersche - ControlPanel source code isn't saving CVS log info - - -*/ - -#include "ThirdPage.h" -#include "resource.h" - -#include "ConfigPropertySheet.h" -#include "SharedSecret.h" - -#include - -#define MAX_KEY_LENGTH 255 - - -IMPLEMENT_DYNCREATE(CThirdPage, CPropertyPage) - - -//--------------------------------------------------------------------------------------------------------------------------- -// CThirdPage::CThirdPage -//--------------------------------------------------------------------------------------------------------------------------- - -CThirdPage::CThirdPage() -: - CPropertyPage(CThirdPage::IDD) -{ - //{{AFX_DATA_INIT(CThirdPage) - //}}AFX_DATA_INIT - - m_firstTime = true; -} - - -//--------------------------------------------------------------------------------------------------------------------------- -// CThirdPage::~CThirdPage -//--------------------------------------------------------------------------------------------------------------------------- - -CThirdPage::~CThirdPage() -{ -} - - -//--------------------------------------------------------------------------------------------------------------------------- -// CThirdPage::DoDataExchange -//--------------------------------------------------------------------------------------------------------------------------- - -void CThirdPage::DoDataExchange(CDataExchange* pDX) -{ - CPropertyPage::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CThirdPage) - //}}AFX_DATA_MAP - DDX_Control(pDX, IDC_BROWSE_LIST, m_browseListCtrl); - DDX_Control(pDX, IDC_REMOVE_BROWSE_DOMAIN, m_removeButton); -} - -BEGIN_MESSAGE_MAP(CThirdPage, CPropertyPage) - //{{AFX_MSG_MAP(CThirdPage) - //}}AFX_MSG_MAP - ON_BN_CLICKED(IDC_ADD_BROWSE_DOMAIN, OnBnClickedAddBrowseDomain) - ON_BN_CLICKED(IDC_REMOVE_BROWSE_DOMAIN, OnBnClickedRemoveBrowseDomain) - ON_NOTIFY(LVN_ITEMCHANGED, IDC_BROWSE_LIST, OnLvnItemchangedBrowseList) -END_MESSAGE_MAP() - - -//--------------------------------------------------------------------------------------------------------------------------- -// CThirdPage::SetModified -//--------------------------------------------------------------------------------------------------------------------------- - -void CThirdPage::SetModified( BOOL bChanged ) -{ - m_modified = bChanged; - - CPropertyPage::SetModified( bChanged ); -} - - -//--------------------------------------------------------------------------------------------------------------------------- -// CThirdPage::OnSetActive -//--------------------------------------------------------------------------------------------------------------------------- - -BOOL -CThirdPage::OnSetActive() -{ - CConfigPropertySheet * psheet; - HKEY key = NULL; - HKEY subKey = NULL; - DWORD dwSize; - DWORD enabled; - DWORD err; - TCHAR subKeyName[MAX_KEY_LENGTH]; - DWORD cSubKeys = 0; - DWORD cbMaxSubKey; - DWORD cchMaxClass; - int nIndex; - DWORD i; - BOOL b = CPropertyPage::OnSetActive(); - - psheet = reinterpret_cast(GetParent()); - require_quiet( psheet, exit ); - - m_modified = FALSE; - - if ( m_firstTime ) - { - m_browseListCtrl.SetExtendedStyle((m_browseListCtrl.GetStyle() & (~LVS_EX_GRIDLINES))|LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT); - - m_browseListCtrl.InsertColumn(0, L"", LVCFMT_LEFT, 20 ); - m_browseListCtrl.InsertColumn(1, L"", LVCFMT_LEFT, 345); - - m_firstTime = false; - } - - m_initialized = false; - - // Clear out what's there - - m_browseListCtrl.DeleteAllItems(); - - // Now populate the browse domain box - - err = RegCreateKey( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\DynDNS\\Setup\\" kServiceDynDNSBrowseDomains, &key ); - require_noerr( err, exit ); - - // Get information about this node - - err = RegQueryInfoKey( key, NULL, NULL, NULL, &cSubKeys, &cbMaxSubKey, &cchMaxClass, NULL, NULL, NULL, NULL, NULL ); - require_noerr( err, exit ); - - for ( i = 0; i < cSubKeys; i++) - { - dwSize = MAX_KEY_LENGTH; - - err = RegEnumKeyEx( key, i, subKeyName, &dwSize, NULL, NULL, NULL, NULL ); - require_noerr( err, exit ); - - err = RegOpenKey( key, subKeyName, &subKey ); - require_noerr( err, exit ); - - dwSize = sizeof( DWORD ); - err = RegQueryValueEx( subKey, L"Enabled", NULL, NULL, (LPBYTE) &enabled, &dwSize ); - require_noerr( err, exit ); - - nIndex = m_browseListCtrl.InsertItem( m_browseListCtrl.GetItemCount(), L""); - m_browseListCtrl.SetItemText( nIndex, 1, subKeyName ); - m_browseListCtrl.SetCheck( nIndex, enabled ); - - RegCloseKey( subKey ); - subKey = NULL; - } - - m_browseListCtrl.SortItems( SortFunc, (DWORD_PTR) this ); - - m_removeButton.EnableWindow( FALSE ); - -exit: - - if ( subKey ) - { - RegCloseKey( subKey ); - } - - if ( key ) - { - RegCloseKey( key ); - } - - m_initialized = true; - - return b; -} - - - -//--------------------------------------------------------------------------------------------------------------------------- -// CThirdPage::OnOK -//--------------------------------------------------------------------------------------------------------------------------- - -void -CThirdPage::OnOK() -{ - if ( m_modified ) - { - Commit(); - } -} - - - -//--------------------------------------------------------------------------------------------------------------------------- -// CThirdPage::Commit -//--------------------------------------------------------------------------------------------------------------------------- - -void -CThirdPage::Commit() -{ - HKEY key = NULL; - HKEY subKey = NULL; - TCHAR subKeyName[MAX_KEY_LENGTH]; - DWORD cSubKeys = 0; - DWORD cbMaxSubKey; - DWORD cchMaxClass; - DWORD dwSize; - int i; - DWORD err; - - err = RegCreateKey( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\DynDNS\\Setup\\" kServiceDynDNSBrowseDomains, &key ); - require_noerr( err, exit ); - - // First, remove all the entries that are there - - err = RegQueryInfoKey( key, NULL, NULL, NULL, &cSubKeys, &cbMaxSubKey, &cchMaxClass, NULL, NULL, NULL, NULL, NULL ); - require_noerr( err, exit ); - - for ( i = 0; i < (int) cSubKeys; i++ ) - { - dwSize = MAX_KEY_LENGTH; - - err = RegEnumKeyEx( key, 0, subKeyName, &dwSize, NULL, NULL, NULL, NULL ); - require_noerr( err, exit ); - - err = RegDeleteKey( key, subKeyName ); - require_noerr( err, exit ); - } - - // Now re-populate - - for ( i = 0; i < m_browseListCtrl.GetItemCount(); i++ ) - { - DWORD enabled = (DWORD) m_browseListCtrl.GetCheck( i ); - - err = RegCreateKey( key, m_browseListCtrl.GetItemText( i, 1 ), &subKey ); - require_noerr( err, exit ); - - err = RegSetValueEx( subKey, L"Enabled", NULL, REG_DWORD, (LPBYTE) &enabled, sizeof( enabled ) ); - require_noerr( err, exit ); - - RegCloseKey( subKey ); - subKey = NULL; - } - -exit: - - if ( subKey ) - { - RegCloseKey( subKey ); - } - - if ( key ) - { - RegCloseKey( key ); - } -} - - - -//--------------------------------------------------------------------------------------------------------------------------- -// CThirdPage::OnBnClickedAddBrowseDomain -//--------------------------------------------------------------------------------------------------------------------------- - -void -CThirdPage::OnBnClickedAddBrowseDomain() -{ - CAddBrowseDomain dlg( GetParent() ); - - if ( ( dlg.DoModal() == IDOK ) && ( dlg.m_text.GetLength() > 0 ) ) - { - int nIndex; - - nIndex = m_browseListCtrl.InsertItem( m_browseListCtrl.GetItemCount(), L""); - m_browseListCtrl.SetItemText( nIndex, 1, dlg.m_text ); - m_browseListCtrl.SetCheck( nIndex, 1 ); - - m_browseListCtrl.SortItems( SortFunc, (DWORD_PTR) this ); - - m_browseListCtrl.Invalidate(); - - SetModified( TRUE ); - } -} - - -//--------------------------------------------------------------------------------------------------------------------------- -// CThirdPage::OnBnClickedRemoveBrowseDomain -//--------------------------------------------------------------------------------------------------------------------------- - -void -CThirdPage::OnBnClickedRemoveBrowseDomain() -{ - UINT selectedCount = m_browseListCtrl.GetSelectedCount(); - int nItem = -1; - UINT i; - - // Update all of the selected items. - - for ( i = 0; i < selectedCount; i++ ) - { - nItem = m_browseListCtrl.GetNextItem( -1, LVNI_SELECTED ); - check( nItem != -1 ); - - m_browseListCtrl.DeleteItem( nItem ); - - SetModified( TRUE ); - } - - m_removeButton.EnableWindow( FALSE ); -} - - -void -CThirdPage::OnLvnItemchangedBrowseList(NMHDR *pNMHDR, LRESULT *pResult) -{ - if ( m_browseListCtrl.GetSelectedCount() ) - { - m_removeButton.EnableWindow( TRUE ); - } - - if ( m_initialized ) - { - NM_LISTVIEW * pNMListView = (NM_LISTVIEW*)pNMHDR; - - BOOL bPrevState = (BOOL) ( ( ( pNMListView->uOldState & LVIS_STATEIMAGEMASK ) >> 12 ) - 1 ); - - if ( bPrevState < 0 ) - { - bPrevState = 0; - } - - - BOOL bChecked = ( BOOL ) ( ( ( pNMListView->uNewState & LVIS_STATEIMAGEMASK ) >> 12) - 1 ); - - if ( bChecked < 0 ) - { - bChecked = 0; - } - - if ( bPrevState != bChecked ) - { - SetModified( TRUE ); - } - } - - *pResult = 0; -} - - - -int CALLBACK -CThirdPage::SortFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) -{ - CString str1; - CString str2; - int ret = 0; - - CThirdPage * self = reinterpret_cast( lParamSort ); - require_quiet( self, exit ); - - str1 = self->m_browseListCtrl.GetItemText( (int) lParam1, 1 ); - str2 = self->m_browseListCtrl.GetItemText( (int) lParam2, 1 ); - - ret = str1.Compare( str2 ); - -exit: - - return ret; -} - - -// CAddBrowseDomain dialog - -IMPLEMENT_DYNAMIC(CAddBrowseDomain, CDialog) -CAddBrowseDomain::CAddBrowseDomain(CWnd* pParent /*=NULL*/) - : CDialog(CAddBrowseDomain::IDD, pParent) -{ -} - -CAddBrowseDomain::~CAddBrowseDomain() -{ -} - -void CAddBrowseDomain::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); - DDX_Control(pDX, IDC_COMBO1, m_comboBox); -} - - -BOOL -CAddBrowseDomain::OnInitDialog() -{ - CConfigPropertySheet * psheet; - CConfigPropertySheet::StringList::iterator it; - - BOOL b = CDialog::OnInitDialog(); - - psheet = reinterpret_cast(GetParent()); - require_quiet( psheet, exit ); - - for ( it = psheet->m_browseDomains.begin(); it != psheet->m_browseDomains.end(); it++ ) - { - CString text = *it; - - if ( m_comboBox.FindStringExact( -1, *it ) == CB_ERR ) - { - m_comboBox.AddString( *it ); - } - } - -exit: - - return b; -} - - -void -CAddBrowseDomain::OnOK() -{ - m_comboBox.GetWindowText( m_text ); - - CDialog::OnOK(); -} - - - -BEGIN_MESSAGE_MAP(CAddBrowseDomain, CDialog) -END_MESSAGE_MAP() -