BMenuItem* AmTrackInfoView::NewChangeViewItem() const { AmViewFactory* factory = AmGlobals().FactoryNamed(mFactorySignature); if (!factory) return NULL; BMenu* menu = new BMenu(AM_INFO_CHANGE_VIEW_STR); if (!menu) return NULL; BMenuItem* item; BString name; for (uint32 k = 0; factory->DataNameAt(k, mViewType, name) == B_OK; k++) { BMessage* msg = new BMessage(CHANGE_INFO_MSG); if( msg && (item = new BMenuItem( name.String(), msg )) ) { msg->AddPointer(SZ_VIEW_ID, this); msg->AddString(SZ_FACTORY_SIGNATURE, mFactorySignature.String() ); msg->AddString(SZ_FACTORY_VIEW_NAME, name.String() ); item->SetTarget(this); menu->AddItem(item); if (name == mViewName) item->SetEnabled(false); } name = (const char*)NULL; } item = new BMenuItem(menu); if( !item ) { delete menu; return NULL; } menu->SetFontSize( Prefs().Size(FONT_Y) ); menu->SetFont( be_plain_font ); return item; }