mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-16 19:49:56 +00:00
Create a separate class for Edit 'ID' action to use in tables' context menus
This commit is contained in:
parent
ba68201593
commit
110306f6b0
3 changed files with 74 additions and 1 deletions
|
@ -64,7 +64,7 @@ opencs_units (view/world
|
||||||
table tablesubview scriptsubview util regionmapsubview tablebottombox creator genericcreator
|
table tablesubview scriptsubview util regionmapsubview tablebottombox creator genericcreator
|
||||||
cellcreator referenceablecreator referencecreator scenesubview
|
cellcreator referenceablecreator referencecreator scenesubview
|
||||||
infocreator scriptedit dialoguesubview previewsubview regionmap dragrecordtable nestedtable
|
infocreator scriptedit dialoguesubview previewsubview regionmap dragrecordtable nestedtable
|
||||||
dialoguespinbox recordbuttonbar
|
dialoguespinbox recordbuttonbar tableeditidaction
|
||||||
)
|
)
|
||||||
|
|
||||||
opencs_units_noqt (view/world
|
opencs_units_noqt (view/world
|
||||||
|
|
42
apps/opencs/view/world/tableeditidaction.cpp
Normal file
42
apps/opencs/view/world/tableeditidaction.cpp
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
#include "tableeditidaction.hpp"
|
||||||
|
|
||||||
|
#include <QTableView>
|
||||||
|
|
||||||
|
#include "../../model/world/tablemimedata.hpp"
|
||||||
|
|
||||||
|
CSVWorld::TableEditIdAction::CellData CSVWorld::TableEditIdAction::getCellData(int row, int column) const
|
||||||
|
{
|
||||||
|
QModelIndex index = mTable.model()->index(row, column);
|
||||||
|
if (index.isValid())
|
||||||
|
{
|
||||||
|
QVariant display = mTable.model()->data(index, CSMWorld::ColumnBase::Role_Display);
|
||||||
|
QString value = mTable.model()->data(index).toString();
|
||||||
|
return std::make_pair(static_cast<CSMWorld::ColumnBase::Display>(display.toInt()), value);
|
||||||
|
}
|
||||||
|
return std::make_pair(CSMWorld::ColumnBase::Display_None, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
CSVWorld::TableEditIdAction::TableEditIdAction(const QTableView &table, QWidget *parent)
|
||||||
|
: QAction(parent),
|
||||||
|
mTable(table),
|
||||||
|
mCurrentId(CSMWorld::UniversalId::Type_None)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void CSVWorld::TableEditIdAction::setCell(int row, int column)
|
||||||
|
{
|
||||||
|
CellData data = getCellData(row, column);
|
||||||
|
mCurrentId = CSMWorld::UniversalId(CSMWorld::TableMimeData::convertEnums(data.first),
|
||||||
|
data.second.toUtf8().constData());
|
||||||
|
setText("Edit '" + data.second + "'");
|
||||||
|
}
|
||||||
|
|
||||||
|
CSMWorld::UniversalId CSVWorld::TableEditIdAction::getCurrentId() const
|
||||||
|
{
|
||||||
|
return mCurrentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CSVWorld::TableEditIdAction::isValidIdCell(int row, int column) const
|
||||||
|
{
|
||||||
|
CellData data = getCellData(row, column);
|
||||||
|
return CSMWorld::ColumnBase::isId(data.first) && !data.second.isEmpty();
|
||||||
|
}
|
31
apps/opencs/view/world/tableeditidaction.hpp
Normal file
31
apps/opencs/view/world/tableeditidaction.hpp
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#ifndef CSVWORLD_TABLEEDITIDACTION_HPP
|
||||||
|
#define CSVWORLD_TABLEEDITIDACTION_HPP
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
|
||||||
|
#include "../../model/world/columnbase.hpp"
|
||||||
|
#include "../../model/world/universalid.hpp"
|
||||||
|
|
||||||
|
class QTableView;
|
||||||
|
|
||||||
|
namespace CSVWorld
|
||||||
|
{
|
||||||
|
class TableEditIdAction : public QAction
|
||||||
|
{
|
||||||
|
const QTableView &mTable;
|
||||||
|
CSMWorld::UniversalId mCurrentId;
|
||||||
|
|
||||||
|
typedef std::pair<CSMWorld::ColumnBase::Display, QString> CellData;
|
||||||
|
CellData getCellData(int row, int column) const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
TableEditIdAction(const QTableView &table, QWidget *parent = 0);
|
||||||
|
|
||||||
|
void setCell(int row, int column);
|
||||||
|
|
||||||
|
CSMWorld::UniversalId getCurrentId() const;
|
||||||
|
bool isValidIdCell(int row, int column) const;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in a new issue