RPTOPTNS.C


#include "perfmon.h"

#include "report.h" // for ReportData
#include "utils.h"
#include "playback.h" // for PlayingBackLog
#include "pmhelpid.h" // Help IDs

extern BOOL LocalManualRefresh ;
static DWORD iIntervalMSecs ;


void static OnInitDialog (HWND hDlg, PREPORT pReport)
{
int i ;

for (i = 0 ;
i < NumIntervals ;
i++)
CBAddInt (DialogControl (hDlg, IDD_REPORTOPTIONSINTERVAL),
aiIntervals [i]) ;

DialogSetInterval (hDlg, IDD_REPORTOPTIONSINTERVAL,
pReport->iIntervalMSecs) ;

LocalManualRefresh = pReport->bManualRefresh ;

if (LocalManualRefresh && !PlayingBackLog())
{
DialogEnable (hDlg, IDD_REPORTOPTIONSINTERVAL, FALSE) ;
DialogEnable (hDlg, IDD_REPORTOPTIONSINTERVALTEXT, FALSE) ;
}

CheckRadioButton(hDlg,
IDD_REPORTOPTIONSMANUALREFRESH,
IDD_REPORTOPTIONSPERIODIC,
LocalManualRefresh ? IDD_REPORTOPTIONSMANUALREFRESH :
IDD_REPORTOPTIONSPERIODIC) ;

WindowCenter (hDlg) ;

}


int FAR WINAPI ReportOptionsDlgProc (HWND hDlg,
unsigned iMessage,
WPARAM wParam,
LONG lParam)
{
BOOL bHandled ;

bHandled = TRUE ;
switch (iMessage)
{
case WM_INITDIALOG:
dwCurrentDlgID = HC_PM_idDlgOptionReport ;
OnInitDialog (hDlg, (PREPORT) lParam) ;
return (TRUE) ;

case WM_CLOSE:
dwCurrentDlgID = 0 ;
EndDialog (hDlg, 0) ;
break ;

case WM_COMMAND:
switch(wParam)
{
case IDD_OK:
{
FLOAT eIntervalMSec ;

eIntervalMSec = DialogFloat (hDlg, IDD_REPORTOPTIONSINTERVAL, NULL) ;

if (eIntervalMSec > MAX_INTERVALSEC ||
eIntervalMSec < MIN_INTERVALSEC)
{
DlgErrorBox (hDlg, ERR_BADTIMEINTERVAL) ;
SetFocus (DialogControl (hDlg, IDD_REPORTOPTIONSINTERVAL)) ;
EditSetTextEndPos (hDlg, IDD_REPORTOPTIONSINTERVAL) ;
return (FALSE) ;
break ;
}
eIntervalMSec = eIntervalMSec * (FLOAT) 1000.0 +
(FLOAT) 0.5 ;

iIntervalMSecs = (DWORD) (eIntervalMSec);
dwCurrentDlgID = 0 ;
EndDialog (hDlg, 1) ;
}
break ;

case IDD_CANCEL:
dwCurrentDlgID = 0 ;
EndDialog (hDlg, 0) ;
break ;

case IDD_REPORTOPTIONSPERIODIC :
case IDD_REPORTOPTIONSMANUALREFRESH :

// check if the Manual refresh is currently checked.
// Then toggle the ManualRefresh button
LocalManualRefresh =
(wParam == IDD_REPORTOPTIONSMANUALREFRESH) ;

CheckRadioButton(hDlg,
IDD_REPORTOPTIONSMANUALREFRESH,
IDD_REPORTOPTIONSPERIODIC,
LocalManualRefresh ? IDD_REPORTOPTIONSMANUALREFRESH :
IDD_REPORTOPTIONSPERIODIC ) ;

DialogEnable (hDlg, IDD_REPORTOPTIONSINTERVAL, !LocalManualRefresh) ;
DialogEnable (hDlg, IDD_REPORTOPTIONSINTERVALTEXT, !LocalManualRefresh) ;
break ;

case IDD_DISPLAYHELP:
CallWinHelp (dwCurrentDlgID) ;
break ;

default:
bHandled = FALSE ;
break;
}
break;


default:
bHandled = FALSE ;
break ;
} // switch

return (bHandled) ;
} // ReportOptionsDlgProc




BOOL DisplayReportOptions (HWND hWndParent,
HWND hWndReport)
{ // DisplayReportOptions
PREPORT pReport ;

pReport = ReportData (hWndParent) ;

if (DialogBoxParam (hInstance, idDlgReportOptions,
hWndParent, (DLGPROC) ReportOptionsDlgProc,
(LPARAM) pReport))
{ // if
pReport->iIntervalMSecs = iIntervalMSecs ;
if (LocalManualRefresh != pReport->bManualRefresh)
{
ToggleReportRefresh (hWndReport) ;
}
else
{
SetReportTimer (pReport) ;
}
} // if

return (TRUE) ;
} // DisplayReportOptions