#include "..\API\BBApi.h"
#include "..\Menu\MenuCommon.h"
#include "DesktopMenu.h"
#include "..\Menu\MenuItem.h"
#include "..\Menu\FolderItem.h"
#include "..\Settings\ConfigMenu.h"
#include "..\Hotkeys\Hotkeys.h"
#include "..\Settings\Settings.h"
extern MenuCommon *pMenuCommon;
extern Desktop* pDesktop;
extern Settings *pSettings;
#define GROUP_DESKTOP_CLOCK 1
DesktopMenu::DesktopMenu(char* pszTitle) : FolderItem(NULL, pszTitle, NULL)
{
}
DesktopMenu::~DesktopMenu()
{
m_pParent->RemoveChild(m_pSubMenu);
if (m_pSubMenu) delete m_pSubMenu;
m_pSubMenu = NULL;
}
bool DesktopMenu::Active(bool bActivate)
{
if (bActivate && !m_bActive) UpdateFolder();
return FolderItem::Active(bActivate);
}
void DesktopMenu::Attached(Menu* pMenu)
{
m_pParent = pMenu;
m_pSubMenu = new Menu(pMenuCommon->hInst);
m_pParent->AddChild(m_pSubMenu);
m_pSubMenu->SetParent(m_pParent);
}
void DesktopMenu::UpdateFolder()
{
m_pSubMenu->DeleteMenuItems();
pMenuCommon->AddHeaderItem(m_pSubMenu, m_pszTitleANSI);
char temp[MAX_LINE_LENGTH];
Menu* desktopWidgetPlacementsSubMenu = MakeMenu("Placement");
if (pSettings->desktopClockPlacement.placement == PLACEMENT_MANUAL)
{
sprintf_s(temp, sizeofArray(temp), "Clock: <%s>", pSettings->desktopClockPlacement.rcString);
pMenuCommon->CreateMenuItem(desktopWidgetPlacementsSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Clock Placement", pSettings->desktopClockPlacement.rcString, temp, false);
}
else if (pSettings->desktopClockPlacement.placement == PLACEMENT_DEFAULT) pMenuCommon->CreateMenuItem(desktopWidgetPlacementsSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Clock Placement", "Default", "Clock: <Default>", false);
else pMenuCommon->CreateMenuItem(desktopWidgetPlacementsSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Clock Placement", "Manual x0 y0", "Clock: <Manual x0 y0>", false);
if (pSettings->desktopWeekdayPlacement.placement == PLACEMENT_MANUAL)
{
sprintf_s(temp, sizeofArray(temp), "Weekday: <%s>", pSettings->desktopWeekdayPlacement.rcString);
pMenuCommon->CreateMenuItem(desktopWidgetPlacementsSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Weekday Placement", pSettings->desktopWeekdayPlacement.rcString, temp, false);
}
else pMenuCommon->CreateMenuItem(desktopWidgetPlacementsSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Weekday Placement", "Manual x0 y0", "Weekday: <Manual x0 y0>", false);
if (pSettings->desktopDatePlacement.placement == PLACEMENT_MANUAL)
{
sprintf_s(temp, sizeofArray(temp), "Date: <%s>", pSettings->desktopDatePlacement.rcString);
pMenuCommon->CreateMenuItem(desktopWidgetPlacementsSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Date Placement", pSettings->desktopDatePlacement.rcString, temp, false);
}
else pMenuCommon->CreateMenuItem(desktopWidgetPlacementsSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Date Placement", "Manual x0 y0", "Date: <Manual x0 y0>", false);
if (pSettings->desktopGreetingPlacement.placement == PLACEMENT_MANUAL)
{
sprintf_s(temp, sizeofArray(temp), "Greeting: <%s>", pSettings->desktopGreetingPlacement.rcString);
pMenuCommon->CreateMenuItem(desktopWidgetPlacementsSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Greeting Placement", pSettings->desktopGreetingPlacement.rcString, temp, false);
}
else pMenuCommon->CreateMenuItem(desktopWidgetPlacementsSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Greeting Placement", "Manual x0 y0", "Greeting: <Manual x0 y0>", false);
MakeSubmenu(m_pSubMenu, desktopWidgetPlacementsSubMenu, "Placement");
Menu* desktopTransparencySubMenu = MakeMenu("Transparency");
sprintf_s(temp, sizeofArray(temp), "\"@xoblite Desktop Clock Transparency\" %d 1 255", pSettings->desktopClockTransparencyAlpha);
pMenuCommon->CreateMenuItem(desktopTransparencySubMenu, MENUITEM_EDITINT, temp, NULL, "Clock:", false);
sprintf_s(temp, sizeofArray(temp), "\"@xoblite Desktop Weekday Transparency\" %d 1 255", pSettings->desktopWeekdayTransparencyAlpha);
pMenuCommon->CreateMenuItem(desktopTransparencySubMenu, MENUITEM_EDITINT, temp, NULL, "Weekday:", false);
sprintf_s(temp, sizeofArray(temp), "\"@xoblite Desktop Date Transparency\" %d 1 255", pSettings->desktopDateTransparencyAlpha);
pMenuCommon->CreateMenuItem(desktopTransparencySubMenu, MENUITEM_EDITINT, temp, NULL, "Date:", false);
sprintf_s(temp, sizeofArray(temp), "\"@xoblite Desktop Greeting Transparency\" %d 1 255", pSettings->desktopGreetingTransparencyAlpha);
pMenuCommon->CreateMenuItem(desktopTransparencySubMenu, MENUITEM_EDITINT, temp, NULL, "Greeting:", false);
MakeSubmenu(m_pSubMenu, desktopTransparencySubMenu, "Transparency");
Menu* desktopWidgetOrderSubMenu = MakeMenu("Order");
Menu* desktopWidgetOrderClockSubMenu = MakeMenu("Clock");
Menu* desktopWidgetOrderClockWeekdaySubMenu = MakeMenu("Weekday");
pMenuCommon->CreateMenuItem(desktopWidgetOrderClockWeekdaySubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Widgets Order xxxx", NULL, "... Date Greeting", false);
pMenuCommon->CreateMenuItem(desktopWidgetOrderClockWeekdaySubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Widgets Order xxxx", NULL, "... Greeting Date", false);
MakeSubmenu(desktopWidgetOrderClockSubMenu, desktopWidgetOrderClockWeekdaySubMenu, "Weekday");
Menu* desktopWidgetOrderClockDateSubMenu = MakeMenu("Date");
pMenuCommon->CreateMenuItem(desktopWidgetOrderClockDateSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Widgets Order xxxx", NULL, "... Weekday Greeting", false);
pMenuCommon->CreateMenuItem(desktopWidgetOrderClockDateSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Widgets Order xxxx", NULL, "... Greeting Weekday", false);
MakeSubmenu(desktopWidgetOrderClockSubMenu, desktopWidgetOrderClockDateSubMenu, "Date");
Menu* desktopWidgetOrderClockGreetingSubMenu = MakeMenu("Greeting");
pMenuCommon->CreateMenuItem(desktopWidgetOrderClockGreetingSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Widgets Order xxxx", NULL, "... Date Weekday", false);
pMenuCommon->CreateMenuItem(desktopWidgetOrderClockGreetingSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Widgets Order xxxx", NULL, "... Weekday Date", false);
MakeSubmenu(desktopWidgetOrderClockSubMenu, desktopWidgetOrderClockGreetingSubMenu, "Greeting");
MakeSubmenu(desktopWidgetOrderSubMenu, desktopWidgetOrderClockSubMenu, "Clock");
Menu* desktopWidgetOrderWeekdaySubMenu = MakeMenu("Weekday");
MakeSubmenu(desktopWidgetOrderSubMenu, desktopWidgetOrderWeekdaySubMenu, "Weekday");
Menu* desktopWidgetOrderDateSubMenu = MakeMenu("Date");
MakeSubmenu(desktopWidgetOrderSubMenu, desktopWidgetOrderDateSubMenu, "Date");
Menu* desktopWidgetOrderGreetingSubMenu = MakeMenu("Greeting");
MakeSubmenu(desktopWidgetOrderSubMenu, desktopWidgetOrderGreetingSubMenu, "Greeting");
MakeSubmenu(m_pSubMenu, desktopWidgetOrderSubMenu, "Order");
Menu* desktopFontSubMenu = MakeMenu("Font");
char fontAsString[128];
sprintf_s(fontAsString, sizeofArray(fontAsString), "%s/%u/", pSettings->desktopClockFont, pSettings->desktopClockFontHeight);
if (pSettings->desktopClockFontWeight == FW_BOLD) strcat_s(fontAsString, "Bold");
else strcat_s(fontAsString, "Normal");
sprintf_s(temp, sizeofArray(temp), "Clock: <%s>", fontAsString);
pMenuCommon->CreateMenuItem(desktopFontSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Clock Font", fontAsString, temp, false);
sprintf_s(fontAsString, sizeofArray(fontAsString), "%s/%u/", pSettings->desktopWeekdayFont, pSettings->desktopWeekdayFontHeight);
if (pSettings->desktopWeekdayFontWeight == FW_BOLD) strcat_s(fontAsString, "Bold");
else strcat_s(fontAsString, "Normal");
sprintf_s(temp, sizeofArray(temp), "Weekday: <%s>", fontAsString);
pMenuCommon->CreateMenuItem(desktopFontSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Weekday Font", fontAsString, temp, false);
sprintf_s(fontAsString, sizeofArray(fontAsString), "%s/%u/", pSettings->desktopDateFont, pSettings->desktopDateFontHeight);
if (pSettings->desktopDateFontWeight == FW_BOLD) strcat_s(fontAsString, "Bold");
else strcat_s(fontAsString, "Normal");
sprintf_s(temp, sizeofArray(temp), "Date: <%s>", fontAsString);
pMenuCommon->CreateMenuItem(desktopFontSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Date Font", fontAsString, temp, false);
sprintf_s(fontAsString, sizeofArray(fontAsString), "%s/%u/", pSettings->desktopGreetingFont, pSettings->desktopGreetingFontHeight);
if (pSettings->desktopGreetingFontWeight == FW_BOLD) strcat_s(fontAsString, "Bold");
else strcat_s(fontAsString, "Normal");
sprintf_s(temp, sizeofArray(temp), "Greeting: <%s>", fontAsString);
pMenuCommon->CreateMenuItem(desktopFontSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Greeting Font", fontAsString, temp, false);
MakeSubmenu(m_pSubMenu, desktopFontSubMenu, "Font");
Menu* desktopColorSubMenu = MakeMenu("Color");
char tempColor[10];
sprintf_s(tempColor, sizeofArray(tempColor), "#%02x%02x%02x", GetRValue(pSettings->desktopClockColor), GetGValue(pSettings->desktopClockColor), GetBValue(pSettings->desktopClockColor));
sprintf_s(temp, sizeofArray(temp), "Clock: <%s>", tempColor);
pMenuCommon->CreateMenuItem(desktopColorSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Clock Color", tempColor, temp, false);
sprintf_s(tempColor, sizeofArray(tempColor), "#%02x%02x%02x", GetRValue(pSettings->desktopWeekdayColor), GetGValue(pSettings->desktopWeekdayColor), GetBValue(pSettings->desktopWeekdayColor));
sprintf_s(temp, sizeofArray(temp), "Weekday: <%s>", tempColor);
pMenuCommon->CreateMenuItem(desktopColorSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Weekday Color", tempColor, temp, false);
sprintf_s(tempColor, sizeofArray(tempColor), "#%02x%02x%02x", GetRValue(pSettings->desktopDateColor), GetGValue(pSettings->desktopDateColor), GetBValue(pSettings->desktopDateColor));
sprintf_s(temp, sizeofArray(temp), "Date: <%s>", tempColor);
pMenuCommon->CreateMenuItem(desktopColorSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Date Color", tempColor, temp, false);
sprintf_s(tempColor, sizeofArray(tempColor), "#%02x%02x%02x", GetRValue(pSettings->desktopGreetingColor), GetGValue(pSettings->desktopGreetingColor), GetBValue(pSettings->desktopGreetingColor));
sprintf_s(temp, sizeofArray(temp), "Greeting: <%s>", tempColor);
pMenuCommon->CreateMenuItem(desktopColorSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Greeting Color", tempColor, temp, false);
MakeSubmenu(m_pSubMenu, desktopColorSubMenu, "Color");
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
Menu* desktopClockSubMenu = MakeMenu("Clock type");
MenuItem* groupItem;
groupItem = pMenuCommon->CreateMenuItem(desktopClockSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Clock Regular", NULL, "Regular", !_stricmp(pSettings->desktopClockType, "Regular"));
groupItem->AddToSelectionGroup(GROUP_DESKTOP_CLOCK);
groupItem = pMenuCommon->CreateMenuItem(desktopClockSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Clock Text", NULL, "Text", !_stricmp(pSettings->desktopClockType, "Text"));
groupItem->AddToSelectionGroup(GROUP_DESKTOP_CLOCK);
groupItem = pMenuCommon->CreateMenuItem(desktopClockSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Clock Binary", NULL, "Binary", !_stricmp(pSettings->desktopClockType, "Binary"));
groupItem->AddToSelectionGroup(GROUP_DESKTOP_CLOCK);
MakeSubmenu(m_pSubMenu, desktopClockSubMenu, "Clock type");
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Toggle Clock", NULL, "Hide clock", pSettings->desktopClockHidden);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Toggle Weekday", NULL, "Hide weekday", pSettings->desktopWeekdayHidden);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Toggle Date", NULL, "Hide date", pSettings->desktopDateHidden);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Toggle Greeting", NULL, "Hide greeting", pSettings->desktopGreetingHidden);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Toggle Indicator", NULL, "Hide indicator", pSettings->desktopWorkspaceIndicatorHidden);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_BOOLEAN, "@xoblite Desktop Toggle Border", NULL, "Hide border", pSettings->desktopBorderHidden);
pMenuCommon->CreateMenuItem(m_pSubMenu, MENUITEM_SEPARATOR, NULL, NULL, NULL, false);
Menu* desktopClickOverridesSubMenu = MakeMenu("Mouse click overrides");
sprintf_s(temp, sizeofArray(temp), "R: <%s>", pSettings->desktopRClickOverride);
pMenuCommon->CreateMenuItem(desktopClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Click R", pSettings->desktopRClickOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "M: <%s>", pSettings->desktopMClickOverride);
pMenuCommon->CreateMenuItem(desktopClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Click M", pSettings->desktopMClickOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "X1: <%s>", pSettings->desktopX1ClickOverride);
pMenuCommon->CreateMenuItem(desktopClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Click X1", pSettings->desktopX1ClickOverride, temp, false);
sprintf_s(temp, sizeofArray(temp), "X2: <%s>", pSettings->desktopX2ClickOverride);
pMenuCommon->CreateMenuItem(desktopClickOverridesSubMenu, MENUITEM_EDITSTRING, "@xoblite Desktop Click X2", pSettings->desktopX2ClickOverride, temp, false);
MakeSubmenu(m_pSubMenu, desktopClickOverridesSubMenu, "Mouse click overrides");
pMenuCommon->AddFooterItem(m_pSubMenu, "");
m_pSubMenu->Invalidate();
m_pSubMenu->Validate();
}