示例#1
0
void SeqStudioWindow::MessageReceived(BMessage* msg)
{
	switch (msg->what) {
		case LABEL_MSG: {
			_EndpointList* listView = dynamic_cast<_EndpointList*>( FindView(ENDPOINT_LIST_STR) );
			if (listView && mLabelCtrl) {
				listView->HandleLabelChange( mLabelCtrl->Text() );
			}
		} break;
		case DEVICE_MSG: {
			const char*		devMfg;
			const char*		devName;
			if (msg->FindString(DEV_MFG_STR, &devMfg) != B_OK) devMfg = NULL;
			if (msg->FindString(DEV_NAME_STR, &devName) != B_OK) devName = NULL;
			_EndpointList* listView = dynamic_cast<_EndpointList*>( FindView(ENDPOINT_LIST_STR) );
			if (listView) {
				listView->HandleDeviceChange(devMfg, devName);
			}
		} break;
		case DELETE_PORT_MSG: {
			_EndpointList* listView = dynamic_cast<_EndpointList*>( FindView(ENDPOINT_LIST_STR) );
			if (listView) listView->DeleteCurrentSelection();
		} break;
		case COLUMN_MSG: {
			const char*		n;
			if (msg->FindString(COLUMN_NAME_STR, &n) == B_OK)
				ToggleColumn(n);
		} break;
		case B_MIDI_EVENT: {
			int32			op, id;
			const char*		type;
			if (msg->FindInt32("be:op", &op) == B_OK && msg->FindString("be:type", &type) == B_OK
					&& msg->FindInt32("be:id", &id) == B_OK
					&& (op == B_MIDI_REGISTERED || op == B_MIDI_UNREGISTERED) ) {
				BString		producer("producer"), consumer("consumer");
				AmEndpointType	et = AM_PRODUCER_TYPE;
				if (producer == type) et = AM_PRODUCER_TYPE;
				else if (consumer == type) et = AM_CONSUMER_TYPE;
				_EndpointList* listView = dynamic_cast<_EndpointList*>( FindView(ENDPOINT_LIST_STR) );
				if (listView && (et == AM_PRODUCER_TYPE || et == AM_CONSUMER_TYPE) ) {
					if (op == B_MIDI_REGISTERED) listView->MidiRegistered(id, et);
					else if (op == B_MIDI_UNREGISTERED) listView->MidiUnregistered(id, et);
				}
			}
		} break;
		default:
			inherited::MessageReceived(msg);
	}
}
void SeqManageRosterWindow::MessageReceived(BMessage* msg)
{
	switch (msg->what) {
		case NEW_ENTRY_MSG: {
			BString		key;
			ShowEditWindow(key, BString() );
		} break;
		case EDIT_ENTRY_MSG: {
			BString		key, filePath;
			bool		readOnly;
			if (GetSelectionInfo(key, filePath, &readOnly) == B_OK) {
				if (readOnly) read_only_warning(EntryMenuType(), key);
				else ShowEditWindow(key, filePath);
			}
		} break;
		case DUPLICATE_ENTRY_MSG: {
			BString			key, filePath;
			AmFileRoster*	roster = Roster();
			if (roster && GetSelectionInfo(key, filePath) == B_OK) {
				roster->DuplicateEntry(key, filePath.String() );
			}
		} break;
		case DELETE_ENTRY_MSG: {
			BString			key, filePath;
			AmFileRoster*	roster = Roster();
			if (roster && GetSelectionInfo(key, filePath) == B_OK) {
				roster->DeleteEntry(key);
			}
		} break;
		case AM_FILE_ROSTER_CHANGED: {
			BuildList();
		} break;
		case COLUMN_MSG: {
			const char*		n;
			if (msg->FindString(COLUMN_NAME_STR, &n) == B_OK)
				ToggleColumn(n);
		} break;
		default:
			inherited::MessageReceived(msg);
	}
}