174 lines
5.3 KiB
C++
174 lines
5.3 KiB
C++
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// Module Name:
|
|
// SetupUI.cpp
|
|
//
|
|
// Abstract:
|
|
// Implementation for the setup UI object that displays UI when the user
|
|
// chooses to activate a device's partnership.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "Pch.h"
|
|
#include "SetupUI.h"
|
|
#include "MyDeviceSyncHandler.h"
|
|
#include "Resources.h"
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// class CMyDeviceSetupUI
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Description:
|
|
// Create an instance of the setup UI class.
|
|
//
|
|
// Parameters:
|
|
// punkOuter - Outer IUnknown for aggregation.
|
|
// riid - ID of interface to return pointer to.
|
|
// pDeviceInfo - Info about the device to create the handler for.
|
|
// ppv - Interface pointer.
|
|
//
|
|
// Return Values:
|
|
// S_OK - Operation completed successfully.
|
|
// E_OUTOFMEMORY - Error allocating the object.
|
|
// Other HRESULTs - Error querying for requested interface.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
HRESULT CMyDeviceSetupUI_CreateInstance(__in CMyDeviceSyncHandler *pSyncHandler, __in REFIID riid, __deref_out void **ppv)
|
|
{
|
|
*ppv = NULL;
|
|
|
|
HRESULT hr = E_OUTOFMEMORY;
|
|
CMyDeviceSetupUI *pSetupUI = new CMyDeviceSetupUI(pSyncHandler);
|
|
if (pSetupUI != NULL)
|
|
{
|
|
hr = pSetupUI->QueryInterface(riid, ppv);
|
|
pSetupUI->Release();
|
|
}
|
|
|
|
return hr;
|
|
|
|
} //*** CMyDeviceSetupUI_CreateInstance
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Description:
|
|
// Constructor.
|
|
//
|
|
// Parameters:
|
|
// pSyncHandler - Handler being setup.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
CMyDeviceSetupUI::CMyDeviceSetupUI(__in CMyDeviceSyncHandler *pSyncHandler)
|
|
:
|
|
_cRef(1),
|
|
_pSyncHandler(pSyncHandler)
|
|
{
|
|
DllAddRef();
|
|
_pSyncHandler->AddRef();
|
|
|
|
} //*** CMyDeviceSetupUI::CMyDeviceSetupUI
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Description:
|
|
// Destructor.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
CMyDeviceSetupUI::~CMyDeviceSetupUI()
|
|
{
|
|
if (_pSyncHandler != NULL)
|
|
{
|
|
_pSyncHandler->Release();
|
|
}
|
|
DllRelease();
|
|
|
|
} //*** destructor CMyDeviceSetupUI::~CMyDeviceSetupUI
|
|
|
|
//----------------------------------------------------------------------------
|
|
// IUnknown (CMyDeviceSetupUI)
|
|
//----------------------------------------------------------------------------
|
|
|
|
STDMETHODIMP CMyDeviceSetupUI::QueryInterface(__in REFIID riid, __deref_out void **ppv)
|
|
{
|
|
static const QITAB qit[] =
|
|
{
|
|
QITABENT(CMyDeviceSetupUI, ISyncMgrUIOperation),
|
|
{ 0 },
|
|
};
|
|
|
|
return QISearch(this, qit, riid, ppv);
|
|
|
|
} //*** CMyDeviceSetupUI::QueryInterface
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
STDMETHODIMP_(ULONG) CMyDeviceSetupUI::Release()
|
|
{
|
|
ULONG cRef = InterlockedDecrement(&_cRef);
|
|
if (cRef == 0)
|
|
{
|
|
delete this;
|
|
}
|
|
return cRef;
|
|
|
|
} //*** CMyDeviceSetupUI::Release
|
|
|
|
//----------------------------------------------------------------------------
|
|
// ISyncMgrUIOperation (CMyDeviceSetupUI)
|
|
//----------------------------------------------------------------------------
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Description:
|
|
// Called by Sync Center to display UI to allow the user to setup the
|
|
// sync partnership.
|
|
//
|
|
// Implements: ISyncMgrUIOperation
|
|
//
|
|
// Parameters:
|
|
// hwndOwner - Owner window to host the UI on.
|
|
//
|
|
// Return Values:
|
|
// S_OK - Operation completed successfully.
|
|
// Failure HRESULT - Operation failed.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP CMyDeviceSetupUI::Run(__in HWND hwndOwner)
|
|
{
|
|
LPWSTR pszDeviceName = NULL;
|
|
HRESULT hr = _pSyncHandler->GetName(&pszDeviceName);
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
LPWSTR pszTitle = NULL;
|
|
hr = FormatString(g_hmodThisDll, IDS_SETUP_TITLE, &pszTitle);
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
LPWSTR pszQuestion = NULL;
|
|
hr = FormatString(g_hmodThisDll, IDS_SETUP_QUESTION, &pszQuestion, pszDeviceName);
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
int nResult = MessageBoxW(hwndOwner, pszQuestion, pszTitle, (MB_YESNO | MB_ICONQUESTION));
|
|
if (nResult != IDYES)
|
|
{
|
|
hr = E_ABORT;
|
|
}
|
|
LocalFree(pszQuestion);
|
|
}
|
|
LocalFree(pszTitle);
|
|
} // if: title string loaded successfully
|
|
CoTaskMemFree(pszDeviceName);
|
|
} // if: device name retrieved from the handler successfully
|
|
|
|
return hr;
|
|
|
|
} //*** CMyDeviceSetupUI::Run
|