You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.7 KiB
C++
69 lines
1.7 KiB
C++
#include "itemselection.hpp"
|
|
|
|
#include <MyGUI_TextBox.h>
|
|
#include <MyGUI_Button.h>
|
|
|
|
#include "itemview.hpp"
|
|
#include "inventoryitemmodel.hpp"
|
|
#include "sortfilteritemmodel.hpp"
|
|
|
|
namespace MWGui
|
|
{
|
|
|
|
ItemSelectionDialog::ItemSelectionDialog(const std::string &label)
|
|
: WindowModal("openmw_itemselection_dialog.layout")
|
|
, mSortModel(NULL)
|
|
, mModel(NULL)
|
|
{
|
|
getWidget(mItemView, "ItemView");
|
|
mItemView->eventItemClicked += MyGUI::newDelegate(this, &ItemSelectionDialog::onSelectedItem);
|
|
|
|
MyGUI::TextBox* l;
|
|
getWidget(l, "Label");
|
|
l->setCaptionWithReplacing (label);
|
|
|
|
MyGUI::Button* cancelButton;
|
|
getWidget(cancelButton, "CancelButton");
|
|
cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &ItemSelectionDialog::onCancelButtonClicked);
|
|
|
|
center();
|
|
}
|
|
|
|
void ItemSelectionDialog::exit()
|
|
{
|
|
eventDialogCanceled();
|
|
}
|
|
|
|
void ItemSelectionDialog::openContainer(const MWWorld::Ptr& container)
|
|
{
|
|
mModel = new InventoryItemModel(container);
|
|
mSortModel = new SortFilterItemModel(mModel);
|
|
mItemView->setModel(mSortModel);
|
|
mItemView->resetScrollBars();
|
|
}
|
|
|
|
void ItemSelectionDialog::setCategory(int category)
|
|
{
|
|
mSortModel->setCategory(category);
|
|
mItemView->update();
|
|
}
|
|
|
|
void ItemSelectionDialog::setFilter(int filter)
|
|
{
|
|
mSortModel->setFilter(filter);
|
|
mItemView->update();
|
|
}
|
|
|
|
void ItemSelectionDialog::onSelectedItem(int index)
|
|
{
|
|
ItemStack item = mSortModel->getItem(index);
|
|
eventItemSelected(item.mBase);
|
|
}
|
|
|
|
void ItemSelectionDialog::onCancelButtonClicked(MyGUI::Widget* sender)
|
|
{
|
|
exit();
|
|
}
|
|
|
|
}
|