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