1 #ifndef TWEAKEDQMLAPPVIEWER_H 2 #define TWEAKEDQMLAPPVIEWER_H 3 4 #include <qglobal.h> 5 #include <QTimer> 6 #include <QStringList> 7 #include <QMap> 8 #include <QHash> 9 10 #if QT_VERSION < 0x050000 11 #include "qmlapplicationviewer/qmlapplicationviewer.h" 12 #else 13 #include <QQuickView> 14 #include <QWindow> 15 #include <QByteArray> 16 #endif 17 18 #include "processmanager.h" 19 #include "imageprovider.h" 20 #include "infoprovider.h" 21 #include "keysequencemap.h" 22 #if defined(QMC2_ARCADE_ENABLE_JOYSTICK) 23 #include "joyfunctionmap.h" 24 #include "joystickmanager.h" 25 #endif 26 27 #define QMC2_ARCADE_PARAM_THEME 0 28 #if QT_VERSION < 0x050000 29 #define QMC2_ARCADE_PARAM_GRASYS 1 30 #define QMC2_ARCADE_PARAM_CONSOLE 2 31 #define QMC2_ARCADE_PARAM_LANGUAGE 3 32 #define QMC2_ARCADE_PARAM_VIDEO 4 33 #else 34 #define QMC2_ARCADE_PARAM_CONSOLE 1 35 #define QMC2_ARCADE_PARAM_LANGUAGE 2 36 #define QMC2_ARCADE_PARAM_VIDEO 3 37 #endif 38 39 #if QT_VERSION < 0x050000 40 class TweakedQmlApplicationViewer : public QmlApplicationViewer 41 #else 42 class TweakedQmlApplicationViewer : public QQuickView 43 #endif 44 { 45 Q_OBJECT 46 47 public: 48 int numFrames; 49 QTimer frameCheckTimer; 50 QByteArray savedGeometry; 51 bool savedMaximized; 52 QList<QObject *> gameList; 53 ProcessManager *processManager; 54 ImageProvider *imageProvider; 55 InfoProvider *infoProvider; 56 bool windowModeSwitching; 57 QMap<QString, QStringList> cliAllowedParameterValues; 58 QMap<QString, QString> cliParameterDescriptions; 59 QStringList cliParams; 60 QStringList infoClasses; 61 QStringList videoSnapAllowedFormatExtensions; 62 KeySequenceMap *keySequenceMap; 63 #if defined(QMC2_ARCADE_ENABLE_JOYSTICK) 64 JoyFunctionMap *joyFunctionMap; 65 JoystickManager *joystickManager; 66 #endif 67 static int consoleMode; 68 69 #if QT_VERSION < 0x050000 70 explicit TweakedQmlApplicationViewer(QWidget *parent = 0); 71 #else 72 explicit TweakedQmlApplicationViewer(QWindow *parent = 0); 73 #endif 74 virtual ~TweakedQmlApplicationViewer(); 75 76 #if QT_VERSION >= 0x050000 isFullScreen()77 bool isFullScreen() 78 { 79 return windowState() & Qt::WindowFullScreen; 80 } isMaximized()81 bool isMaximized() 82 { 83 return windowState() & Qt::WindowMaximized; 84 } saveGeometry()85 QByteArray saveGeometry() 86 { 87 // FIXME 88 return QByteArray(); 89 } restoreGeometry(const QByteArray & geom)90 void restoreGeometry(const QByteArray &geom) 91 { 92 // FIXME 93 } 94 #endif 95 96 int themeIndex(); setVideoEnabled(bool enable)97 void setVideoEnabled(bool enable) { m_videoEnabled = enable; } videoEnabled()98 bool videoEnabled() { return m_videoEnabled; } setInitialFullScreen(bool enable)99 void setInitialFullScreen(bool enable) { m_initialFullScreen = enable; } initialFullScreen()100 bool initialFullScreen() { return m_initialFullScreen; } 101 102 // logging functions 103 static void logString(const QString &s); 104 static void logStringNoTime(const QString &s); 105 static void logCString(const char *s); 106 static void logCStringNoTime(const char *s); 107 108 signals: 109 void emulatorStarted(int); 110 void emulatorFinished(int); 111 void imageDataUpdated(const QString & cachePrefix); 112 113 public slots: 114 void displayInit(); 115 void fpsReady(); 116 void loadSettings(); 117 void saveSettings(); 118 void switchToFullScreen(bool initially = false); 119 void switchToWindowed(bool initially = false); 120 QString romStateText(int); 121 int romStateCharToInt(char); 122 void loadMachineList(); 123 void launchEmulator(QString); 124 QString loadImage(const QString &); 125 QString requestInfo(const QString &, const QString &); 126 QString videoSnapUrl(const QString &); 127 int findIndex(QString, int startIndex = 0); 128 void log(QString); 129 QStringList cliParamNames(); 130 QString cliParamDescription(QString); 131 QString cliParamValue(QString); 132 QStringList cliParamAllowedValues(QString); 133 void setCliParamValue(QString, QString); 134 void linkActivated(QString); 135 QString emuMode(); 136 #if QT_VERSION >= 0x050000 frameBufferSwapped()137 void frameBufferSwapped() { numFrames++; } 138 void handleQuit(); 139 #endif runningEmulators()140 int runningEmulators() { return processManager->runningProcesses(); } imageDataUpdate(const QString & cachePrefix)141 void imageDataUpdate(const QString &cachePrefix) { emit imageDataUpdated(cachePrefix); } isSevenZippedImageType(const QString & type)142 bool isSevenZippedImageType(const QString & type) { return imageProvider->isSevenZippedImageType(type); } isZippedImageType(const QString & type)143 bool isZippedImageType(const QString & type) { return imageProvider->isZippedImageType(type); } 144 bool iconCacheDatabaseEnabled(); 145 QString parentId(QString id); 146 QStringList customSystemArtwork(); 147 QStringList customSoftwareArtwork(); 148 QString nextCustomSytemArtwork(); 149 QString previousCustomSytemArtwork(); 150 QString nextCustomSoftwareArtwork(); 151 QString previousCustomSoftwareArtwork(); customCachePrefix(const QString & name)152 QString customCachePrefix(const QString &name) { return imageProvider->customCachePrefix(name); } 153 154 private: 155 bool m_initialized; 156 bool m_videoEnabled; 157 bool m_initialFullScreen; 158 QHash<QString, QString> m_parentHash; 159 QHash<QString, QString> m_videoSnapUrlCache; 160 int m_currentSystemArtworkIndex; 161 int m_currentSoftwareArtworkIndex; 162 163 #if QT_VERSION < 0x050000 164 protected: 165 void paintEvent(QPaintEvent *); 166 void closeEvent(QCloseEvent *); 167 #endif 168 }; 169 170 #endif 171