void Icon::SetTo(const BAppFileInfo& info, const char* type) { Unset(); uint8* data; size_t size; if (info.GetIconForType(type, &data, &size) == B_OK) { // we have the vector icon, no need to get the rest AdoptData(data, size); return; } BBitmap* icon = AllocateBitmap(B_LARGE_ICON, B_CMAP8); if (icon && info.GetIconForType(type, icon, B_LARGE_ICON) == B_OK) AdoptLarge(icon); else delete icon; icon = AllocateBitmap(B_MINI_ICON, B_CMAP8); if (icon && info.GetIconForType(type, icon, B_MINI_ICON) == B_OK) AdoptMini(icon); else delete icon; }
void DockItem::GetGenericIcon( void ) { if ( IsFolder() ) { BMimeType type; type.SetType( "application/x-vnd.Be-directory" ); type.GetIcon( mLargeIcon, B_LARGE_ICON ); type.GetIcon( mSmallIcon, B_MINI_ICON ); } else { app_info appInfo; BFile appFile; BAppFileInfo appFileInfo; be_app->GetAppInfo( &appInfo ); appFile.SetTo( &appInfo.ref, B_READ_WRITE ); appFileInfo.SetTo( &appFile ); appFileInfo.GetIconForType( "application/x-be-executable", mLargeIcon, B_LARGE_ICON ); appFileInfo.GetIconForType( "application/x-be-executable", mSmallIcon, B_MINI_ICON ); /* BMimeType appType; appType.SetType( "application/x-vnd.HK-LaunchPad" ); appType.GetIcon( mLargeIcon, B_LARGE_ICON ); appType.GetIcon( mSmallIcon, B_MINI_ICON ); */ } }
void IconView::Update() { delete fIcon; fIcon = NULL; Invalidate(); // this will actually trigger a redraw *after* we updated the icon below BBitmap* icon = NULL; if (fHasRef) { BFile file(&fRef, B_READ_ONLY); if (file.InitCheck() != B_OK) return; BAppFileInfo info; if (info.SetTo(&file) != B_OK) return; icon = Icon::AllocateBitmap(fIconSize); if (icon != NULL && info.GetIconForType(fType.Type(), icon, (icon_size)fIconSize) != B_OK) { delete icon; return; } } else if (fHasType) { icon = Icon::AllocateBitmap(fIconSize); if (icon != NULL && icon_for_type(fType, *icon, (icon_size)fIconSize, &fSource) != B_OK) { delete icon; return; } } else if (fIconData) { icon = Icon::AllocateBitmap(fIconSize); if (fIconData->GetIcon(icon) != B_OK) { delete icon; icon = NULL; } } fIcon = icon; }