Example #1
0
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;
}