Example #1
0
void SeqPhraseMatrixView::MessageReceived(BMessage* msg)
{
    if (TrackMessageReceived(msg) ) return;

    SeqSongWinPropertiesI*		win = dynamic_cast<SeqSongWinPropertiesI*>( Window() );
    _SeqPhraseToolTarget*	target;
    if (win && (target = new _SeqPhraseToolTarget(win, this, &mMtc)) ) {
        track_id	trackId = CurrentTrackId();
        bool		handled = mTool.HandleMessage(msg, trackId, target);
        delete target;
        if (handled) return;
    }

    switch (msg->what) {
    case AmSong::END_TIME_CHANGE_OBS:
        AmTime		endTime;
        if(find_time(*msg, "end_time", &endTime ) == B_OK) {
            mCachedEndTime = endTime;
            SetupScrollBars(true, false);
        }
        break;
    case AmSong::TRACK_CHANGE_OBS:
        TrackChangeReceived(msg);
        break;
    case AmTrack::MODE_CHANGE_OBS: {
        BRect			invalid = arp_invalid_rect();
        track_id		tid;
        BRect			b(Bounds() );
        for (uint32 k = 0; msg->FindPointer(SZ_TRACK_ID, k, & tid) == B_OK; k++) {
            _SeqTrackMetric*	metric = TrackMetric(tid);
            if (metric) {
                BRect	r(b.left, metric->mTop, b.right, metric->mBottom);
                invalid = arp_merge_rects(invalid, r);
            }
        }
        if (arp_is_valid_rect(invalid) ) Invalidate(invalid);
    }
    break;
    case SHOW_POPUP_MSG:
        if (mDownTime >= 0) {
            StopPopUpTimer();
            ShowPopUp();
            mDownTime = -1;
        }
        break;
    case PROPERTIES_MSG: {
        BPoint		where;
        if (msg->FindPoint(WHERE_STR, &where) == B_OK)
            ShowProperties(where);
    }
    break;
    default:
        inherited::MessageReceived(msg);
        break;
    }
}
void SeqSongIndexMatrixView::MessageReceived(BMessage* msg)
{
	switch (msg->what) {
		case AmTrack::MODE_CHANGE_OBS: {
			BRect			invalid = arp_invalid_rect();
			track_id		tid;
			for (uint32 k = 0; msg->FindPointer(SZ_TRACK_ID, k, & tid) == B_OK; k++) {
				int32		flags;
				if (msg->FindInt32("mode flags", &flags) == B_OK) {
					_SeqIndexMetric*	metric = MetricFor(tid);
					if (metric) {
						metric->mModeFlags = flags;
						invalid = arp_merge_rects(invalid, metric->mFrame);
					}
				}
			}
			if (arp_is_valid_rect(invalid) ) Invalidate(invalid);
		} break;
		case AmTrack::GROUP_CHANGE_OBS: {
			BRect			invalid = arp_invalid_rect();
			track_id		tid;
			for (uint32 k = 0; msg->FindPointer(SZ_TRACK_ID, k, & tid) == B_OK; k++) {
				int32		groups;
				if (msg->FindInt32("groups", &groups) == B_OK) {
					_SeqIndexMetric*	metric = MetricFor(tid);
					if (metric) {
						metric->mGroups = groups;
						invalid = arp_merge_rects(invalid, metric->mFrame);
					}
				}
			}
			if (arp_is_valid_rect(invalid) ) Invalidate(invalid);
		} break;
		case AmSong::TRACK_CHANGE_OBS:
			TrackChangeReceived(msg);
			break;
		default:
			inherited::MessageReceived(msg);
			break;
	}
}