// caller has to free() the result static WCHAR* FavCompactReadableName(DisplayState* fav, Favorite* fn, bool isCurrent = false) { ScopedMem<WCHAR> rn(FavReadableName(fn)); if (isCurrent) { return str::Format(L"%s : %s", _TR("Current file"), rn.Get()); } const WCHAR* fp = path::GetBaseName(fav->filePath); return str::Format(L"%s : %s", fp, rn.Get()); }
static HTREEITEM InsertFavSecondLevelNode(HWND hwnd, HTREEITEM parent, Favorite* fn) { TV_INSERTSTRUCT tvinsert; tvinsert.hParent = parent; tvinsert.hInsertAfter = TVI_LAST; tvinsert.itemex.mask = TVIF_TEXT | TVIF_STATE | TVIF_PARAM; tvinsert.itemex.state = 0; tvinsert.itemex.stateMask = TVIS_EXPANDED; tvinsert.itemex.lParam = (LPARAM)fn; ScopedMem<WCHAR> s(FavReadableName(fn)); tvinsert.itemex.pszText = s; return TreeView_InsertItem(hwnd, &tvinsert); }
static void AppendFavMenuItems(HMENU m, DisplayState* f, UINT& idx, bool combined, bool isCurrent) { for (size_t i = 0; i < f->favorites->Count(); i++) { if (i >= MAX_FAV_MENUS) { return; } Favorite* fn = f->favorites->At(i); fn->menuId = idx++; ScopedMem<WCHAR> s; if (combined) { s.Set(FavCompactReadableName(f, fn, isCurrent)); } else { s.Set(FavReadableName(fn)); } AppendMenu(m, MF_STRING, (UINT_PTR)fn->menuId, win::menu::ToSafeString(s, s)); } }
static void AppendFavMenuItems(HMENU m, DisplayState* f, UINT& idx, bool combined, bool isCurrent) { for (size_t i = 0; i < f->favorites->size(); i++) { if (i >= MAX_FAV_MENUS) { return; } Favorite* fn = f->favorites->at(i); fn->menuId = idx++; AutoFreeW s; if (combined) { s.Set(FavCompactReadableName(f, fn, isCurrent)); } else { s.Set(FavReadableName(fn)); } auto str = win::menu::ToSafeString(s); AppendMenuW(m, MF_STRING, (UINT_PTR)fn->menuId, str); } }