MythTV  0.27pre
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Groups Pages
gamehandler.h
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 #ifndef GAMEHANDLER_H_
3 #define GAMEHANDLER_H_
4 
5 #include <QStringList>
6 #include <QMap>
7 #include <QObject>
8 #include <QEvent>
9 
10 #include <mythdbcon.h>
11 
12 #include "rom_metadata.h"
13 #include "rominfo.h"
14 
15 class MythMainWindow;
16 class GameHandler;
17 
19 {
24 };
25 
26 class GameScan
27 {
28  public:
29  GameScan(QString lromname = "", QString lromfullpath = "",
30  int lfoundloc = 0, QString lgamename = "",
31  QString lrompath = "") :
32  romname(lromname), romfullpath(lromfullpath), gamename(lgamename),
33  rompath(lrompath), foundloc(lfoundloc) {}
34 
35  QString Rom(void) const { return romname; }
36  QString RomFullPath(void) const { return romfullpath; }
37  int FoundLoc(void) const { return foundloc; }
38  void setLoc(int lfoundloc) { foundloc = lfoundloc; }
39  QString GameName(void) const { return gamename; }
40  QString RomPath(void) const { return rompath; }
41 
42  private:
43  QString romname;
44  QString romfullpath;
45  QString gamename;
46  QString rompath;
47  int foundloc;
48 };
49 
51 
52 typedef QMap<QString, GameScan> GameScanMap;
53 
55 class GameHandler : public QObject
56 {
57  Q_OBJECT
58 
59  public:
60  GameHandler() : QObject(),
61  rebuild(false), spandisks(0),
62  systemname(QString::null), rompath(QString::null),
63  commandline(QString::null), workingpath(QString::null),
64  screenshots(QString::null), gameplayerid(0),
65  gametype(QString::null),
66  m_RemoveAll(false), m_KeepAll(false),
67  m_progressDlg(NULL) {}
68 
69  static void updateSettings(GameHandler*);
70  static GameHandler *getHandler(uint i);
71  static GameHandler *newHandler(QString name);
72  static uint count(void);
73  void InitMetaDataMap(QString GameType);
74  void GetMetadata(GameHandler *handler, QString rom,
75  QString* Genre, QString* Year, QString* Country,
76  QString* CRC32, QString* GameName,
77  QString* Plot, QString* Publisher, QString* Version,
78  QString* Fanart, QString* Boxart);
79 
80  void promptForRemoval(GameScan scan);
81  void UpdateGameDB(GameHandler *handler);
82  void VerifyGameDB(GameHandler *handler);
83 
84  void clearAllGameData(void);
85 
86  static int buildFileCount(QString directory, GameHandler *handler);
87  void buildFileList(QString directory, GameHandler *handler,
88  int* filecount);
89 
90  void processGames(GameHandler *);
91  static void processAllGames(void);
92  static void registerHandler(GameHandler *);
93  static void Launchgame(RomInfo *romdata, QString systemname);
94  static void EditSettings(RomInfo *romdata);
95  static void EditSystemSettings(RomInfo *romdata);
96  static RomInfo* CreateRomInfo(RomInfo* parent);
97 
98  void setRebuild(bool setrebuild) { rebuild = setrebuild; }
99  bool needRebuild(void) const { return rebuild; }
100 
101  static RomInfo* create_rominfo(RomInfo* parent);
102  int SpanDisks() const { return spandisks; }
103  QString SystemName() const { return systemname; }
104  QString SystemCmdLine() const { return commandline; }
105  QString SystemRomPath() const { return rompath; }
106  QString SystemWorkingPath() const { return workingpath; }
107  QString SystemScreenShots() const { return screenshots; }
108  uint GamePlayerID() const { return gameplayerid; }
109  QString GameType() const { return gametype; }
110  QStringList ValidExtensions() const { return validextensions; }
111 
112  void clearAllMetadata(void);
113 
114  static GameHandler* GetHandler(RomInfo *rominfo);
115  static GameHandler* GetHandlerByName(QString systemname);
116 
117  protected:
118  void customEvent(QEvent *event);
119 
120  bool rebuild;
122  QString systemname;
123  QString rompath;
124  QString commandline;
125  QString workingpath;
126  QString screenshots;
128  QString gametype;
129  QStringList validextensions;
130 
132  GameScanMap m_GameMap;
133 
135  bool m_KeepAll;
136 
137  private:
138  void CreateProgress(QString message);
140 
141  MythUIProgressDialog *m_progressDlg;
142 };
143 
144 #endif