|
|
//--------------------------------------------------------------------------;
//
// File: titleopt.cpp
//
// Copyright (c) 1998 Microsoft Corporation. All rights reserved
//
//--------------------------------------------------------------------------;
#include "precomp.h"
#include "cdopti.h"
#include "cdoptimp.h"
#include "helpids.h"
//////////////
// Help ID's
//////////////
#pragma data_seg(".text")
const static DWORD aTitleOptsHelp[] = { IDC_CURPROVIDER_TEXT, IDH_SELECTCURRENTPROVIDER, IDC_PROVIDERPICKER, IDH_SELECTCURRENTPROVIDER, IDC_ALBUMBATCH_GROUP, IDH_ABOUTBATCHING, IDC_ALBUMINFO_TEXT, IDH_ABOUTALBUMS, IDC_DOWNLOADPROMPT, IDH_DOWNLOADPROMPT, IDC_BATCHENABLED, IDH_BATCHENABLED, IDC_TITLERESTORE, IDH_TITLEDEFAULTS, IDC_BATCHTEXT, IDH_NUMBATCHED, IDC_DOWNLOADENABLED, IDH_AUTODOWNLOADENABLED, IDC_DOWNLOADNOW, IDH_DOWNLOADNOW, IDC_DOWNLOAD_GROUP, IDH_DOWNLOADING, IDC_ALBUMBATCH_TEXT, IDH_ABOUTBATCHING, 0, 0 }; #pragma data_seg()
////////////
// Functions
////////////
STDMETHODIMP_(void) CCDOpt::ToggleInternetDownload(HWND hDlg) { if (m_pCDCopy) { LPCDOPTDATA pCDData = m_pCDCopy->pCDData;
pCDData->fDownloadEnabled = Button_GetCheck(GetDlgItem(hDlg, IDC_DOWNLOADENABLED));
EnableWindow(GetDlgItem(hDlg, IDC_PROVIDERPICKER), pCDData->fDownloadEnabled); EnableWindow(GetDlgItem(hDlg, IDC_CURPROVIDER_TEXT), pCDData->fDownloadEnabled); EnableWindow(GetDlgItem(hDlg, IDC_DOWNLOADPROMPT), pCDData->fDownloadEnabled);
ToggleApplyButton(hDlg); } }
STDMETHODIMP_(void) CCDOpt::UpdateBatched(HWND hDlg) { if (hDlg != NULL) { TCHAR szNum[MAX_PATH]; TCHAR szBatch[MAX_PATH];
if (m_pCDOpts->dwBatchedTitles == 0 || m_pCDOpts->pfnDownloadTitle == NULL) { EnableWindow(GetDlgItem(hDlg, IDC_DOWNLOADNOW), FALSE); } else { EnableWindow(GetDlgItem(hDlg, IDC_DOWNLOADNOW), TRUE); }
LoadString( m_hInst, IDS_BATCHTEXT, szBatch, sizeof( szBatch )/sizeof(TCHAR) ); wsprintf(szNum, TEXT("%s %d"), szBatch, m_pCDOpts->dwBatchedTitles); SetWindowText(GetDlgItem(hDlg, IDC_BATCHTEXT), szNum); } }
STDMETHODIMP_(BOOL) CCDOpt::InitTitleOptions(HWND hDlg) { if (m_pCDCopy) { LPCDOPTDATA pCDData = m_pCDCopy->pCDData; LPCDPROVIDER pProvider;
CheckDlgButton(hDlg, IDC_DOWNLOADENABLED, pCDData->fDownloadEnabled); CheckDlgButton(hDlg, IDC_DOWNLOADPROMPT, pCDData->fDownloadPrompt); CheckDlgButton(hDlg, IDC_BATCHENABLED, pCDData->fBatchEnabled);
m_hTitleWnd = hDlg; UpdateBatched(m_hTitleWnd);
SendDlgItemMessage(hDlg, IDC_PROVIDERPICKER, CB_RESETCONTENT,0,0);
pProvider = m_pCDCopy->pProviderList;
while (pProvider) { LRESULT dwIndex = SendDlgItemMessage(hDlg, IDC_PROVIDERPICKER, CB_INSERTSTRING, (WPARAM) -1, (LPARAM) pProvider->szProviderName);
if (dwIndex != CB_ERR && dwIndex != CB_ERRSPACE) { SendDlgItemMessage(hDlg, IDC_PROVIDERPICKER, CB_SETITEMDATA, (WPARAM) dwIndex, (LPARAM) pProvider);
if (pProvider == m_pCDCopy->pCurrentProvider) { SendDlgItemMessage(hDlg, IDC_PROVIDERPICKER, CB_SETCURSEL, (WPARAM) dwIndex, 0); } }
pProvider = pProvider->pNext; }
ToggleInternetDownload(hDlg); }
return TRUE; }
STDMETHODIMP_(void) CCDOpt::RestoreTitleDefaults(HWND hDlg) { if (m_pCDCopy) { LPCDOPTDATA pCDData = m_pCDCopy->pCDData;
pCDData->fDownloadEnabled = CDDEFAULT_DOWNLOADENABLED; pCDData->fDownloadPrompt = CDDEFAULT_DOWNLOADPROMPT; pCDData->fBatchEnabled = CDDEFAULT_BATCHENABLED;
m_pCDCopy->pCurrentProvider = m_pCDCopy->pDefaultProvider;
InitTitleOptions(hDlg);
ToggleApplyButton(hDlg); } }
STDMETHODIMP_(void) CCDOpt::ChangeCDProvider(HWND hDlg) { if (m_pCDCopy) { LRESULT dwResult = SendDlgItemMessage(hDlg, IDC_PROVIDERPICKER, CB_GETCURSEL, 0, 0);
if (dwResult != CB_ERR) { dwResult = SendDlgItemMessage(hDlg, IDC_PROVIDERPICKER, CB_GETITEMDATA, (WPARAM) dwResult, 0);
if (dwResult != CB_ERR) { m_pCDCopy->pCurrentProvider = (LPCDPROVIDER) dwResult; } }
ToggleApplyButton(hDlg); } }
STDMETHODIMP_(void) CCDOpt::DownloadNow(HWND hDlg) { if (m_pCDOpts->dwBatchedTitles && m_pCDOpts->pfnDownloadTitle) { TCHAR szNum[MAX_PATH]; TCHAR szBatch[MAX_PATH];
m_pCDOpts->dwBatchedTitles = m_pCDOpts->pfnDownloadTitle(NULL, m_pCDOpts->lParam, hDlg);
EnableWindow(GetDlgItem(hDlg, IDC_DOWNLOADNOW), m_pCDOpts->dwBatchedTitles != 0);
LoadString( m_hInst, IDS_BATCHTEXT, szBatch, sizeof( szBatch )/sizeof(TCHAR) ); wsprintf(szNum, TEXT("%s %d"), szBatch, m_pCDOpts->dwBatchedTitles); SetWindowText(GetDlgItem(hDlg, IDC_BATCHTEXT), szNum); } }
STDMETHODIMP_(INT_PTR) CCDOpt::TitleOptions(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { BOOL fResult = TRUE;
switch (msg) { default: fResult = FALSE; break;
case WM_DESTROY: { m_hTitleWnd = NULL; } break;
case WM_CONTEXTMENU: { WinHelp((HWND)wParam, gszHelpFile, HELP_CONTEXTMENU, (ULONG_PTR)(LPSTR)aTitleOptsHelp); } break;
case WM_HELP: { WinHelp((HWND) ((LPHELPINFO)lParam)->hItemHandle, gszHelpFile, HELP_WM_HELP, (ULONG_PTR)(LPSTR)aTitleOptsHelp); } break;
case WM_INITDIALOG: { fResult = InitTitleOptions(hDlg); } break;
case WM_COMMAND: { LPCDOPTDATA pCDData = m_pCDCopy->pCDData;
switch (LOWORD(wParam)) { case IDC_TITLERESTORE: RestoreTitleDefaults(hDlg); break;
case IDC_DOWNLOADENABLED: ToggleInternetDownload(hDlg); break;
case IDC_DOWNLOADPROMPT: pCDData->fDownloadPrompt = Button_GetCheck(GetDlgItem(hDlg, IDC_DOWNLOADPROMPT)); ToggleApplyButton(hDlg); break;
case IDC_BATCHENABLED: pCDData->fBatchEnabled = Button_GetCheck(GetDlgItem(hDlg, IDC_BATCHENABLED)); ToggleApplyButton(hDlg); break;
case IDC_DOWNLOADNOW: DownloadNow(hDlg); break;
case IDC_PROVIDERPICKER: { if (HIWORD(wParam) == CBN_SELCHANGE) { ChangeCDProvider(hDlg); } } break;
default: fResult = FALSE; break; } } break;
case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR) lParam;
switch (pnmh->code) { case PSN_APPLY: { ApplyCurrentSettings(); } } } break; }
return fResult; }
///////////////////
// Dialog handler
//
INT_PTR CALLBACK CCDOpt::TitleOptionsProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { INT_PTR fResult = TRUE; CCDOpt *pCDOpt = (CCDOpt *) GetWindowLongPtr(hDlg, DWLP_USER);
if (msg == WM_INITDIALOG) { pCDOpt = (CCDOpt *) ((LPPROPSHEETPAGE) lParam)->lParam; SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR) pCDOpt); }
if (pCDOpt) { fResult = pCDOpt->TitleOptions(hDlg, msg, wParam, lParam); }
if (msg == WM_DESTROY) { pCDOpt = NULL; }
return(fResult); }
|