/*
 * Replicate most of cOsdMenu functionality in order to 
 * keep some lines free at page top
 *
 */

#ifndef __STATUSMENU_H
#define __STATUSMENU_H

#include <vdr/plugin.h>

class cStatusMenu : public cOsdObject, public cList<cOsdItem> {
private:
  cSkinDisplayMenu *displayMenu;
  int displayMenuItems;
  char *title;
  int cols[cSkinDisplayMenu::MaxTabs];
  int first, current, reserved;
  const char *helpRed, *helpGreen, *helpYellow, *helpBlue;
  char *status;
protected:
  cSkinDisplayMenu *DisplayMenu(void) { return displayMenu; }
  void SetCols(int c0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
  virtual void Clear(void);
  bool SelectableItem(int idx);
  void SetCurrent(cOsdItem *Item);
  void RefreshCurrent(void);
  void DisplayCurrent(bool Current);
  void CursorUp(void);
  void CursorDown(void);
  void PageUp(void);
  void PageDown(void);
  void SetStatus(const char *s);
  void SetTitle(const char *Title);
  void SetHelp(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL);
  void SetReserved(int res);
  virtual void Del(int Index);
public:
  cStatusMenu(const char *Title, int c0 = 0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
  virtual ~cStatusMenu();
  int Current(void) { return current; }
  void Add(cOsdItem *Item, bool Current = false, cOsdItem *After = NULL);
  void Ins(cOsdItem *Item, bool Current = false, cOsdItem *Before = NULL);
  virtual void Display(void);
  virtual void Show(void);
  virtual eOSState ProcessKey(eKeys Key);
  };

#endif //__STATUSMENU_H
