624 lines
19 KiB
C++
624 lines
19 KiB
C++
|
|
// OptionsDialogBar.cpp : implementation file
|
||
|
|
//
|
||
|
|
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
|
||
|
|
// (c)1998-2008 Codejock Software, All Rights Reserved.
|
||
|
|
//
|
||
|
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
||
|
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
||
|
|
// CONSENT OF CODEJOCK SOFTWARE.
|
||
|
|
//
|
||
|
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
||
|
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
||
|
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
||
|
|
// SINGLE COMPUTER.
|
||
|
|
//
|
||
|
|
// CONTACT INFORMATION:
|
||
|
|
// support@codejock.com
|
||
|
|
// http://www.codejock.com
|
||
|
|
//
|
||
|
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
|
||
|
|
#include "stdafx.h"
|
||
|
|
#include "calendardemo.h"
|
||
|
|
#include "OptionsDialogBar.h"
|
||
|
|
#include "CalendarDemoView.h"
|
||
|
|
|
||
|
|
#ifdef _DEBUG
|
||
|
|
#define new DEBUG_NEW
|
||
|
|
#undef THIS_FILE
|
||
|
|
static char THIS_FILE[] = __FILE__;
|
||
|
|
#endif
|
||
|
|
|
||
|
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
// COptionsDialogBar dialog
|
||
|
|
|
||
|
|
|
||
|
|
COptionsDialogBar::COptionsDialogBar(CWnd* /*pParent =NULL*/)
|
||
|
|
{
|
||
|
|
//{{AFX_DATA_INIT(COptionsDialogBar)
|
||
|
|
// NOTE: the ClassWizard will add member initialization here
|
||
|
|
//}}AFX_DATA_INIT
|
||
|
|
}
|
||
|
|
|
||
|
|
COptionsDialogBar::~COptionsDialogBar()
|
||
|
|
{
|
||
|
|
m_Sink.UnadviseAll();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void COptionsDialogBar::DoDataExchange(CDataExchange* pDX)
|
||
|
|
{
|
||
|
|
CDialogBar::DoDataExchange(pDX);
|
||
|
|
//{{AFX_DATA_MAP(COptionsDialogBar)
|
||
|
|
// NOTE: the ClassWizard will add DDX and DDV calls here
|
||
|
|
//}}AFX_DATA_MAP
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
BEGIN_MESSAGE_MAP(COptionsDialogBar, CDialogBar)
|
||
|
|
//{{AFX_MSG_MAP(COptionsDialogBar)
|
||
|
|
ON_WM_CTLCOLOR()
|
||
|
|
//}}AFX_MSG_MAP
|
||
|
|
ON_MESSAGE_VOID(WM_INITDIALOG, OnInitDialog)
|
||
|
|
ON_BN_CLICKED(IDD_MONTH_COMPRESS_WEEKEND_DAYS, OnBnClickedMonthCompressWeekendDays)
|
||
|
|
ON_BN_CLICKED(IDD_MONTH_SHOW_END_TIME, OnBnClickedMonthShowEndTime)
|
||
|
|
ON_BN_CLICKED(IDD_MONTH_SHOW_TIME_AS_CLOCKS, OnBnClickedMonthSchowTimeAsClock)
|
||
|
|
ON_CBN_SELCHANGE(IDC_FIRST_DAY_OF_WEEK_CB, OnCbnSelchangeFirstDayOfWeekCb)
|
||
|
|
ON_CBN_SELCHANGE(IDD_MONTH_WEEKS_COUNT, OnCbnSelchangeMonthWeeksCount)
|
||
|
|
ON_CBN_SELCHANGE(IDC_TIME_SCALE, OnCbnSelchangeTimeScale)
|
||
|
|
ON_BN_CLICKED(IDD_WEEK_SHOW_TIME_AS_CLOCK, OnBnClickedWeekSchowTimeAsClock)
|
||
|
|
ON_BN_CLICKED(IDD_WEEK_SHOW_END_TIME, OnBnClickedWeekShowEndTime)
|
||
|
|
ON_CBN_SELCHANGE(IDC_START_TIME_CB, OnCbnSelchangeStartTimeCb)
|
||
|
|
ON_CBN_SELCHANGE(IDC_END_TIME_CB, OnCbnSelchangeEndTimeCb)
|
||
|
|
ON_BN_CLICKED(IDC_WORK_WEEK_DAY_SU, OnBnClickedWorkWeekDay)
|
||
|
|
ON_BN_CLICKED(IDC_WORK_WEEK_DAY_MO, OnBnClickedWorkWeekDay)
|
||
|
|
ON_BN_CLICKED(IDC_WORK_WEEK_DAY_TU, OnBnClickedWorkWeekDay)
|
||
|
|
ON_BN_CLICKED(IDC_WORK_WEEK_DAY_WE, OnBnClickedWorkWeekDay)
|
||
|
|
ON_BN_CLICKED(IDC_WORK_WEEK_DAY_TH, OnBnClickedWorkWeekDay)
|
||
|
|
ON_BN_CLICKED(IDC_WORK_WEEK_DAY_FR, OnBnClickedWorkWeekDay)
|
||
|
|
ON_BN_CLICKED(IDC_WORK_WEEK_DAY_SA, OnBnClickedWorkWeekDay)
|
||
|
|
|
||
|
|
ON_CBN_SELCHANGE(IDC_TOOLTIP_MODE, OnCbnSelchangeTooltipMode)
|
||
|
|
|
||
|
|
END_MESSAGE_MAP()
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnInitDialog()
|
||
|
|
{
|
||
|
|
Default();
|
||
|
|
int i;
|
||
|
|
|
||
|
|
if(m_arOptCtrlIDsAll.GetSize() == 0)
|
||
|
|
{
|
||
|
|
VERIFY( m_ctrlWorkWeekDays[0].SubclassDlgItem(IDC_WORK_WEEK_DAY_SU, this));
|
||
|
|
VERIFY( m_ctrlWorkWeekDays[1].SubclassDlgItem(IDC_WORK_WEEK_DAY_MO, this));
|
||
|
|
VERIFY( m_ctrlWorkWeekDays[2].SubclassDlgItem(IDC_WORK_WEEK_DAY_TU, this));
|
||
|
|
VERIFY( m_ctrlWorkWeekDays[3].SubclassDlgItem(IDC_WORK_WEEK_DAY_WE, this));
|
||
|
|
VERIFY( m_ctrlWorkWeekDays[4].SubclassDlgItem(IDC_WORK_WEEK_DAY_TH, this));
|
||
|
|
VERIFY( m_ctrlWorkWeekDays[5].SubclassDlgItem(IDC_WORK_WEEK_DAY_FR, this));
|
||
|
|
VERIFY( m_ctrlWorkWeekDays[6].SubclassDlgItem(IDC_WORK_WEEK_DAY_SA, this));
|
||
|
|
|
||
|
|
VERIFY( m_ctrlFirstDayOfWeekCb.SubclassDlgItem(IDC_FIRST_DAY_OF_WEEK_CB, this));
|
||
|
|
VERIFY( m_ctrlStartTimeCb.SubclassDlgItem(IDC_START_TIME_CB, this));
|
||
|
|
VERIFY( m_ctrlEndTimeCb.SubclassDlgItem(IDC_END_TIME_CB, this));
|
||
|
|
|
||
|
|
for(i = 0; i < 7; i++)
|
||
|
|
{
|
||
|
|
m_arOptCtrlIDsCommon.Add(m_ctrlWorkWeekDays[i].GetDlgCtrlID());
|
||
|
|
}
|
||
|
|
m_arOptCtrlIDsCommon.Add(IDC_WORK_WEEK_FRAME);
|
||
|
|
m_arOptCtrlIDsCommon.Add(IDC_FIRST_DAY_OF_WEEK_CB);
|
||
|
|
m_arOptCtrlIDsCommon.Add(IDC_FIRST_DAY_OF_WEEK_TEXT);
|
||
|
|
m_arOptCtrlIDsCommon.Add(IDC_START_TIME_CB);
|
||
|
|
m_arOptCtrlIDsCommon.Add(IDC_START_TIME_TEXT);
|
||
|
|
m_arOptCtrlIDsCommon.Add(IDC_END_TIME_CB);
|
||
|
|
m_arOptCtrlIDsCommon.Add(IDC_END_TIME_TEXT);
|
||
|
|
|
||
|
|
m_arOptCtrlIDsCommon.Add(IDC_ADVANCED_FRAME);
|
||
|
|
m_arOptCtrlIDsCommon.Add(IDC_ADVANCED_OPT_BTN);
|
||
|
|
|
||
|
|
m_arOptCtrlIDsCommon.Add(IDC_BOTTOM_FRAME_STATIC);
|
||
|
|
|
||
|
|
VERIFY( m_ctrlTooltipMode.SubclassDlgItem(IDC_TOOLTIP_MODE, this));
|
||
|
|
|
||
|
|
// Day View ----------------------------
|
||
|
|
VERIFY( m_ctrlSelchangeTimeScaleCb.SubclassDlgItem(IDC_TIME_SCALE, this));
|
||
|
|
|
||
|
|
m_arOptCtrlIDsDayView.Add(IDC_DAY_VIEW_FRAME);
|
||
|
|
m_arOptCtrlIDsDayView.Add(IDC_TIME_SCALE);
|
||
|
|
m_arOptCtrlIDsDayView.Add(IDC_TIME_SCALE_TEXT);
|
||
|
|
m_arOptCtrlIDsDayView.Add(IDC_TIME_ZONE_BTN);
|
||
|
|
|
||
|
|
// Month View ----------------------------
|
||
|
|
VERIFY( m_ctrlMonth_ShowEndTime.SubclassDlgItem(IDD_MONTH_SHOW_END_TIME, this));
|
||
|
|
VERIFY( m_ctrlMonth_ShowTimeAsClocks.SubclassDlgItem(IDD_MONTH_SHOW_TIME_AS_CLOCKS, this));
|
||
|
|
VERIFY( m_ctrlMonth_CompressWeekendDays.SubclassDlgItem(IDD_MONTH_COMPRESS_WEEKEND_DAYS, this));
|
||
|
|
VERIFY( m_ctrlMonth_WeeksCount.SubclassDlgItem(IDD_MONTH_WEEKS_COUNT, this));
|
||
|
|
|
||
|
|
m_arOptCtrlIDsMonthView.Add(IDC_MONTH_VIEW_FRAME);
|
||
|
|
m_arOptCtrlIDsMonthView.Add(IDD_MONTH_SHOW_END_TIME);
|
||
|
|
m_arOptCtrlIDsMonthView.Add(IDD_MONTH_SHOW_TIME_AS_CLOCKS);
|
||
|
|
m_arOptCtrlIDsMonthView.Add(IDD_MONTH_COMPRESS_WEEKEND_DAYS);
|
||
|
|
m_arOptCtrlIDsMonthView.Add(IDD_MONTH_WEEKS_COUNT);
|
||
|
|
m_arOptCtrlIDsMonthView.Add(IDD_MONTH_WEEKS_COUNT_TEXT);
|
||
|
|
|
||
|
|
// Week View ----------------------------
|
||
|
|
VERIFY( m_ctrlWeek_ShowTimeAsClock.SubclassDlgItem(IDD_WEEK_SHOW_TIME_AS_CLOCK, this));
|
||
|
|
VERIFY( m_ctrlWeek_ShowEndTime.SubclassDlgItem(IDD_WEEK_SHOW_END_TIME, this));
|
||
|
|
|
||
|
|
m_arOptCtrlIDsWeekView.Add(IDC_WEEK_VIEW_FRAME);
|
||
|
|
m_arOptCtrlIDsWeekView.Add(IDD_WEEK_SHOW_TIME_AS_CLOCK);
|
||
|
|
m_arOptCtrlIDsWeekView.Add(IDD_WEEK_SHOW_END_TIME);
|
||
|
|
|
||
|
|
//===========================================================================
|
||
|
|
m_arOptCtrlIDsAll.Append(m_arOptCtrlIDsCommon);
|
||
|
|
m_arOptCtrlIDsAll.Append(m_arOptCtrlIDsDayView);
|
||
|
|
m_arOptCtrlIDsAll.Append(m_arOptCtrlIDsWeekView);
|
||
|
|
m_arOptCtrlIDsAll.Append(m_arOptCtrlIDsMonthView);
|
||
|
|
}
|
||
|
|
|
||
|
|
CString strTmp;
|
||
|
|
//---------------------------------------------------------------------------
|
||
|
|
for(i = 0; i < 7; i++)
|
||
|
|
{
|
||
|
|
m_ctrlWorkWeekDays[i].SetCheck((i > 0 && i < 6) ? 1 : 0);
|
||
|
|
}
|
||
|
|
//---------------------------------------------------------------------------
|
||
|
|
int arScales[] = {60, 30, 15, 10, 6, 5};
|
||
|
|
m_ctrlSelchangeTimeScaleCb.ResetContent();
|
||
|
|
for(i = 0; i < sizeof(arScales)/sizeof(arScales[0]); i++)
|
||
|
|
{
|
||
|
|
strTmp.Format(_T("%d minutes"), arScales[i]);
|
||
|
|
int nIndex = m_ctrlSelchangeTimeScaleCb.AddString(strTmp);
|
||
|
|
m_ctrlSelchangeTimeScaleCb.SetItemData(nIndex, arScales[i]);
|
||
|
|
}
|
||
|
|
m_ctrlSelchangeTimeScaleCb.SetCurSel(1);
|
||
|
|
//---------------------------------------------------------------------------
|
||
|
|
TCHAR* srWDays[] = {_T("Sunday"), _T("Monday"), _T("Tuesday"), _T("Wednesday"), _T("Thursday"), _T("Friday"), _T("Saturday")};
|
||
|
|
|
||
|
|
m_ctrlFirstDayOfWeekCb.ResetContent();
|
||
|
|
for(i = 0; i < 7; i++)
|
||
|
|
{
|
||
|
|
int nIndex = m_ctrlFirstDayOfWeekCb.AddString(srWDays[i]);
|
||
|
|
m_ctrlFirstDayOfWeekCb.SetItemData(nIndex, i+1);
|
||
|
|
}
|
||
|
|
m_ctrlFirstDayOfWeekCb.SetCurSel(1);
|
||
|
|
|
||
|
|
//---------------------------------------------------------------------------
|
||
|
|
COleDateTimeSpan spHalfHour(0,0,30,0);
|
||
|
|
COleDateTime dtHours;
|
||
|
|
dtHours.SetTime(0, 0, 0);
|
||
|
|
|
||
|
|
m_ctrlStartTimeCb.ResetContent();
|
||
|
|
m_ctrlEndTimeCb.ResetContent();
|
||
|
|
|
||
|
|
for(i = 0; i < 48; i++)
|
||
|
|
{
|
||
|
|
strTmp.Format(_T("%02d:%02d"), dtHours.GetHour(), dtHours.GetMinute());
|
||
|
|
|
||
|
|
int nIndex = m_ctrlStartTimeCb.AddString(strTmp);
|
||
|
|
m_ctrlStartTimeCb.SetItemData(nIndex, i);
|
||
|
|
|
||
|
|
nIndex = m_ctrlEndTimeCb.AddString(strTmp);
|
||
|
|
m_ctrlEndTimeCb.SetItemData(nIndex, i);
|
||
|
|
|
||
|
|
dtHours += spHalfHour;
|
||
|
|
}
|
||
|
|
|
||
|
|
m_ctrlStartTimeCb.SetCurSel(16);
|
||
|
|
m_ctrlEndTimeCb.SetCurSel(34);
|
||
|
|
|
||
|
|
//-----------------------------------------------------------------------
|
||
|
|
m_ctrlTooltipMode.ResetContent();
|
||
|
|
|
||
|
|
ASSERT(m_ctrlTooltipMode.GetCount() == 0);
|
||
|
|
|
||
|
|
int nIdx = m_ctrlTooltipMode.AddString(_T("Standard"));
|
||
|
|
m_ctrlTooltipMode.SetItemData(nIdx, ctmStandard);
|
||
|
|
|
||
|
|
nIdx = m_ctrlTooltipMode.AddString(_T("Custom"));
|
||
|
|
m_ctrlTooltipMode.SetItemData(nIdx, ctmCustom);
|
||
|
|
|
||
|
|
nIdx = m_ctrlTooltipMode.AddString(_T("Disabled"));
|
||
|
|
m_ctrlTooltipMode.SetItemData(nIdx, ctmDisabled);
|
||
|
|
|
||
|
|
//===========================================================================
|
||
|
|
|
||
|
|
m_ctrlMonth_ShowEndTime.SetCheck(0);
|
||
|
|
m_ctrlMonth_ShowTimeAsClocks.SetCheck(0);
|
||
|
|
m_ctrlMonth_CompressWeekendDays.SetCheck(1);
|
||
|
|
m_ctrlWeek_ShowTimeAsClock.SetCheck(0);
|
||
|
|
m_ctrlWeek_ShowEndTime.SetCheck(1);
|
||
|
|
|
||
|
|
//---------------------------------------------------------------------------
|
||
|
|
m_ctrlMonth_WeeksCount.ResetContent();
|
||
|
|
for(i = 2; i <= 6; i++)
|
||
|
|
{
|
||
|
|
strTmp.Format(_T("%d"), i);
|
||
|
|
int nIndex = m_ctrlMonth_WeeksCount.AddString(strTmp);
|
||
|
|
m_ctrlMonth_WeeksCount.SetItemData(nIndex, i);
|
||
|
|
}
|
||
|
|
m_ctrlMonth_WeeksCount.SetCurSel(3);
|
||
|
|
|
||
|
|
//===========================================================================
|
||
|
|
}
|
||
|
|
|
||
|
|
CXTPCalendarControl* COptionsDialogBar::GetCalendarCtrl()
|
||
|
|
{
|
||
|
|
CView* pView = ((CFrameWnd*)AfxGetMainWnd())->GetActiveFrame()->GetActiveView();
|
||
|
|
ASSERT_KINDOF(CCalendarDemoView, pView);
|
||
|
|
|
||
|
|
if (pView)
|
||
|
|
return &((CCalendarDemoView*)pView)->GetCalendarCtrl();
|
||
|
|
else
|
||
|
|
return NULL;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnBnClickedMonthCompressWeekendDays()
|
||
|
|
{
|
||
|
|
int nCheck = m_ctrlMonth_CompressWeekendDays.GetCheck();
|
||
|
|
GetCalendarCtrl()->MonthView_SetCompressWeekendDays(nCheck ? TRUE : FALSE);
|
||
|
|
GetCalendarCtrl()->Populate();
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnBnClickedMonthShowEndTime()
|
||
|
|
{
|
||
|
|
int nCheck = m_ctrlMonth_ShowEndTime.GetCheck();
|
||
|
|
GetCalendarCtrl()->MonthView_SetShowEndDate(nCheck ? TRUE : FALSE);
|
||
|
|
GetCalendarCtrl()->Populate();
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnBnClickedMonthSchowTimeAsClock()
|
||
|
|
{
|
||
|
|
int nCheck = m_ctrlMonth_ShowTimeAsClocks.GetCheck();
|
||
|
|
GetCalendarCtrl()->MonthView_SetShowTimeAsClocks(nCheck ? TRUE : FALSE);
|
||
|
|
GetCalendarCtrl()->Populate();
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnCbnSelchangeFirstDayOfWeekCb()
|
||
|
|
{
|
||
|
|
int nSel = m_ctrlFirstDayOfWeekCb.GetCurSel();
|
||
|
|
GetCalendarCtrl()->SetFirstDayOfWeek(nSel+1);
|
||
|
|
PopulateWorkDays();
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::PopulateWorkDays()
|
||
|
|
{
|
||
|
|
// update picture
|
||
|
|
CXTPCalendarDayView* pDayView = DYNAMIC_DOWNCAST(CXTPCalendarDayView, GetCalendarCtrl()->GetActiveView());
|
||
|
|
if (pDayView)
|
||
|
|
{
|
||
|
|
// show working days interval
|
||
|
|
COleDateTime dtDayViewStart;
|
||
|
|
pDayView->GetSelection(&dtDayViewStart);
|
||
|
|
pDayView->ShowWorkingDays(dtDayViewStart);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
GetCalendarCtrl()->Populate();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnCbnSelchangeMonthWeeksCount()
|
||
|
|
{
|
||
|
|
int nSel = m_ctrlMonth_WeeksCount.GetCurSel();
|
||
|
|
CXTPCalendarMonthView* pMonthView = DYNAMIC_DOWNCAST(CXTPCalendarMonthView, GetCalendarCtrl()->GetActiveView());
|
||
|
|
if(pMonthView)
|
||
|
|
{
|
||
|
|
pMonthView->GetGrid()->SetWeeksCount(nSel+2);
|
||
|
|
GetCalendarCtrl()->Populate();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnCbnSelchangeTimeScale()
|
||
|
|
{
|
||
|
|
int nSel = m_ctrlSelchangeTimeScaleCb.GetCurSel();
|
||
|
|
if(nSel == CB_ERR)
|
||
|
|
{
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
int nScale = (int)m_ctrlSelchangeTimeScaleCb.GetItemData(nSel);
|
||
|
|
|
||
|
|
CCalendarDemoView* pView = (CCalendarDemoView*)(((CFrameWnd*)AfxGetMainWnd())->GetActiveFrame()->GetActiveView());
|
||
|
|
if (pView)
|
||
|
|
{
|
||
|
|
pView->SetCalendarTimeScale(nScale);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnBnClickedWeekSchowTimeAsClock()
|
||
|
|
{
|
||
|
|
int nCheck = m_ctrlWeek_ShowTimeAsClock.GetCheck();
|
||
|
|
GetCalendarCtrl()->WeekView_SetShowTimeAsClocks(nCheck ? TRUE : FALSE);
|
||
|
|
GetCalendarCtrl()->Populate();
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnBnClickedWeekShowEndTime()
|
||
|
|
{
|
||
|
|
int nCheck = m_ctrlWeek_ShowEndTime.GetCheck();
|
||
|
|
GetCalendarCtrl()->WeekView_SetShowEndDate(nCheck ? TRUE : FALSE);
|
||
|
|
GetCalendarCtrl()->Populate();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnBnClickedTimeZoneBtn()
|
||
|
|
{
|
||
|
|
//CalendarTimezone();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnCbnSelchangeStartTimeCb()
|
||
|
|
{
|
||
|
|
int nSel = m_ctrlStartTimeCb.GetCurSel();
|
||
|
|
int nSel2 = m_ctrlEndTimeCb.GetCurSel();
|
||
|
|
|
||
|
|
if(nSel == CB_ERR || nSel2 == CB_ERR ) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if(nSel > nSel2)
|
||
|
|
{
|
||
|
|
nSel2 = nSel;
|
||
|
|
m_ctrlEndTimeCb.SetCurSel(nSel2);
|
||
|
|
}
|
||
|
|
|
||
|
|
COleDateTimeSpan spHalfHour(0,0,30,0);
|
||
|
|
|
||
|
|
DWORD dwI = (DWORD)m_ctrlStartTimeCb.GetItemData(nSel);
|
||
|
|
COleDateTime dtHour = (double)spHalfHour * dwI;
|
||
|
|
|
||
|
|
GetCalendarCtrl()->SetWorkDayStartTime(dtHour.GetHour(), dtHour.GetMinute(), 0);
|
||
|
|
GetCalendarCtrl()->Populate();
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnCbnSelchangeEndTimeCb()
|
||
|
|
{
|
||
|
|
int nSel1 = m_ctrlStartTimeCb.GetCurSel();
|
||
|
|
int nSel = m_ctrlEndTimeCb.GetCurSel();
|
||
|
|
|
||
|
|
if(nSel == CB_ERR || nSel1 == CB_ERR ) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if(nSel < nSel1)
|
||
|
|
{
|
||
|
|
nSel1 = nSel;
|
||
|
|
m_ctrlStartTimeCb.SetCurSel(nSel1);
|
||
|
|
}
|
||
|
|
|
||
|
|
COleDateTimeSpan spHalfHour(0,0,30,0);
|
||
|
|
|
||
|
|
DWORD dwI = (DWORD)m_ctrlEndTimeCb.GetItemData(nSel);
|
||
|
|
COleDateTime dtHour = (double)spHalfHour * dwI;
|
||
|
|
|
||
|
|
GetCalendarCtrl()->SetWorkDayEndTime(dtHour.GetHour(), dtHour.GetMinute(), 0);
|
||
|
|
GetCalendarCtrl()->Populate();
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnBnClickedWorkWeekDay()
|
||
|
|
{
|
||
|
|
int nWWMask = 0;
|
||
|
|
for(int i = 0; i < 7; i++)
|
||
|
|
{
|
||
|
|
if(m_ctrlWorkWeekDays[i].GetCheck())
|
||
|
|
{
|
||
|
|
nWWMask |= CXTPCalendarUtils::GetDayOfWeekMask(i+1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (nWWMask == 0)
|
||
|
|
{
|
||
|
|
m_ctrlWorkWeekDays[0].SetCheck(1);
|
||
|
|
nWWMask |= CXTPCalendarUtils::GetDayOfWeekMask(1);
|
||
|
|
}
|
||
|
|
GetCalendarCtrl()->SetWorkWeekMask(nWWMask);
|
||
|
|
PopulateWorkDays();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnViewChanged(XTPCalendarViewType viewType)
|
||
|
|
{
|
||
|
|
if (viewType == xtpCalendarWeekView)
|
||
|
|
{
|
||
|
|
OnBnClickedWeekSchowTimeAsClock();
|
||
|
|
OnBnClickedWeekShowEndTime();
|
||
|
|
}
|
||
|
|
if (viewType == xtpCalendarMonthView)
|
||
|
|
{
|
||
|
|
OnBnClickedMonthCompressWeekendDays();
|
||
|
|
OnBnClickedMonthShowEndTime();
|
||
|
|
OnCbnSelchangeFirstDayOfWeekCb();
|
||
|
|
OnCbnSelchangeMonthWeeksCount();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnCalendarEvent_TimeSacleWasChanged(XTP_NOTIFY_CODE Event, WPARAM wParam, LPARAM lParam)
|
||
|
|
{
|
||
|
|
UNREFERENCED_PARAMETER(wParam); UNREFERENCED_PARAMETER(lParam);
|
||
|
|
|
||
|
|
if(Event != XTP_NC_CALENDARVIEWTIMESCALEWASCHANGED) {
|
||
|
|
ASSERT(FALSE);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
int nCurrScale = -1;
|
||
|
|
int nSel = m_ctrlSelchangeTimeScaleCb.GetCurSel();
|
||
|
|
if(nSel != CB_ERR)
|
||
|
|
{
|
||
|
|
nCurrScale = (int)m_ctrlSelchangeTimeScaleCb.GetItemData(nSel);
|
||
|
|
}
|
||
|
|
|
||
|
|
CXTPCalendarDayView* pDayView = DYNAMIC_DOWNCAST(CXTPCalendarDayView, GetCalendarCtrl()->GetActiveView());
|
||
|
|
if (!pDayView) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
COleDateTimeSpan spScale = pDayView->GetScaleInterval();
|
||
|
|
int nNewScale = (int)spScale.GetTotalMinutes();
|
||
|
|
|
||
|
|
if(nCurrScale == nNewScale) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
int nCount = m_ctrlSelchangeTimeScaleCb.GetCount();
|
||
|
|
for(int i = 0; i < nCount; i++)
|
||
|
|
{
|
||
|
|
if(nNewScale == (int)m_ctrlSelchangeTimeScaleCb.GetItemData(i))
|
||
|
|
{
|
||
|
|
m_ctrlSelchangeTimeScaleCb.SetCurSel(i);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnCalendarEvent_ViewWasChanged(XTP_NOTIFY_CODE Event, WPARAM wParam, LPARAM lParam)
|
||
|
|
{
|
||
|
|
UNREFERENCED_PARAMETER(wParam); UNREFERENCED_PARAMETER(lParam);
|
||
|
|
|
||
|
|
if(Event != XTP_NC_CALENDARVIEWWASCHANGED) {
|
||
|
|
ASSERT(FALSE);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
UpdateControlsState();
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::Init()
|
||
|
|
{
|
||
|
|
Close();
|
||
|
|
|
||
|
|
CXTPCalendarControl* pCalendar = GetCalendarCtrl();
|
||
|
|
|
||
|
|
if(!pCalendar) {
|
||
|
|
ASSERT(FALSE);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
CXTPNotifyConnection* pCConn = pCalendar->GetConnection();
|
||
|
|
ASSERT(pCConn);
|
||
|
|
|
||
|
|
m_Sink.Advise(pCConn, XTP_NC_CALENDARVIEWTIMESCALEWASCHANGED, &COptionsDialogBar::OnCalendarEvent_TimeSacleWasChanged);
|
||
|
|
m_Sink.Advise(pCConn, XTP_NC_CALENDARVIEWWASCHANGED, &COptionsDialogBar::OnCalendarEvent_ViewWasChanged);
|
||
|
|
|
||
|
|
UpdateControlsState();
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::Close()
|
||
|
|
{
|
||
|
|
m_Sink.UnadviseAll();
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::UpdateControlsState()
|
||
|
|
{
|
||
|
|
CXTPCalendarControl* pCalendar = GetCalendarCtrl();
|
||
|
|
CView* pView = ((CFrameWnd*)AfxGetMainWnd())->GetActiveFrame()->GetActiveView();
|
||
|
|
ASSERT_KINDOF(CCalendarDemoView, pView);
|
||
|
|
|
||
|
|
CCalendarDemoView* pDemoView = (CCalendarDemoView*)pView;
|
||
|
|
|
||
|
|
|
||
|
|
if(!pCalendar || !pDemoView) {
|
||
|
|
ASSERT(FALSE);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
//===========================================================================
|
||
|
|
int nWorkWeekMask = pCalendar->GetWorkWeekMask();
|
||
|
|
CString strTmp;
|
||
|
|
int i;
|
||
|
|
//---------------------------------------------------------------------------
|
||
|
|
for(i = 0; i < 7; i++) {
|
||
|
|
int nCheck = (nWorkWeekMask & CXTPCalendarUtils::GetDayOfWeekMask(i+1)) ? 1 : 0;
|
||
|
|
m_ctrlWorkWeekDays[i].SetCheck(nCheck);
|
||
|
|
}
|
||
|
|
//---------------------------------------------------------------------------
|
||
|
|
OnCalendarEvent_TimeSacleWasChanged(XTP_NC_CALENDARVIEWTIMESCALEWASCHANGED, 0, 0);
|
||
|
|
|
||
|
|
//---------------------------------------------------------------------------
|
||
|
|
int nFirstDayOfWeek = pCalendar->GetFirstDayOfWeek();
|
||
|
|
|
||
|
|
for(i = 0; i < 7; i++)
|
||
|
|
{
|
||
|
|
if((int)m_ctrlFirstDayOfWeekCb.GetItemData(i) == nFirstDayOfWeek) {
|
||
|
|
m_ctrlFirstDayOfWeekCb.SetCurSel(i);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//---------------------------------------------------------------------------
|
||
|
|
COleDateTime dtWWStartTime, dtWWEndTime;
|
||
|
|
pCalendar->GetWorkDayStartTime(dtWWStartTime);
|
||
|
|
pCalendar->GetWorkDayEndTime(dtWWEndTime);
|
||
|
|
|
||
|
|
int nIndex1 = dtWWStartTime.GetHour()*2 + (dtWWStartTime.GetMinute() ? 1 : 0);
|
||
|
|
int nIndex2 = dtWWEndTime.GetHour()*2 + (dtWWEndTime.GetMinute() ? 1 : 0);
|
||
|
|
m_ctrlStartTimeCb.SetCurSel(nIndex1);
|
||
|
|
m_ctrlEndTimeCb.SetCurSel(nIndex2);
|
||
|
|
//===========================================================================
|
||
|
|
|
||
|
|
m_ctrlMonth_ShowEndTime.SetCheck(pCalendar->MonthView_IsShowEndDate() ? 1 : 0);
|
||
|
|
m_ctrlMonth_ShowTimeAsClocks.SetCheck(pCalendar->MonthView_IsShowTimeAsClocks() ? 1 : 0);
|
||
|
|
m_ctrlMonth_CompressWeekendDays.SetCheck(pCalendar->MonthView_IsCompressWeekendDays() ? 1 : 0);
|
||
|
|
|
||
|
|
//---------------------------------------------------------------------------
|
||
|
|
CXTPCalendarMonthView* pMonthView = DYNAMIC_DOWNCAST(CXTPCalendarMonthView, pCalendar->GetActiveView());
|
||
|
|
if(pMonthView)
|
||
|
|
{
|
||
|
|
int nWCount = pMonthView->GetGrid()->GetWeeksCount();
|
||
|
|
|
||
|
|
for(i = 0; i < m_ctrlMonth_WeeksCount.GetCount(); i++)
|
||
|
|
{
|
||
|
|
if((int)m_ctrlMonth_WeeksCount.GetItemData(i) == nWCount) {
|
||
|
|
m_ctrlMonth_WeeksCount.SetCurSel(i);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//------------------------------------------------------------------------
|
||
|
|
m_ctrlWeek_ShowTimeAsClock.SetCheck(pCalendar->WeekView_IsShowTimeAsClocks() ? 1 : 0);
|
||
|
|
m_ctrlWeek_ShowEndTime.SetCheck(pCalendar->WeekView_IsShowEndDate() ? 1 : 0);
|
||
|
|
|
||
|
|
//------------------------------------------------------------------------
|
||
|
|
for(i = 0; i < m_ctrlTooltipMode.GetCount(); i++) {
|
||
|
|
if((int)m_ctrlTooltipMode.GetItemData(i) ==
|
||
|
|
pDemoView->m_wndCalendarEx.m_nToolTipMode)
|
||
|
|
{
|
||
|
|
m_ctrlTooltipMode.SetCurSel(i);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//========================================================================
|
||
|
|
}
|
||
|
|
|
||
|
|
void COptionsDialogBar::OnCbnSelchangeTooltipMode()
|
||
|
|
{
|
||
|
|
CCalendarDemoView* pView = (CCalendarDemoView*)(((CFrameWnd*)AfxGetMainWnd())->GetActiveFrame()->GetActiveView());
|
||
|
|
int nSel = m_ctrlTooltipMode.GetCurSel();
|
||
|
|
if(nSel != CB_ERR && pView)
|
||
|
|
{
|
||
|
|
pView->SetCalendarToolTipMode((int)m_ctrlTooltipMode.GetItemData(nSel));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
HBRUSH COptionsDialogBar::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
||
|
|
{
|
||
|
|
if (nCtlColor == CTLCOLOR_LISTBOX || nCtlColor == CTLCOLOR_EDIT)
|
||
|
|
return CDialogBar::OnCtlColor(pDC, pWnd, nCtlColor);
|
||
|
|
|
||
|
|
COLORREF clr = XTPColorManager()->grcDockBar.clrDark;
|
||
|
|
|
||
|
|
static CBrush brush;
|
||
|
|
static COLORREF brushColor = 0;
|
||
|
|
|
||
|
|
if (brush.GetSafeHandle() == 0 || brushColor != clr)
|
||
|
|
{
|
||
|
|
brush.DeleteObject();
|
||
|
|
brush.CreateSolidBrush(clr);
|
||
|
|
brushColor = clr;
|
||
|
|
}
|
||
|
|
|
||
|
|
pDC->SetBkColor(clr);
|
||
|
|
return brush;
|
||
|
|
}
|