1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-05 15:40:10 +00:00
OpenMW/apps/openmw/mwgui/quickkeysmenu.hpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

126 lines
3.2 KiB
C++
Raw Normal View History

#ifndef MWGUI_QUICKKEYS_H
#define MWGUI_QUICKKEYS_H
2022-08-31 19:48:23 +02:00
#include <memory>
#include "itemselection.hpp"
#include "spellmodel.hpp"
#include "windowbase.hpp"
namespace MWGui
{
class QuickKeysMenuAssign;
class MagicSelectionDialog;
class ItemWidget;
class SpellView;
class QuickKeysMenu : public WindowBase
{
public:
QuickKeysMenu();
void onResChange(int, int) override { center(); }
2017-09-23 22:07:30 +02:00
void onItemButtonClicked(MyGUI::Widget* sender);
void onMagicButtonClicked(MyGUI::Widget* sender);
void onUnassignButtonClicked(MyGUI::Widget* sender);
void onCancelButtonClicked(MyGUI::Widget* sender);
void onAssignItem(MWWorld::Ptr item);
void onAssignItemCancel();
void onAssignMagicItem(MWWorld::Ptr item);
void onAssignMagic(const std::string& spellId);
void onAssignMagicCancel();
void onOpen() override;
void onClose() override;
2012-08-27 15:51:01 +02:00
void activateQuickKey(int index);
void updateActivatedQuickKey();
2012-08-27 15:51:01 +02:00
/// @note This enum is serialized, so don't move the items around!
2012-08-27 15:51:01 +02:00
enum QuickKeyType
{
Type_Item,
Type_Magic,
Type_MagicItem,
Type_Unassigned,
Type_HandToHand
2012-08-27 15:51:01 +02:00
};
void write(ESM::ESMWriter& writer);
2015-01-22 19:04:59 +01:00
void readRecord(ESM::ESMReader& reader, uint32_t type);
void clear() override;
private:
2018-06-28 13:27:08 +10:00
struct keyData
{
int index;
ItemWidget* button;
QuickKeysMenu::QuickKeyType type;
std::string id;
std::string name;
keyData()
: index(-1)
, button(nullptr)
, type(Type_Unassigned)
, id("")
, name("")
{
}
};
2018-06-29 23:43:51 +10:00
std::vector<keyData> mKey;
keyData* mSelected;
keyData* mActivated;
2018-06-28 13:27:08 +10:00
MyGUI::EditBox* mInstructionLabel;
MyGUI::Button* mOkButton;
2022-08-31 19:48:23 +02:00
std::unique_ptr<QuickKeysMenuAssign> mAssignDialog;
std::unique_ptr<ItemSelectionDialog> mItemSelectionDialog;
std::unique_ptr<MagicSelectionDialog> mMagicSelectionDialog;
void onQuickKeyButtonClicked(MyGUI::Widget* sender);
void onOkButtonClicked(MyGUI::Widget* sender);
// Check if quick key is still valid
inline void validate(int index);
void unassign(keyData* key);
};
class QuickKeysMenuAssign : public WindowModal
{
public:
QuickKeysMenuAssign(QuickKeysMenu* parent);
private:
MyGUI::TextBox* mLabel;
MyGUI::Button* mItemButton;
MyGUI::Button* mMagicButton;
MyGUI::Button* mUnassignButton;
MyGUI::Button* mCancelButton;
QuickKeysMenu* mParent;
};
class MagicSelectionDialog : public WindowModal
{
public:
MagicSelectionDialog(QuickKeysMenu* parent);
void onOpen() override;
bool exit() override;
2012-08-26 11:37:33 +02:00
private:
MyGUI::Button* mCancelButton;
SpellView* mMagicList;
QuickKeysMenu* mParent;
void onCancelButtonClicked(MyGUI::Widget* sender);
void onModelIndexSelected(SpellModel::ModelIndex index);
};
}
#endif