openmw/apps/opencs/view/world/recordbuttonbar.hpp
2022-09-22 21:35:26 +03:00

90 lines
1.8 KiB
C++

#ifndef CSV_WORLD_RECORDBUTTONBAR_H
#define CSV_WORLD_RECORDBUTTONBAR_H
#include <QWidget>
#include "../../model/world/universalid.hpp"
class QToolButton;
class QModelIndex;
namespace CSMWorld
{
class IdTable;
class CommandDispatcher;
}
namespace CSMPrefs
{
class Setting;
}
namespace CSVWorld
{
class TableBottomBox;
/// \brief Button bar for use in dialogue-type subviews
///
/// Contains the following buttons:
/// - next/prev
/// - clone
/// - add
/// - delete
/// - revert
/// - preview (optional)
/// - view (optional)
class RecordButtonBar : public QWidget
{
Q_OBJECT
CSMWorld::UniversalId mId;
CSMWorld::IdTable& mTable;
TableBottomBox* mBottom;
CSMWorld::CommandDispatcher* mCommandDispatcher;
QToolButton* mPrevButton;
QToolButton* mNextButton;
QToolButton* mCloneButton;
QToolButton* mAddButton;
QToolButton* mDeleteButton;
QToolButton* mRevertButton;
bool mLocked;
private:
void updateModificationButtons();
void updatePrevNextButtons();
public:
RecordButtonBar(const CSMWorld::UniversalId& id, CSMWorld::IdTable& table, TableBottomBox* bottomBox = nullptr,
CSMWorld::CommandDispatcher* commandDispatcher = nullptr, QWidget* parent = nullptr);
void setEditLock(bool locked);
public slots:
void universalIdChanged(const CSMWorld::UniversalId& id);
private slots:
void settingChanged(const CSMPrefs::Setting* setting);
void cloneRequest();
void nextId();
void prevId();
void rowNumberChanged(const QModelIndex& parent, int start, int end);
signals:
void showPreview();
void viewRecord();
void switchToRow(int row);
};
}
#endif