diff options
Diffstat (limited to 'mDNSResponder/mDNSWindows/ControlPanel/ControlPanel.cpp')
-rwxr-xr-x | mDNSResponder/mDNSWindows/ControlPanel/ControlPanel.cpp | 380 |
1 files changed, 380 insertions, 0 deletions
diff --git a/mDNSResponder/mDNSWindows/ControlPanel/ControlPanel.cpp b/mDNSResponder/mDNSWindows/ControlPanel/ControlPanel.cpp new file mode 100755 index 00000000..4bf5df37 --- /dev/null +++ b/mDNSResponder/mDNSWindows/ControlPanel/ControlPanel.cpp @@ -0,0 +1,380 @@ +/* -*- 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. + */ + + +#include "ControlPanel.h" +#include "ConfigDialog.h" +#include "ConfigPropertySheet.h" +#include "resource.h" + +#include <DebugServices.h> + + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + + +static CCPApp theApp; + + +//--------------------------------------------------------------------------------------------------------------------------- +// GetControlPanelApp +//--------------------------------------------------------------------------------------------------------------------------- + +CCPApp* +GetControlPanelApp() +{ + CCPApp * pApp = (CCPApp*) AfxGetApp(); + + check( pApp ); + check( pApp->IsKindOf( RUNTIME_CLASS( CCPApp ) ) ); + + return pApp; +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CPlApplet +//--------------------------------------------------------------------------------------------------------------------------- + +LONG APIENTRY +CPlApplet(HWND hWndCPl, UINT uMsg, LONG lParam1, LONG lParam2) +{ + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + + CCPApp * pApp = GetControlPanelApp(); + + return ( LONG ) pApp->OnCplMsg(hWndCPl, uMsg, lParam1, lParam2); +} + + +IMPLEMENT_DYNAMIC(CCPApplet, CCmdTarget); + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApplet::CCPApplet +//--------------------------------------------------------------------------------------------------------------------------- + +CCPApplet::CCPApplet(UINT resourceId, UINT descId, CRuntimeClass * uiClass) +: + m_resourceId(resourceId), + m_descId(descId), + m_uiClass(uiClass), + m_pageNumber(0) +{ + check( uiClass ); + check( uiClass->IsDerivedFrom( RUNTIME_CLASS( CDialog ) ) || + uiClass->IsDerivedFrom( RUNTIME_CLASS( CPropertySheet ) ) ); + + m_name.LoadString(resourceId); +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApplet::~CCPApplet +//--------------------------------------------------------------------------------------------------------------------------- + +CCPApplet::~CCPApplet() +{ +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApplet::OnStartParms +//--------------------------------------------------------------------------------------------------------------------------- + +LRESULT +CCPApplet::OnStartParms(CWnd * pParentWnd, LPCTSTR extra) +{ + DEBUG_UNUSED( pParentWnd ); + + if ( extra ) + { + m_pageNumber = ::_ttoi( extra ) - 1; + } + + return 0; +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApplet::OnRun +//--------------------------------------------------------------------------------------------------------------------------- + +LRESULT +CCPApplet::OnRun(CWnd* pParentWnd) +{ + LRESULT lResult = 1; + CWnd * pWnd; + + InitCommonControls(); + + pWnd = (CWnd*) m_uiClass->CreateObject(); + + if ( pWnd ) + { + lResult = ERROR_SUCCESS; + + if ( pWnd->IsKindOf( RUNTIME_CLASS( CPropertySheet ) ) ) + { + CPropertySheet * pSheet = (CPropertySheet*) pWnd; + + pSheet->Construct(m_name, pParentWnd, m_pageNumber); + + pSheet->DoModal(); + } + else + { + check( pWnd->IsKindOf( RUNTIME_CLASS( CDialog ) ) ); + + CDialog * pDialog = (CDialog*) pWnd; + + pDialog->DoModal(); + } + + delete pWnd; + } + + return lResult; +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApplet::OnInquire +//--------------------------------------------------------------------------------------------------------------------------- + +LRESULT +CCPApplet::OnInquire(CPLINFO* pInfo) +{ + pInfo->idIcon = m_resourceId; + pInfo->idName = m_resourceId; + pInfo->idInfo = m_descId; + pInfo->lData = reinterpret_cast<LONG>(this); + + return 0; +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApplet::OnNewInquire +//--------------------------------------------------------------------------------------------------------------------------- + +LRESULT +CCPApplet::OnNewInquire(NEWCPLINFO* pInfo) +{ + DEBUG_UNUSED( pInfo ); + + return 1; +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApplet::OnSelect +//--------------------------------------------------------------------------------------------------------------------------- + +LRESULT +CCPApplet::OnSelect() +{ + return 0; +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApplet::OnStop +//--------------------------------------------------------------------------------------------------------------------------- + +LRESULT +CCPApplet::OnStop() +{ + return 0; +} + + +IMPLEMENT_DYNAMIC(CCPApp, CWinApp); + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApp::CCPApp +//--------------------------------------------------------------------------------------------------------------------------- + +CCPApp::CCPApp() +{ + debug_initialize( kDebugOutputTypeWindowsEventLog, "DNS-SD Control Panel", GetModuleHandle( NULL ) ); + debug_set_property( kDebugPropertyTagPrintLevel, kDebugLevelInfo ); +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApp::~CCPApp +//--------------------------------------------------------------------------------------------------------------------------- + +CCPApp::~CCPApp() +{ + while ( !m_applets.IsEmpty() ) + { + delete m_applets.RemoveHead(); + } +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApp::AddApplet +//--------------------------------------------------------------------------------------------------------------------------- + +void +CCPApp::AddApplet( CCPApplet * applet ) +{ + check( applet ); + + m_applets.AddTail( applet ); +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApp::OnInit +//--------------------------------------------------------------------------------------------------------------------------- + +LRESULT +CCPApp::OnInit() +{ + CCPApplet * applet; + + try + { + applet = new CCPApplet( IDR_APPLET, IDS_APPLET_DESCRIPTION, RUNTIME_CLASS( CConfigPropertySheet ) ); + } + catch (...) + { + applet = NULL; + } + + require_action( applet, exit, kNoMemoryErr ); + + AddApplet( applet ); + +exit: + + return m_applets.GetCount(); +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApp::OnExit +//--------------------------------------------------------------------------------------------------------------------------- + +LRESULT +CCPApp::OnExit() +{ + return 1; +} + + +//--------------------------------------------------------------------------------------------------------------------------- +// CCPApp::OnCplMsg +//--------------------------------------------------------------------------------------------------------------------------- + +LRESULT +CCPApp::OnCplMsg(HWND hWndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2) +{ + LRESULT lResult = 1; + + switch ( uMsg ) + { + case CPL_INIT: + { + lResult = OnInit(); + } + break; + + case CPL_EXIT: + { + lResult = OnExit(); + } + break; + + case CPL_GETCOUNT: + { + lResult = m_applets.GetCount(); + } + break; + + default: + { + POSITION pos = m_applets.FindIndex( lParam1 ); + check( pos ); + + CCPApplet * applet = m_applets.GetAt( pos ); + check( applet ); + + switch (uMsg) + { + case CPL_INQUIRE: + { + LPCPLINFO pInfo = reinterpret_cast<LPCPLINFO>(lParam2); + lResult = applet->OnInquire(pInfo); + } + break; + + case CPL_NEWINQUIRE: + { + LPNEWCPLINFO pInfo = reinterpret_cast<LPNEWCPLINFO>(lParam2); + lResult = applet->OnNewInquire(pInfo); + } + break; + + case CPL_STARTWPARMS: + { + CWnd * pParentWnd = CWnd::FromHandle(hWndCPl); + LPCTSTR lpszExtra = reinterpret_cast<LPCTSTR>(lParam2); + lResult = applet->OnStartParms(pParentWnd, lpszExtra); + } + break; + + case CPL_DBLCLK: + { + CWnd* pParentWnd = CWnd::FromHandle(hWndCPl); + lResult = applet->OnRun(pParentWnd); + } + break; + + case CPL_SELECT: + { + lResult = applet->OnSelect(); + } + break; + + case CPL_STOP: + { + lResult = applet->OnStop(); + } + break; + + default: + { + // TRACE(_T("Warning, Received an unknown control panel message:%d\n"), uMsg); + lResult = 1; + } + break; + } + } + break; + } + + return lResult; +} |