void TBarApp::ResizeTeamIcons() { for (int32 i = sBarTeamInfoList.CountItems() - 1; i >= 0; i--) { BarTeamInfo* barInfo = (BarTeamInfo*)sBarTeamInfoList.ItemAt(i); if ((barInfo->flags & B_BACKGROUND_APP) == 0 && strcasecmp(barInfo->sig, kDeskbarSignature) != 0) { FetchAppIcon(barInfo); } } }
void TBarApp::ResizeTeamIcons() { for (int32 i = 0; i < sBarTeamInfoList.CountItems(); i++) { BarTeamInfo* barInfo = (BarTeamInfo*)sBarTeamInfoList.ItemAt(i); if ((barInfo->flags & B_BACKGROUND_APP) == 0 && strcasecmp(barInfo->sig, kDeskbarSignature) != 0) { delete barInfo->icon; barInfo->icon = new BBitmap(IconRect(), kIconColorSpace); FetchAppIcon(barInfo->sig, barInfo->icon); } } }
void TBarApp::AddTeam(team_id team, uint32 flags, const char* sig, entry_ref* ref) { if ((flags & B_BACKGROUND_APP) != 0 || strcasecmp(sig, kDeskbarSignature) == 0) { // don't add if a background app or Deskbar itself return; } BAutolock autolock(sSubscriberLock); if (!autolock.IsLocked()) return; // have we already seen this team, is this another instance of // a known app? BarTeamInfo* multiLaunchTeam = NULL; int32 teamCount = sBarTeamInfoList.CountItems(); for (int32 i = 0; i < teamCount; i++) { BarTeamInfo* barInfo = (BarTeamInfo*)sBarTeamInfoList.ItemAt(i); if (barInfo->teams->HasItem((void*)(addr_t)team)) return; if (strcasecmp(barInfo->sig, sig) == 0) multiLaunchTeam = barInfo; } if (multiLaunchTeam != NULL) { multiLaunchTeam->teams->AddItem((void*)(addr_t)team); int32 subsCount = sSubscribers.CountItems(); if (subsCount > 0) { BMessage message(kAddTeam); message.AddInt32("team", team); message.AddString("sig", multiLaunchTeam->sig); for (int32 i = 0; i < subsCount; i++) ((BMessenger*)sSubscribers.ItemAt(i))->SendMessage(&message); } return; } BFile file(ref, B_READ_ONLY); BAppFileInfo appMime(&file); BString name; if (!gLocalizedNamePreferred || BLocaleRoster::Default()->GetLocalizedFileName(name, *ref) != B_OK) { name = ref->name; } BarTeamInfo* barInfo = new BarTeamInfo(new BList(), flags, strdup(sig), NULL, strdup(name.String())); FetchAppIcon(barInfo); barInfo->teams->AddItem((void*)(addr_t)team); sBarTeamInfoList.AddItem(barInfo); if (fSettings.expandNewTeams) fBarView->AddExpandedItem(sig); int32 subsCount = sSubscribers.CountItems(); if (subsCount > 0) { for (int32 i = 0; i < subsCount; i++) { BMessenger* messenger = (BMessenger*)sSubscribers.ItemAt(i); BMessage message(B_SOME_APP_LAUNCHED); BList* tList = new BList(*(barInfo->teams)); message.AddPointer("teams", tList); BBitmap* icon = new BBitmap(barInfo->icon); ASSERT(icon); message.AddPointer("icon", icon); message.AddInt32("flags", static_cast<int32>(barInfo->flags)); message.AddString("name", barInfo->name); message.AddString("sig", barInfo->sig); messenger->SendMessage(&message); } } }