summaryrefslogtreecommitdiffstats
path: root/mDNSResponder/mDNSWindows/ControlPanel/ControlPanel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mDNSResponder/mDNSWindows/ControlPanel/ControlPanel.cpp')
-rwxr-xr-xmDNSResponder/mDNSWindows/ControlPanel/ControlPanel.cpp380
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;
+}