diff -Naurb vdr-1.5.8.org/config.h vdr-1.5.8/config.h --- vdr-1.5.8.org/config.h 2009-01-10 13:17:29.032620640 -0500 +++ vdr-1.5.8/config.h 2009-01-10 13:27:42.083745583 -0500 @@ -38,6 +38,8 @@ #define LIVEBUFFERVERSION 108 +#define MAINMENUHOOKSVERSNUM 1.0 + #define MAXPRIORITY 99 #define MAXLIFETIME 99 diff -Naurb vdr-1.5.8.org/menu.c vdr-1.5.8/menu.c --- vdr-1.5.8.org/menu.c 2009-01-10 13:25:12.811745968 -0500 +++ vdr-1.5.8/menu.c 2009-01-10 13:27:42.084750802 -0500 @@ -3283,15 +3283,30 @@ // Initial submenus: + cOsdMenu *menu = NULL; switch (State) { - case osSchedule: AddSubMenu(new cMenuSchedule); break; - case osChannels: AddSubMenu(new cMenuChannels); break; - case osTimers: AddSubMenu(new cMenuTimers); break; - case osRecordings: AddSubMenu(new cMenuRecordings(NULL, 0, true)); break; - case osSetup: AddSubMenu(new cMenuSetup); break; - case osCommands: AddSubMenu(new cMenuCommands(tr("Commands"), &Commands)); break; + case osSchedule: + if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osSchedule", &menu)) + menu = new cMenuSchedule; + break; + case osChannels: + if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osChannels", &menu)) + menu = new cMenuChannels; + break; + case osTimers: + if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osTimers", &menu)) + menu = new cMenuTimers; + break; + case osRecordings: + if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osRecordings", &menu)) + menu = new cMenuRecordings(NULL, 0, true); + break; + case osSetup: menu = new cMenuSetup; break; + case osCommands: menu = new cMenuCommands(tr("Commands"), &Commands); break; default: break; } + if (menu) + AddSubMenu(menu); } cOsdObject *cMenuMain::PluginOsdObject(void) @@ -3508,13 +3523,34 @@ return osContinue; // PIN PATCH < + cOsdMenu *menu = NULL; switch (state) { - case osSchedule: return AddSubMenu(new cMenuSchedule); - case osChannels: return AddSubMenu(new cMenuChannels); - case osTimers: return AddSubMenu(new cMenuTimers); - case osRecordings: return AddSubMenu(new cMenuRecordings); - case osSetup: return AddSubMenu(new cMenuSetup); - case osCommands: return AddSubMenu(new cMenuCommands(tr("Commands"), &Commands)); + case osSchedule: + if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osSchedule", &menu)) + menu = new cMenuSchedule; + else + state = osContinue; + break; + case osChannels: + if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osChannels", &menu)) + menu = new cMenuChannels; + else + state = osContinue; + break; + case osTimers: + if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osTimers", &menu)) + menu = new cMenuTimers; + else + state = osContinue; + break; + case osRecordings: + if (!cPluginManager::CallFirstService("MainMenuHooksPatch-v1.0::osRecordings", &menu)) + menu = new cMenuRecordings; + else + state = osContinue; + break; + case osSetup: menu = new cMenuSetup; break; + case osCommands: menu = new cMenuCommands(tr("Commands"), &Commands); break; case osStopRecord: if (Interface->Confirm(tr("Stop recording?"))) { cOsdItem *item = Get(Current()); if (item) { @@ -3626,6 +3662,8 @@ default: break; } } + if (menu) + return AddSubMenu(menu); if (!HasSubMenu() && Update(HadSubMenu)) Display(); if (Key != kNone) {