diff options
author | Christian Wieninger <winni@debian.(none)> | 2007-11-11 15:40:28 +0100 |
---|---|---|
committer | Christian Wieninger <winni@debian.(none)> | 2007-11-11 15:40:28 +0100 |
commit | 8d4f8607dc1558ce73eb4c376bdbf78ddb65da83 (patch) | |
tree | d0c5dde81a36ab2e8a2edc7c1e6922556518b312 /menu_event.h | |
download | vdr-plugin-epgsearch-8d4f8607dc1558ce73eb4c376bdbf78ddb65da83.tar.gz vdr-plugin-epgsearch-8d4f8607dc1558ce73eb4c376bdbf78ddb65da83.tar.bz2 |
Initial commit
Diffstat (limited to 'menu_event.h')
-rw-r--r-- | menu_event.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/menu_event.h b/menu_event.h new file mode 100644 index 0000000..11fd43b --- /dev/null +++ b/menu_event.h @@ -0,0 +1,115 @@ +/* +Copyright (C) 2004-2007 Christian Wieninger + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + +The author can be reached at cwieninger@gmx.de + +The project's page is at http://winni.vdr-developer.org/epgsearch +*/ + +#ifndef __EPGSEARCH_MENUEVENT_H +#define __EPGSEARCH_MENUEVENT_H + +#include <list> + +typedef enum +{ + SurfModeUnknown, + SurfModeTime, + SurfModeChannel +} MenuEventSurfMode; + +class cEventObj +{ + const cEvent *event; + bool selected; + public: + cEventObj(const cEvent* Event, bool Selected = false) : event(Event), selected(Selected) {} + const cEvent* Event() { return event; } + bool Selected() { return selected; } + void Select(bool Selected) { selected = Selected; } +}; + +class cEventObjects +{ +public: + typedef std::list< cEventObj* > EventObjectList; + typedef EventObjectList::size_type size_type; + typedef EventObjectList::iterator iterator; + typedef EventObjectList::const_iterator const_iterator; + + cEventObjects() {} + ~cEventObjects() + { + for(EventObjectList::iterator i = m_list.begin(); i != m_list.end(); ++i) + delete (*i); + } + + size_type size() const { return m_list.size(); } + + iterator begin() { return m_list.begin(); } + const_iterator begin() const { return m_list.begin(); } + iterator end() { return m_list.end(); } + const_iterator end() const { return m_list.end(); } + + void Add(const cEvent* Event) { m_list.push_back(new cEventObj(Event)); } + void Clear() { m_list.clear(); } + void SetCurrent(const cEvent* Event) + { + for(EventObjectList::iterator i = m_list.begin(); i != m_list.end(); ++i) + (*i)->Select((*i)->Event() == Event); + } + cEventObj* GetCurrent() + { + for(EventObjectList::iterator i = m_list.begin(); i != m_list.end(); ++i) + if ((*i)->Selected()) + return (*i); + return NULL; + } + +private: + EventObjectList m_list; +}; + +class cMenuEventSearch : public cOsdMenu { +protected: + const cEvent *event; + char* szGreen; + char* szYellow; + cEventObjects& eventObjects; + MenuEventSurfMode surfMode; + + virtual void Set(); + cEventObj* GetPrev(const cEvent* Event); + cEventObj* GetNext(const cEvent* Event); + + virtual void Display(void); + virtual eOSState ProcessKey(eKeys Key); + eOSState Commands(eKeys Key); +public: + cMenuEventSearch(const cEvent* Event, cEventObjects& EventObjects, MenuEventSurfMode SurfMode = SurfModeUnknown); + ~cMenuEventSearch(); +}; + +class cMenuEventSearchSimple : public cMenuEventSearch { +private: + virtual void Set(); +public: + cMenuEventSearchSimple(const cEvent* Event, cEventObjects& EventObjects); +}; + +#endif |