00001 #ifndef GAMEHANDLER_H_
00002 #define GAMEHANDLER_H_
00003
00004 #include <qstring.h>
00005 #include <qwidget.h>
00006
00007 #include "rom_metadata.h"
00008 #include "rominfo.h"
00009 #include <mythtv/mythdbcon.h>
00010 #include <mythtv/mythdialogs.h>
00011
00012 class MythMainWindow;
00013 class GameHandler;
00014 class QObject;
00015
00016 enum GameFound
00017 {
00018 inNone,
00019 inFileSystem,
00020 inDatabase,
00021 inBoth
00022 };
00023
00024 class GameScan
00025 {
00026 public:
00027 GameScan(QString lromname = "", QString lromfullpath = "",
00028 int lfoundloc = 0, QString lgamename = "",
00029 QString lrompath = "" )
00030 {
00031 romname = lromname;
00032 romfullpath = lromfullpath;
00033 foundloc = lfoundloc;
00034 gamename = lgamename;
00035 rompath = lrompath;
00036 }
00037
00038
00039 QString Rom() const { return romname; }
00040 QString RomFullPath() const { return romfullpath; }
00041 int FoundLoc() const { return foundloc; }
00042 void setLoc( int lfoundloc) { foundloc = lfoundloc; }
00043 QString GameName() const { return gamename; }
00044 QString RomPath() const { return rompath; }
00045
00046 private:
00047 QString romname;
00048 QString romfullpath;
00049 int foundloc;
00050 QString gamename;
00051 QString rompath;
00052 };
00053
00054 typedef QMap <QString, GameScan> GameScanMap;
00055
00056 class GameHandler
00057 {
00058 public:
00059 GameHandler()
00060 {
00061 m_RemoveAll = false;
00062 m_KeepAll = false;
00063 rebuild = false;
00064 }
00065
00066 static void updateSettings(GameHandler*);
00067 static GameHandler* getHandler(uint i);
00068 static GameHandler* newHandler(QString name);
00069 static uint count(void);
00070 void InitMetaDataMap(QString GameType);
00071 void GetMetadata(GameHandler *handler, QString rom,
00072 QString* Genre, QString* Year, QString* Country,
00073 QString* CRC32, QString* GameName,
00074 QString* Publisher, QString* Version);
00075
00076 void promptForRemoval(QString filename, QString RomPath );
00077 void UpdateGameDB(GameHandler *handler);
00078 void VerifyGameDB(GameHandler *handler);
00079
00080 static void clearAllGameData(void);
00081
00082 static int buildFileCount(QString directory, GameHandler *handler);
00083 void buildFileList(QString directory, GameHandler *handler,
00084 MythProgressDialog *pdial, int* filecount);
00085
00086 void processGames(GameHandler *);
00087 static void processAllGames(void);
00088 static void registerHandler(GameHandler *);
00089 static void Launchgame(RomInfo *romdata, QString systemname);
00090 static void EditSettings(RomInfo *romdata);
00091 static void EditSystemSettings(RomInfo *romdata);
00092 static RomInfo* CreateRomInfo(RomInfo* parent);
00093
00094 void setRebuild(bool setrebuild) { rebuild = setrebuild; }
00095 bool needRebuild(void) const { return rebuild; }
00096
00097 static RomInfo* create_rominfo(RomInfo* parent);
00098 int SpanDisks() const { return spandisks; }
00099 QString SystemName() const { return systemname; }
00100 QString SystemCmdLine() const { return commandline; }
00101 QString SystemRomPath() const { return rompath; }
00102 QString SystemWorkingPath() const { return workingpath; }
00103 QString SystemScreenShots() const { return screenshots; }
00104 uint GamePlayerID() const { return gameplayerid; }
00105 QString GameType() const { return gametype; }
00106
00107 protected:
00108 static GameHandler* GetHandler(RomInfo *rominfo);
00109 static GameHandler* GetHandlerByName(QString systemname);
00110
00111 bool rebuild;
00112 int spandisks;
00113 QString systemname;
00114 QString rompath;
00115 QString commandline;
00116 QString workingpath;
00117 QString screenshots;
00118 uint gameplayerid;
00119 QString gametype;
00120 QStringList validextensions;
00121
00122 RomDBMap romDB;
00123 GameScanMap m_GameMap;
00124
00125 bool m_RemoveAll;
00126 bool m_KeepAll;
00127
00128 private:
00129 static GameHandler* newInstance;
00130
00131
00132 };
00133
00134 #endif