void ColorPickerPanel::MessageReceived(BMessage* message) { switch (message->what) { case MSG_CANCEL: case MSG_DONE: { BMessage msg('PSTE'); BLooper* looper = fTarget ? fTarget->Looper() : be_app; if (fMessage) msg = *fMessage; if (message->what == MSG_DONE) store_color_in_message(&msg, fColorPickerView->Color()); msg.AddRect("panel frame", Frame()); msg.AddInt32("panel mode", fColorPickerView->Mode()); msg.AddBool("begin", true); looper->PostMessage(&msg, fTarget); PostMessage(B_QUIT_REQUESTED); break; } default: Panel::MessageReceived(message); break; } }
// SelectionChanged void SimpleListView::SelectionChanged() { BLooper* looper = Looper(); if (fSelectionChangeMessage && looper) { BMessage message(*fSelectionChangeMessage); looper->PostMessage(&message); } }
int32 ticker(void *data) { BMessage *msg = (BMessage *)data; int64 snooze_time = 0; msg->FindInt64("snooze", &snooze_time); BLooper *looper = 0; msg->FindPointer("looper", (void **)&looper); delete msg; if (looper==0 || snooze_time==0) return 10; long long nexttick = system_time(); for (;;) { nexttick += snooze_time; snooze_until(nexttick, B_SYSTEM_TIMEBASE); looper->PostMessage('tick'); } return 0; }
void NamePanel::MessageReceived(BMessage* message) { switch (message->what) { case MSG_PANEL_CANCEL: Quit(); break; case MSG_PANEL_OK: { if (!fTarget) fTarget = fWindow; BLooper* looper = fTarget ? fTarget->Looper() : NULL; if (fMessage && looper) { BMessage cloneMessage(*fMessage); cloneMessage.AddString("name", fNameTC->Text()); cloneMessage.AddRect("frame", Frame()); looper->PostMessage(&cloneMessage, fTarget); } Quit(); break; } default: Panel::MessageReceived(message); } }