1 /* 2 * Copyright 2004-2018, Axel Dörfler, axeld@pinc-software.de. 3 * All rights reserved. Distributed under the terms of the MIT license. 4 */ 5 6 7 /*! Abstract base class for probe windows. It only provides the following 8 functionality: 9 - Access to the basic entry_ref 10 - Common BWindow flags 11 - Stores size in settings on QuitRequested() 12 - Redirects drops to BApplication 13 - Notifies BApplication about closed window 14 - Forwards mouse wheel to the DataView 15 - Contains() checks whether or not the ref/attribute is what this 16 window contains 17 */ 18 19 20 #include "ProbeWindow.h" 21 22 #include <Application.h> 23 #include <View.h> 24 25 #include "DiskProbe.h" 26 27 28 ProbeWindow::ProbeWindow(BRect rect, entry_ref* ref) 29 : 30 BWindow(rect, ref->name, B_DOCUMENT_WINDOW, 31 B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS), 32 fRef(*ref) 33 { 34 } 35 36 37 ProbeWindow::~ProbeWindow() 38 { 39 } 40 41 42 void 43 ProbeWindow::MessageReceived(BMessage* message) 44 { 45 switch (message->what) { 46 case B_MOUSE_WHEEL_CHANGED: 47 if (BView* view = FindView("dataView")) 48 view->MessageReceived(message); 49 break; 50 51 case B_SIMPLE_DATA: 52 { 53 BMessage refsReceived(*message); 54 refsReceived.what = B_REFS_RECEIVED; 55 be_app_messenger.SendMessage(&refsReceived); 56 break; 57 } 58 59 default: 60 BWindow::MessageReceived(message); 61 } 62 } 63 64 65 bool 66 ProbeWindow::QuitRequested() 67 { 68 BMessage update(kMsgSettingsChanged); 69 update.AddRect("window_frame", Frame()); 70 be_app_messenger.SendMessage(&update); 71 72 be_app_messenger.SendMessage(kMsgWindowClosed); 73 return true; 74 } 75 76