#include "stdafx.h" #include "ActionComboItem.h" #include "Visitor.h" #include NAction::CActionComboItem::CActionComboItem() : CActionItem(nullptr, 0) { } NAction::CActionComboItem::CActionComboItem(CSigmaDoc* ppDoc, UINT actionType) : CActionItem(ppDoc, actionType) { } NAction::CActionComboItem::~CActionComboItem() { } void NAction::CActionComboItem::AddAction(CActionItem* action) { if (action == nullptr) { return; } m_actionItems.emplace_back(action); } void NAction::CActionComboItem::RemoveAction(CActionItem* action) { auto it = FindAction(action); if (it != m_actionItems.end()) { m_actionItems.erase(it); } } int NAction::CActionComboItem::GetCount() const { return (int)m_actionItems.size(); } void NAction::CActionComboItem::Clear() { m_actionItems.clear(); } void NAction::CActionComboItem::Undo(void) { for (auto& pActionItem : m_actionItems) { pActionItem->Undo(); } } void NAction::CActionComboItem::Redo(void) { for (auto &pActionItem : m_actionItems) { pActionItem->Redo(); } } void NAction::CActionComboItem::accept(CActionVisitor& visitor) { visitor.visit(*this); } std::list>::const_iterator NAction::CActionComboItem::FindAction(CActionItem* action) const { auto compareFun = [action](const std::shared_ptr ptr) { return ptr.get() == action; }; return std::find_if(m_actionItems.begin(), m_actionItems.end(), compareFun); }