453 lines
16 KiB
C++
453 lines
16 KiB
C++
/*******************************************************************************
|
|
*
|
|
* (C) COPYRIGHT MICROSOFT CORPORATION, 1998
|
|
*
|
|
* TITLE: UPQUERY.CPP
|
|
*
|
|
* VERSION: 1.0
|
|
*
|
|
* AUTHOR: ShaunIv
|
|
*
|
|
* DATE: 9/28/1999
|
|
*
|
|
* DESCRIPTION: Download progress dialog. Displays the thumbnail and download progress.
|
|
*
|
|
*******************************************************************************/
|
|
#include "precomp.h"
|
|
#pragma hdrstop
|
|
#include "upquery.h"
|
|
#include "resource.h"
|
|
#include "simcrack.h"
|
|
#include "mboxex.h"
|
|
#include "runnpwiz.h"
|
|
#include "pviewids.h"
|
|
#include <wininet.h>
|
|
|
|
//
|
|
// This is the ID of the help hyperlink
|
|
//
|
|
#define STR_WORKING_WITH_PICTURES_HYPERLINK TEXT("WorkingWithPictures")
|
|
|
|
//
|
|
// This is the URL to which we navigate to display the "working with pictures" help
|
|
//
|
|
#define STR_HELP_DESTINATION TEXT("hcp://services/subsite?node=TopLevelBucket_1/Music__video__games_and_photos&topic=MS-ITS%3A%25HELP_LOCATION%25%5Cfilefold.chm%3A%3A/manage_your_pictures.htm&select=TopLevelBucket_1/Music__video__games_and_photos/photos_and_other_digital_images")
|
|
|
|
CCommonUploadQueryPage::CCommonUploadQueryPage( HWND hWnd )
|
|
: m_hWnd(hWnd),
|
|
m_pControllerWindow(NULL),
|
|
m_nWiaEventMessage(RegisterWindowMessage(STR_WIAEVENT_NOTIFICATION_MESSAGE))
|
|
{
|
|
}
|
|
|
|
CCommonUploadQueryPage::~CCommonUploadQueryPage(void)
|
|
{
|
|
m_hWnd = NULL;
|
|
m_pControllerWindow = NULL;
|
|
}
|
|
|
|
|
|
LRESULT CCommonUploadQueryPage::OnInitDialog( WPARAM, LPARAM lParam )
|
|
{
|
|
//
|
|
// Make sure this starts out NULL
|
|
//
|
|
m_pControllerWindow = NULL;
|
|
|
|
//
|
|
// Get the PROPSHEETPAGE.lParam
|
|
//
|
|
PROPSHEETPAGE *pPropSheetPage = reinterpret_cast<PROPSHEETPAGE*>(lParam);
|
|
if (pPropSheetPage)
|
|
{
|
|
m_pControllerWindow = reinterpret_cast<CAcquisitionManagerControllerWindow*>(pPropSheetPage->lParam);
|
|
if (m_pControllerWindow)
|
|
{
|
|
m_pControllerWindow->m_WindowList.Add(m_hWnd);
|
|
}
|
|
}
|
|
|
|
//
|
|
// Bail out
|
|
//
|
|
if (!m_pControllerWindow)
|
|
{
|
|
EndDialog(m_hWnd,IDCANCEL);
|
|
return -1;
|
|
}
|
|
|
|
SendDlgItemMessage( m_hWnd, IDC_TRANSFER_UPLOAD_NO, BM_SETCHECK, BST_CHECKED, 0 );
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
LRESULT CCommonUploadQueryPage::OnSetActive( WPARAM, LPARAM )
|
|
{
|
|
WIA_PUSH_FUNCTION((TEXT("CCommonUploadQueryPage::OnSetActive")));
|
|
|
|
//
|
|
// We do NOT want to exit on disconnect if we are on this page
|
|
//
|
|
m_pControllerWindow->m_OnDisconnect = 0;
|
|
|
|
//
|
|
// Set the buttons
|
|
//
|
|
if (m_pControllerWindow->m_bDisconnected)
|
|
{
|
|
//
|
|
// Don't allow "back" if we've been disabled
|
|
//
|
|
PropSheet_SetWizButtons( GetParent(m_hWnd), PSWIZB_NEXT );
|
|
}
|
|
else
|
|
{
|
|
//
|
|
// Allow finish and back
|
|
//
|
|
PropSheet_SetWizButtons( GetParent(m_hWnd), PSWIZB_NEXT|PSWIZB_BACK );
|
|
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
void CCommonUploadQueryPage::CleanupUploadWizard()
|
|
{
|
|
//
|
|
// Remove the old wizard's pages and clear everything
|
|
//
|
|
for (UINT i=0;i<m_pControllerWindow->m_nUploadWizardPageCount;++i)
|
|
{
|
|
if (m_pControllerWindow->m_PublishWizardPages[i])
|
|
{
|
|
PropSheet_RemovePage( GetParent( m_hWnd ), 0, m_pControllerWindow->m_PublishWizardPages[i] );
|
|
}
|
|
}
|
|
ZeroMemory( m_pControllerWindow->m_PublishWizardPages, sizeof(m_pControllerWindow->m_PublishWizardPages[0])*MAX_WIZ_PAGES );
|
|
m_pControllerWindow->m_nUploadWizardPageCount = 0;
|
|
|
|
//
|
|
// Release the old publish wizard
|
|
//
|
|
if (m_pControllerWindow->m_pPublishingWizard)
|
|
{
|
|
IUnknown_SetSite( m_pControllerWindow->m_pPublishingWizard, NULL );
|
|
}
|
|
m_pControllerWindow->m_pPublishingWizard = NULL;
|
|
}
|
|
|
|
LRESULT CCommonUploadQueryPage::OnWizNext( WPARAM, LPARAM )
|
|
{
|
|
//
|
|
// If the user has selected a web transfer, start the web transfer wizard
|
|
//
|
|
m_pControllerWindow->m_bUploadToWeb = false;
|
|
|
|
//
|
|
// Get the next page. Assume the finish page.
|
|
//
|
|
HPROPSHEETPAGE hNextPage = PropSheet_IndexToPage( GetParent(m_hWnd), m_pControllerWindow->m_nFinishPageIndex );
|
|
|
|
//
|
|
// Assume we aren't uploading the pictures
|
|
//
|
|
m_pControllerWindow->m_bUploadToWeb = false;
|
|
|
|
//
|
|
// Initialize the hresult
|
|
//
|
|
m_pControllerWindow->m_hrUploadResult = S_OK;
|
|
|
|
//
|
|
// Destroy the existing wizard if it exists
|
|
//
|
|
CleanupUploadWizard();
|
|
|
|
//
|
|
// If the user wants to publish these pictures
|
|
//
|
|
if (BST_CHECKED != SendDlgItemMessage( m_hWnd, IDC_TRANSFER_UPLOAD_NO, BM_GETCHECK, 0, 0 ))
|
|
{
|
|
//
|
|
// This means we are uploading
|
|
//
|
|
m_pControllerWindow->m_bUploadToWeb = true;
|
|
|
|
//
|
|
// Assume failure
|
|
//
|
|
m_pControllerWindow->m_hrUploadResult = E_FAIL;
|
|
|
|
//
|
|
// Which wizard?
|
|
//
|
|
DWORD dwFlags = SHPWHF_NONETPLACECREATE | SHPWHF_NORECOMPRESS;
|
|
LPTSTR pszWizardDefn = TEXT("InternetPhotoPrinting");
|
|
|
|
if (BST_CHECKED == SendDlgItemMessage( m_hWnd, IDC_TRANSFER_UPLOAD_TO_WEB, BM_GETCHECK, 0, 0 ))
|
|
{
|
|
dwFlags = 0;
|
|
pszWizardDefn = TEXT("PublishingWizard");
|
|
}
|
|
|
|
//
|
|
// Get all of the *UNIQUE* downloaded files
|
|
//
|
|
CSimpleDynamicArray<CSimpleString> UniqueFiles;
|
|
m_pControllerWindow->m_DownloadedFileInformationList.GetUniqueFiles(UniqueFiles);
|
|
|
|
//
|
|
// Make sure we have some files
|
|
//
|
|
if (UniqueFiles.Size())
|
|
{
|
|
//
|
|
// Get the data object for this file set
|
|
//
|
|
CComPtr<IDataObject> pDataObject;
|
|
m_pControllerWindow->m_hrUploadResult = NetPublishingWizard::CreateDataObjectFromFileList( UniqueFiles, &pDataObject );
|
|
if (SUCCEEDED(m_pControllerWindow->m_hrUploadResult) && pDataObject)
|
|
{
|
|
//
|
|
// Create a new publishing wizard
|
|
//
|
|
WIA_PRINTGUID((CLSID_PublishingWizard,TEXT("CLSID_PublishingWizard")));
|
|
WIA_PRINTGUID((IID_IPublishingWizard,TEXT("IID_IPublishingWizard")));
|
|
m_pControllerWindow->m_hrUploadResult = CoCreateInstance( CLSID_PublishingWizard, NULL, CLSCTX_INPROC_SERVER, IID_IPublishingWizard, (void**)&m_pControllerWindow->m_pPublishingWizard );
|
|
if (SUCCEEDED(m_pControllerWindow->m_hrUploadResult))
|
|
{
|
|
//
|
|
// Initialize the publishing wizard
|
|
//
|
|
m_pControllerWindow->m_hrUploadResult = m_pControllerWindow->m_pPublishingWizard->Initialize( pDataObject, dwFlags, pszWizardDefn);
|
|
if (SUCCEEDED(m_pControllerWindow->m_hrUploadResult))
|
|
{
|
|
//
|
|
// Get our wizard site
|
|
//
|
|
CComPtr<IWizardSite> pWizardSite;
|
|
m_pControllerWindow->m_hrUploadResult = m_pControllerWindow->QueryInterface( IID_IWizardSite, (void**)&pWizardSite );
|
|
if (SUCCEEDED(m_pControllerWindow->m_hrUploadResult))
|
|
{
|
|
//
|
|
// Set the wizard site
|
|
//
|
|
m_pControllerWindow->m_hrUploadResult = IUnknown_SetSite( m_pControllerWindow->m_pPublishingWizard, pWizardSite );
|
|
if (SUCCEEDED(m_pControllerWindow->m_hrUploadResult))
|
|
{
|
|
//
|
|
// Get the publishing wizard pages
|
|
//
|
|
m_pControllerWindow->m_hrUploadResult = m_pControllerWindow->m_pPublishingWizard->AddPages( m_pControllerWindow->m_PublishWizardPages, MAX_WIZ_PAGES, &m_pControllerWindow->m_nUploadWizardPageCount );
|
|
if (SUCCEEDED(m_pControllerWindow->m_hrUploadResult))
|
|
{
|
|
//
|
|
// Loop through and add all of the pages to the property sheet
|
|
//
|
|
for (UINT i=0;i<m_pControllerWindow->m_nUploadWizardPageCount && SUCCEEDED(m_pControllerWindow->m_hrUploadResult);++i)
|
|
{
|
|
//
|
|
// Make sure this is a valid page
|
|
//
|
|
if (m_pControllerWindow->m_PublishWizardPages[i])
|
|
{
|
|
//
|
|
// If we can't add a page, that is an error
|
|
//
|
|
if (!PropSheet_AddPage( GetParent( m_hWnd ), m_pControllerWindow->m_PublishWizardPages[i] ))
|
|
{
|
|
WIA_ERROR((TEXT("PropSheet_AddPage failed")));
|
|
m_pControllerWindow->m_hrUploadResult = E_FAIL;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
WIA_ERROR((TEXT("m_pControllerWindow->m_PublishWizardPages[i] was NULL")));
|
|
m_pControllerWindow->m_hrUploadResult = E_FAIL;
|
|
}
|
|
}
|
|
|
|
//
|
|
// If everything is OK up till now, we can transition to the first page of the publishing wizard
|
|
//
|
|
if (SUCCEEDED(m_pControllerWindow->m_hrUploadResult))
|
|
{
|
|
hNextPage = m_pControllerWindow->m_PublishWizardPages[0];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
WIA_PRINTHRESULT((m_pControllerWindow->m_hrUploadResult,TEXT("m_pControllerWindow->m_pPublishingWizard->AddPages failed")));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
WIA_PRINTHRESULT((m_pControllerWindow->m_hrUploadResult,TEXT("IUnknown_SetSite failed")));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
WIA_PRINTHRESULT((m_pControllerWindow->m_hrUploadResult,TEXT("m_pControllerWindow->QueryInterface( IID_IWizardSite ) failed")));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
WIA_PRINTHRESULT((m_pControllerWindow->m_hrUploadResult,TEXT("m_pPublishingWizard->Initialize failed")));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
WIA_PRINTHRESULT((m_pControllerWindow->m_hrUploadResult,TEXT("CoCreateInstance( CLSID_PublishingWizard failed")));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
WIA_PRINTHRESULT((m_pControllerWindow->m_hrUploadResult,TEXT("NetPublishingWizard::CreateDataObjectFromFileList failed")));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_pControllerWindow->m_hrUploadResult = E_FAIL;
|
|
WIA_ERROR((TEXT("There were no files")));
|
|
}
|
|
|
|
|
|
//
|
|
// If an error occurred, alert the user and clean up
|
|
//
|
|
if (FAILED(m_pControllerWindow->m_hrUploadResult))
|
|
{
|
|
//
|
|
// Clean up
|
|
//
|
|
CleanupUploadWizard();
|
|
|
|
//
|
|
// Tell the user
|
|
//
|
|
MessageBox( m_hWnd, CSimpleString(IDS_UNABLE_TO_PUBLISH,g_hInstance), CSimpleString(IDS_ERROR_TITLE,g_hInstance), MB_ICONERROR );
|
|
}
|
|
|
|
}
|
|
|
|
//
|
|
// If we have a next page, navigate to it.
|
|
//
|
|
if (hNextPage)
|
|
{
|
|
PropSheet_SetCurSel( GetParent(m_hWnd), hNextPage, -1 );
|
|
return -1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CCommonUploadQueryPage::OnWizBack( WPARAM, LPARAM )
|
|
{
|
|
PropSheet_SetCurSel( GetParent(m_hWnd), 0, m_pControllerWindow->m_nDestinationPageIndex );
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CCommonUploadQueryPage::OnQueryInitialFocus( WPARAM, LPARAM )
|
|
{
|
|
LRESULT lResult = 0;
|
|
|
|
if (BST_CHECKED == SendDlgItemMessage( m_hWnd, IDC_TRANSFER_UPLOAD_TO_WEB, BM_GETCHECK, 0, 0 ))
|
|
{
|
|
lResult = reinterpret_cast<LRESULT>(GetDlgItem( m_hWnd, IDC_TRANSFER_UPLOAD_TO_WEB ));
|
|
}
|
|
else if (BST_CHECKED == SendDlgItemMessage( m_hWnd, IDC_TRANSFER_UPLOAD_TO_PRINT, BM_GETCHECK, 0, 0 ))
|
|
{
|
|
lResult = reinterpret_cast<LRESULT>(GetDlgItem( m_hWnd, IDC_TRANSFER_UPLOAD_TO_PRINT ));
|
|
}
|
|
else
|
|
{
|
|
lResult = reinterpret_cast<LRESULT>(GetDlgItem( m_hWnd, IDC_TRANSFER_UPLOAD_NO ));
|
|
}
|
|
|
|
return lResult;
|
|
}
|
|
|
|
LRESULT CCommonUploadQueryPage::OnEventNotification( WPARAM, LPARAM lParam )
|
|
{
|
|
WIA_PUSH_FUNCTION((TEXT("CCommonUploadQueryPage::OnEventNotification") ));
|
|
CGenericWiaEventHandler::CEventMessage *pEventMessage = reinterpret_cast<CGenericWiaEventHandler::CEventMessage *>(lParam);
|
|
if (pEventMessage)
|
|
{
|
|
if (pEventMessage->EventId() == WIA_EVENT_DEVICE_DISCONNECTED)
|
|
{
|
|
if (PropSheet_GetCurrentPageHwnd(GetParent(m_hWnd)) == m_hWnd)
|
|
{
|
|
//
|
|
// Disable "back"
|
|
//
|
|
PropSheet_SetWizButtons( GetParent(m_hWnd), PSWIZB_NEXT );
|
|
}
|
|
}
|
|
|
|
//
|
|
// Don't delete the message, it is deleted in the controller window
|
|
//
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CCommonUploadQueryPage::OnHyperlinkClick( WPARAM wParam, LPARAM lParam )
|
|
{
|
|
LRESULT lResult = FALSE;
|
|
NMLINK *pNmLink = reinterpret_cast<NMLINK*>(lParam);
|
|
if (pNmLink)
|
|
{
|
|
WIA_TRACE((TEXT("ID: %s"),pNmLink->item.szID));
|
|
switch (pNmLink->hdr.idFrom)
|
|
{
|
|
case IDC_TRANSFER_UPLOAD_HELP:
|
|
{
|
|
if (!lstrcmp(pNmLink->item.szID,STR_WORKING_WITH_PICTURES_HYPERLINK))
|
|
{
|
|
ShellExecute( m_hWnd, NULL, STR_HELP_DESTINATION, NULL, TEXT(""), SW_SHOWNORMAL );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return lResult;
|
|
}
|
|
|
|
LRESULT CCommonUploadQueryPage::OnCommand( WPARAM wParam, LPARAM lParam )
|
|
{
|
|
SC_BEGIN_COMMAND_HANDLERS()
|
|
{
|
|
}
|
|
SC_END_COMMAND_HANDLERS();
|
|
}
|
|
|
|
LRESULT CCommonUploadQueryPage::OnNotify( WPARAM wParam, LPARAM lParam )
|
|
{
|
|
SC_BEGIN_NOTIFY_MESSAGE_HANDLERS()
|
|
{
|
|
SC_HANDLE_NOTIFY_MESSAGE_CONTROL(NM_RETURN,IDC_TRANSFER_UPLOAD_HELP,OnHyperlinkClick);
|
|
SC_HANDLE_NOTIFY_MESSAGE_CONTROL(NM_CLICK,IDC_TRANSFER_UPLOAD_HELP,OnHyperlinkClick);
|
|
SC_HANDLE_NOTIFY_MESSAGE_CODE(PSN_WIZBACK,OnWizBack);
|
|
SC_HANDLE_NOTIFY_MESSAGE_CODE(PSN_WIZNEXT,OnWizNext);
|
|
SC_HANDLE_NOTIFY_MESSAGE_CODE(PSN_SETACTIVE,OnSetActive);
|
|
SC_HANDLE_NOTIFY_MESSAGE_CODE(PSN_QUERYINITIALFOCUS,OnQueryInitialFocus);
|
|
}
|
|
SC_END_NOTIFY_MESSAGE_HANDLERS();
|
|
}
|
|
|
|
INT_PTR CALLBACK CCommonUploadQueryPage::DialogProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
|
|
{
|
|
SC_BEGIN_DIALOG_MESSAGE_HANDLERS(CCommonUploadQueryPage)
|
|
{
|
|
SC_HANDLE_DIALOG_MESSAGE( WM_INITDIALOG, OnInitDialog );
|
|
SC_HANDLE_DIALOG_MESSAGE( WM_COMMAND, OnCommand );
|
|
SC_HANDLE_DIALOG_MESSAGE( WM_NOTIFY, OnNotify );
|
|
}
|
|
SC_HANDLE_REGISTERED_DIALOG_MESSAGE( m_nWiaEventMessage, OnEventNotification );
|
|
SC_END_DIALOG_MESSAGE_HANDLERS();
|
|
}
|
|
|