DragonNest/Third/XTToolkitPro/Samples/TaskPanel/ToolBox/PageLookAndBehaviour.cpp

406 lines
12 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
// PageLookAndBehaviour.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 "ToolBox.h"
#include "PageLookAndBehaviour.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#if (_MSC_VER <= 1100)
void DDX_Slider(CDataExchange* pDX, int nIDC, int& value)
{
HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
if (pDX->m_bSaveAndValidate)
value = (int) ::SendMessage(hWndCtrl, TBM_GETPOS, 0, 0l);
else
::SendMessage(hWndCtrl, TBM_SETPOS, TRUE, value);
}
#endif
/////////////////////////////////////////////////////////////////////////////
// CPageLookAndBehaviour property page
CPageLookAndBehaviour::CPageLookAndBehaviour() : CPropertyPage(CPageLookAndBehaviour::IDD)
{
//{{AFX_DATA_INIT(CPageLookAndBehaviour)
m_bLargeIcons = FALSE;
m_bDrawFocusRect = TRUE;
m_bSelectOnFocus = TRUE;
m_bToggleButtons = FALSE;
m_nControlMargins = 0;
m_nGroupInnerMargins = 50;
m_nGroupOuterMargins = 0;
m_nItemsMargins = 0;
m_bDefaultMargins = TRUE;
m_bAllowDrag = TRUE;
m_bShowGroupIcons = FALSE;
m_bSmallGroupIcons = FALSE;
m_bEnableAnimation = FALSE;
//}}AFX_DATA_INIT
}
CPageLookAndBehaviour::~CPageLookAndBehaviour()
{
}
void CPageLookAndBehaviour::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPageLookAndBehaviour)
DDX_Control(pDX, IDC_COMBO_THEME, m_comboTheme);
DDX_Control(pDX, IDC_COMBO_LAYOUT, m_comboLayout);
DDX_Control(pDX, IDC_COMBO_HOTTRACK, m_comboHotTrack);
DDX_Control(pDX, IDC_COMBO_BEHAVIOUR, m_comboBehaviour);
DDX_Check(pDX, IDC_CHECK_LARGEICONS, m_bLargeIcons);
DDX_Check(pDX, IDC_CHECK_DRAWFOCUSRECT, m_bDrawFocusRect);
DDX_Check(pDX, IDC_CHECK_SELECTONFOCUS, m_bSelectOnFocus);
DDX_Check(pDX, IDC_CHECK_TOGGLEBUTTONS, m_bToggleButtons);
DDX_Slider(pDX, IDC_SLIDER_CONTROL, m_nControlMargins);
DDX_Slider(pDX, IDC_SLIDER_GROUPINNER, m_nGroupInnerMargins);
DDX_Slider(pDX, IDC_SLIDER_GROUPOUTER, m_nGroupOuterMargins);
DDX_Slider(pDX, IDC_SLIDER_ITEMS, m_nItemsMargins);
DDX_Check(pDX, IDC_CHECK_DEFAULTMARGINS, m_bDefaultMargins);
DDX_Check(pDX, IDC_CHECK_ALLOWDRAG, m_bAllowDrag);
DDX_Check(pDX, IDC_CHECK_SHOWGROUPICONS, m_bShowGroupIcons);
DDX_Check(pDX, IDC_CHECK_SMALLGROUPICONS, m_bSmallGroupIcons);
DDX_Check(pDX, IDC_CHECK_ANIMATION, m_bEnableAnimation);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPageLookAndBehaviour, CPropertyPage)
//{{AFX_MSG_MAP(CPageLookAndBehaviour)
ON_WM_CREATE()
ON_CBN_SELCHANGE(IDC_COMBO_BEHAVIOUR, OnSelchangeComboBehaviour)
ON_CBN_SELCHANGE(IDC_COMBO_THEME, OnSelchangeComboTheme)
ON_CBN_SELCHANGE(IDC_COMBO_LAYOUT, OnSelchangeComboLayout)
ON_CBN_SELCHANGE(IDC_COMBO_HOTTRACK, OnSelchangeComboHottrack)
ON_BN_CLICKED(IDC_CHECK_LARGEICONS, OnCheckLargeicons)
ON_BN_CLICKED(IDC_CHECK_DRAWFOCUSRECT, OnCheckDrawfocusrect)
ON_BN_CLICKED(IDC_CHECK_SELECTONFOCUS, OnCheckSelectonfocus)
ON_BN_CLICKED(IDC_CHECK_TOGGLEBUTTONS, OnCheckTogglebuttons)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_CONTROL, OnReleasedcaptureSliderControl)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_GROUPINNER, OnReleasedcaptureSliderGroupinner)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_GROUPOUTER, OnReleasedcaptureSliderGroupouter)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_ITEMS, OnReleasedcaptureSliderItems)
ON_BN_CLICKED(IDC_CHECK_DEFAULTMARGINS, OnCheckDefaultmargins)
ON_BN_CLICKED(IDC_CHECK_ALLOWDRAG, OnCheckAllowDrag)
ON_BN_CLICKED(IDC_CHECK_ANIMATION, OnCheckAnimation)
ON_BN_CLICKED(IDC_CHECK_SHOWGROUPICONS, OnCheckShowGroupIcons)
ON_BN_CLICKED(IDC_CHECK_SMALLGROUPICONS, OnCheckSmallGroupIcons)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPageLookAndBehaviour message handlers
int CPageLookAndBehaviour::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CPropertyPage::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
CXTPTaskPanel* CPageLookAndBehaviour::GetTaskPanel()
{
CWnd* pSplitterWnd = GetParentFrame()->GetDlgItem(AFX_IDW_PANE_FIRST);
ASSERT_KINDOF(CSplitterWnd, pSplitterWnd);
return (CXTPTaskPanel*)pSplitterWnd->GetDlgItem(AFX_IDW_PANE_FIRST);
}
BOOL CPageLookAndBehaviour::OnInitDialog()
{
CPropertyPage::OnInitDialog();
m_comboLayout.AddString(_T("xtpTaskItemLayoutDefault"));
m_comboLayout.AddString(_T("xtpTaskItemLayoutImages"));
m_comboLayout.AddString(_T("xtpTaskItemLayoutImagesWithText"));
m_comboLayout.AddString(_T("xtpTaskItemLayoutImagesWithTextBelow"));
m_comboLayout.SetCurSel(0);
m_comboHotTrack.AddString(_T("xtpTaskPanelHighlightDefault"));
m_comboHotTrack.AddString(_T("xtpTaskPanelHighlightText"));
m_comboHotTrack.AddString(_T("xtpTaskPanelHighlightImage"));
m_comboHotTrack.AddString(_T("xtpTaskPanelHighlightItem"));
m_comboHotTrack.AddString(_T("xtpTaskPanelHighlightNone"));
m_comboHotTrack.SetCurSel(0);
m_comboBehaviour.AddString(_T("xtpTaskPanelBehaviourExplorer"));
m_comboBehaviour.AddString(_T("xtpTaskPanelBehaviourList"));
m_comboBehaviour.AddString(_T("xtpTaskPanelBehaviourToolbox"));
m_comboBehaviour.SetCurSel(2);
m_comboTheme.AddString(_T("xtpTaskPanelThemeOffice2000"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeOffice2003"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeNativeWinXP"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeOffice2000Plain"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeOfficeXPPlain"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeOffice2003Plain"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeNativeWinXPPlain"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeToolbox"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeToolboxWhidbey"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeListView"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeListViewOfficeXP"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeListViewOffice2003"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeShortcutBarOffice2003"));
m_comboTheme.AddString(_T("xtpTaskPanelThemeShortcutBarOffice2007"));
m_comboTheme.SetCurSel(7);
GetDlgItem(IDC_CHECK_TOGGLEBUTTONS)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_SMALLGROUPICONS)->EnableWindow(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CPageLookAndBehaviour::OnSelchangeComboBehaviour()
{
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
pTaskPanel->SetBehaviour((XTPTaskPanelBehaviour)m_comboBehaviour.GetCurSel());
}
void CPageLookAndBehaviour::OnSelchangeComboTheme()
{
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
XTPTaskPanelPaintTheme themeCurrent = (XTPTaskPanelPaintTheme) m_comboTheme.GetCurSel();
pTaskPanel->SetTheme(themeCurrent);
pTaskPanel->Reposition();
OnThemeChanged();
CXTPCommandBars* pCommandBars = ((CXTPFrameWnd*)AfxGetMainWnd())->GetCommandBars();
CXTPPaintManager::SetTheme(
themeCurrent == xtpTaskPanelThemeOffice2000? xtpThemeOffice2000:
themeCurrent ==xtpTaskPanelThemeNativeWinXP? xtpThemeNativeWinXP:
themeCurrent ==xtpTaskPanelThemeOffice2000Plain? xtpThemeOffice2000:
themeCurrent ==xtpTaskPanelThemeOfficeXPPlain? xtpThemeOfficeXP:
themeCurrent ==xtpTaskPanelThemeNativeWinXPPlain? xtpThemeNativeWinXP:
themeCurrent ==xtpTaskPanelThemeToolbox? xtpThemeOfficeXP:
themeCurrent ==xtpTaskPanelThemeToolboxWhidbey? xtpThemeOfficeXP:
themeCurrent ==xtpTaskPanelThemeListView? xtpThemeOffice2000:
themeCurrent ==xtpTaskPanelThemeListViewOfficeXP? xtpThemeOfficeXP:
themeCurrent ==xtpTaskPanelThemeShortcutBarOffice2003? xtpThemeOffice2003:
themeCurrent ==xtpTaskPanelThemeShortcutBarOffice2007? xtpThemeRibbon:
xtpThemeOffice2003);
pCommandBars->RedrawCommandBars();
}
void CPageLookAndBehaviour::OnSelchangeComboLayout()
{
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
pTaskPanel->SetItemLayout((XTPTaskPanelItemLayout)m_comboLayout.GetCurSel());
}
void CPageLookAndBehaviour::OnSelchangeComboHottrack()
{
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
pTaskPanel->SetHotTrackStyle((XTPTaskPanelHotTrackStyle)m_comboHotTrack.GetCurSel());
}
void CPageLookAndBehaviour::OnCheckLargeicons()
{
UpdateData();
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
pTaskPanel->SetIconSize(m_bLargeIcons? CSize(32, 32): CSize(16, 16));
}
void CPageLookAndBehaviour::OnCheckDrawfocusrect()
{
UpdateData();
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
pTaskPanel->DrawFocusRect(m_bDrawFocusRect);
}
void CPageLookAndBehaviour::OnCheckSelectonfocus()
{
UpdateData();
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
pTaskPanel->SetSelectItemOnFocus(m_bSelectOnFocus);
if (m_bSelectOnFocus)
{
m_bToggleButtons = FALSE;
UpdateData(FALSE);
}
GetDlgItem(IDC_CHECK_TOGGLEBUTTONS)->EnableWindow(!m_bSelectOnFocus);
}
void CPageLookAndBehaviour::OnCheckTogglebuttons()
{
UpdateData();
}
void CPageLookAndBehaviour::OnReleasedcaptureSliderControl(NMHDR* /*pNMHDR*/, LRESULT* pResult)
{
UpdateData();
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
int nMargin = 0 + m_nControlMargins * 12 / 100;
int nGroupSpacing = 0 + m_nControlMargins * 15 / 100;
pTaskPanel->SetMargins(nMargin, nMargin, nMargin, nMargin, nGroupSpacing);
m_bDefaultMargins = FALSE;
UpdateData(FALSE);
*pResult = 0;
}
void CPageLookAndBehaviour::OnReleasedcaptureSliderGroupinner(NMHDR* /*pNMHDR*/, LRESULT* pResult)
{
UpdateData();
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
int nMargin = 0 + m_nGroupInnerMargins * 20 / 100;
pTaskPanel->GetPaintManager()->m_rcGroupInnerMargins.SetRect(nMargin, nMargin, nMargin, nMargin);
pTaskPanel->Reposition();
m_bDefaultMargins = FALSE;
UpdateData(FALSE);
*pResult = 0;
}
void CPageLookAndBehaviour::OnReleasedcaptureSliderGroupouter(NMHDR* /*pNMHDR*/, LRESULT* pResult)
{
UpdateData();
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
int nMargin = 0 + m_nGroupOuterMargins * 13 / 100;
pTaskPanel->GetPaintManager()->m_rcGroupOuterMargins.SetRect(nMargin, nMargin, nMargin, nMargin);
pTaskPanel->Reposition();
m_bDefaultMargins = FALSE;
UpdateData(FALSE);
*pResult = 0;
}
void CPageLookAndBehaviour::OnReleasedcaptureSliderItems(NMHDR* /*pNMHDR*/, LRESULT* pResult)
{
UpdateData();
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
int nMargin = 3 + m_nItemsMargins * 15 / 100;
pTaskPanel->GetPaintManager()->m_rcItemOuterMargins.SetRect(nMargin, nMargin, nMargin, nMargin);
pTaskPanel->Reposition();
m_bDefaultMargins = FALSE;
UpdateData(FALSE);
*pResult = 0;
}
void CPageLookAndBehaviour::OnThemeChanged()
{
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
m_nGroupInnerMargins = 50;
m_nGroupOuterMargins = 0;
m_nItemsMargins = 0;
m_nControlMargins = pTaskPanel->GetPaintManager()->GetControlMargins(pTaskPanel).left * 100 / 12;
UpdateData(FALSE);
}
void CPageLookAndBehaviour::OnCheckDefaultmargins()
{
UpdateData();
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
pTaskPanel->SetTheme((XTPTaskPanelPaintTheme)m_comboTheme.GetCurSel());
pTaskPanel->SetMargins(CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT);
pTaskPanel->Reposition();
OnThemeChanged();
m_nControlMargins = pTaskPanel->GetPaintManager()->m_rcControlMargins.left * 100 / 12;
UpdateData(FALSE);
}
void CPageLookAndBehaviour::OnCheckAnimation()
{
UpdateData();
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
pTaskPanel->EnableAnimation(m_bEnableAnimation);
}
void CPageLookAndBehaviour::OnCheckAllowDrag()
{
UpdateData();
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
pTaskPanel->AllowDrag(m_bAllowDrag);
}
void CPageLookAndBehaviour::OnCheckShowGroupIcons()
{
UpdateData();
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
if (m_bShowGroupIcons)
{
pTaskPanel->GetImageManager()->SetIcon(IDR_MAINFRAME, IDR_MAINFRAME);
}
else
{
pTaskPanel->GetImageManager()->RemoveIcon(IDR_MAINFRAME);
}
pTaskPanel->Reposition();
GetDlgItem(IDC_CHECK_SMALLGROUPICONS)->EnableWindow(m_bShowGroupIcons);
}
void CPageLookAndBehaviour::OnCheckSmallGroupIcons()
{
UpdateData();
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
pTaskPanel->SetGroupIconSize(m_bSmallGroupIcons? CSize(16, 16): CSize(32, 32));
}