1 /* Copyright (c) 2013-2014 Jeffrey Pfau 2 * 3 * This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 #pragma once 7 8 #include <QWidget> 9 10 #include <memory> 11 12 #include "ui_LoadSaveState.h" 13 14 namespace QGBA { 15 16 class CoreController; 17 class InputController; 18 class SavestateButton; 19 20 enum class LoadSave { 21 LOAD, 22 SAVE 23 }; 24 25 class LoadSaveState : public QWidget { 26 Q_OBJECT 27 28 public: 29 const static int NUM_SLOTS = 9; 30 31 LoadSaveState(std::shared_ptr<CoreController> controller, QWidget* parent = nullptr); 32 33 void setInputController(InputController* controller); 34 void setMode(LoadSave mode); 35 36 signals: 37 void closed(); 38 39 protected: 40 virtual bool eventFilter(QObject*, QEvent*) override; 41 virtual void closeEvent(QCloseEvent*) override; 42 virtual void showEvent(QShowEvent*) override; 43 virtual void paintEvent(QPaintEvent*) override; 44 virtual void focusInEvent(QFocusEvent*) override; 45 46 private: 47 void loadState(int slot); 48 void triggerState(int slot); 49 50 Ui::LoadSaveState m_ui; 51 std::shared_ptr<CoreController> m_controller; 52 SavestateButton* m_slots[NUM_SLOTS]; 53 LoadSave m_mode; 54 55 int m_currentFocus; 56 QPixmap m_currentImage; 57 }; 58 59 } 60