MCPcopy Create free account
hub / github.com/TortoiseGit/TortoiseGit / toString

Method toString

src/TortoiseShell/ItemIDList.cpp:81–127  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

79}
80
81std::wstring ItemIDList::toString(bool resolveLibraries /*= true*/)
82{
83 CComPtr<IShellFolder> shellFolder;
84 CComPtr<IShellFolder> parentFolder;
85 std::wstring ret;
86
87 if (FAILED(::SHGetDesktopFolder(&shellFolder)))
88 return ret;
89 if (!parent_ || FAILED(shellFolder->BindToObject(parent_, 0, IID_IShellFolder, reinterpret_cast<void**>(&parentFolder))))
90 parentFolder = shellFolder;
91
92 if (parentFolder && item_ != 0)
93 {
94 STRRET name;
95 if (FAILED(parentFolder->GetDisplayNameOf(item_, SHGDN_NORMAL | SHGDN_FORPARSING, &name)))
96 return ret;
97 CComHeapPtr<wchar_t> szDisplayName;
98 if (FAILED(StrRetToStr(&name, item_, &szDisplayName)) || !szDisplayName)
99 return ret;
100 ret = szDisplayName;
101 }
102 else
103 return ret;
104
105 if (!(resolveLibraries && ret.starts_with(L"::{")))
106 return ret;
107
108 CComPtr<IShellLibrary> plib;
109 if (FAILED(plib.CoCreateInstance(CLSID_ShellLibrary, nullptr, CLSCTX_INPROC_SERVER)))
110 return ret;
111
112 CComPtr<IShellItem> psiLibrary;
113 if (FAILED(SHCreateItemFromParsingName(ret.c_str(), nullptr, IID_PPV_ARGS(&psiLibrary))))
114 return ret;
115
116 if (FAILED(plib->LoadLibraryFromItem(psiLibrary, STGM_READ | STGM_SHARE_DENY_NONE)))
117 return ret;
118
119 CComPtr<IShellItem> psiSaveLocation;
120 if (FAILED(plib->GetDefaultSaveFolder(DSFT_DETECT, IID_PPV_ARGS(&psiSaveLocation))))
121 return ret;
122
123 if (CComHeapPtr<WCHAR> pszName; SUCCEEDED(psiSaveLocation->GetDisplayName(SIGDN_FILESYSPATH, &pszName)))
124 return std::wstring(pszName);
125
126 return ret;
127}
128
129PCUITEMID_CHILD ItemIDList::operator& ()
130{

Callers 4

ReadZipFunction · 0.80
PptAppMajorVersionFunction · 0.80
InitializeMethod · 0.80
ContextMenu.cppFile · 0.80

Calls 3

BindToObjectMethod · 0.80
GetDisplayNameOfMethod · 0.80
GetDisplayNameMethod · 0.80

Tested by

no test coverage detected