summaryrefslogtreecommitdiff
path: root/muggle.h
blob: be074c8297fe170f6efc7af5f02c737cf19584d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*! 
 * \file   muggle.h
 * \ingroup vdr
 * \brief  Implements a plugin for browsing media libraries within VDR
 *
 * \version $Revision: 1.6 $
 * \date    $Date$
 * \author  Ralf Klueber, Lars von Wedel, Andreas Kellner
 * \author  file owner: $Author$
 *
 *  $Id$
 */


// Some notes about the general structure of the plugin

/* \defgroup giantdisc GiantDisc integration layer
 *    The GiantDisc integration layer contains functions and classes
 *    which enable interoperability with a database schema that conforms
 *    to the GiantDisc layout.
 *
 * \defgroup vdr       VDR integration layer
 *    The VDR integration layer contains components which allow the
 *    plugin functionality to be accessed by VDR. These are mainly
 *    related to the OSD and a player/control combination.
 *
 * \defgroup muggle    Main muggle business
 *    The core of the plugin is an abstract representation of information
 *    organized in trees (thus suitable for OSD navigation) as well as
 *    means to organize 
 */

#ifndef _MUGGLE_H
#define _MUGGLE_H

#include <plugin.h>

class mgMedia;
class mgSelectionTreeNode;
class mgPlaylist;

class cCommands;

class mgMuggle : public cPlugin
{
public:

  mgMuggle(void);

  virtual ~mgMuggle();

  virtual const char *Version(void);

  virtual const char *Description(void);

  virtual const char *CommandLineHelp(void);

  virtual bool ProcessArgs(int argc, char *argv[]);

  virtual bool Initialize(void);

  virtual bool Start(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);

private:

  mgMedia             *m_media;
  mgSelectionTreeNode *m_root;
  mgPlaylist          *m_playlist;
  cCommands           *m_playlist_commands;

};

#endif