1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-01 02:45:38 +00:00

Fixed filter reapplication on Description column change and on State

column change.

Moved column index search to widget constructor, rewrite slot with
respect to multiple columns data change.

(cherry picked from commit eae36f8005)
This commit is contained in:
artemutin@yandex.ru 2015-10-13 23:44:23 +10:00 committed by cc9cii
parent 437cabf778
commit 91c4afe78c
2 changed files with 12 additions and 2 deletions

View file

@ -5,6 +5,8 @@
#include <QApplication>
#include "../../model/world/data.hpp"
#include "../../model/world/idtablebase.hpp"
#include "../../model/world/columns.hpp"
CSVFilter::EditWidget::EditWidget (CSMWorld::Data& data, QWidget *parent)
: QLineEdit (parent), mParser (data), mIsEmpty(true)
@ -12,7 +14,8 @@ CSVFilter::EditWidget::EditWidget (CSMWorld::Data& data, QWidget *parent)
mPalette = palette();
connect (this, SIGNAL (textChanged (const QString&)), this, SLOT (textChanged (const QString&)));
QAbstractItemModel *model = data.getTableModel (CSMWorld::UniversalId::Type_Filters);
const CSMWorld::IdTableBase *model =
static_cast<const CSMWorld::IdTableBase *> (data.getTableModel (CSMWorld::UniversalId::Type_Filters));
connect (model, SIGNAL (dataChanged (const QModelIndex &, const QModelIndex&)),
this, SLOT (filterDataChanged (const QModelIndex &, const QModelIndex&)),
@ -23,6 +26,9 @@ CSVFilter::EditWidget::EditWidget (CSMWorld::Data& data, QWidget *parent)
connect (model, SIGNAL (rowsInserted (const QModelIndex&, int, int)),
this, SLOT (filterRowsInserted (const QModelIndex&, int, int)),
Qt::QueuedConnection);
mStateColumnIndex = model->findColumnIndex(CSMWorld::Columns::ColumnId_Modification);
mDescColumnIndex = model->findColumnIndex(CSMWorld::Columns::ColumnId_Description);
}
void CSVFilter::EditWidget::textChanged (const QString& text)
@ -55,7 +61,9 @@ void CSVFilter::EditWidget::textChanged (const QString& text)
void CSVFilter::EditWidget::filterDataChanged (const QModelIndex& topLeft,
const QModelIndex& bottomRight)
{
textChanged (text());
for (int i = topLeft.column(); i <= bottomRight.column(); ++i)
if (i != mStateColumnIndex && i != mDescColumnIndex)
textChanged (text());
}
void CSVFilter::EditWidget::filterRowsRemoved (const QModelIndex& parent, int start, int end)

View file

@ -26,6 +26,8 @@ namespace CSVFilter
CSMFilter::Parser mParser;
QPalette mPalette;
bool mIsEmpty;
int mStateColumnIndex;
int mDescColumnIndex;
public: