//+--------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1994 - 1996.
//  
//  File:       nameit.cxx
//
//  Contents:   Task wizard naming property page implementation.
//
//  Classes:    CNameItPage
//
//  History:    11-21-1997   SusiA 
//
//---------------------------------------------------------------------------

#include "precomp.h"

extern OSVERSIONINFOA g_OSVersionInfo; // osVersionInfo,
extern LANGID g_LangIdSystem;      // LangId of system we are running on.


CNameItPage *g_pNameItPage = NULL;

extern CSelectDailyPage *g_pDailyPage;

//+-------------------------------------------------------------------------------
//  FUNCTION: SchedWizardNameItDlgProc(HWND, UINT, WPARAM, LPARAM)
//
//  PURPOSE: Callback dialog procedure for the property page
//
//  PARAMETERS:
//    hDlg      - Dialog box window handle
//    uMessage  - current message
//    wParam    - depends on message
//    lParam    - depends on message
//
//  RETURN VALUE:
//
//    Depends on message.  In general, return TRUE if we process it.
//
//  COMMENTS:
//
//+-------------------------------------------------------------------------------

BOOL CALLBACK SchedWizardNameItDlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam)
{

	switch (uMessage)
	{
		
		case WM_INITDIALOG:         
			{
				if (g_pNameItPage)
					g_pNameItPage->Initialize(hDlg);

				//This handles the 256 color processing init
				//for the .bmp
				InitPage(hDlg,lParam);
			}
            break;

        case WM_PAINT:
            WmPaint(hDlg, uMessage, wParam, lParam);
            break;

        case WM_PALETTECHANGED:
            WmPaletteChanged(hDlg, wParam);
            break;

        case WM_QUERYNEWPALETTE:
            return( WmQueryNewPalette(hDlg) );
            break;

        case WM_ACTIVATE:
            return( WmActivate(hDlg, wParam, lParam) );
            break;

		case WM_DESTROY:
		{
			Unload256ColorBitmap();
		}
		break;

		case WM_NOTIFY:
    		switch (((NMHDR FAR *) lParam)->code) 
    		{

  				case PSN_KILLACTIVE:
	           		SetWindowLongPtr(hDlg,	DWLP_MSGRESULT, FALSE);
					return 1;
					break;

				case PSN_RESET:
					// reset to the original values
	           		SetWindowLongPtr(hDlg,	DWLP_MSGRESULT, FALSE);
					break;

 				case PSN_SETACTIVE:
	    			PropSheet_SetWizButtons(GetParent(hDlg), PSWIZB_BACK | PSWIZB_NEXT);
				break;

                case PSN_WIZNEXT:

					if (g_pNameItPage)
					{
						if (!g_pNameItPage->SetScheduleName())
						{
							SchedUIErrorDialog(hDlg, IERR_INVALIDSCHEDNAME);
							// reset to the original values
	           				SetWindowLongPtr(hDlg,	DWLP_MSGRESULT, -1);
							break;
						}
					}
					if (g_pDailyPage)
					{
						g_pDailyPage->SetITrigger();
					}
     				break;

				default:
					return FALSE;
    	}
		break;
		
		default:
			return FALSE;
	}
	return TRUE;   

}
    
    
//+--------------------------------------------------------------------------
//
//  Member:     CNameItPage::CNameItPage
//
//  Synopsis:   ctor
//
//              [phPSP]                - filled with prop page handle
//
//  History:    11-21-1997   SusiA   Stole from Task Scheduler wizard
//
//---------------------------------------------------------------------------

CNameItPage::CNameItPage(
    HINSTANCE hinst,
    ISyncSchedule *pISyncSched,
    HPROPSHEETPAGE *phPSP)
{
	ZeroMemory(&m_psp, sizeof(PROPSHEETPAGE));

	g_pNameItPage = this;

   	m_psp.dwSize = sizeof (PROPSHEETPAGE);
	m_psp.hInstance = hinst;
        m_psp.dwFlags = PSP_DEFAULT;
	m_psp.pszTemplate = MAKEINTRESOURCE(IDD_SCHEDWIZ_NAMEIT);
	m_psp.pszIcon = NULL;
	m_psp.pfnDlgProc = (DLGPROC) SchedWizardNameItDlgProc;
	m_psp.lParam = 0;

	m_pISyncSched = pISyncSched;
	m_pISyncSched->AddRef();

#ifdef WIZARD97
    m_psp.dwFlags |= PSP_HIDEHEADER;
#endif // WIZARD97

   *phPSP = CreatePropertySheetPage(&m_psp);


}

//+--------------------------------------------------------------------------
//
//  Member:     CNameItPage::Initialize(HWND hwnd)
//
//  Synopsis:   initialize the name it page and set the task name to a unique 
//				new onestop name
//
//  History:    11-21-1997   SusiA   
//
//---------------------------------------------------------------------------

BOOL CNameItPage::Initialize(HWND hwnd)
{
	WCHAR pwszNewName[MAX_PATH+1];
#ifndef _UNICODE
	TCHAR ptszNewName[MAX_PATH+1];
#else
	TCHAR *ptszNewName;
#endif // _UNICODE
	DWORD dwSize = MAX_PATH;
	m_hwnd = hwnd;

	m_pISyncSched->GetScheduleName(&dwSize, pwszNewName);

#ifndef _UNICODE
	ConvertString(ptszNewName, pwszNewName, MAX_PATH);
#else
        ptszNewName = pwszNewName;
#endif
		
	HWND hwndEdit = GetDlgItem(m_hwnd, IDC_NAMEIT);

        // IE5 doesn't setup edit controls properly, review
        SetCtrlFont(hwndEdit,g_OSVersionInfo.dwPlatformId,g_LangIdSystem);

         // set the limit on the edit box for entering the name
        SendMessage(hwndEdit,EM_SETLIMITTEXT,MAX_PATH,0);

	Edit_SetText(hwndEdit, ptszNewName);

	return TRUE;
}


//+--------------------------------------------------------------------------
//
//  Member:     BOOL CNameItPage::SetScheduleName()
//
//  Synopsis:   create a new schedule 
//
//  History:    11-21-1997   SusiA   
//
//---------------------------------------------------------------------------

BOOL CNameItPage::SetScheduleName()
{
WCHAR pwszNewName[MAX_PATH+1];
HWND hwndEdit = GetDlgItem(m_hwnd, IDC_NAMEIT);

	Edit_GetText(hwndEdit, pwszNewName, MAX_PATH);

    if (S_OK == m_pISyncSched->SetScheduleName(pwszNewName))
	{
		return TRUE;
	}
	return FALSE;

}