#include "tfxattributes.h" #include "tconst.h" //---------------------------------------------------------------------- TFxAttributes::TFxAttributes() : m_id(0) , m_dagNodePos(TConst::nowhere) , m_enabled(true) , m_speedAware(false) , m_isOpened(false) , m_speed() , m_groupSelector(-1) , m_passiveCacheDataIdx(-1) {} //---------------------------------------------------------------------- TFxAttributes::~TFxAttributes() {} //---------------------------------------------------------------------- void TFxAttributes::setDagNodePos(const TPointD &pos) { m_dagNodePos = pos; } //---------------------------------------------------------------------- int TFxAttributes::setGroupId(int value) { m_groupSelector++; m_groupId.insert(m_groupSelector, value); return m_groupSelector; } //---------------------------------------------------------------------- void TFxAttributes::setGroupId(int value, int position) { assert(position >= 0 && position <= m_groupId.size()); m_groupId.insert(position, value); if (m_groupSelector + 1 >= position) m_groupSelector++; } //---------------------------------------------------------------------- int TFxAttributes::getGroupId() { return m_groupId.isEmpty() || m_groupSelector < 0 || m_groupSelector >= m_groupId.size() ? 0 : m_groupId[m_groupSelector]; } //---------------------------------------------------------------------- QStack TFxAttributes::getGroupIdStack() { return m_groupId; } //---------------------------------------------------------------------- void TFxAttributes::removeGroupId(int position) { if (!isGrouped()) return; assert(position >= 0 && position <= m_groupId.size()); m_groupId.remove(position); if (m_groupSelector + 1 >= position && m_groupSelector > -1) m_groupSelector--; } //---------------------------------------------------------------------- int TFxAttributes::removeGroupId() { m_groupId.remove(m_groupSelector); if (m_groupSelector > -1) m_groupSelector--; return m_groupSelector + 1; } //---------------------------------------------------------------------- bool TFxAttributes::isGrouped() { return !m_groupId.isEmpty(); } //---------------------------------------------------------------------- bool TFxAttributes::isContainedInGroup(int groupId) { return m_groupId.contains(groupId); } //---------------------------------------------------------------------- void TFxAttributes::setGroupName(const std::wstring &name, int position) { int groupSelector = position < 0 ? m_groupSelector : position; assert(groupSelector >= 0 && groupSelector <= m_groupName.size()); m_groupName.insert(groupSelector, name); } //---------------------------------------------------------------------- std::wstring TFxAttributes::getGroupName(bool fromEditor) { int groupSelector = fromEditor ? m_groupSelector + 1 : m_groupSelector; return m_groupName.isEmpty() || groupSelector < 0 || groupSelector >= m_groupName.size() ? L"" : m_groupName[groupSelector]; } //---------------------------------------------------------------------- QStack TFxAttributes::getGroupNameStack() { return m_groupName; } //---------------------------------------------------------------------- int TFxAttributes::removeGroupName(bool fromEditor) { int groupSelector = fromEditor ? m_groupSelector + 1 : m_groupSelector; if (!isGrouped()) return -1; assert(groupSelector >= 0 && groupSelector <= m_groupName.size()); m_groupName.remove(groupSelector); return groupSelector; } //---------------------------------------------------------------------- void TFxAttributes::removeGroupName(int position) { int groupSelector = position < 0 ? m_groupSelector : position; assert(groupSelector >= 0 && groupSelector <= m_groupName.size()); m_groupName.remove(groupSelector); } //---------------------------------------------------------------------- bool TFxAttributes::editGroup() { return (m_groupSelector < 0) ? false : (--m_groupSelector, true); } //---------------------------------------------------------------------- bool TFxAttributes::isGroupEditing() { return isGrouped() && (m_groupSelector == -1); } //---------------------------------------------------------------------- void TFxAttributes::closeEditingGroup(int groupId) { if (!m_groupId.contains(groupId)) return; m_groupSelector = 0; while (m_groupId[m_groupSelector] != groupId && m_groupSelector < m_groupId.size()) m_groupSelector++; } //---------------------------------------------------------------------- int TFxAttributes::getEditingGroupId() { if (!isGrouped() || m_groupSelector + 1 >= m_groupId.size()) return -1; return m_groupId[m_groupSelector + 1]; } //---------------------------------------------------------------------- std::wstring TFxAttributes::getEditingGroupName() { if (!isGrouped() || m_groupSelector + 1 >= m_groupName.size()) return L""; return m_groupName[m_groupSelector + 1]; } //----------------------------------------------------------------------------- void TFxAttributes::removeFromAllGroup() { m_groupId.clear(); m_groupName.clear(); m_groupSelector = -1; } //----------------------------------------------------------------------------- void TFxAttributes::closeAllGroups() { if (isGroupEditing()) m_groupSelector = m_groupId.size() - 1; }