dolphin/Source/Core/DolphinQt/Config/GameConfigEdit.h
Lioncash 6e14dcf70a DolphinQt/Config/GameConfigEdit: Pass parent pointer to base class
Previously, the constructor of GameConfigEdit wasn't doing anything with
the passed in parent pointer. This is dangerous because it can result in
memory being leaked in certain scenarios. It can also affect layout
decisions made by the parent. Instead, pass it through to the base class.

Current usages of the class pass in nullptr as the parent, so this is a
safe change to make with regards to the class hierarchy.

While we're at it, we can std::move the passed in QString into the class
member, allowing calling code to move strings into the constructor,
avoiding copies.
2019-07-30 19:17:25 -04:00

57 lines
1.2 KiB
C++

// Copyright 2018 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#pragma once
#include <QMap>
#include <QString>
#include <QStringList>
#include <QWidget>
class QCompleter;
class QMenu;
class QTextEdit;
class GameConfigEdit : public QWidget
{
public:
explicit GameConfigEdit(QWidget* parent, QString path, bool read_only);
protected:
void keyPressEvent(QKeyEvent* e) override;
void focusInEvent(QFocusEvent* e) override;
private:
void CreateWidgets();
void ConnectWidgets();
void AddMenubarOptions();
void LoadFile();
void SaveFile();
void OnSelectionChanged();
void OnAutoComplete(const QString& completion);
void OpenExternalEditor();
void SetReadOnly(bool read_only);
QString GetTextUnderCursor();
void AddBoolOption(QMenu* menu, const QString& name, const QString& section, const QString& key);
void SetOption(const QString& section, const QString& key, const QString& value);
void AddDescription(const QString& keyword, const QString& description);
QCompleter* m_completer;
QStringList m_completions;
QMenu* m_menu;
QTextEdit* m_edit;
const QString m_path;
bool m_read_only;
QMap<QString, QString> m_keyword_map;
};