int32 FindWindow::FinderThread(void *data) { FindWindow *win = static_cast<FindWindow*>(data); if (win) { win->Lock(); int8 mode = win->fThreadMode; win->Unlock(); switch (mode) { case THREAD_FIND: { win->FindResults(); break; } case THREAD_REPLACE: { win->Replace(); break; } case THREAD_REPLACE_ALL: { win->ReplaceAll(); break; } default: break; } } win->Lock(); win->fThreadID = -1; win->fThreadQuitFlag = 0; win->Unlock(); return 0; }
void DiskProbe::MessageReceived(BMessage* message) { switch (message->what) { case kMsgOpenOpenWindow: if (fOpenWindow == NULL) { fOpenWindow = new OpenWindow(); fOpenWindow->Show(); fWindowCount++; } else fOpenWindow->Activate(true); break; case kMsgOpenWindowClosed: fOpenWindow = NULL; // supposed to fall through case kMsgWindowClosed: if (--fWindowCount == 0 && !fFilePanel->IsShowing()) PostMessage(B_QUIT_REQUESTED); break; case kMsgSettingsChanged: fSettings.UpdateFrom(message); break; case kMsgFindWindowClosed: fFindWindow = NULL; break; case kMsgFindTarget: { BMessenger target; if (message->FindMessenger("target", &target) != B_OK) break; if (fFindWindow != NULL && fFindWindow->Lock()) { fFindWindow->SetTarget(target); fFindWindow->Unlock(); } break; } case kMsgOpenFindWindow: { BMessenger target; if (message->FindMessenger("target", &target) != B_OK) break; if (fFindWindow == NULL) { // open it! fFindWindow = new FindWindow(fWindowFrame.OffsetByCopy(80, 80), *message, target, &fSettings.Message()); fFindWindow->Show(); } else fFindWindow->Activate(); break; } case kMsgOpenFilePanel: fFilePanel->Show(); break; case B_CANCEL: if (fWindowCount == 0) PostMessage(B_QUIT_REQUESTED); break; default: BApplication::MessageReceived(message); break; } }