virtual void Visit(const WCHAR *name, const WCHAR *url, int level) { int pageNo = CreatePageNoForURL(url); ChmTocItem *item = new ChmTocItem(str::Dup(name), pageNo, str::Dup(url)); item->id = ++idCounter; item->open = level == 1; // append the item at the correct level CrashIf(level < 1); if (!*root) { *root = item; lastItems.Append(*root); } else if ((size_t)level <= lastItems.Count()) { lastItems.RemoveAt(level, lastItems.Count() - level); lastItems.Last() = lastItems.Last()->next = item; } else { lastItems.Last()->child = item; lastItems.Append(item); } }
virtual void Visit(const WCHAR *name, const WCHAR *url, int level) { int pageNo = CreatePageNoForURL(url); name = Allocator::StrDup(allocator, name); url = Allocator::StrDup(allocator, url); tocTrace->Append(ChmTocTraceItem(name, url, level, pageNo)); }