Esempio n. 1
0
    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);
        }
    }
Esempio n. 2
0
 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));
 }