r4159 - in vdr/vdr-plugin-epgsearch/trunk/debian: . patches

Tobias Grimm tiber-guest at alioth.debian.org
Sun Feb 4 16:22:56 CET 2007


Author: tiber-guest
Date: 2007-02-04 16:22:55 +0100 (Sun, 04 Feb 2007)
New Revision: 4159

Added:
   vdr/vdr-plugin-epgsearch/trunk/debian/patches/90_menushortcuts.dpatch
Modified:
   vdr/vdr-plugin-epgsearch/trunk/debian/changelog
   vdr/vdr-plugin-epgsearch/trunk/debian/install
   vdr/vdr-plugin-epgsearch/trunk/debian/patches/00list
Log:
* Added 90_menushortcuts.dpatch and installing menu shortcut plugins now

Modified: vdr/vdr-plugin-epgsearch/trunk/debian/changelog
===================================================================
--- vdr/vdr-plugin-epgsearch/trunk/debian/changelog	2007-02-03 17:12:08 UTC (rev 4158)
+++ vdr/vdr-plugin-epgsearch/trunk/debian/changelog	2007-02-04 15:22:55 UTC (rev 4159)
@@ -1,3 +1,9 @@
+vdr-plugin-epgsearch (0.9.20-2) experimental; urgency=low
+
+  * Added 90_menushortcuts.dpatch and installing menu shortcut plugins now
+
+ -- Tobias Grimm <tg at e-tobi.net>  Sun,  4 Feb 2007 16:22:20 +0100
+
 vdr-plugin-epgsearch (0.9.20-1) unstable; urgency=low
 
   * New upstream release

Modified: vdr/vdr-plugin-epgsearch/trunk/debian/install
===================================================================
--- vdr/vdr-plugin-epgsearch/trunk/debian/install	2007-02-03 17:12:08 UTC (rev 4158)
+++ vdr/vdr-plugin-epgsearch/trunk/debian/install	2007-02-04 15:22:55 UTC (rev 4159)
@@ -1,4 +1,7 @@
 libvdr-epgsearch.so.*           usr/lib/vdr/plugins/
+libvdr-epgsearchonly.so.*       usr/lib/vdr/plugins/
+libvdr-conflictcheckonly.so.*   usr/lib/vdr/plugins/
+libvdr-quickepgsearch.so.*      usr/lib/vdr/plugins/
 
 debian/epgsearchcmds.conf       etc/vdr/plugins/epgsearch/
 debian/epgsearchmenu.conf       etc/vdr/plugins/epgsearch/

Modified: vdr/vdr-plugin-epgsearch/trunk/debian/patches/00list
===================================================================
--- vdr/vdr-plugin-epgsearch/trunk/debian/patches/00list	2007-02-03 17:12:08 UTC (rev 4158)
+++ vdr/vdr-plugin-epgsearch/trunk/debian/patches/00list	2007-02-04 15:22:55 UTC (rev 4159)
@@ -1,2 +1,3 @@
 01_debian-defaults
+90_menushortcuts
 #91_epgsearch-1.5.0

