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; } }