MCPcopy Create free account
hub / github.com/bumptop/BumpTop / onLibraryChangeEvent

Method onLibraryChangeEvent

trunk/win/Source/BT_LibraryManager.cpp:567–669  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

565}
566
567void LibraryManager::onLibraryChangeEvent(long eventId, ITEMIDLIST* itemOne, ITEMIDLIST* itemTwo)
568{
569 if (!_comInitialized || !_pSHGetNameFromIDList || !_pSHCreateItemFromIDList)
570 return;
571
572 bool reload = false;
573 HRESULT hr = S_OK;
574 QString firstItemName, firstItemKey;
575 QString secondItemName, secondItemKey;
576
577 if (itemOne)
578 {
579 PWSTR name = NULL;
580 if (SUCCEEDED(_pSHGetNameFromIDList(itemOne, SIGDN_NORMALDISPLAY, &name)))
581 {
582 firstItemName = QString::fromUtf16((const ushort*) name);
583 firstItemKey = QString_NT("lib_%1").arg(firstItemName);
584 CoTaskMemFree(name);
585 }
586 }
587
588 if (itemTwo)
589 {
590 PWSTR name = NULL;
591 if (SUCCEEDED(_pSHGetNameFromIDList(itemTwo, SIGDN_NORMALDISPLAY, &name)))
592 {
593 secondItemName = QString::fromUtf16((const ushort*) name);
594 secondItemKey = QString_NT("lib_%1").arg(secondItemName);
595 CoTaskMemFree(name);
596 }
597 }
598
599 switch (eventId)
600 {
601 case SHCNE_CREATE:
602 {
603 LOG(QString_NT("Library '%1' created\n").arg(firstItemName));
604 IShellItem* item;
605 hr = _pSHCreateItemFromIDList(itemOne, IID_PPV_ARGS(&item));
606 if (SUCCEEDED(hr))
607 {
608 QSharedPointer<Library> newLibrary = createLibrary(item);
609 if (newLibrary)
610 {
611 if (_libraries.value(firstItemKey))
612 _libraries.remove(firstItemKey);
613 _libraries.insert(newLibrary->getHashKey(), newLibrary);
614 }
615 item->Release();
616 }
617 }
618 break;
619
620 case SHCNE_RENAMEFOLDER:
621 {
622 LOG(QString_NT("Library '%1' renamed to '%2'\n").arg(firstItemName).arg(secondItemName));
623 QSharedPointer<Library> oldLibrary = _libraries.value(firstItemKey);
624 if (oldLibrary)

Callers 1

messageProcMethod · 0.80

Calls 10

getHashKeyMethod · 0.80
setHashKeyMethod · 0.80
setValidMethod · 0.80
LOGFunction · 0.50
argMethod · 0.45
valueMethod · 0.45
removeMethod · 0.45
insertMethod · 0.45
ReleaseMethod · 0.45
setNameMethod · 0.45

Tested by

no test coverage detected