#include "..\API\BBApi.h"
#include "..\Menu\MenuCommon.h"
#include "ToolbarMenu.h"
#include "..\Menu\MenuItem.h"
#include "..\Menu\FolderItem.h"
#include "TaskbarMenu.h"
#include "..\Dock\Dock.h"
#include "..\Settings\Settings.h"
extern MenuCommon *pMenuCommon;
extern Settings *pSettings;
char toolbarBroam[] = "@xoblite Toolbar";
char toolbarPlacementBroam[] = "@xoblite Toolbar Placement";
char toolbarOrientationBroam[] = "@xoblite Toolbar Orientation";
#define GROUP_TOOLBAR_PLACEMENT 1
#define GROUP_TOOLBAR_ORIENTATION 2
ToolbarMenu::ToolbarMenu(char* pszTitle) : FolderItem(NULL, pszTitle, NULL)
{
}
ToolbarMenu::~ToolbarMenu()
{
m_pParent->RemoveChild(m_pSubMenu);
if (m_pSubMenu) delete m_pSubMenu;
m_pSubMenu = NULL;
}
bool ToolbarMenu::Active(bool bActivate)
{
if (bActivate && !m_bActive) UpdateFolder();
return FolderItem::Active(bActivate);
}
void ToolbarMenu::Attached(Menu* pMenu)
{
m_pParent = pMenu;
m_pSubMenu = new Menu(pMenuCommon->hInst);
m_pParent->AddChild(m_pSubMenu);
m_pSubMenu->SetParent(m_pParent);
}
void ToolbarMenu::UpdateFolder()
{
m_pSubMenu->DeleteMenuItems();
pMenuCommon->AddHeaderItem(m_pSubMenu, m_pszTitleANSI);
MenuItem* groupItem;
char command[128];
char temp[MAX_LINE_LENGTH];
Menu* placementSubMenu = MakeMenu("Placement");
if (pSettings->ToolbarPlacement.placement == PLACEMENT_MANUAL)
{
char itemTitle[128];
sprintf_s(itemTitle, sizeof(itemTitle), "<%s>", pSettings->ToolbarPlacement.rcString);
groupItem = pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_EDITSTRING, toolbarPlacementBroam, pSettings->ToolbarPlacement.rcString, itemTitle, true);
}
else groupItem = pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_EDITSTRING, toolbarPlacementBroam, "Manual xC y-50", "<Manual xC y-50>", false);
groupItem->AddToSelectionGroup(GROUP_TOOLBAR_PLACEMENT);
pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
groupItem = pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_COMMAND, toolbarPlacementBroam, "TopLeft", "Top Left", (pSettings->ToolbarPlacement.placement == PLACEMENT_TOP_LEFT));
groupItem->AddToSelectionGroup(GROUP_TOOLBAR_PLACEMENT);
groupItem = pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_COMMAND, toolbarPlacementBroam, "CenterLeft", "Center Left", (pSettings->ToolbarPlacement.placement == PLACEMENT_CENTER_LEFT));
groupItem->AddToSelectionGroup(GROUP_TOOLBAR_PLACEMENT);
groupItem = pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_COMMAND, toolbarPlacementBroam, "BottomLeft", "Bottom Left", (pSettings->ToolbarPlacement.placement == PLACEMENT_BOTTOM_LEFT));
groupItem->AddToSelectionGroup(GROUP_TOOLBAR_PLACEMENT);
pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
groupItem = pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_COMMAND, toolbarPlacementBroam, "TopCenter", "Top Center", (pSettings->ToolbarPlacement.placement == PLACEMENT_TOP_CENTER));
groupItem->AddToSelectionGroup(GROUP_TOOLBAR_PLACEMENT);
groupItem = pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_COMMAND, toolbarPlacementBroam, "BottomCenter", "Bottom Center", (pSettings->ToolbarPlacement.placement == PLACEMENT_BOTTOM_CENTER));
groupItem->AddToSelectionGroup(GROUP_TOOLBAR_PLACEMENT);
pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
groupItem = pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_COMMAND, toolbarPlacementBroam, "TopRight", "Top Right", (pSettings->ToolbarPlacement.placement == PLACEMENT_TOP_RIGHT));
groupItem->AddToSelectionGroup(GROUP_TOOLBAR_PLACEMENT);
groupItem = pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_COMMAND, toolbarPlacementBroam, "CenterRight", "Center Right", (pSettings->ToolbarPlacement.placement == PLACEMENT_CENTER_RIGHT));
groupItem->AddToSelectionGroup(GROUP_TOOLBAR_PLACEMENT);
groupItem = pMenuCommon->CreateMenuItem(placementSubMenu, MENUITEM_COMMAND, toolbarPlacementBroam, "BottomRight", "Bottom Right", (pSettings->ToolbarPlacement.placement == PLACEMENT_BOTTOM_RIGHT));
groupItem->AddToSelectionGroup(GROUP_TOOLBAR_PLACEMENT);
MakeSubmenu(m_pSubMenu, placementSubMenu, "Placement");
Menu* orientationSubMenu = MakeMenu("Orientation");
groupItem = pMenuCommon->CreateMenuItem(orientationSubMenu, MENUITEM_COMMAND, toolbarOrientationBroam, "Horizontal", "Horizontal", !pSettings->toolbarVertical);
groupItem->AddToSelectionGroup(GROUP_TOOLBAR_ORIENTATION);
groupItem = pMenuCommon->CreateMenuItem(orientationSubMenu, MENUITEM_COMMAND, toolbarOrientationBroam, "Vertical", "Vertical", pSettings->toolbarVertical);
groupItem->AddToSelectionGroup(GROUP_TOOLBAR_ORIENTATION);
MakeSubmenu(m_pSubMenu, orientationSubMenu, "Orientation");
Menu* transparencySubMenu = MakeMenu("Transparency");
sprintf_s(command, sizeofArray(command), "\"@xoblite Toolbar Transparency\" %d 1 255", pSettings->toolbarTransparencyAlpha);
pMenuCommon->CreateMenuItem(transparencySubMenu, MENUITEM_EDITINT, command, NULL, "Toolbar:", false);
sprintf_s(command, sizeofArray(command), "\"@xoblite Toolbar Transparency Label\" %d 1 255", pSettings->toolbarLabelTransparencyAlpha);
pMenuCommon->CreateMenuItem(transparencySubMenu, MENUITEM_EDITINT, command, NULL, "Label:", false);
sprintf_s(command, sizeofArray(command), "\"@xoblite Toolbar Transparency WindowLabel\" %d 1 255", pSettings->toolbarWindowLabelTransparencyAlpha);
pMenuCommon->CreateMenuItem(transparencySubMenu, MENUITEM_EDITINT, command, NULL, "WindowLabel:", false);
sprintf_s(command, sizeofArray(command), "\"@xoblite Toolbar Transparency Clock\" %d 1 255", pSettings->toolbarClockTransparencyAlpha);
pMenuCommon->CreateMenuItem(transparencySubMenu, MENUITEM_EDITINT, command, NULL, "Clock:", false);
sprintf_s(command, sizeofArray(command), "\"@xoblite Toolbar Transparency Button\" %d 1 255", pSettings->toolbarButtonTransparencyAlpha);
pMenuCommon->CreateMenuItem(transparencySubMenu, MENUITEM_EDITINT, command, NULL, "Button:", false);
sprintf_s(command, sizeofArray(command), "\"@xoblite Toolbar Transparency ActiveTask\" %d 1 255", pSettings->taskbarActiveTransparencyAlpha);
pMenuCommon->CreateMenuItem(transparencySubMenu, MENUITEM_EDITINT, command, NULL, "Active Task:", false);
MakeSubmenu(m_pSubMenu, transparencySubMenu, "Transparency");
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
TaskbarMenu *taskbarSubMenu = new TaskbarMenu("Taskbar");
taskbarSubMenu->SetHeight(pMenuCommon->m_nSubmenuHeight);
m_pSubMenu->AddMenuItem(taskbarSubMenu);
Menu* hideOtherSubMenu = MakeMenu("Other elements");
pMenuCommon->CreateMenuItem(hideOtherSubMenu, MENUITEM_BOOLEAN, "@xoblite Toolbar Toggle Label", NULL, "Hide workspace label", pSettings->toolbarLabelHidden);
pMenuCommon->CreateMenuItem(hideOtherSubMenu, MENUITEM_BOOLEAN, "@xoblite Toolbar Toggle DownUp Buttons", NULL, "Hide down/up buttons", pSettings->toolbarDownUpButtonsHidden);
pMenuCommon->CreateMenuItem(hideOtherSubMenu, MENUITEM_BOOLEAN, "@xoblite Toolbar Toggle LeftRight Buttons", NULL, "Hide left/right buttons", pSettings->toolbarLeftRightButtonsHidden);
pMenuCommon->CreateMenuItem(hideOtherSubMenu, MENUITEM_BOOLEAN, "@xoblite Toolbar Toggle Clock", NULL, "Hide clock", pSettings->toolbarClockHidden);
pMenuCommon->CreateMenuItem(hideOtherSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
pMenuCommon->CreateMenuItem(hideOtherSubMenu, MENUITEM_BOOLEAN, "@xoblite Toolbar Toggle Asymmetry", NULL, "Allow asymmetry", pSettings->toolbarAllowAsymmetry);
pMenuCommon->CreateMenuItem(hideOtherSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
Menu* buttonOverridesSubMenu = MakeMenu("Button overrides");
sprintf_s(temp, sizeofArray(temp), "Down: <%s>", pSettings->toolbarDownButtonOverride);
pMenuCommon->CreateMenuItem(buttonOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Button Down", pSettings->toolbarDownButtonOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "Up: <%s>", pSettings->toolbarUpButtonOverride);
pMenuCommon->CreateMenuItem(buttonOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Button Up", pSettings->toolbarUpButtonOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "Left: <%s>", pSettings->toolbarLeftButtonOverride);
pMenuCommon->CreateMenuItem(buttonOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Button Left", pSettings->toolbarLeftButtonOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "Right: <%s>", pSettings->toolbarRightButtonOverride);
pMenuCommon->CreateMenuItem(buttonOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Button Right", pSettings->toolbarRightButtonOverride, temp, false);
MakeSubmenu(hideOtherSubMenu, buttonOverridesSubMenu, "Button overrides");
MakeSubmenu(m_pSubMenu, hideOtherSubMenu, "Other elements");
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
if (pSettings->toolbarVertical)
{
if (pSettings->toolbarVerticalWidth <= 100)
{
sprintf_s(command, sizeofArray(command), "\"@xoblite Toolbar Width\" %d 5 25", pSettings->toolbarVerticalWidth);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_EDITINT, command, NULL, "Width (%):", false);
}
else
{
int screenWidth = GetSystemMetrics(SM_CXVIRTUALSCREEN);
sprintf_s(command, sizeofArray(command), "\"@xoblite Toolbar Width\" %d %u %u", pSettings->toolbarVerticalWidth, ((screenWidth * 5) / 100), ((screenWidth * 25) / 100));
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_EDITINT, command, NULL, "Width (px):", false);
}
}
else
{
if (pSettings->toolbarHorizontalWidth <= 100)
{
sprintf_s(command, sizeofArray(command), "\"@xoblite Toolbar Width\" %d 30 100", pSettings->toolbarHorizontalWidth);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_EDITINT, command, NULL, "Width (%):", false);
}
else
{
int screenWidth = GetSystemMetrics(SM_CXVIRTUALSCREEN);
sprintf_s(command, sizeofArray(command), "\"@xoblite Toolbar Width\" %d %u %u", pSettings->toolbarHorizontalWidth, ((screenWidth*30) / 100), screenWidth);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_EDITINT, command, NULL, "Width (px):", false);
}
}
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_BOOLEAN, toolbarBroam, "ToggleRoundedCorners", "Rounded corners", pSettings->toolbarRoundedCorners);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_BOOLEAN, toolbarBroam, "ToggleAlwaysOnTop", "Always on top", pSettings->toolbarOnTop);
if (pSettings->ToolbarPlacement.placement == PLACEMENT_MANUAL)
{
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_BOOLEAN, toolbarBroam, "ToggleSnapToEdges", "Snap to screen edges", pSettings->toolbarSnapToEdges);
}
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
Menu* toolbarClickOverridesSubMenu = MakeMenu("Mouse click overrides");
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_NOP, NULL, NULL, "Label", false);
sprintf_s(temp, sizeofArray(temp), "DL: <%s>", pSettings->toolbarLabelDLClickOverride);
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Label Click DL", pSettings->toolbarLabelDLClickOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "R: <%s>", pSettings->toolbarLabelRClickOverride);
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Label Click R", pSettings->toolbarLabelRClickOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "M: <%s>", pSettings->toolbarLabelMClickOverride);
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Label Click M", pSettings->toolbarLabelMClickOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "X1: <%s>", pSettings->toolbarLabelX1ClickOverride);
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Label Click X1", pSettings->toolbarLabelX1ClickOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "X2: <%s>", pSettings->toolbarLabelX2ClickOverride);
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Label Click X2", pSettings->toolbarLabelX2ClickOverride, temp, false);
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_NOP, NULL, NULL, "Clock", false);
sprintf_s(temp, sizeofArray(temp), "DL: <%s>", pSettings->toolbarClockDLClickOverride);
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Clock Click DL", pSettings->toolbarClockDLClickOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "R: <%s>", pSettings->toolbarClockRClickOverride);
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Clock Click R", pSettings->toolbarClockRClickOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "M: <%s>", pSettings->toolbarClockMClickOverride);
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Clock Click M", pSettings->toolbarClockMClickOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "X1: <%s>", pSettings->toolbarClockX1ClickOverride);
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Clock Click X1", pSettings->toolbarClockX1ClickOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "X2: <%s>", pSettings->toolbarClockX2ClickOverride);
pMenuCommon->CreateMenuItem(toolbarClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Toolbar Clock Click X2", pSettings->toolbarClockX2ClickOverride, temp, false);
MakeSubmenu(m_pSubMenu, toolbarClickOverridesSubMenu, "Mouse click overrides");
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_BOOLEAN, toolbarBroam, "Toggle", "Hide Toolbar", pSettings->toolbarHidden);
pMenuCommon->AddFooterItem(m_pSubMenu, "");
m_pSubMenu->Invalidate();
m_pSubMenu->Validate();
}