Added: vdr/vdr-plugin-epgsearch/trunk/debian/patches/90_menushortcuts.dpatch
===================================================================
--- vdr/vdr-plugin-epgsearch/trunk/debian/patches/90_menushortcuts.dpatch	2007-02-03 17:12:08 UTC (rev 4158)
+++ vdr/vdr-plugin-epgsearch/trunk/debian/patches/90_menushortcuts.dpatch	2007-02-04 15:22:55 UTC (rev 4159)
@@ -0,0 +1,1468 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 90_menushortcuts.dpatch by Tobias Grimm <tg at e-tobi.net>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Makes the menu shortcuts optional (will be in the next upstream)
+
+ at DPATCH@
+diff -Nur epgsearch-0.9.20/conflictcheckonly.c epgsearch-0.9.20-tg/conflictcheckonly.c
+--- epgsearch-0.9.20/conflictcheckonly.c	2007-01-27 13:40:49.000000000 +0100
++++ epgsearch-0.9.20-tg/conflictcheckonly.c	2007-02-02 10:08:43.000000000 +0100
+@@ -8,324 +8,177 @@
+ #include <vdr/plugin.h>
+ #include <vdr/i18n.h>
+ #include "services.h"
++#include "mainmenushortcut.h"
+ 
+ static const char VERSION[]        = "0.0.1";
+ static const char DESCRIPTION[]    = "Direct access to epgsearch's conflict check menu";
+ static const char MAINMENUENTRY[]  = "Timer conflicts";
++static const char SETUPTEXT[]      = "Conflict info in main menu";
+ 
+-int showInfoInMain=1;
+-char mainmenuentry[MaxFileName] = "";
+-
+-const tI18nPhrase Phrases[] = {
+-  { "Direct access to epgsearch's conflict check menu",
+-    "Direkter Zugriff auf epgsearch's Konflikt-Prüfungs-Menü",// Deutsch
+-    "",// TODO 
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO 
+-    "",// TODO
+-    "",// TODO 
+-    "Suoratoiminto EPGSearch-laajennoksen ajastimien tarkistukselle",
+-    "",// TODO Polski
+-    "",// TODO Español
+-    "",// TODO ÅëëçíéêÜ (Greek)
+-    "",// TODO Svenska
+-    "",// TODO Romaneste
+-    "",// TODO Magyar
+-    "",// TODO Català
+-    "",// TODO ÀãááÚØÙ (Russian)
+-    "",// TODO Hrvatski (Croatian)
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "Timer conflicts",
+-    "Timer-Konflikte",
+-    "",// TODO
+-    "",// TODO
+-    "",
+-    "",// TODO
+-    "",
+-    "",// TODO
+-    "Ajastimien päällekkäisyydet",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "This version of EPGSearch does not support this service!",
+-    "Diese Version von EPGSearch unterstützt diesen Dienst nicht!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "EPGSearch-laajennos ei tarjoa vaadittavaa palvelua!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "EPGSearch does not exist!",
+-    "EPGSearch nicht vorhanden!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "EPGSearch-laajennosta ei löydy!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "Plugin needs vdr-1.3.36 or above!",
+-    "Plugin benötigt vdr-1.3.36 oder höher!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "Laajennos tarvitsee toimiakseen vähintään vdr-1.3.36!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "next",
+-    "nächster",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "seuraava",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "Show conflict info in main menu entry",
+-    "Zeige Konflikt-Info in Hauptmenüeintrag",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "Näytä päällekkäisyydet päävalikossa",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { NULL }
+-  };
++const tI18nPhrase Phrases[] =
++{
++    {
++        "Direct access to epgsearch's conflict check menu",
++        "Direkter Zugriff auf epgsearch's Konflikt-Prüfungs-Menü",// Deutsch
++        "",// TODO 
++        "",// TODO
++        "",// TODO
++        "",// TODO 
++        "",// TODO
++        "",// TODO 
++        "Suoratoiminto EPGSearch-laajennoksen ajastimien tarkistukselle",
++        "",// TODO Polski
++        "",// TODO Español
++        "",// TODO ÅëëçíéêÜ (Greek)
++        "",// TODO Svenska
++        "",// TODO Romaneste
++        "",// TODO Magyar
++        "",// TODO Català
++        "",// TODO ÀãááÚØÙ (Russian)
++        "",// TODO Hrvatski (Croatian)
++        "", // Eesti
++        "", // Dansk
++        "", // Czech
++    },
++    {
++        "Timer conflicts",
++        "Timer-Konflikte",
++        "",// TODO
++        "",// TODO
++        "",
++        "",// TODO
++        "",
++        "",// TODO
++        "Ajastimien päällekkäisyydet",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "", // Eesti
++        "", // Dansk
++        "", // Czech
++    },
++    {
++        "next",
++        "nächster",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "seuraava",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "", // Eesti
++        "", // Dansk
++        "", // Czech
++    },
++    {
++        "Cconflict info in main menu",
++        "Konflikt-Info im Hauptmenü",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "Näytä päällekkäisyydet päävalikossa",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "", // Eesti
++        "", // Dansk
++        "", // Czech
++    },
++    { NULL }
++};
+   
+ cString DateTime(time_t t)
+ {
+-  char buffer[32];
+-  if (t == 0)
+-     time(&t);
+-  struct tm tm_r;
+-  tm *tm = localtime_r(&t, &tm_r);
+-  snprintf(buffer, sizeof(buffer), "%02d.%02d %02d:%02d", tm->tm_mday, tm->tm_mon + 1, tm->tm_hour, tm->tm_min);
+-  return buffer;
+-}
+-
+-class cMenuConflictcheckonlySetup : public cMenuSetupPage {
+-  private:
+-    virtual void Setup(void)
+-	{
+-	    Add(new cMenuEditBoolItem(tr("Show conflict info in main menu entry"), &showInfoInMain, tr("no"), tr("yes")));
+-	}
+-  protected:
+-    virtual void Store(void)
+-	{
+-	    SetupStore("ConflictInfoInMain", showInfoInMain);
+-	}
+-  public:
+-    cMenuConflictcheckonlySetup(void)
+-	{
+-	    Setup();
+-	};
+-  };
+-
+-
+-class cPluginConflictcheckonly : public cPlugin {
+-private:
+-  // Add any member variables or functions you may need here.
+-public:
+-  cPluginConflictcheckonly(void);
+-  virtual ~cPluginConflictcheckonly();
+-  virtual const char *Version(void) { return VERSION; }
+-  virtual const char *Description(void) { return tr(DESCRIPTION); }
+-  virtual const char *CommandLineHelp(void);
+-  virtual bool ProcessArgs(int argc, char *argv[]);
+-  virtual bool Initialize(void);
+-  virtual bool Start(void);
+-  virtual void Stop(void);
+-  virtual void Housekeeping(void);
+-  virtual const char *MainMenuEntry(void);
+-  virtual cOsdObject *MainMenuAction(void);
+-  virtual cMenuSetupPage *SetupMenu(void);
+-  virtual bool SetupParse(const char *Name, const char *Value);
+-  };
+-
+-cPluginConflictcheckonly::cPluginConflictcheckonly(void)
+-{
+-}
+-
+-cPluginConflictcheckonly::~cPluginConflictcheckonly()
+-{
+-}
+-
+-const char* cPluginConflictcheckonly::MainMenuEntry(void)
+-{
+-    if (showInfoInMain)
++    char buffer[32];
++    if (t == 0)
+     {
+-	Epgsearch_lastconflictinfo_v1_0* serviceData = new Epgsearch_lastconflictinfo_v1_0;
+-	serviceData->nextConflict = 0;
+-	serviceData->relevantConflicts = 0;
+-	serviceData->totalConflicts = 0;
+-	
+-	cPlugin *p = cPluginManager::GetPlugin("epgsearch");
+-	if (p)
+-	    p->Service("Epgsearch-lastconflictinfo-v1.0", serviceData);
+-	
+-	if (serviceData->relevantConflicts > 0)
+-	{
+-	    sprintf(mainmenuentry, "%s (%d, %s: %s)", tr(MAINMENUENTRY), serviceData->relevantConflicts, 
+-		    tr("next"), *DateTime(serviceData->nextConflict));
+-	    delete serviceData;
+-	    return mainmenuentry;
+-	}
+-	
+-	delete serviceData;
++        time(&t);
+     }
+-    return tr(MAINMENUENTRY);
+-}
++    struct tm tm_r;
++    tm *tm = localtime_r(&t, &tm_r);
++    snprintf(buffer, sizeof(buffer), "%02d.%02d %02d:%02d", tm->tm_mday, tm->tm_mon + 1, tm->tm_hour, tm->tm_min);
++    return buffer;
++}
++
++class cPluginConflictcheckonly : public cMainMenuShortcut
++{
++    private:
++        char* _menuText;
++
++    public:
++        cPluginConflictcheckonly();
++        ~cPluginConflictcheckonly();
++        virtual const char* Version() { return VERSION; }
++        virtual const char* Description() { return tr(DESCRIPTION); }
++        virtual bool Initialize();
++        virtual cOsdObject* MainMenuAction() { return GetEpgSearchMenu("Epgsearch-conflictmenu-v1.0"); }
++
++    protected:
++        virtual const char* SetupText() { return tr(SETUPTEXT); }
++        virtual const char* MainMenuText();
++};
+ 
+-const char *cPluginConflictcheckonly::CommandLineHelp(void)
++cPluginConflictcheckonly::cPluginConflictcheckonly()
++:_menuText(NULL)
+ {
+-  return NULL;
+ }
+ 
+-bool cPluginConflictcheckonly::ProcessArgs(int argc, char *argv[])
+-{
+-  return true;
+-}
+-
+-bool cPluginConflictcheckonly::Initialize(void)
+-{
+-  RegisterI18n(Phrases);
+-  return true;
+-}
+-
+-bool cPluginConflictcheckonly::Start(void)
+-{
+-  return true;
+-}
+-
+-void cPluginConflictcheckonly::Stop(void)
+-{
+-}
+-
+-void cPluginConflictcheckonly::Housekeeping(void)
++cPluginConflictcheckonly::~cPluginConflictcheckonly()
+ {
++    free(_menuText);
+ }
+ 
+-cOsdObject *cPluginConflictcheckonly::MainMenuAction(void)
++const char* cPluginConflictcheckonly::MainMenuText(void)
+ {
+-    cPlugin *p = cPluginManager::GetPlugin("epgsearch");
+-    if (p)
+-    {
+- 	Epgsearch_conflictmenu_v1_0* serviceData = new Epgsearch_conflictmenu_v1_0;
+-	serviceData->pConflictMenu = NULL;
+-	
+-	cOsdMenu* pMenu = NULL;
+-	if (p->Service("Epgsearch-conflictmenu-v1.0", serviceData))
+-	    pMenu = serviceData->pConflictMenu;
+-	else
+-	    Skins.Message(mtError, tr("This version of EPGSearch does not support this service!"));
+-	
+-	delete serviceData;
+-	
+-	if (pMenu)
+-	    return pMenu;	
+-	else
+-	    return NULL;
+-    }
+-    else
++    const char* menuText = tr(MAINMENUENTRY);
++    cPlugin *epgSearchPlugin = cPluginManager::GetPlugin("epgsearch");
++    if (epgSearchPlugin)
+     {
+-	Skins.Message(mtError, tr("EPGSearch does not exist!"));
+-	return NULL;
++        Epgsearch_lastconflictinfo_v1_0* serviceData = new Epgsearch_lastconflictinfo_v1_0;
++        if (epgSearchPlugin->Service("Epgsearch-lastconflictinfo-v1.0", serviceData))
++        {
++            if (serviceData->relevantConflicts > 0)
++            {
++                free(_menuText);
++                asprintf(&_menuText, "%s (%d, %s: %s)", menuText, serviceData->relevantConflicts, 
++                  tr("next"), *DateTime(serviceData->nextConflict));
++                menuText = _menuText;
++            }
++        }
++        delete serviceData;
+     }
+-
+-  return NULL;
++    return menuText;
+ }
+ 
+-cMenuSetupPage *cPluginConflictcheckonly::SetupMenu(void)
+-{
+-  return new cMenuConflictcheckonlySetup;
+-}
+-
+-bool cPluginConflictcheckonly::SetupParse(const char *Name, const char *Value)
++bool cPluginConflictcheckonly::Initialize(void)
+ {
+-  if (!strcasecmp(Name, "ConflictInfoInMain")) showInfoInMain = atoi(Value);
+-  return true;
++    RegisterI18n(Phrases);
++    return cMainMenuShortcut::Initialize();
+ }
+ 
+ VDRPLUGINCREATOR(cPluginConflictcheckonly); // Don't touch this!
+diff -Nur epgsearch-0.9.20/epgsearch.c epgsearch-0.9.20-tg/epgsearch.c
+--- epgsearch-0.9.20/epgsearch.c	2007-01-30 21:18:59.000000000 +0100
++++ epgsearch-0.9.20-tg/epgsearch.c	2007-02-02 10:08:43.000000000 +0100
+@@ -243,8 +243,8 @@
+      if (Data == NULL)
+         return true;
+       
+-      Epgsearch_searchmenu_v1_0* serviceData = (Epgsearch_searchmenu_v1_0*) Data;
+-      serviceData->pSearchMenu = new cMenuEPGSearchExt();
++      EpgSearchMenu_v1_0* serviceData = (EpgSearchMenu_v1_0*) Data;
++      serviceData->Menu = new cMenuEPGSearchExt();
+ 
+       return true;
+   }
+@@ -252,8 +252,8 @@
+      if (Data == NULL)
+         return true;
+       
+-      Epgsearch_conflictmenu_v1_0* serviceData = (Epgsearch_conflictmenu_v1_0*) Data;
+-      serviceData->pConflictMenu = new cMenuConflictCheck();
++      EpgSearchMenu_v1_0* serviceData = (EpgSearchMenu_v1_0*) Data;
++      serviceData->Menu = new cMenuConflictCheck();
+ 
+       return true;
+   }
+@@ -355,8 +355,8 @@
+      if (Data == NULL)
+         return true;
+       
+-      Epgsearch_quicksearch_v1_0* serviceData = (Epgsearch_quicksearch_v1_0*) Data;
+-      serviceData->pSearchMenu = new cMenuQuickSearch(new cSearchExt);
++      EpgSearchMenu_v1_0* serviceData = (EpgSearchMenu_v1_0*) Data;
++      serviceData->Menu = new cMenuQuickSearch(new cSearchExt);
+ 
+       return true;
+   }
+diff -Nur epgsearch-0.9.20/epgsearchonly.c epgsearch-0.9.20-tg/epgsearchonly.c
+--- epgsearch-0.9.20/epgsearchonly.c	2006-12-03 14:25:32.000000000 +0100
++++ epgsearch-0.9.20-tg/epgsearchonly.c	2007-02-02 10:08:43.000000000 +0100
+@@ -8,230 +8,104 @@
+ #include <vdr/plugin.h>
+ #include <vdr/i18n.h>
+ #include "services.h"
++#include "mainmenushortcut.h"
+ 
+ static const char VERSION[]        = "0.0.1";
+ static const char DESCRIPTION[]    = "Direct access to epgsearch's search menu";
+ static const char MAINMENUENTRY[]  = "Search";
++static const char SETUPTEXT[]      = "EpgSearch-Search in main menu";
+ 
+-const tI18nPhrase Phrases[] = {
+-  { "Direct access to epgsearch's search menu",
+-    "Direkter Zugriff auf epgsearch's Suchenmenu",// Deutsch
+-    "",// TODO 
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO 
+-    "",// TODO
+-    "",// TODO 
+-    "Suoratoiminto EPGSearch-laajennoksen haulle",
+-    "",// TODO Polski
+-    "",// TODO Español
+-    "",// TODO ÅëëçíéêÜ (Greek)
+-    "",// TODO Svenska
+-    "",// TODO Romaneste
+-    "",// TODO Magyar
+-    "",// TODO Català
+-    "",// TODO ÀãááÚØÙ (Russian)
+-    "",// TODO Hrvatski (Croatian)
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "Search",
+-    "Suche",
+-    "",// TODO
+-    "Ricerca",
+-    "Zoek",
+-    "",// TODO
+-    "Recherche",
+-    "",// TODO
+-    "Etsi ohjelmaoppaasta",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "This version of EPGSearch does not support this service!",
+-    "Diese Version von EPGSearch unterstützt diesen Dienst nicht!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "EPGSearch-laajennos ei tarjoa vaadittavaa palvelua!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "EPGSearch does not exist!",
+-    "EPGSearch nicht vorhanden!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "EPGSearch-laajennosta ei löydy!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "Plugin needs vdr-1.3.30 or above!",
+-    "Plugin benötigt vdr-1.3.30 oder höher!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "Laajennos tarvitsee toimiakseen vähintään vdr-1.3.30!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { NULL }
+-  };
+-  
+-class cPluginEpgsearchonly : public cPlugin {
+-private:
+-  // Add any member variables or functions you may need here.
+-public:
+-  cPluginEpgsearchonly(void);
+-  virtual ~cPluginEpgsearchonly();
+-  virtual const char *Version(void) { return VERSION; }
+-  virtual const char *Description(void) { return tr(DESCRIPTION); }
+-  virtual const char *CommandLineHelp(void);
+-  virtual bool ProcessArgs(int argc, char *argv[]);
+-  virtual bool Initialize(void);
+-  virtual bool Start(void);
+-  virtual void Stop(void);
+-  virtual void Housekeeping(void);
+-  virtual const char *MainMenuEntry(void) { return tr(MAINMENUENTRY); }
+-  virtual cOsdObject *MainMenuAction(void);
+-  virtual cMenuSetupPage *SetupMenu(void);
+-  virtual bool SetupParse(const char *Name, const char *Value);
+-  };
+-
+-cPluginEpgsearchonly::cPluginEpgsearchonly(void)
+-{
+-  // Initialize any member variables here.
+-  // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL
+-  // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT!
+-}
+-
+-cPluginEpgsearchonly::~cPluginEpgsearchonly()
+-{
+-  // Clean up after yourself!
+-}
+-
+-const char *cPluginEpgsearchonly::CommandLineHelp(void)
+-{
+-  // Return a string that describes all known command line options.
+-  return NULL;
+-}
+-
+-bool cPluginEpgsearchonly::ProcessArgs(int argc, char *argv[])
+-{
+-  // Implement command line argument processing here if applicable.
+-  return true;
+-}
+-
+-bool cPluginEpgsearchonly::Initialize(void)
+-{
+-  RegisterI18n(Phrases);
+-  return true;
+-}
+-
+-bool cPluginEpgsearchonly::Start(void)
+-{
+-  return true;
+-}
+-
+-void cPluginEpgsearchonly::Stop(void)
+-{
+-  // Stop any background activities the plugin shall perform.
+-}
+-
+-void cPluginEpgsearchonly::Housekeeping(void)
+-{
+-  // Perform any cleanup or other regular tasks.
+-}
+-
+-cOsdObject *cPluginEpgsearchonly::MainMenuAction(void)
++const tI18nPhrase Phrases[] =
+ {
+-    cPlugin *p = cPluginManager::GetPlugin("epgsearch");
+-    if (p)
+     {
+- 	Epgsearch_searchmenu_v1_0* serviceData = new Epgsearch_searchmenu_v1_0;
+-	serviceData->pSearchMenu = NULL;
+-	
+-	cOsdMenu* pMenu = NULL;
+-	if (p->Service("Epgsearch-searchmenu-v1.0", serviceData))
+-	    pMenu = serviceData->pSearchMenu;
+-	else
+-	    Skins.Message(mtError, tr("This version of EPGSearch does not support this service!"));
+-	
+-	delete serviceData;
+-	
+-	if (pMenu)
+-	    return pMenu;	
+-	else
+-	    return NULL;
+-    }
+-    else
++        "Direct access to epgsearch's search menu",
++        "Direkter Zugriff auf epgsearch's Suchenmenu",// Deutsch
++        "",// TODO 
++        "",// TODO
++        "",// TODO
++        "",// TODO 
++        "",// TODO
++        "",// TODO 
++        "Suoratoiminto EPGSearch-laajennoksen haulle",
++        "",// TODO Polski
++        "",// TODO Español
++        "",// TODO ÅëëçíéêÜ (Greek)
++        "",// TODO Svenska
++        "",// TODO Romaneste
++        "",// TODO Magyar
++        "",// TODO Català
++        "",// TODO ÀãááÚØÙ (Russian)
++        "",// TODO Hrvatski (Croatian)
++        "", // Eesti
++        "", // Dansk
++        "", // Czech
++    },
+     {
+-	Skins.Message(mtError, tr("EPGSearch does not exist!"));
+-	return NULL;
+-    }
+-
+-  return NULL;
+-}
+-
+-cMenuSetupPage *cPluginEpgsearchonly::SetupMenu(void)
++        "Search",
++        "Suche",
++        "",// TODO
++        "Ricerca",
++        "Zoek",
++        "",// TODO
++        "Recherche",
++        "",// TODO
++        "Etsi ohjelmaoppaasta",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "", // Eesti
++        "", // Dansk
++        "", // Czech
++    },
++    {
++        "EpgSearch-Search in main menu",
++        "EpgSearch-Suche im Hauptmenü",// Deutsch
++        "",// TODO 
++        "",// TODO
++        "",// TODO
++        "",// TODO 
++        "",// TODO
++        "",// TODO 
++        "",// TODO Finnish
++        "",// TODO Polski
++        "",// TODO Español
++        "",// TODO ÅëëçíéêÜ (Greek)
++        "",// TODO Svenska
++        "",// TODO Romaneste
++        "",// TODO Magyar
++        "",// TODO Català
++        "",// TODO ÀãááÚØÙ (Russian)
++        "",// TODO Hrvatski (Croatian)
++        "", // Eesti
++        "", // Dansk
++        "", // Czech
++    },
++    { NULL }
++};
++  
++class cPluginEpgsearchonly: public cMainMenuShortcut
+ {
+-  // Return a setup menu in case the plugin supports one.
+-  return NULL;
+-}
++    public:
++        virtual const char* Version() { return VERSION; }
++        virtual const char* Description() { return tr(DESCRIPTION); }
++        virtual bool Initialize();
++        virtual cOsdObject *MainMenuAction() { return GetEpgSearchMenu("Epgsearch-searchmenu-v1.0"); };
++
++    protected:
++        virtual const char* SetupText() { return tr(SETUPTEXT); }
++        virtual const char* MainMenuText() { return tr(MAINMENUENTRY); };
++};
+ 
+-bool cPluginEpgsearchonly::SetupParse(const char *Name, const char *Value)
++bool cPluginEpgsearchonly::Initialize()
+ {
+-  // Parse your own setup parameters and store their values.
+-  return false;
++    RegisterI18n(Phrases);
++    return cMainMenuShortcut::Initialize();
+ }
+ 
+ VDRPLUGINCREATOR(cPluginEpgsearchonly); // Don't touch this!
+diff -Nur epgsearch-0.9.20/mainmenushortcut.c epgsearch-0.9.20-tg/mainmenushortcut.c
+--- epgsearch-0.9.20/mainmenushortcut.c	1970-01-01 01:00:00.000000000 +0100
++++ epgsearch-0.9.20-tg/mainmenushortcut.c	2007-02-02 10:08:43.000000000 +0100
+@@ -0,0 +1,135 @@
++#include "services.h"
++#include "mainmenushortcut.h"
++
++static const char SETUPENTRY[] = "MainMenuEntryEnabled";
++
++const tI18nPhrase Phrases[] =
++{
++    {
++        "This version of EPGSearch does not support this service!",
++        "Diese Version von EPGSearch unterstützt diesen Dienst nicht!",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "EPGSearch-laajennos ei tarjoa vaadittavaa palvelua!",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "", // Eesti
++        "", // Dansk
++        "", // Czech
++    },
++    {
++        "EPGSearch does not exist!",
++        "EPGSearch nicht vorhanden!",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "EPGSearch-laajennosta ei löydy!",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "", // Eesti
++        "", // Dansk
++        "", // Czech
++    },
++    { NULL }
++};
++
++cMainMenuShortcutSetupPage::cMainMenuShortcutSetupPage(const char* setupText, const char* setupEntry,
++  int* const setupValue)
++:_setupEntry(setupEntry), _setupValue(setupValue)
++{
++    Add(new cMenuEditBoolItem(setupText, _setupValue, tr("no"), tr("yes")));
++};
++  
++void cMainMenuShortcutSetupPage::Store()
++{
++    SetupStore(_setupEntry, *_setupValue);
++}
++
++cMainMenuShortcut::cMainMenuShortcut()
++:_mainMenuEntryEnabled(0)
++{
++}
++
++cMainMenuShortcut::~cMainMenuShortcut()
++{
++    I18nRegister(NULL, PLUGIN_NAME_I18N);
++}
++
++cOsdMenu* cMainMenuShortcut::GetEpgSearchMenu(const char* serviceName)
++{
++    cOsdMenu* menu = NULL;
++    cPlugin *epgSearchPlugin = cPluginManager::GetPlugin("epgsearch");
++    if (epgSearchPlugin)
++    {
++        EpgSearchMenu_v1_0* serviceData = new EpgSearchMenu_v1_0;
++ 
++        if (epgSearchPlugin->Service(serviceName, serviceData))
++        {
++            menu = serviceData->Menu;
++        }
++        else
++        {
++            Skins.Message(mtError, tr("This version of EPGSearch does not support this service!"));
++        }
++	
++        delete serviceData;
++    }
++    else
++    {
++        Skins.Message(mtError, tr("EPGSearch does not exist!"));
++    }
++    return menu;
++}
++
++bool cMainMenuShortcut::Initialize()
++{
++    I18nRegister(Phrases, PLUGIN_NAME_I18N);
++    return true;
++}
++
++bool cMainMenuShortcut::SetupParse(const char *Name, const char *Value)
++{
++    if (!strcasecmp(Name, SETUPENTRY))
++    {
++        _mainMenuEntryEnabled = atoi(Value);
++    }
++    return true;
++}
++
++cMenuSetupPage* cMainMenuShortcut::SetupMenu()
++{
++    return new cMainMenuShortcutSetupPage(SetupText(), SETUPENTRY, &_mainMenuEntryEnabled);
++}
++
++const char* cMainMenuShortcut::MainMenuEntry()
++{
++    if (_mainMenuEntryEnabled)
++    {
++        return (const char*) MainMenuText();
++    }
++    else
++    {
++        return NULL;
++    }
++}
+diff -Nur epgsearch-0.9.20/mainmenushortcut.h epgsearch-0.9.20-tg/mainmenushortcut.h
+--- epgsearch-0.9.20/mainmenushortcut.h	1970-01-01 01:00:00.000000000 +0100
++++ epgsearch-0.9.20-tg/mainmenushortcut.h	2007-02-02 10:08:43.000000000 +0100
+@@ -0,0 +1,38 @@
++#ifndef __MAINMENUSHORTCUT_H
++#define __MAINMENUSHORTCUT_H
++
++#include <vdr/plugin.h>
++
++class cMainMenuShortcutSetupPage : public cMenuSetupPage 
++{
++    private:
++        const char* _setupEntry;
++        int* const _setupValue;
++
++    public:
++        cMainMenuShortcutSetupPage(const char* setupText, const char* setupEntry, int* const setupValue);
++
++    protected:
++        virtual void Store(void);
++};
++
++class cMainMenuShortcut : public cPlugin
++{
++    private:
++        int _mainMenuEntryEnabled;
++
++    public:
++        cMainMenuShortcut();
++        virtual ~cMainMenuShortcut();
++        virtual bool Initialize();
++        virtual bool SetupParse(const char* Name, const char* Value);
++        virtual cMenuSetupPage* SetupMenu();
++        virtual const char* MainMenuEntry();
++
++    protected:
++        cOsdMenu* GetEpgSearchMenu(const char* serviceName);
++        virtual const char* SetupText() = 0;
++        virtual const char* MainMenuText() = 0;
++};
++
++#endif
+diff -Nur epgsearch-0.9.20/Makefile epgsearch-0.9.20-tg/Makefile
+--- epgsearch-0.9.20/Makefile	2007-01-26 17:04:27.000000000 +0100
++++ epgsearch-0.9.20-tg/Makefile	2007-02-02 10:08:43.000000000 +0100
+@@ -10,6 +10,7 @@
+ #WITHOUT_QUICKSEARCH=1
+ 
+ PLUGIN = epgsearch
++MAINMENUSHORTCUT = epgsearchmainmenushortcut
+ PLUGIN2 = epgsearchonly
+ PLUGIN3 = conflictcheckonly
+ PLUGIN4 = quickepgsearch
+@@ -72,6 +73,7 @@
+ #INCLUDES += -I$(VDRDIR)/include
+ 
+ DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
++DEFINES1 += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(MAINMENUSHORTCUT)"'
+ DEFINES2 += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN2)"'
+ DEFINES3 += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN3)"'
+ DEFINES4 += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN4)"'
+@@ -98,19 +100,21 @@
+ DEFINES += -DDEBUG_CONFL
+ endif
+ 
+-OBJS2    = epgsearchonly.o
++OBJS2    = mainmenushortcut.o epgsearchonly.o
+ LIBS2    =
+ 
+-OBJS3    = conflictcheckonly.o
++OBJS3    = mainmenushortcut.o conflictcheckonly.o
+ LIBS3    =
+ 
+-OBJS4    = quickepgsearch.o
++OBJS4    = mainmenushortcut.o quickepgsearch.o
+ LIBS4    =
+ 
+ ### Implicit rules:
+ 
+ %.o: %.c
+ 	$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $<
++mainmenushortcut.o: mainmenushortcut.c
++	$(CXX) $(CXXFLAGS) -c $(DEFINES1) $(INCLUDES) $<
+ epgsearchonly.o: epgsearchonly.c
+ 	$(CXX) $(CXXFLAGS) -c $(DEFINES2) $(INCLUDES) $<
+ conflictcheckonly.o: conflictcheckonly.c
+diff -Nur epgsearch-0.9.20/quickepgsearch.c epgsearch-0.9.20-tg/quickepgsearch.c
+--- epgsearch-0.9.20/quickepgsearch.c	2007-01-28 16:29:57.000000000 +0100
++++ epgsearch-0.9.20-tg/quickepgsearch.c	2007-02-02 10:08:43.000000000 +0100
+@@ -8,262 +8,105 @@
+ #include <vdr/plugin.h>
+ #include <vdr/i18n.h>
+ #include "services.h"
++#include "mainmenushortcut.h"
+ 
+ static const char VERSION[]        = "0.0.1";
+ static const char DESCRIPTION[]    = "Quick search for broadcasts";
+ static const char MAINMENUENTRY[]  = "Quick search";
+-int showInMain=1;
++static const char SETUPTEXT[]      = "Show in main menu";
+ 
+ 
+-const tI18nPhrase Phrases[] = {
+-  { "Quick search for broadcasts",
+-    "Schnelle Suche nach Sendungen",// Deutsch
+-    "",// TODO 
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO 
+-    "",// TODO
+-    "",// TODO 
+-    "Pikahaku ohjelmaoppaalle",// suomi
+-    "",// TODO Polski
+-    "",// TODO Español
+-    "",// TODO ÅëëçíéêÜ (Greek)
+-    "",// TODO Svenska
+-    "",// TODO Romaneste
+-    "",// TODO Magyar
+-    "",// TODO Català
+-    "",// TODO ÀãááÚØÙ (Russian)
+-    "",// TODO Hrvatski (Croatian)
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "Quick search",
+-    "Schnellsuche",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "Pikahaku",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "This version of EPGSearch does not support this service!",
+-    "Diese Version von EPGSearch unterstützt diesen Dienst nicht!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "EPGSearch-laajennos ei tarjoa vaadittavaa palvelua!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "EPGSearch does not exist!",
+-    "EPGSearch nicht vorhanden!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "EPGSearch-laajennosta ei löydy!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "Plugin needs vdr-1.3.30 or above!",
+-    "Plugin benötigt vdr-1.3.30 oder höher!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "Laajennos tarvitsee toimiakseen vähintään vdr-1.3.30!",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },
+-  { "Show in main menu",
+-    "Im Hauptmenü anzeigen",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "Näytä valinta päävalikossa",
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "",// TODO
+-    "", // Eesti
+-    "", // Dansk
+-    "", // Czech
+-  },  { NULL }
+-  };
+-  
+-class cMenuQuicksearchSetup : public cMenuSetupPage {
+-  private:
+-    virtual void Setup(void)
+-	{
+-	    Add(new cMenuEditBoolItem(tr("Show in main menu"), &showInMain, tr("no"), tr("yes")));
+-	}
+-  protected:
+-    virtual void Store(void)
+-	{
+-	    SetupStore("QuickEPGSearchInMain", showInMain);
+-	}
+-  public:
+-    cMenuQuicksearchSetup(void)
+-	{
+-	    Setup();
+-	};
+-  };
+-
+-
+-class cPluginQuicksearch : public cPlugin {
+-private:
+-public:
+-  cPluginQuicksearch(void);
+-  virtual ~cPluginQuicksearch();
+-  virtual const char *Version(void) { return VERSION; }
+-  virtual const char *Description(void) { return tr(DESCRIPTION); }
+-  virtual const char *CommandLineHelp(void);
+-  virtual bool ProcessArgs(int argc, char *argv[]);
+-  virtual bool Initialize(void);
+-  virtual bool Start(void);
+-  virtual void Stop(void);
+-  virtual void Housekeeping(void);
+-  virtual const char *MainMenuEntry(void) { if (showInMain) return tr(MAINMENUENTRY); else return NULL; }
+-  virtual cOsdObject *MainMenuAction(void);
+-  virtual cMenuSetupPage *SetupMenu(void);
+-  virtual bool SetupParse(const char *Name, const char *Value);
+-  };
+-
+-cPluginQuicksearch::cPluginQuicksearch(void)
+-{
+-}
+-
+-cPluginQuicksearch::~cPluginQuicksearch()
+-{
+-}
+-
+-const char *cPluginQuicksearch::CommandLineHelp(void)
+-{
+-  return NULL;
+-}
+-
+-bool cPluginQuicksearch::ProcessArgs(int argc, char *argv[])
+-{
+-  return true;
+-}
+-
+-bool cPluginQuicksearch::Initialize(void)
+-{
+-  RegisterI18n(Phrases);
+-  return true;
+-}
+-
+-bool cPluginQuicksearch::Start(void)
+-{
+-  return true;
+-}
+-
+-void cPluginQuicksearch::Stop(void)
++const tI18nPhrase Phrases[] =
+ {
+-}
+-
+-void cPluginQuicksearch::Housekeeping(void)
+-{
+-}
+-
+-cOsdObject *cPluginQuicksearch::MainMenuAction(void)
+-{
+-    cPlugin *p = cPluginManager::GetPlugin("epgsearch");
+-    if (p)
+     {
+- 	Epgsearch_quicksearch_v1_0* serviceData = new Epgsearch_quicksearch_v1_0;
+-	serviceData->pSearchMenu = NULL;
+-	
+-	cOsdMenu* pMenu = NULL;
+-	if (p->Service("Epgsearch-quicksearch-v1.0", serviceData))
+-	    pMenu = serviceData->pSearchMenu;
+-	else
+-	    Skins.Message(mtError, tr("This version of EPGSearch does not support this service!"));
+-	
+-	delete serviceData;
+-	
+-	if (pMenu)
+-	    return pMenu;	
+-	else
+-	    return NULL;
+-    }
+-    else
++        "Quick search for broadcasts",
++        "Schnelle Suche nach Sendungen",// Deutsch
++        "",// TODO 
++        "",// TODO
++        "",// TODO
++        "",// TODO 
++        "",// TODO
++        "",// TODO 
++        "Pikahaku ohjelmaoppaalle",// suomi
++        "",// TODO Polski
++        "",// TODO Español
++        "",// TODO ÅëëçíéêÜ (Greek)
++        "",// TODO Svenska
++        "",// TODO Romaneste
++        "",// TODO Magyar
++        "",// TODO Català
++        "",// TODO ÀãááÚØÙ (Russian)
++        "",// TODO Hrvatski (Croatian)
++        "", // Eesti
++        "", // Dansk
++        "", // Czech
++    },
+     {
+-	Skins.Message(mtError, tr("EPGSearch does not exist!"));
+-	return NULL;
+-    }
+-
+-  return NULL;
+-}
+-
+-bool cPluginQuicksearch::SetupParse(const char *Name, const char *Value)
++        "Quick search",
++        "Schnellsuche",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "Pikahaku",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "", // Eesti
++        "", // Dansk
++        "", // Czech
++    },
++    {
++        "Show in main menu",
++        "Im Hauptmenü anzeigen",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "Näytä valinta päävalikossa",
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "",// TODO
++        "", // Eesti
++        "", // Dansk
++        "", // Czech
++    },
++    { NULL }
++};
++  
++class cPluginQuicksearch : public cMainMenuShortcut
+ {
+-  if (!strcasecmp(Name, "QuickEPGSearchInMain")) showInMain = atoi(Value);
+-  return true;
+-}
++    public:
++        virtual const char* Version() { return VERSION; }
++        virtual const char* Description() { return tr(DESCRIPTION); }
++        virtual bool Initialize();
++        virtual cOsdObject* MainMenuAction() { return GetEpgSearchMenu("Epgsearch-quicksearch-v1.0"); };
++
++    protected:
++        virtual const char* SetupText() { return tr(SETUPTEXT); }
++        virtual const char* MainMenuText() { return tr(MAINMENUENTRY); };
++};
+ 
+-cMenuSetupPage *cPluginQuicksearch::SetupMenu(void)
++bool cPluginQuicksearch::Initialize()
+ {
+-  return new cMenuQuicksearchSetup;
++    RegisterI18n(Phrases);
++    return cMainMenuShortcut::Initialize();
+ }
+ 
+ VDRPLUGINCREATOR(cPluginQuicksearch); // Don't touch this!
+diff -Nur epgsearch-0.9.20/services.h epgsearch-0.9.20-tg/services.h
+--- epgsearch-0.9.20/services.h	2007-01-25 19:23:31.000000000 +0100
++++ epgsearch-0.9.20-tg/services.h	2007-02-02 10:08:43.000000000 +0100
+@@ -4,6 +4,7 @@
+ #include <string>
+ #include <list>
+ #include <memory>
++#include <vdr/osdbase.h>
+ 
+ // Data structure for service "Epgsearch-search-v1.0"
+ struct Epgsearch_search_v1_0
+@@ -45,20 +46,12 @@
+     eMessageType type;
+ };
+ 
+-// Data structure for service "Epgsearch-searchmenu-v1.0"
+-struct Epgsearch_searchmenu_v1_0
++// Data structure for service "EpgsearchMenu-v1.0"
++struct EpgSearchMenu_v1_0
+ {
+ // in
+ // out
+-    cOsdMenu* pSearchMenu;   // pointer to the search menu
+-};
+-
+-// Data structure for service "Epgsearch-conflictmenu-v1.0"
+-struct Epgsearch_conflictmenu_v1_0
+-{
+-// in
+-// out
+-    cOsdMenu* pConflictMenu;   // pointer to the conflict menu
++    cOsdMenu* Menu;   // pointer to the menu
+ };
+ 
+ // Data structure for service "Epgsearch-lastconflictinfo-v1.0"
+@@ -106,14 +99,6 @@
+     	bool success;              // result
+ };
+ 
+-// Data structure for service "Epgsearch-quicksearch-v1.0"
+-struct Epgsearch_quicksearch_v1_0
+-{
+-// in
+-// out
+-    cOsdMenu* pSearchMenu;   // pointer to the search menu
+-};
+-
+ // Data structures for service "Epgsearch-services-v1.0"
+ class cServiceHandler
+ {




More information about the pkg-vdr-dvb-changes mailing list