mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-08 18:39:29 +00:00
a73b97d125
Removed references to CSVSettings::SamplePage class Removed multiple QDebug references Fixed custom LineEdits (window size user pref) would not accept data
105 lines
2.3 KiB
C++
105 lines
2.3 KiB
C++
#include "settingsitem.hpp"
|
|
|
|
#include <QStringList>
|
|
|
|
bool CSMSettings::SettingsItem::updateItem (const QStringList *values)
|
|
{
|
|
QStringList::ConstIterator it = values->begin();
|
|
|
|
//if the item is not multivalued,
|
|
//save the last value passed in the container
|
|
if (!mIsMultiValue)
|
|
{
|
|
it = values->end();
|
|
it--;
|
|
}
|
|
|
|
bool isValid = true;
|
|
QString value ("");
|
|
|
|
for (; it != values->end(); ++it)
|
|
{
|
|
value = *it;
|
|
isValid = validate(value);
|
|
|
|
//skip only the invalid values
|
|
if (!isValid)
|
|
continue;
|
|
|
|
insert(value);
|
|
}
|
|
|
|
return isValid;
|
|
}
|
|
|
|
bool CSMSettings::SettingsItem::updateItem (const QString &value)
|
|
{
|
|
//takes a value or a SettingsContainer and updates itself accordingly
|
|
//after validating the data against it's own definition
|
|
|
|
QString newValue = value;
|
|
|
|
if (!validate (newValue))
|
|
newValue = mDefaultValue;
|
|
|
|
bool success = (getValue() != newValue);
|
|
|
|
if (success)
|
|
{
|
|
if (mIsMultiValue)
|
|
insert (newValue);
|
|
else
|
|
update (newValue);
|
|
}
|
|
return success;
|
|
}
|
|
|
|
bool CSMSettings::SettingsItem::updateItem(int valueListIndex)
|
|
{
|
|
bool success = false;
|
|
|
|
if (mValueList)
|
|
{
|
|
if (mValueList->size() > valueListIndex)
|
|
success = updateItem (mValueList->at(valueListIndex));
|
|
}
|
|
return success;
|
|
}
|
|
|
|
bool CSMSettings::SettingsItem::validate (const QString &value)
|
|
{
|
|
//if there is no value list or value pair, there is no validation to do
|
|
bool isValid = !(!mValueList->isEmpty() || mValuePair);
|
|
|
|
if (!isValid && !mValueList->isEmpty())
|
|
{
|
|
for (QStringList::Iterator it = mValueList->begin(); it != mValueList->end(); ++it)
|
|
// foreach (QString listItem, *mValueList)
|
|
{
|
|
isValid = (value == *it);
|
|
|
|
if (isValid)
|
|
break;
|
|
}
|
|
}
|
|
else if (!isValid && mValuePair)
|
|
{
|
|
int numVal = value.toInt();
|
|
|
|
isValid = (numVal > mValuePair->left.toInt() && numVal < mValuePair->right.toInt());
|
|
}
|
|
|
|
return isValid;
|
|
}
|
|
|
|
void CSMSettings::SettingsItem::setDefaultValue (const QString &value)
|
|
{
|
|
mDefaultValue = value;
|
|
update (value);
|
|
}
|
|
|
|
QString CSMSettings::SettingsItem::getDefaultValue() const
|
|
{
|
|
return mDefaultValue;
|
|
}
|