You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
278 lines
8.2 KiB
C++
278 lines
8.2 KiB
C++
// XTPCustomizeOptionsPage.cpp : implementation of the CXTPCustomizeOptionsPage class.
|
|
//
|
|
// This file is a part of the XTREME COMMANDBARS MFC class library.
|
|
// (c)1998-2012 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 "Resource.h"
|
|
|
|
#include "Common/XTPResourceManager.h"
|
|
#include "Common/XTPDrawHelpers.h"
|
|
#include "Common/XTPWinThemeWrapper.h"
|
|
|
|
#include "../Controls/Resize/XTPResizeRect.h"
|
|
#include "../Controls/Resize/XTPResizePoint.h"
|
|
#include "../Controls/Resize/XTPResize.h"
|
|
#include "../Controls/Dialog/XTPPropertyPage.h"
|
|
#include "../Controls/Dialog/XTPPropertySheet.h"
|
|
|
|
#include "XTPCommandBarsDefines.h"
|
|
#include "XTPCustomizeOptionsPage.h"
|
|
#include "XTPCustomizeSheet.h"
|
|
#include "XTPCommandBars.h"
|
|
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// CXTPGroupLine
|
|
|
|
CXTPGroupLine::CXTPGroupLine()
|
|
{
|
|
m_themeButton = new CXTPWinThemeWrapper();
|
|
m_themeButton->OpenThemeData(0, L"BUTTON");
|
|
}
|
|
|
|
|
|
CXTPGroupLine::~CXTPGroupLine()
|
|
{
|
|
SAFE_DELETE(m_themeButton);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CXTPGroupLine, CStatic)
|
|
ON_WM_PAINT()
|
|
END_MESSAGE_MAP()
|
|
|
|
void CXTPGroupLine::OnPaint()
|
|
{
|
|
CPaintDC dc(this); // device context for painting
|
|
|
|
COLORREF clrText = GetSysColor(COLOR_BTNTEXT);
|
|
|
|
if (m_themeButton->IsAppThemeReady() &&
|
|
FAILED(m_themeButton->GetThemeColor(BP_GROUPBOX, GBS_NORMAL, TMT_TEXTCOLOR, &clrText)))
|
|
{
|
|
clrText = GetSysColor(COLOR_BTNTEXT);
|
|
}
|
|
|
|
BOOL bRightToLeft = GetExStyle() & WS_EX_RTLREADING;
|
|
|
|
CString strText;
|
|
GetWindowText(strText);
|
|
|
|
CXTPClientRect rc(this);
|
|
|
|
CXTPFontDC font(&dc, GetFont());
|
|
dc.SetBkMode(TRANSPARENT);
|
|
dc.SetTextColor(clrText);
|
|
|
|
dc.DrawText(strText, rc, DT_SINGLELINE | DT_VCENTER |
|
|
(bRightToLeft ? DT_RIGHT | DT_RTLREADING: DT_LEFT));
|
|
|
|
CRect rcLine(0, rc.top, 0, rc.bottom);
|
|
dc.DrawText(strText, rcLine, DT_SINGLELINE | DT_VCENTER | DT_CALCRECT);
|
|
|
|
if (bRightToLeft)
|
|
rcLine.SetRect(rc.left, rc.top, rc.right - + rcLine.Width() - 6, rc.bottom);
|
|
else
|
|
rcLine.SetRect(rc.left + rcLine.Width() + 6, rc.top, rc.right, rc.bottom);
|
|
|
|
COLORREF clrLine = GetSysColor(COLOR_3DSHADOW);
|
|
if (m_themeButton->IsAppThemeReady() &&
|
|
SUCCEEDED(m_themeButton->GetThemeColor(BP_GROUPBOX, GBS_NORMAL, TMT_BORDERCOLORHINT, &clrLine)))
|
|
{
|
|
dc.FillSolidRect(rcLine.left, rcLine.CenterPoint().y, rcLine.Width(), 1, clrLine);
|
|
}
|
|
else
|
|
{
|
|
dc.FillSolidRect(rcLine.left, rcLine.CenterPoint().y, rcLine.Width(), 1, GetSysColor(COLOR_3DSHADOW));
|
|
dc.FillSolidRect(rcLine.left, rcLine.CenterPoint().y + 1, rcLine.Width(), 1, GetSysColor(COLOR_3DHIGHLIGHT));
|
|
}
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CXTPCustomizeOptionsPage property page
|
|
|
|
|
|
CXTPCustomizeOptionsPage::CXTPCustomizeOptionsPage(CXTPCustomizeSheet* pSheet) : CXTPPropertyPage(CXTPCustomizeOptionsPage::IDD)
|
|
{
|
|
CXTPCommandBars* pCommandBars = pSheet->GetCommandBars();
|
|
CXTPCommandBarsOptions* pOptions = pCommandBars->GetCommandBarsOptions();
|
|
|
|
m_bAlwaysShowFullMenus = pOptions->bAlwaysShowFullMenus;
|
|
m_bShowFullAfterDelay = pOptions->bShowFullAfterDelay;
|
|
m_bLargeIcons = pOptions->bLargeIcons;
|
|
m_bToolBarScreenTips = pOptions->bToolBarScreenTips;
|
|
m_bToolBarAccelTips = pOptions->bToolBarAccelTips;
|
|
|
|
m_nAnimationType = pOptions->animationType;
|
|
|
|
//{{AFX_DATA_INIT(CXTPCustomizeOptionsPage)
|
|
//}}AFX_DATA_INIT
|
|
m_pSheet = pSheet;
|
|
|
|
//RevertResourceContext();
|
|
}
|
|
|
|
CXTPCustomizeOptionsPage::~CXTPCustomizeOptionsPage()
|
|
{
|
|
}
|
|
|
|
CXTPCommandBars* CXTPCustomizeOptionsPage::GetCommandBars() const
|
|
{
|
|
ASSERT(m_pSheet && m_pSheet->GetCommandBars());
|
|
return m_pSheet ? m_pSheet->GetCommandBars() : NULL;
|
|
}
|
|
|
|
void CXTPCustomizeOptionsPage::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CXTPPropertyPage::DoDataExchange(pDX);
|
|
|
|
DDX_Control(pDX, XTP_IDC_COMBO_ANIMATION, m_comboAnimationType);
|
|
DDX_CBIndex(pDX, XTP_IDC_COMBO_ANIMATION, m_nAnimationType);
|
|
|
|
//{{AFX_DATA_MAP(CXTPCustomizeOptionsPage)
|
|
DDX_Check(pDX, XTP_IDC_CHECK_FULL_MENUS, m_bAlwaysShowFullMenus);
|
|
DDX_Check(pDX, XTP_IDC_CHECK_AFTERDELAY, m_bShowFullAfterDelay);
|
|
DDX_Check(pDX, XTP_IDC_CHECK_LARGEICONS, m_bLargeIcons);
|
|
DDX_Check(pDX, XTP_IDC_CHECK_SCREENTTIPS, m_bToolBarScreenTips);
|
|
DDX_Check(pDX, XTP_IDC_CHECK_SHORTCUTS, m_bToolBarAccelTips);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CXTPCustomizeOptionsPage, CXTPPropertyPage)
|
|
//{{AFX_MSG_MAP(CXTPCustomizeOptionsPage)
|
|
ON_BN_CLICKED(XTP_IDC_CHECK_FULL_MENUS, OnCheckFullMenus)
|
|
ON_BN_CLICKED(XTP_IDC_CHECK_AFTERDELAY, OnCheckAfterdelay)
|
|
ON_BN_CLICKED(XTP_IDC_CHECK_LARGEICONS, OnCheckLargeicons)
|
|
ON_BN_CLICKED(XTP_IDC_CHECK_SCREENTTIPS, OnCheckScreenttips)
|
|
ON_BN_CLICKED(XTP_IDC_CHECK_SHORTCUTS, OnCheckShortcuts)
|
|
ON_BN_CLICKED(XTP_IDC_BUTTON_RESETDATA, OnResetData)
|
|
ON_CBN_SELCHANGE(XTP_IDC_COMBO_ANIMATION, OnAnimationChanged)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CXTPCustomizeOptionsPage message handlers
|
|
|
|
void CXTPCustomizeOptionsPage::AddComboString(UINT nIDResource)
|
|
{
|
|
CString str;
|
|
XTPResourceManager()->LoadString(&str, nIDResource);
|
|
|
|
m_comboAnimationType.AddString(str);
|
|
}
|
|
|
|
|
|
BOOL CXTPCustomizeOptionsPage::OnInitDialog()
|
|
{
|
|
CXTPPropertyPage::OnInitDialog();
|
|
|
|
GetDlgItem(XTP_IDC_CHECK_AFTERDELAY)->EnableWindow(!m_bAlwaysShowFullMenus);
|
|
GetDlgItem(XTP_IDC_CHECK_SHORTCUTS)->EnableWindow(m_bToolBarScreenTips);
|
|
|
|
if (GetDlgItem(XTP_IDC_GROUP_PERSONALIZED))
|
|
m_wndPersonalizedGroup.SubclassDlgItem(XTP_IDC_GROUP_PERSONALIZED, this);
|
|
|
|
if (GetDlgItem(XTP_IDC_GROUP_OTHER))
|
|
m_wndOtherGroup.SubclassDlgItem(XTP_IDC_GROUP_OTHER, this);
|
|
|
|
// Add strings to animation combo box.
|
|
AddComboString(XTP_IDS_ANIMATION_SYSDEF);
|
|
AddComboString(XTP_IDS_ANIMATION_RANDOM);
|
|
AddComboString(XTP_IDS_ANIMATION_UNFOLD);
|
|
AddComboString(XTP_IDS_ANIMATION_SLIDE);
|
|
AddComboString(XTP_IDS_ANIMATION_FADE);
|
|
AddComboString(XTP_IDS_ANIMATION_NONE);
|
|
|
|
// Ensure combo selection is made.
|
|
UpdateData(FALSE);
|
|
|
|
if (GetDlgItem(XTP_IDC_GROUP_PERSONALIZED))
|
|
SetResize(XTP_IDC_GROUP_PERSONALIZED, XTP_ANCHOR_TOPLEFT, XTP_ANCHOR_TOPRIGHT);
|
|
|
|
if (GetDlgItem(XTP_IDC_GROUP_OTHER))
|
|
SetResize(XTP_IDC_GROUP_OTHER, XTP_ANCHOR_TOPLEFT, XTP_ANCHOR_TOPRIGHT);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CXTPCustomizeOptionsPage::OnCheckFullMenus()
|
|
{
|
|
UpdateData();
|
|
GetDlgItem(XTP_IDC_CHECK_AFTERDELAY)->EnableWindow(!m_bAlwaysShowFullMenus);
|
|
|
|
GetCommandBars()->GetCommandBarsOptions()->bAlwaysShowFullMenus = m_bAlwaysShowFullMenus;
|
|
}
|
|
|
|
|
|
void CXTPCustomizeOptionsPage::OnAnimationChanged()
|
|
{
|
|
UpdateData();
|
|
if (m_nAnimationType != CB_ERR)
|
|
{
|
|
GetCommandBars()->GetCommandBarsOptions()->animationType = (XTPAnimationType)m_nAnimationType;
|
|
}
|
|
}
|
|
|
|
void CXTPCustomizeOptionsPage::OnCheckAfterdelay()
|
|
{
|
|
UpdateData();
|
|
GetCommandBars()->GetCommandBarsOptions()->bShowFullAfterDelay = m_bShowFullAfterDelay;
|
|
}
|
|
|
|
void CXTPCustomizeOptionsPage::OnCheckLargeicons()
|
|
{
|
|
UpdateData();
|
|
CXTPCommandBars* pCommandBars = m_pSheet->GetCommandBars();
|
|
pCommandBars->GetCommandBarsOptions()->bLargeIcons = m_bLargeIcons;
|
|
|
|
pCommandBars->RedrawCommandBars();
|
|
}
|
|
|
|
void CXTPCustomizeOptionsPage::OnCheckScreenttips()
|
|
{
|
|
UpdateData();
|
|
GetDlgItem(XTP_IDC_CHECK_SHORTCUTS)->EnableWindow(m_bToolBarScreenTips);
|
|
GetCommandBars()->GetCommandBarsOptions()->bToolBarScreenTips = m_bToolBarScreenTips;
|
|
|
|
}
|
|
|
|
void CXTPCustomizeOptionsPage::OnCheckShortcuts()
|
|
{
|
|
UpdateData();
|
|
GetCommandBars()->GetCommandBarsOptions()->bToolBarAccelTips = m_bToolBarAccelTips;
|
|
}
|
|
|
|
void CXTPCustomizeOptionsPage::OnResetData()
|
|
{
|
|
CString strPrompt;
|
|
CXTPResourceManager::AssertValid(XTPResourceManager()->LoadString(&strPrompt, XTP_IDS_CONFIRM_RESETDATA));
|
|
|
|
if (m_pSheet->MessageBox(strPrompt, MB_ICONWARNING | MB_YESNO | MB_DEFBUTTON2) == IDYES)
|
|
{
|
|
GetCommandBars()->ResetUsageData();
|
|
}
|
|
}
|