replaced settings change notifications for columns with a more robust implementation

This commit is contained in:
Marc Zinnschlag 2013-07-20 13:19:27 +02:00
parent 0cb7d186e7
commit 2497c18702
7 changed files with 27 additions and 21 deletions

View file

@ -16,7 +16,7 @@ CSVWorld::CommandDelegate *CSVWorld::RecordStatusDelegateFactory::makeDelegate (
return new RecordStatusDelegate (mValues, mIcons, undoStack, parent);
}
void CSVWorld::RecordStatusDelegate::updateEditorSetting (const QString &settingName, const QString &settingValue)
bool CSVWorld::RecordStatusDelegate::updateEditorSetting (const QString &settingName, const QString &settingValue)
{
if (settingName == "Record Status Display")
{
@ -28,7 +28,11 @@ void CSVWorld::RecordStatusDelegate::updateEditorSetting (const QString &setting
else if (settingValue == "Text Only")
mDisplayMode = Mode_TextOnly;
return true;
}
return false;
}
CSVWorld::RecordStatusDelegateFactory::RecordStatusDelegateFactory()

View file

@ -21,7 +21,7 @@ namespace CSVWorld
const IconList& icons,
QUndoStack& undoStack, QObject *parent = 0);
void updateEditorSetting (const QString &settingName, const QString &settingValue);
virtual bool updateEditorSetting (const QString &settingName, const QString &settingValue);
};

View file

@ -51,7 +51,7 @@ CSVWorld::RefIdTypeDelegateFactory::UidTypeList CSVWorld::RefIdTypeDelegateFacto
return list;
}
void CSVWorld::RefIdTypeDelegate::updateEditorSetting (const QString &settingName, const QString &settingValue)
bool CSVWorld::RefIdTypeDelegate::updateEditorSetting (const QString &settingName, const QString &settingValue)
{
if (settingName == "Referenceable ID Type Display")
{
@ -63,5 +63,9 @@ void CSVWorld::RefIdTypeDelegate::updateEditorSetting (const QString &settingNam
else if (settingValue == "Text Only")
mDisplayMode = Mode_TextOnly;
return true;
}
return false;
}

View file

@ -13,7 +13,7 @@ namespace CSVWorld
public:
RefIdTypeDelegate (const ValueList &mValues, const IconList &icons, QUndoStack& undoStack, QObject *parent);
void updateEditorSetting (const QString &settingName, const QString &settingValue);
virtual bool updateEditorSetting (const QString &settingName, const QString &settingValue);
};

View file

@ -207,22 +207,11 @@ void CSVWorld::Table::deleteRecord()
void CSVWorld::Table::updateEditorSetting (const QString &settingName, const QString &settingValue)
{
if (settingName == "Record Status Display")
{
RecordStatusDelegate &rsDelegate = dynamic_cast <CSVWorld::RecordStatusDelegate &> (*itemDelegateForColumn(1));
int columns = mModel->columnCount();
rsDelegate.updateEditorSetting (settingName, settingValue);
emit dataChanged(mModel->index(0,1), mModel->index(mModel->rowCount()-1, 1));
}
if (settingName == "Referenceable ID Type Display")
{
RefIdTypeDelegate *refidDelegate = dynamic_cast <CSVWorld::RefIdTypeDelegate *> (itemDelegateForColumn(2));
if (refidDelegate)
{
refidDelegate->updateEditorSetting (settingName, settingValue);
emit dataChanged(mModel->index(0,1), mModel->index(mModel->rowCount()-1, 1));
}
}
for (int i=0; i<columns; ++i)
if (QAbstractItemDelegate *delegate = itemDelegateForColumn (i))
if (dynamic_cast<CommandDelegate&> (*delegate).
updateEditorSetting (settingName, settingValue))
emit dataChanged (mModel->index (0, i), mModel->index (mModel->rowCount()-1, i));
}

View file

@ -134,4 +134,10 @@ void CSVWorld::CommandDelegate::setEditLock (bool locked)
bool CSVWorld::CommandDelegate::isEditLocked() const
{
return mEditLock;
}
bool CSVWorld::CommandDelegate::updateEditorSetting (const QString &settingName,
const QString &settingValue)
{
return false;
}

View file

@ -108,6 +108,9 @@ namespace CSVWorld
bool isEditLocked() const;
virtual bool updateEditorSetting (const QString &settingName, const QString &settingValue);
///< \return Does column require update?
private slots:
virtual void slotUpdateEditorSetting (const QString &settingName, const QString &settingValue) {}