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.
244 lines
7.1 KiB
C++
244 lines
7.1 KiB
C++
/*
|
|
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
|
* its licensors.
|
|
*
|
|
* For complete copyright and license terms please see the LICENSE at the root of this
|
|
* distribution (the "License"). All use of this software is governed by the License,
|
|
* or, if provided, by the license below or the license accompanying this file. Do not
|
|
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
*
|
|
*/
|
|
// Original file Copyright Crytek GMBH or its affiliates, used under license.
|
|
|
|
#include "EditorDefs.h"
|
|
|
|
#include "WipFeatureManager.h"
|
|
|
|
#include "WipFeaturesDlg.h"
|
|
|
|
// Qt
|
|
#include <QDialog>
|
|
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
#include "ui_WipFeaturesDlg.h"
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
|
|
#ifdef USE_WIP_FEATURES_MANAGER
|
|
|
|
// CWipFeaturesDlg dialog
|
|
|
|
class WipFeaturesModel
|
|
: public QAbstractTableModel
|
|
{
|
|
public:
|
|
WipFeaturesModel(QObject* parent = nullptr)
|
|
: QAbstractTableModel(parent)
|
|
{
|
|
}
|
|
|
|
int rowCount(const QModelIndex& parent = QModelIndex()) const override
|
|
{
|
|
return parent.isValid() ? 0 : CWipFeatureManager::Instance()->GetFeatures().size();
|
|
}
|
|
|
|
int columnCount(const QModelIndex& parent = QModelIndex()) const override
|
|
{
|
|
return parent.isValid() ? 0 : 5;
|
|
}
|
|
|
|
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override
|
|
{
|
|
if (orientation != Qt::Horizontal || section >= columnCount())
|
|
{
|
|
return QVariant();
|
|
}
|
|
|
|
|
|
switch (role)
|
|
{
|
|
case Qt::TextAlignmentRole:
|
|
return section == 0 ? Qt::AlignLeft : Qt::AlignCenter;
|
|
case Qt::DisplayRole:
|
|
switch (section)
|
|
{
|
|
case 0:
|
|
return tr("Name");
|
|
case 1:
|
|
return tr("Id");
|
|
case 2:
|
|
return tr("Visible");
|
|
case 3:
|
|
return tr("Enabled");
|
|
case 4:
|
|
return tr("SafeMode");
|
|
default:
|
|
return QVariant();
|
|
}
|
|
default:
|
|
return QVariant();
|
|
}
|
|
}
|
|
|
|
bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override
|
|
{
|
|
if (!index.isValid() || index.column() >= columnCount(index.parent()) || index.row() >= rowCount(index.parent()))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (role != Qt::EditRole || !value.canConvert<bool>())
|
|
{
|
|
return false;
|
|
}
|
|
|
|
auto it = CWipFeatureManager::Instance()->GetFeatures().begin();
|
|
std::advance(it, index.row());
|
|
|
|
auto id = it->first;
|
|
|
|
switch (index.column())
|
|
{
|
|
case 2:
|
|
CWipFeatureManager::Instance()->ShowFeature(id, value.toBool());
|
|
break;
|
|
case 3:
|
|
CWipFeatureManager::Instance()->EnableFeature(id, value.toBool());
|
|
break;
|
|
case 4:
|
|
CWipFeatureManager::Instance()->SetFeatureSafeMode(id, value.toBool());
|
|
break;
|
|
default:
|
|
return false;
|
|
}
|
|
|
|
emit dataChanged(index, index);
|
|
return true;
|
|
}
|
|
|
|
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override
|
|
{
|
|
if (!index.isValid() || index.column() >= columnCount(index.parent()) || index.row() >= rowCount(index.parent()))
|
|
{
|
|
return QVariant();
|
|
}
|
|
|
|
if (role == Qt::TextAlignmentRole)
|
|
{
|
|
return headerData(index.column(), Qt::Horizontal, role);
|
|
}
|
|
|
|
if (role != Qt::DisplayRole)
|
|
{
|
|
return QVariant();
|
|
}
|
|
|
|
auto it = CWipFeatureManager::Instance()->GetFeatures().begin();
|
|
std::advance(it, index.row());
|
|
|
|
auto feature = it->second;
|
|
|
|
switch (index.column())
|
|
{
|
|
case 0:
|
|
return QString(feature.m_displayName.c_str());
|
|
case 1:
|
|
return feature.m_id;
|
|
case 2:
|
|
return feature.m_bVisible ? tr("X") : QString();
|
|
case 3:
|
|
return feature.m_bEnabled ? tr("X") : QString();
|
|
case 4:
|
|
return feature.m_bSafeMode ? tr("X") : QString();
|
|
default:
|
|
return QVariant();
|
|
}
|
|
}
|
|
};
|
|
|
|
CWipFeaturesDlg::CWipFeaturesDlg(QWidget* pParent /*=NULL*/)
|
|
: QDialog(pParent)
|
|
, m_ui(new Ui::WipFeaturesDlg)
|
|
{
|
|
m_ui->setupUi(this);
|
|
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
setFixedSize(size());
|
|
|
|
OnInitDialog();
|
|
|
|
connect(m_ui->buttonShow, &QPushButton::clicked, this, &CWipFeaturesDlg::OnBnClickedButtonShow);
|
|
connect(m_ui->buttonHide, &QPushButton::clicked, this, &CWipFeaturesDlg::OnBnClickedButtonHide);
|
|
connect(m_ui->buttonEnable, &QPushButton::clicked, this, &CWipFeaturesDlg::OnBnClickedButtonEnable);
|
|
connect(m_ui->buttonDisable, &QPushButton::clicked, this, &CWipFeaturesDlg::OnBnClickedButtonDisable);
|
|
connect(m_ui->buttonSafeMode, &QPushButton::clicked, this, &CWipFeaturesDlg::OnBnClickedButtonSafemode);
|
|
connect(m_ui->buttonNormalMode, &QPushButton::clicked, this, &CWipFeaturesDlg::OnBnClickedButtonNormalmode);
|
|
}
|
|
|
|
CWipFeaturesDlg::~CWipFeaturesDlg()
|
|
{
|
|
}
|
|
|
|
// CWipFeaturesDlg message handlers
|
|
|
|
void CWipFeaturesDlg::OnInitDialog()
|
|
{
|
|
m_ui->m_lstFeatures->setModel(new WipFeaturesModel(this));
|
|
m_ui->m_lstFeatures->horizontalHeader()->resizeSection(0, 300);
|
|
m_ui->m_lstFeatures->horizontalHeader()->resizeSection(1, 70);
|
|
m_ui->m_lstFeatures->horizontalHeader()->resizeSection(2, 70);
|
|
m_ui->m_lstFeatures->horizontalHeader()->resizeSection(3, 70);
|
|
m_ui->m_lstFeatures->horizontalHeader()->resizeSection(4, 70);
|
|
}
|
|
|
|
void CWipFeaturesDlg::OnBnClickedButtonShow()
|
|
{
|
|
for (auto index : m_ui->m_lstFeatures->selectionModel()->selectedRows())
|
|
{
|
|
m_ui->m_lstFeatures->model()->setData(index.sibling(index.row(), 2), true);
|
|
}
|
|
}
|
|
|
|
void CWipFeaturesDlg::OnBnClickedButtonHide()
|
|
{
|
|
for (auto index : m_ui->m_lstFeatures->selectionModel()->selectedRows())
|
|
{
|
|
m_ui->m_lstFeatures->model()->setData(index.sibling(index.row(), 2), false);
|
|
}
|
|
}
|
|
|
|
void CWipFeaturesDlg::OnBnClickedButtonEnable()
|
|
{
|
|
for (auto index : m_ui->m_lstFeatures->selectionModel()->selectedRows())
|
|
{
|
|
m_ui->m_lstFeatures->model()->setData(index.sibling(index.row(), 3), true);
|
|
}
|
|
}
|
|
|
|
void CWipFeaturesDlg::OnBnClickedButtonDisable()
|
|
{
|
|
for (auto index : m_ui->m_lstFeatures->selectionModel()->selectedRows())
|
|
{
|
|
m_ui->m_lstFeatures->model()->setData(index.sibling(index.row(), 3), false);
|
|
}
|
|
}
|
|
|
|
void CWipFeaturesDlg::OnBnClickedButtonSafemode()
|
|
{
|
|
for (auto index : m_ui->m_lstFeatures->selectionModel()->selectedRows())
|
|
{
|
|
m_ui->m_lstFeatures->model()->setData(index.sibling(index.row(), 4), true);
|
|
}
|
|
}
|
|
|
|
void CWipFeaturesDlg::OnBnClickedButtonNormalmode()
|
|
{
|
|
for (auto index : m_ui->m_lstFeatures->selectionModel()->selectedRows())
|
|
{
|
|
m_ui->m_lstFeatures->model()->setData(index.sibling(index.row(), 4), false);
|
|
}
|
|
}
|
|
|
|
#include <moc_WipFeaturesDlg.cpp>
|
|
|
|
#endif // USE_WIP_FEATURES_MANAGER
|