1/*
2 * Copyright (c) 2008 Stephan Aßmus <superstippi@gmx.de>.
3 * Copyright (c) 2009 Philippe Saint-Pierre, stpere@gmail.com
4 * All rights reserved. Distributed under the terms of the MIT license.
5 *
6 * Copyright (c) 1999 Mike Steed. You are free to use and distribute this software
7 * as long as it is accompanied by it's documentation and this copyright notice.
8 * The software comes with no warranty, etc.
9 */
10#include "MainWindow.h"
11
12#include <Application.h>
13#include <Catalog.h>
14#include <Node.h>
15#include <Roster.h>
16#include <Screen.h>
17
18#include <LayoutBuilder.h>
19
20#include "DiskUsage.h"
21#include "ControlsView.h"
22
23#undef B_TRANSLATION_CONTEXT
24#define B_TRANSLATION_CONTEXT "MainWindow"
25
26MainWindow::MainWindow(BRect pieRect)
27	:
28	BWindow(pieRect, B_TRANSLATE_SYSTEM_NAME("DiskUsage"), B_TITLED_WINDOW,
29		B_ASYNCHRONOUS_CONTROLS | B_QUIT_ON_WINDOW_CLOSE
30		| B_AUTO_UPDATE_SIZE_LIMITS)
31{
32	fControlsView = new ControlsView();
33
34	SetLayout(new BGroupLayout(B_VERTICAL));
35
36	AddChild(BLayoutBuilder::Group<>(B_VERTICAL)
37		.Add(fControlsView)
38		.SetInsets(5, 5, 5, 5)
39	);
40	float maxHeight = BScreen(this).Frame().Height() - 12;
41	fControlsView->SetExplicitMaxSize(BSize(maxHeight, maxHeight));
42}
43
44
45MainWindow::~MainWindow()
46{
47}
48
49
50void
51MainWindow::MessageReceived(BMessage* message)
52{
53	switch (message->what) {
54		case kBtnCancel:
55		case kBtnRescan:
56		case B_SIMPLE_DATA:
57		case B_REFS_RECEIVED:
58			fControlsView->MessageReceived(message);
59			break;
60
61		case kBtnHelp:
62			if (helpFileWasFound)
63				be_roster->Launch(&helpFileRef);
64			break;
65
66		default:
67			BWindow::MessageReceived(message);
68			break;
69	}
70}
71
72
73bool
74MainWindow::QuitRequested()
75{
76	be_app->PostMessage(B_QUIT_REQUESTED);
77	return true;
78}
79
80
81// #pragma mark -
82
83
84void
85MainWindow::EnableRescan()
86{
87	fControlsView->EnableRescan();
88}
89
90
91void
92MainWindow::EnableCancel()
93{
94	fControlsView->EnableCancel();
95}
96
97
98void
99MainWindow::ShowInfo(const FileInfo* info)
100{
101	fControlsView->ShowInfo(info);
102}
103
104
105BVolume*
106MainWindow::FindDeviceFor(dev_t device, bool invoke)
107{
108	return fControlsView->FindDeviceFor(device, invoke);
109}
110