1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-12-06 11:04:32 +00:00
openmw/apps/openmw/mwgui/container.hpp
2025-08-27 12:45:09 +02:00

84 lines
2.5 KiB
C++

#ifndef MGUI_CONTAINER_H
#define MGUI_CONTAINER_H
#include "itemmodel.hpp"
#include "referenceinterface.hpp"
#include "windowbase.hpp"
#include <components/misc/notnullptr.hpp>
#include "../mwworld/containerstore.hpp"
namespace MyGUI
{
class Gui;
class Widget;
}
namespace MWGui
{
class ContainerWindow;
class ItemView;
class SortFilterItemModel;
class ItemTransfer;
class ContainerWindow : public WindowBase, public ReferenceInterface, public MWWorld::ContainerStoreListener
{
public:
explicit ContainerWindow(DragAndDrop& dragAndDrop, ItemTransfer& itemTransfer);
void setPtr(const MWWorld::Ptr& container) override;
void onOpen() override;
void onClose() override;
void clear() override { resetReference(); }
void onFrame(float dt) override;
void resetReference() override;
void onDeleteCustomData(const MWWorld::Ptr& ptr) override;
void treatNextOpenAsLoot() { mTreatNextOpenAsLoot = true; }
void itemAdded(const MWWorld::ConstPtr& item, int count) override;
void itemRemoved(const MWWorld::ConstPtr& item, int count) override;
std::string_view getWindowIdForLua() const override { return "Container"; }
ControllerButtons* getControllerButtons() override;
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
void setActiveControllerWindow(bool active) override;
MWGui::ItemView* getItemView() { return mItemView; }
ItemModel* getModel() { return mModel; }
private:
Misc::NotNullPtr<DragAndDrop> mDragAndDrop;
Misc::NotNullPtr<ItemTransfer> mItemTransfer;
MWGui::ItemView* mItemView;
SortFilterItemModel* mSortModel;
ItemModel* mModel;
int mSelectedItem;
bool mUpdateNextFrame;
bool mTreatNextOpenAsLoot;
MyGUI::Button* mDisposeCorpseButton;
MyGUI::Button* mTakeButton;
MyGUI::Button* mCloseButton;
void onItemSelected(int index);
void onBackgroundSelected();
void dragItem(MyGUI::Widget* sender, std::size_t count);
void transferItem(MyGUI::Widget* sender, std::size_t count);
void dropItem();
void onCloseButtonClicked(MyGUI::Widget* sender);
void onTakeAllButtonClicked(MyGUI::Widget* sender);
void onDisposeCorpseButtonClicked(MyGUI::Widget* sender);
void onReferenceUnavailable() override;
};
}
#endif // CONTAINER_H