Пример #1
0
void
RosterView::MouseDown(BPoint point)
{
	Window()->Activate(true);
	uint32 buttons = 0;
	GetMouse(&point, &buttons);

	printf("buttons %i\n",buttons);

	if (buttons & B_SECONDARY_MOUSE_BUTTON)
	{
		RosterItem *item = CurrentItemSelection();
		if (item && !item->StalePointer())
		{
			UpdatePopUpMenu();
			BPoint screen_point(point);
			ConvertToScreen(&screen_point);
			BRect r(screen_point.x - 4, screen_point.y - 20, screen_point.x + 24, screen_point.y + 4);
			_popup->Go(screen_point, true, true, r, false);
		}
	} 
	
	BOutlineListView::MouseDown(point);

}
Пример #2
0
int32
RosterView::FindUser(UserID *compare_user)
{
	if (compare_user == NULL) return -1;
	for (int i=0; i<FullListCountItems(); ++i) {
		RosterItem *item = dynamic_cast<RosterItem *>(FullListItemAt(i));
		if (item == NULL || item->StalePointer()) continue;
		if (item->GetUserID() == compare_user) return i;
	}
	return -1;
}
Пример #3
0
void
RosterView::UpdatePopUpMenu()
{
	RosterItem *item = CurrentItemSelection();

	if (item && !item->StalePointer())
	{
		const UserID *user = item->GetUserID();

		_change_user_item->SetEnabled(true);
		_remove_user_item->SetEnabled(true);
		
		if (user->OnlineStatus() != UserID::CONF_STATUS)
		{
			_presence->SetEnabled(true);
			
			if (user->HaveSubscriptionTo())
			{
				_subscribe_presence->SetEnabled(false);
				_unsubscribe_presence->SetEnabled(true);
			}
			else
			{
				_subscribe_presence->SetEnabled(true);
				_unsubscribe_presence->SetEnabled(false);
			}
		}
		else
		{
			_presence->SetEnabled(false);
		}
	}
	else
	{		
		_change_user_item->SetEnabled(false);
		_remove_user_item->SetEnabled(false);
		_presence->SetEnabled(false);
	}
}