mirror of
https://github.com/OpenMW/openmw.git
synced 2025-12-06 11:04:32 +00:00
84 lines
2.5 KiB
C++
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
|