xref: /haiku/src/apps/diskprobe/ProbeWindow.cpp (revision 12dba4e70f831d6d27a7f769cc9dab19c19a155d)
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