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++

// 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();
}
}