1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-06 00:40:04 +00:00
OpenMW/apps/openmw/mwgui/itemchargeview.hpp

79 lines
1.7 KiB
C++
Raw Normal View History

#ifndef MWGUI_ITEMCHARGEVIEW_H
#define MWGUI_ITEMCHARGEVIEW_H
#include <memory>
2022-09-22 21:26:05 +03:00
#include <vector>
#include <MyGUI_Widget.h>
#include "../mwworld/ptr.hpp"
#include "widgets.hpp"
namespace MyGUI
{
class TextBox;
class ScrollView;
}
namespace MWGui
{
class ItemModel;
class ItemWidget;
2020-02-13 21:36:56 +01:00
class ItemChargeView final : public MyGUI::Widget
{
MYGUI_RTTI_DERIVED(ItemChargeView)
2022-09-22 21:26:05 +03:00
public:
enum DisplayMode
{
DisplayMode_Health,
DisplayMode_EnchantmentCharge
};
2022-09-22 21:26:05 +03:00
ItemChargeView();
2022-09-22 21:26:05 +03:00
/// Register needed components with MyGUI's factory manager
static void registerComponents();
2022-09-22 21:26:05 +03:00
void initialiseOverride() override;
2022-09-22 21:26:05 +03:00
/// Takes ownership of \a model
void setModel(ItemModel* model);
2022-09-22 21:26:05 +03:00
void setDisplayMode(DisplayMode type);
2022-09-22 21:26:05 +03:00
void update();
void layoutWidgets();
void resetScrollbars();
2022-09-22 21:26:05 +03:00
void setSize(const MyGUI::IntSize& value) override;
void setCoord(const MyGUI::IntCoord& value) override;
MyGUI::delegates::MultiDelegate<MyGUI::Widget*, const MWWorld::Ptr&> eventItemClicked;
2022-09-22 21:26:05 +03:00
private:
struct Line
{
MWWorld::Ptr mItemPtr;
MyGUI::TextBox* mText;
ItemWidget* mIcon;
Widgets::MWDynamicStatPtr mCharge;
};
2022-09-22 21:26:05 +03:00
void updateLine(const Line& line);
2022-09-22 21:26:05 +03:00
void onIconClicked(MyGUI::Widget* sender);
void onMouseWheelMoved(MyGUI::Widget* sender, int rel);
2022-09-22 21:26:05 +03:00
typedef std::vector<Line> Lines;
Lines mLines;
2022-09-22 21:26:05 +03:00
std::unique_ptr<ItemModel> mModel;
MyGUI::ScrollView* mScrollView;
DisplayMode mDisplayMode;
};
}
#endif