Example #1
0
void
TeamsListView::MessageReceived(BMessage* message)
{
	switch (message->what) {
		case MSG_TEAM_ADDED:
		{
			TeamInfo* info;
			team_id team;
			if (message->FindInt32("team", &team) != B_OK)
				break;

			TargetHost* host = fInterface->GetTargetHost();
			AutoLocker<TargetHost> hostLocker(host);
			info = host->TeamInfoByID(team);
			if (info == NULL)
				break;

			TeamRow* row = new TeamRow(info);
			AddRow(row);
			break;
		}

		case MSG_TEAM_REMOVED:
		{
			team_id team;
			if (message->FindInt32("team", &team) != B_OK)
				break;

			TeamRow* row = FindTeamRow(team);
			if (row != NULL) {
				RemoveRow(row);
				delete row;
			}
			break;
		}

		case MSG_TEAM_RENAMED:
		{
			TeamInfo* info;
			team_id team;
			if (message->FindInt32("team", &team) != B_OK)
				break;

			TargetHost* host = fInterface->GetTargetHost();
			AutoLocker<TargetHost> hostLocker(host);
			info = host->TeamInfoByID(team);
			if (info == NULL)
				break;

			TeamRow* row = FindTeamRow(info->TeamID());
			if (row != NULL && row->NeedsUpdate(info))
				UpdateRow(row);

			break;
		}

		default:
			Inherited::MessageReceived(message);
	}
}
Example #2
0
TeamRow*
TeamsListView::FindTeamRow(team_id teamId)
{
	for (int32 i = CountRows(); i-- > 0;) {
		TeamRow* row = dynamic_cast<TeamRow*>(RowAt(i));
		if (row == NULL)
			continue;

		if (row->TeamID() == teamId)
			return row;
	}

	return NULL;
}
Example #3
0
void
TeamsWindow::MessageReceived(BMessage* message)
{
	switch (message->what) {
		case MSG_DEBUG_THIS_TEAM:
		{
			TeamRow* row = dynamic_cast<TeamRow*>(
				fTeamsListView->CurrentSelection());
			if (row != NULL) {
				BMessage message(MSG_DEBUG_THIS_TEAM);
				message.AddInt32("team", row->TeamID());
				message.AddPointer("interface", fTargetHostInterface);
				be_app_messenger.SendMessage(&message);
			}
			break;
		}

		case MSG_TEAM_SELECTION_CHANGED:
		{
			TeamRow* row = dynamic_cast<TeamRow*>(
				fTeamsListView->CurrentSelection());
			bool enabled = false;
			if (row != NULL) {
				team_id id = row->TeamID();
				if (id != fCurrentTeam && id != B_SYSTEM_TEAM)
					enabled = true;
			}

			fAttachTeamButton->SetEnabled(enabled);
			break;
		}

		case MSG_SHOW_START_TEAM_WINDOW:
		{
			BMessage startMessage(*message);
			startMessage.AddPointer("interface", fTargetHostInterface);
			be_app_messenger.SendMessage(&startMessage);
			break;
		}

		case MSG_CHOSE_CORE_FILE:
		case B_CANCEL:
		{
			delete fCoreSelectionPanel;
			fCoreSelectionPanel = NULL;
			if (message->what == B_CANCEL)
				break;

			entry_ref ref;
			if (message->FindRef("refs", &ref) != B_OK)
				break;

			BMessage coreMessage(MSG_LOAD_CORE_TEAM);
			coreMessage.AddPointer("interface", fTargetHostInterface);
			coreMessage.AddRef("core", &ref);
			be_app_messenger.SendMessage(&coreMessage);
			break;
		}

		case MSG_LOAD_CORE_TEAM:
		{
			try {
				BMessenger messenger(this);
				fCoreSelectionPanel = new BFilePanel(B_OPEN_PANEL, &messenger,
					NULL, 0, false, new BMessage(MSG_CHOSE_CORE_FILE));
				fCoreSelectionPanel->Show();
			} catch (...) {
				delete fCoreSelectionPanel;
				fCoreSelectionPanel = NULL;
			}
			break;
		}

		case MSG_SWITCH_TARGET_CONNECTION:
		{
			TargetHostInterface* interface;
			if (message->FindPointer("interface", reinterpret_cast<void**>(
					&interface)) != B_OK) {
				break;
			}

			if (interface == fTargetHostInterface)
				break;

			fTargetHostInterface = interface;
			_NotifySelectedInterfaceChanged(interface);
			fLoadCoreButton->SetEnabled(fTargetHostInterface->IsLocal());
			break;
		}

		default:
			BWindow::MessageReceived(message);
			break;
	}
}