2018-03-25 20:17:47 -06:00
|
|
|
// Copyright 2018 Dolphin Emulator Project
|
|
|
|
// Licensed under GPLv2+
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
2018-10-03 16:17:45 -06:00
|
|
|
#include <functional>
|
2018-03-25 20:17:47 -06:00
|
|
|
#include <memory>
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
#include <QDialog>
|
|
|
|
|
|
|
|
#include "Common/CommonTypes.h"
|
2019-01-17 15:28:07 -07:00
|
|
|
#include "DolphinQt/GameList/GameListModel.h"
|
2018-03-25 20:17:47 -06:00
|
|
|
|
|
|
|
class ARCodeWidget;
|
|
|
|
class QComboBox;
|
|
|
|
class QDialogButtonBox;
|
2018-07-10 12:29:17 -06:00
|
|
|
class QLabel;
|
2018-03-25 20:17:47 -06:00
|
|
|
class QLineEdit;
|
|
|
|
class QPushButton;
|
|
|
|
class QRadioButton;
|
|
|
|
class QSplitter;
|
|
|
|
class QTabWidget;
|
|
|
|
class QTableWidget;
|
|
|
|
class QTableWidgetItem;
|
2018-07-10 12:29:17 -06:00
|
|
|
struct Result;
|
2018-03-25 20:17:47 -06:00
|
|
|
|
|
|
|
namespace Core
|
|
|
|
{
|
|
|
|
enum class State;
|
|
|
|
}
|
|
|
|
|
2018-07-10 12:29:17 -06:00
|
|
|
namespace UICommon
|
2018-03-25 20:17:47 -06:00
|
|
|
{
|
2018-07-10 12:29:17 -06:00
|
|
|
class GameFile;
|
|
|
|
}
|
2018-03-25 20:17:47 -06:00
|
|
|
|
|
|
|
class CheatsManager : public QDialog
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
2019-01-17 15:28:07 -07:00
|
|
|
explicit CheatsManager(const GameListModel& game_list_model, QWidget* parent = nullptr);
|
2018-07-10 12:29:17 -06:00
|
|
|
~CheatsManager();
|
2018-03-25 20:17:47 -06:00
|
|
|
|
|
|
|
private:
|
|
|
|
QWidget* CreateCheatSearch();
|
|
|
|
void CreateWidgets();
|
|
|
|
void ConnectWidgets();
|
|
|
|
void OnStateChanged(Core::State state);
|
|
|
|
|
|
|
|
size_t GetTypeSize() const;
|
2018-10-03 16:17:45 -06:00
|
|
|
std::function<bool(u32)> CreateMatchFunction();
|
2018-03-25 20:17:47 -06:00
|
|
|
|
|
|
|
void Reset();
|
|
|
|
void NewSearch();
|
|
|
|
void NextSearch();
|
|
|
|
void Update();
|
|
|
|
void GenerateARCode();
|
|
|
|
|
|
|
|
void OnWatchContextMenu();
|
|
|
|
void OnMatchContextMenu();
|
|
|
|
void OnWatchItemChanged(QTableWidgetItem* item);
|
|
|
|
|
2019-01-17 15:28:07 -07:00
|
|
|
const GameListModel& m_game_list_model;
|
2018-03-25 20:17:47 -06:00
|
|
|
std::vector<Result> m_results;
|
|
|
|
std::vector<Result> m_watch;
|
|
|
|
std::shared_ptr<const UICommon::GameFile> m_game_file;
|
|
|
|
QDialogButtonBox* m_button_box;
|
|
|
|
QTabWidget* m_tab_widget = nullptr;
|
|
|
|
|
|
|
|
QWidget* m_cheat_search;
|
|
|
|
ARCodeWidget* m_ar_code = nullptr;
|
|
|
|
|
|
|
|
QLabel* m_result_label;
|
|
|
|
QTableWidget* m_match_table;
|
|
|
|
QTableWidget* m_watch_table;
|
|
|
|
QSplitter* m_option_splitter;
|
|
|
|
QSplitter* m_table_splitter;
|
|
|
|
QComboBox* m_match_length;
|
|
|
|
QComboBox* m_match_operation;
|
|
|
|
QLineEdit* m_match_value;
|
|
|
|
QPushButton* m_match_new;
|
|
|
|
QPushButton* m_match_next;
|
|
|
|
QPushButton* m_match_refresh;
|
|
|
|
QPushButton* m_match_reset;
|
|
|
|
|
|
|
|
QRadioButton* m_match_decimal;
|
|
|
|
QRadioButton* m_match_hexadecimal;
|
|
|
|
QRadioButton* m_match_octal;
|
|
|
|
bool m_updating = false;
|
|
|
|
};
|