//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1998.
//
//  File:       Settings.h
//
//  Contents:   Onestop Settings PropertyPage Dialog box classes
//
//  Classes:    CAutoSyncPage
//				CSchedSyncPage
//
//  Notes:
//
//  History:    14-Nov-97   SusiA      Created.
//
//--------------------------------------------------------------------------


#ifndef _SETTINGSDLG_
#define _SETTINGSDLG_

// definitions for Advnanced Idle Setting Spin Control
#define SPINDIALWAITMINUTES_MIN 1
#define SPINDIALWAITMINUTES_MAX 999

#define SPINDIALREPEATMINUTES_MIN 1
#define SPINDIALREPEATMINUTES_MAX 999

#define WM_NOTIFYLISTVIEWEX (WM_USER + 1)

//+-------------------------------------------------------------------------------
//
//  CLASS: CAutoSyncPage
//
//  PURPOSE:  Handle the AutoSync Psge
//
//--------------------------------------------------------------------------------


class CAutoSyncPage
{
public:
    inline CAutoSyncPage(HINSTANCE hinst);
    ~CAutoSyncPage();

    void SetAutoSyncHwnd(HWND hwnd);
    void SetIdleHwnd(HWND hwnd);
    BOOL InitializeHwnd(HWND hwnd,SYNCTYPE syncType,DWORD dwDefaultConnection);
    DWORD GetNumConnections(HWND hwnd,SYNCTYPE syncType);
    BOOL ShowItemsOnThisConnection(HWND hwnd,SYNCTYPE syncType,DWORD dwConnectionNum);
    BOOL SetItemCheckState(HWND hwnd,SYNCTYPE syncType,int iItem, BOOL fChecked,int iCheckCount);
    BOOL SetConnectionCheck(HWND hwnd,SYNCTYPE syncType,WORD wParam,DWORD dwCheckState);

    HRESULT GetAdvancedIdleSettings(LPCONNECTIONSETTINGS pConnectionSettings);
    HRESULT SetAdvancedIdleSettings(LPCONNECTIONSETTINGS pConnectionSettings);

    HRESULT ShowProperties(HWND hwnd,int iItem);


    SCODE CommitAutoSyncChanges();
    SCODE CommitIdleChanges();

private:
    BOOL InitializeHandler(HWND hwnd,SYNCTYPE SyncType);
    BOOL Initialize(HWND hwnd,DWORD dwDefaultConnection); // called to initialize the AutoSync page

    CHndlrQueue *m_HndlrQueue;
    HWND m_hwndAutoSync;
    HWND m_hwndIdle;
    CListView  *m_pItemListViewAutoSync;
    CListView  *m_pItemListViewIdle;
    BOOL m_pItemListViewAutoSyncInitialized;
    BOOL m_fListViewIdleInitialized;
    HINSTANCE m_hinst;
    CRasUI *m_pRas;
    BOOL m_fInitialized;
    BOOL m_fItemsOnConnection;

    friend INT_PTR CALLBACK AutoSyncDlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam);
    friend INT_PTR CALLBACK IdleSyncDlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam);
};

//+-------------------------------------------------------------------------------
//
//  CLASS: CSchedSyncPage
//
//  PURPOSE:  Handle the SchedSync Psge
//
//--------------------------------------------------------------------------------

class CSchedSyncPage
{
public:

	CSchedSyncPage(HINSTANCE hinst, HWND hwnd);
	~CSchedSyncPage();

        BOOL	Initialize();
	BOOL	ShowAllSchedules();
	BOOL	FreeAllSchedules();
	HRESULT InitializeScheduleAgent();
	BOOL	StartScheduleWizard();
	BOOL	EditTask(int iItem);
	BOOL	RemoveTask(int iItem);

        BOOL    OnCommand(HWND hDlg, WORD wNotifyCode, WORD wID, HWND hwndCtl);
	BOOL	OnNotify(HWND hwnd, int idFrom, LPNMHDR pnmhdr);
        BOOL SetButtonState(int nIDDlgItem,BOOL fEnabled);


private:
	HWND m_hwnd;
	HINSTANCE m_hinst;

	LPSYNCSCHEDULEMGR   m_pISyncSchedMgr;
        int m_iDefaultIconImageIndex;

	
};

//+-------------------------------------------------------------------------------
//
//  FUNCTION: CAutoSyncPage::CAutoSyncPage(HWND hwnd)
//
//  PURPOSE:  Constructor
//
//	COMMENTS: Constructor for AutoSync page
//
//--------------------------------------------------------------------------------
inline CAutoSyncPage::CAutoSyncPage(HINSTANCE hinst)
{
    m_hinst = hinst;
    m_HndlrQueue = NULL;
    m_fInitialized = FALSE;
    m_fItemsOnConnection = FALSE;

    m_hwndIdle = NULL;
    m_hwndAutoSync = NULL;

    m_pItemListViewAutoSync = NULL;
    m_pItemListViewIdle = NULL;
    m_pItemListViewAutoSyncInitialized = FALSE;
    m_fListViewIdleInitialized = FALSE;

}


//+-------------------------------------------------------------------------------
//
//  FUNCTION: CSchedSyncPage::CSchedSyncPage(HWND hwnd)
//
//  PURPOSE:  Constructor
//
//	COMMENTS: Constructor for SchedSync page
//
//--------------------------------------------------------------------------------
inline CSchedSyncPage::CSchedSyncPage(HINSTANCE hinst, HWND hwnd)
{
    m_hwnd = hwnd;
	m_hinst = hinst;
	m_pISyncSchedMgr = NULL;

}
//+-------------------------------------------------------------------------------
//
//  FUNCTION: CSchedSyncPage::~CSchedSyncPage(HWND hwnd)
//
//  PURPOSE:  Constructor
//
//	COMMENTS: Constructor for SchedSync page
//
//--------------------------------------------------------------------------------
inline CSchedSyncPage::~CSchedSyncPage()
{
	if (m_pISyncSchedMgr)
	{
		m_pISyncSchedMgr->Release();
	}
}


#endif // _SETTINGSDLG_