#include "usuals.h" #include "levelhandler.h" LevelHandler::LevelHandler() { } LevelHandler::~LevelHandler() { clear(); } void LevelHandler::clear() { m_curLevel.release(); m_topLevel.release(); BaseHandler::clear(); } void LevelHandler::startDocument(RtfReader* reader) { BaseHandler::startDocument(reader); m_topLevel = new Level; m_curLevel = m_topLevel; } void LevelHandler::endDocument() { BaseHandler::endDocument(); } void LevelHandler::groupStart() { BaseHandler::groupStart(); ASSERT(m_curLevel); pushLevel(); } void LevelHandler::groupEnd() { ASSERT(m_curLevel); popLevel(); BaseHandler::groupEnd(); } DOM::Element LevelHandler::getElement() { ASSERT(m_curLevel); return m_curLevel->getElement(); } void LevelHandler::pushLevel() { // Push a level on the stack m_curLevel = m_curLevel->pushLevel(); } void LevelHandler::popLevel() { // Pull a level off the stack LevelPtr level = m_curLevel->getPrevious(); // TODO: report errors here if(level) m_curLevel = level; } void LevelHandler::rewindLevel(LevelPtr ptr) { ASSERT(ptr != NULL); LevelPtr prev = ptr->getPrevious(); if(prev != NULL) m_curLevel = prev; else m_curLevel = ptr; } LevelPtr LevelHandler::getLevel() { return m_curLevel; }