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.
311 lines
8.1 KiB
C++
311 lines
8.1 KiB
C++
2 years ago
|
// XTOutBarCtrlTheme.cpp: implementation of the CXTOutBarCtrlTheme class.
|
||
|
//
|
||
|
// This file is a part of the XTREME CONTROLS 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 "Common/XTPColorManager.h"
|
||
|
#include "Common/XTPDrawHelpers.h"
|
||
|
#include "Common/XTPMaskEditT.h"
|
||
|
|
||
|
|
||
|
#include "../Defines.h"
|
||
|
#include "../Util/XTPControlTheme.h"
|
||
|
#include "../Edit/XTPEdit.h"
|
||
|
|
||
|
#include "XTThemeManager.h"
|
||
|
#include "XTVC50Helpers.h"
|
||
|
#include "XTOutBarCtrl.h"
|
||
|
#include "XTOutBarCtrlTheme.h"
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#undef THIS_FILE
|
||
|
static char THIS_FILE[] = __FILE__;
|
||
|
#define new DEBUG_NEW
|
||
|
#endif
|
||
|
|
||
|
IMPLEMENT_THEME_FACTORY(CXTOutBarCtrlTheme)
|
||
|
|
||
|
//===========================================================================
|
||
|
// CXTOutBarCtrlTheme class
|
||
|
//===========================================================================
|
||
|
|
||
|
CXTOutBarCtrlTheme::CXTOutBarCtrlTheme()
|
||
|
{
|
||
|
m_bFlatIcon = FALSE;
|
||
|
m_bPlainText = FALSE;
|
||
|
}
|
||
|
|
||
|
CXTOutBarCtrlTheme::~CXTOutBarCtrlTheme()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
void CXTOutBarCtrlTheme::RefreshMetrics()
|
||
|
{
|
||
|
CXTThemeManagerStyle ::RefreshMetrics();
|
||
|
|
||
|
m_clrBack.SetStandardValue(GetXtremeColor(COLOR_3DSHADOW));
|
||
|
m_clrText.SetStandardValue(GetXtremeColor(COLOR_WINDOW));
|
||
|
}
|
||
|
|
||
|
|
||
|
void CXTOutBarCtrlTheme::DrawItemIcon(CDC* pDC, CPoint pt, CXTOutBarItem* pBarItem, CImageList* pImageList)
|
||
|
{
|
||
|
int nIndex = pBarItem->GetIndex();
|
||
|
|
||
|
if (pBarItem->IsEnabled())
|
||
|
{
|
||
|
pImageList->Draw(pDC, nIndex, pt, ILD_NORMAL);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
HICON hIcon = pImageList->ExtractIcon(nIndex);
|
||
|
|
||
|
if (m_bFlatIcon)
|
||
|
{
|
||
|
CBrush brush(GetXtremeColor(COLOR_3DSHADOW));
|
||
|
pDC->DrawState(pt, CSize(0, 0), hIcon,
|
||
|
DST_ICON | DSS_MONO, (HBRUSH)brush);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
pDC->DrawState(pt, CSize(0, 0), hIcon,
|
||
|
DSS_DISABLED | DST_ICON, (HBRUSH)NULL);
|
||
|
}
|
||
|
DestroyIcon(hIcon);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void CXTOutBarCtrlTheme::DrawItemText(CDC* pDC, CRect rc, CXTOutBarItem* pBarItem, UINT nFormat)
|
||
|
{
|
||
|
CString strText = pBarItem->GetName();
|
||
|
|
||
|
if (pBarItem->IsEnabled())
|
||
|
{
|
||
|
pDC->DrawText(strText, rc, nFormat);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (m_bPlainText)
|
||
|
{
|
||
|
pDC->SetTextColor(GetXtremeColor(COLOR_3DSHADOW));
|
||
|
pDC->DrawText(strText, rc, nFormat);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
rc.OffsetRect(1, 1);
|
||
|
pDC->SetTextColor(GetXtremeColor(COLOR_WINDOW));
|
||
|
pDC->DrawText(strText, rc, nFormat);
|
||
|
|
||
|
rc.OffsetRect(-1, -1);
|
||
|
pDC->SetTextColor(GetXtremeColor(COLOR_3DSHADOW));
|
||
|
pDC->DrawText(strText, rc, nFormat);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void CXTOutBarCtrlTheme::DrawFolder(CDC* pDC, CRect rect, CXTOutBarFolder* pBarFolder, const XTMouseState eHilight)
|
||
|
{
|
||
|
CRect rcFolder(rect);
|
||
|
|
||
|
CXTPFontDC fnt(pDC, pBarFolder->GetControl()->GetFontX());
|
||
|
pDC->SetBkMode(TRANSPARENT);
|
||
|
pDC->SetTextColor(GetXtremeColor(COLOR_BTNTEXT));
|
||
|
|
||
|
pDC->FillSolidRect(rect, GetXtremeColor(COLOR_3DFACE));
|
||
|
|
||
|
switch (eHilight)
|
||
|
{
|
||
|
case xtMouseNormal:
|
||
|
pDC->Draw3dRect(rect, GetXtremeColor(COLOR_3DHILIGHT), GetXtremeColor(COLOR_3DSHADOW));
|
||
|
break;
|
||
|
|
||
|
case xtMouseSelect:
|
||
|
pDC->Draw3dRect(rect, GetXtremeColor(COLOR_3DDKSHADOW), GetXtremeColor(COLOR_3DFACE));
|
||
|
rect.InflateRect(-1, -1);
|
||
|
pDC->Draw3dRect(rect, GetXtremeColor(COLOR_3DSHADOW), GetXtremeColor(COLOR_3DHILIGHT));
|
||
|
break;
|
||
|
|
||
|
case xtMouseHover:
|
||
|
pDC->Draw3dRect(rect, GetXtremeColor(COLOR_3DFACE), GetXtremeColor(COLOR_3DDKSHADOW));
|
||
|
rect.InflateRect(-1, -1);
|
||
|
pDC->Draw3dRect(rect, GetXtremeColor(COLOR_3DHILIGHT), GetXtremeColor(COLOR_3DSHADOW));
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
rcFolder.DeflateRect(4, 0);
|
||
|
|
||
|
pDC->DrawText(pBarFolder->GetName(), rcFolder,
|
||
|
DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS);
|
||
|
|
||
|
}
|
||
|
|
||
|
void CXTOutBarCtrlTheme::FillInsideRect(CDC* pDC, CRect rc)
|
||
|
{
|
||
|
pDC->FillSolidRect(rc, m_clrBack);
|
||
|
}
|
||
|
|
||
|
|
||
|
void CXTOutBarCtrlTheme::DrawIconFrame(CDC* pDC, CRect rcIcon, BOOL bSelected, BOOL bPressed)
|
||
|
{
|
||
|
if (!bSelected)
|
||
|
{
|
||
|
if (bPressed)
|
||
|
pDC->Draw3dRect(rcIcon, GetXtremeColor(COLOR_WINDOWFRAME), GetXtremeColor(COLOR_3DFACE));
|
||
|
else
|
||
|
pDC->Draw3dRect(rcIcon, GetXtremeColor(COLOR_3DFACE), GetXtremeColor(COLOR_WINDOWFRAME));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
pDC->Draw3dRect(rcIcon, GetXtremeColor(COLOR_WINDOWFRAME), GetXtremeColor(COLOR_3DFACE));
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////
|
||
|
// CXTOutBarCtrlThemeOfficeXP
|
||
|
|
||
|
CXTOutBarCtrlThemeOfficeXP::CXTOutBarCtrlThemeOfficeXP()
|
||
|
{
|
||
|
m_bFlatIcon = TRUE;
|
||
|
m_bPlainText = TRUE;
|
||
|
}
|
||
|
|
||
|
void CXTOutBarCtrlThemeOfficeXP::RefreshMetrics()
|
||
|
{
|
||
|
CXTOutBarCtrlTheme::RefreshMetrics();
|
||
|
|
||
|
m_clrBack.SetStandardValue(GetXtremeColor(XPCOLOR_TOOLBAR_FACE));
|
||
|
m_clrText.SetStandardValue(GetXtremeColor(COLOR_BTNTEXT));
|
||
|
}
|
||
|
|
||
|
void CXTOutBarCtrlThemeOfficeXP::DrawIconFrame(CDC* pDC, CRect rcIcon, BOOL bSelected, BOOL bPressed)
|
||
|
{
|
||
|
if (!bSelected)
|
||
|
{
|
||
|
pDC->FillSolidRect(rcIcon, GetXtremeColor(bPressed ? XPCOLOR_HIGHLIGHT_PUSHED : XPCOLOR_HIGHLIGHT));
|
||
|
pDC->Draw3dRect(rcIcon, GetXtremeColor(COLOR_HIGHLIGHT), GetXtremeColor(COLOR_HIGHLIGHT));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
pDC->Draw3dRect(rcIcon, GetXtremeColor(COLOR_HIGHLIGHT), GetXtremeColor(COLOR_HIGHLIGHT));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
CXTOutBarCtrlThemeOffice2003::CXTOutBarCtrlThemeOffice2003()
|
||
|
{
|
||
|
RefreshMetrics();
|
||
|
}
|
||
|
|
||
|
void CXTOutBarCtrlThemeOffice2003::RefreshMetrics()
|
||
|
{
|
||
|
CXTOutBarCtrlThemeOfficeXP::RefreshMetrics();
|
||
|
|
||
|
m_grcPushed.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT_PUSHED));
|
||
|
m_grcHot.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT));
|
||
|
m_grcSelected.SetStandardValue(GetXtremeColor(XPCOLOR_HIGHLIGHT_CHECKED));
|
||
|
|
||
|
m_bLunaTheme = FALSE;
|
||
|
|
||
|
if (!XTPColorManager()->IsLunaColorsDisabled())
|
||
|
{
|
||
|
XTPCurrentSystemTheme systemTheme = XTPColorManager()->GetCurrentSystemTheme();
|
||
|
|
||
|
switch (systemTheme)
|
||
|
{
|
||
|
case xtpSystemThemeBlue:
|
||
|
case xtpSystemThemeRoyale:
|
||
|
case xtpSystemThemeAero:
|
||
|
m_clrBack.SetStandardValue(RGB(216, 231, 252));
|
||
|
break;
|
||
|
case xtpSystemThemeOlive:
|
||
|
m_clrBack.SetStandardValue(RGB(226, 231, 191));
|
||
|
break;
|
||
|
case xtpSystemThemeSilver:
|
||
|
m_clrBack.SetStandardValue(RGB(223, 223, 234));
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
if (systemTheme != xtpSystemThemeUnknown)
|
||
|
{
|
||
|
m_grcSelected.SetStandardValue(RGB(251, 230, 148), RGB(238, 149, 21));
|
||
|
m_grcPushed.SetStandardValue(RGB(232, 127, 8), RGB(247, 218, 124));
|
||
|
m_grcHot.SetStandardValue(RGB(255, 255, 220), RGB(247, 192, 91));
|
||
|
m_bLunaTheme = TRUE;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void CXTOutBarCtrlThemeOffice2003::DrawFolder(CDC* pDC, CRect rect, CXTOutBarFolder* pBarFolder, const XTMouseState eHilight)
|
||
|
{
|
||
|
CRect rcFolder(rect);
|
||
|
|
||
|
CXTPFontDC fnt(pDC, pBarFolder->GetControl()->GetFontX());
|
||
|
pDC->SetBkMode(TRANSPARENT);
|
||
|
pDC->SetTextColor(GetXtremeColor(COLOR_BTNTEXT));
|
||
|
|
||
|
switch (eHilight)
|
||
|
{
|
||
|
case xtMouseNormal:
|
||
|
XTPDrawHelpers()->GradientFill(pDC, rect, XTPColorManager()->grcDockBar.clrDark, XTPColorManager()->grcDockBar.clrLight, FALSE);
|
||
|
break;
|
||
|
|
||
|
case xtMouseSelect:
|
||
|
XTPDrawHelpers()->GradientFill(pDC, rect, m_grcPushed, FALSE);
|
||
|
break;
|
||
|
|
||
|
case xtMouseHover:
|
||
|
XTPDrawHelpers()->GradientFill(pDC, rect, m_grcSelected, FALSE);
|
||
|
break;
|
||
|
}
|
||
|
pDC->Draw3dRect(rect, GetXtremeColor(COLOR_3DHILIGHT), GetXtremeColor(XPCOLOR_FRAME));
|
||
|
|
||
|
rcFolder.DeflateRect(4, 0);
|
||
|
|
||
|
pDC->DrawText(pBarFolder->GetName(), rcFolder,
|
||
|
DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS);
|
||
|
|
||
|
}
|
||
|
|
||
|
void CXTOutBarCtrlThemeOffice2003::DrawIconFrame(CDC* pDC, CRect rcIcon, BOOL bSelected, BOOL bPressed)
|
||
|
{
|
||
|
if (!m_bLunaTheme)
|
||
|
{
|
||
|
CXTOutBarCtrlThemeOfficeXP::DrawIconFrame(pDC, rcIcon, bSelected, bPressed);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (!bSelected)
|
||
|
{
|
||
|
if (bPressed)
|
||
|
XTPDrawHelpers()->GradientFill(pDC, rcIcon, m_grcPushed, FALSE);
|
||
|
else
|
||
|
XTPDrawHelpers()->GradientFill(pDC, rcIcon, m_grcHot, FALSE);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
XTPDrawHelpers()->GradientFill(pDC, rcIcon, m_grcSelected, FALSE);
|
||
|
|
||
|
}
|
||
|
pDC->Draw3dRect(rcIcon, GetXtremeColor(XPCOLOR_FRAME), GetXtremeColor(XPCOLOR_FRAME));
|
||
|
}
|