195 lines
5.4 KiB
C++
195 lines
5.4 KiB
C++
// WorkspaceBar.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "skinsdemo.h"
|
|
#include "WorkspaceBar.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CWorkspaceBar
|
|
|
|
#define IDC_SHORTCUT_BAR 7565
|
|
|
|
CWorkspaceBar::CWorkspaceBar()
|
|
{
|
|
}
|
|
|
|
CWorkspaceBar::~CWorkspaceBar()
|
|
{
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CWorkspaceBar, COXSizeControlBar)
|
|
//{{AFX_MSG_MAP(CWorkspaceBar)
|
|
ON_WM_CREATE()
|
|
ON_WM_SIZE()
|
|
//}}AFX_MSG_MAP
|
|
ON_NOTIFY(SHBN_SELECTITEM, IDC_SHORTCUT_BAR, OnShortcutBarSelectItem)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CWorkspaceBar message handlers
|
|
|
|
int CWorkspaceBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (COXSizeControlBar::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
// TODO: Add your specialized creation code here
|
|
SetClientBorder(TRUE);
|
|
|
|
// Create the shortcut bar
|
|
m_ShortcutBar.Create(this, CRect(0, 0, 0, 0), SHBS_EDITHEADERS | SHBS_EDITITEMS | SHBS_DISABLEDRAGDROPITEM |
|
|
SHBS_DISABLEDRAGDROPHEADER | SHBS_FLATGROUPBUTTON | SHBS_SHOWACTIVEALWAYS, IDC_SHORTCUT_BAR);
|
|
InitShortcutBar();
|
|
|
|
return 0;
|
|
}
|
|
|
|
void CWorkspaceBar::OnSize(UINT nType, int cx, int cy)
|
|
{
|
|
COXSizeControlBar::OnSize(nType, cx, cy);
|
|
|
|
// Size the tabs container accordingly
|
|
CRect rectClient;
|
|
GetClientRect(rectClient);
|
|
m_ShortcutBar.MoveWindow(rectClient);
|
|
}
|
|
|
|
void CWorkspaceBar::InitShortcutBar()
|
|
{
|
|
// Populate shortcut bar
|
|
m_ShortcutBar.SetImageList(&m_ilTree);
|
|
|
|
SHB_GROUPINFO shbGroup;
|
|
CString sText;
|
|
|
|
// create image lists
|
|
VERIFY(m_ilLarge.Create(IDB_LARGE,32,11,RGB(255, 0, 0)));
|
|
VERIFY(m_ilSmall.Create(IDB_SMALL,16,11,RGB(255, 0, 0)));
|
|
|
|
// Skins group
|
|
sText=_T("Skins");
|
|
shbGroup.nMask=SHBIF_TEXT;
|
|
shbGroup.nTextMax=sText.GetLength();
|
|
shbGroup.pszText=sText.GetBuffer(shbGroup.nTextMax);
|
|
sText.ReleaseBuffer();
|
|
m_ShortcutBar.InsertGroup(&shbGroup);
|
|
|
|
// outlook group
|
|
sText=_T("Outlook");
|
|
shbGroup.nMask=SHBIF_TEXT;
|
|
shbGroup.nTextMax=sText.GetLength();
|
|
shbGroup.pszText=sText.GetBuffer(shbGroup.nTextMax);
|
|
sText.ReleaseBuffer();
|
|
m_ShortcutBar.InsertGroup(&shbGroup);
|
|
|
|
// mail group
|
|
sText=_T("Mail");
|
|
shbGroup.nMask=SHBIF_TEXT;
|
|
shbGroup.nTextMax=sText.GetLength();
|
|
shbGroup.pszText=sText.GetBuffer(shbGroup.nTextMax);
|
|
sText.ReleaseBuffer();
|
|
m_ShortcutBar.InsertGroup(&shbGroup);
|
|
|
|
// find the skins group and populate it
|
|
sText=_T("Skins");
|
|
shbGroup.nMask=SHBIF_TEXT;
|
|
shbGroup.nTextMax=sText.GetLength();
|
|
shbGroup.pszText=sText.GetBuffer(shbGroup.nTextMax);
|
|
sText.ReleaseBuffer();
|
|
HSHBGROUP hGroup=m_ShortcutBar.FindGroup(&shbGroup);
|
|
ASSERT(hGroup);
|
|
|
|
m_ShortcutBar.SetLCImageList(hGroup,&m_ilLarge,LVSIL_NORMAL);
|
|
m_ShortcutBar.SetLCImageList(hGroup,&m_ilSmall,LVSIL_SMALL);
|
|
|
|
m_ShortcutBar.InsertLCItem(hGroup, 0, _T("Classic"), 0);
|
|
m_ShortcutBar.InsertLCItem(hGroup, 1, _T("Office XP"), 1);
|
|
m_ShortcutBar.InsertLCItem(hGroup, 2, _T("Office 2003"), 2);
|
|
m_ShortcutBar.ExpandGroup(hGroup);
|
|
m_ShortcutBar.GetGroupListCtrl(hGroup)->ActivateItem(2);
|
|
|
|
// fill standard list controls
|
|
TCHAR shbszItems[][20]={_T("Inbox"),_T("Calendar"),_T("Contracts"),
|
|
_T("Tasks"),_T("Journal"),_T("Notes"),_T("Deleted Items"),_T("Inbox"),
|
|
_T("Sent Items"),_T("Outbox"),_T("Deleted Items")};
|
|
|
|
// find outlook group and populate it
|
|
sText=_T("Outlook");
|
|
shbGroup.nMask=SHBIF_TEXT;
|
|
shbGroup.nTextMax=sText.GetLength();
|
|
shbGroup.pszText=sText.GetBuffer(shbGroup.nTextMax);
|
|
sText.ReleaseBuffer();
|
|
hGroup=m_ShortcutBar.FindGroup(&shbGroup);
|
|
ASSERT(hGroup);
|
|
|
|
m_ShortcutBar.SetLCImageList(hGroup,&m_ilLarge,LVSIL_NORMAL);
|
|
m_ShortcutBar.SetLCImageList(hGroup,&m_ilSmall,LVSIL_SMALL);
|
|
|
|
for(int i=0 ; i<10; i++)
|
|
for(int nIndex=0; nIndex<7 ; nIndex++)
|
|
{
|
|
CString sText=shbszItems[nIndex];
|
|
m_ShortcutBar.InsertLCItem(hGroup,nIndex+7*i,sText,nIndex);
|
|
}
|
|
|
|
// find mail group and populate it
|
|
sText=_T("Mail");
|
|
shbGroup.nMask=SHBIF_TEXT;
|
|
shbGroup.nTextMax=sText.GetLength();
|
|
shbGroup.pszText=sText.GetBuffer(shbGroup.nTextMax);
|
|
sText.ReleaseBuffer();
|
|
hGroup=m_ShortcutBar.FindGroup(&shbGroup);
|
|
ASSERT(hGroup);
|
|
|
|
m_ShortcutBar.SetLCImageList(hGroup,&m_ilLarge,LVSIL_NORMAL);
|
|
m_ShortcutBar.SetLCImageList(hGroup,&m_ilSmall,LVSIL_SMALL);
|
|
|
|
for(int nIndex=7; nIndex<(sizeof(shbszItems)/sizeof(shbszItems[0])); nIndex++)
|
|
{
|
|
CString sText=shbszItems[nIndex];
|
|
LV_ITEM lvi;
|
|
lvi.iItem=nIndex-7;
|
|
lvi.iSubItem=0;
|
|
lvi.mask=LVIF_TEXT|LVIF_IMAGE;
|
|
lvi.iImage=nIndex;
|
|
lvi.cchTextMax=sText.GetLength();
|
|
lvi.pszText=sText.GetBuffer(lvi.cchTextMax);
|
|
sText.ReleaseBuffer();
|
|
m_ShortcutBar.InsertLCItem(hGroup,&lvi);
|
|
}
|
|
|
|
DWORD dwBarStyle=m_ShortcutBar.GetBarStyle();
|
|
dwBarStyle&=~(SHBS_DISABLEDRAGDROPHEADER|SHBS_DISABLEDRAGDROPITEM);
|
|
dwBarStyle|=SHBS_DRAWITEMDRAGIMAGE|SHBS_DRAWHEADERDRAGIMAGE|SHBS_INFOTIP|
|
|
SHBS_AUTOEXPAND|SHBS_ANIMATEEXPAND;
|
|
m_ShortcutBar.SetBarStyle(dwBarStyle);
|
|
}
|
|
|
|
void CWorkspaceBar::OnShortcutBarSelectItem(NMHDR* pNotifyStruct, LRESULT* result)
|
|
{
|
|
LPNMSHORTCUTBAR pNMSHB = (LPNMSHORTCUTBAR) pNotifyStruct;
|
|
ASSERT(pNMSHB != NULL);
|
|
|
|
if (pNMSHB->nItem != -1)
|
|
{
|
|
// Change the skin
|
|
if (m_ShortcutBar.GetGroupText(pNMSHB->hGroup) == _T("Skins"))
|
|
{
|
|
CString strSkinName = m_ShortcutBar.GetGroupListCtrl(pNMSHB->hGroup)->GetItemText(pNMSHB->nItem, 0);
|
|
COXSkinnedApp* pSkinnedApp = DYNAMIC_DOWNCAST(COXSkinnedApp, AfxGetApp());
|
|
if (pSkinnedApp != NULL)
|
|
pSkinnedApp->SetCurrentSkin(strSkinName);
|
|
}
|
|
}
|
|
|
|
*result=0;
|
|
} |