diff options
Diffstat (limited to 'src/settingfilter.cpp')
-rw-r--r-- | src/settingfilter.cpp | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/src/settingfilter.cpp b/src/settingfilter.cpp new file mode 100644 index 0000000..fb7df78 --- /dev/null +++ b/src/settingfilter.cpp @@ -0,0 +1,222 @@ +/*************************************************************************** + settingfilter.cpp + ------------------- + begin : Wed Nov 28 2007 + copyright : (C) 2007 - 2012 by Roland Riegel + email : feedback@roland-riegel.de + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "settingfilter.h" +#include "stringutils.h" + +using namespace std; + +SettingFilterDefault::SettingFilterDefault(const string& def) + : m_default(def) +{ +} + +SettingFilterDefault::~SettingFilterDefault() +{ +} + +string SettingFilterDefault::getId() const +{ + return "default"; +} + +void SettingFilterDefault::setDefault(const string& def) +{ + m_default = def; +} + +const string& SettingFilterDefault::getDefault() const +{ + return m_default; +} + +bool SettingFilterDefault::filterWrite(string& valueNew) +{ + if(valueNew.empty()) + valueNew = m_default; + + return true; +} + +void SettingFilterDefault::filterRead(string& value) +{ +} + +SettingFilterExclusive::SettingFilterExclusive(const string& exclusive) + : m_exclusive(exclusive) +{ +} + +SettingFilterExclusive::~SettingFilterExclusive() +{ +} + +string SettingFilterExclusive::getId() const +{ + return "exclusive"; +} + +void SettingFilterExclusive::setExclusive(const string& exclusive) +{ + m_exclusive = exclusive; +} + +const string& SettingFilterExclusive::getExclusive() const +{ + return m_exclusive; +} + +bool SettingFilterExclusive::filterWrite(string& valueNew) +{ + substituteExclusive(valueNew); + return true; +} + +void SettingFilterExclusive::filterRead(string& value) +{ + substituteExclusive(value); +} + +void SettingFilterExclusive::substituteExclusive(string& value) +{ + if(value.find(m_exclusive + " ") == 0 || + value.find(string(" ") + m_exclusive) == value.length() - (m_exclusive.length() + 1) || + value.find(string(" ") + m_exclusive + " ") != string::npos + ) + value = m_exclusive; +} + +SettingFilterMap::SettingFilterMap(const map<string, string>& filterMap) + : m_filterMap(filterMap) +{ +} + +SettingFilterMap::~SettingFilterMap() +{ +} + +string SettingFilterMap::getId() const +{ + return "map"; +} + +void SettingFilterMap::setMap(const map<string, string>& filterMap) +{ + m_filterMap = filterMap; +} + +const map<string, string>& SettingFilterMap::getMap() const +{ + return m_filterMap; +} + +bool SettingFilterMap::filterWrite(string& valueNew) +{ + for(map<string, string>::const_iterator itMapping = m_filterMap.begin(); itMapping != m_filterMap.end(); ++itMapping) + { + if(itMapping->second == valueNew) + { + valueNew = itMapping->first; + return true; + } + } + + return false; +} + +void SettingFilterMap::filterRead(string& value) +{ + if(m_filterMap.empty()) + return; + + map<string, string>::const_iterator itMapping = m_filterMap.find(value); + if(itMapping != m_filterMap.end()) + value = itMapping->second; +} + +SettingFilterMin::SettingFilterMin(int min) + : m_min(min) +{ +} + +SettingFilterMin::~SettingFilterMin() +{ +} + +string SettingFilterMin::getId() const +{ + return "min"; +} + +void SettingFilterMin::setMin(int min) +{ + m_min = min; +} + +int SettingFilterMin::getMin() const +{ + return m_min; +} + +bool SettingFilterMin::filterWrite(string& valueNew) +{ + if(fromString<int>(valueNew) < m_min) + valueNew = toString(m_min); + + return true; +} + +void SettingFilterMin::filterRead(string& value) +{ +} + +SettingFilterMax::SettingFilterMax(int max) + : m_max(max) +{ +} + +SettingFilterMax::~SettingFilterMax() +{ +} + +string SettingFilterMax::getId() const +{ + return "max"; +} + +void SettingFilterMax::setMax(int max) +{ + m_max = max; +} + +int SettingFilterMax::getMax() const +{ + return m_max; +} + +bool SettingFilterMax::filterWrite(string& valueNew) +{ + if(fromString<int>(valueNew) > m_max) + valueNew = toString(m_max); + + return true; +} + +void SettingFilterMax::filterRead(string& value) +{ +} + |