1198090Srdivacky/* -*-C++-*-	$NetBSD: rootwindow.h,v 1.8 2005/12/11 12:17:28 christos Exp $	*/
2198090Srdivacky
3198090Srdivacky/*-
4198090Srdivacky * Copyright (c) 2001 The NetBSD Foundation, Inc.
5198090Srdivacky * All rights reserved.
6198090Srdivacky *
7198090Srdivacky * This code is derived from software contributed to The NetBSD Foundation
8198090Srdivacky * by UCHIYAMA Yasushi.
9198090Srdivacky *
10198090Srdivacky * Redistribution and use in source and binary forms, with or without
11198090Srdivacky * modification, are permitted provided that the following conditions
12198090Srdivacky * are met:
13198090Srdivacky * 1. Redistributions of source code must retain the above copyright
14198090Srdivacky *    notice, this list of conditions and the following disclaimer.
15249423Sdim * 2. Redistributions in binary form must reproduce the above copyright
16249423Sdim *    notice, this list of conditions and the following disclaimer in the
17198090Srdivacky *    documentation and/or other materials provided with the distribution.
18198090Srdivacky *
19198090Srdivacky * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20198090Srdivacky * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21234353Sdim * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22234353Sdim * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23198090Srdivacky * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24280031Sdim * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25198090Srdivacky * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26198090Srdivacky * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27198090Srdivacky * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28198090Srdivacky * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29249423Sdim * POSSIBILITY OF SUCH DAMAGE.
30 */
31
32#ifndef _HPCBOOT_ROOTWINDOW_H_
33#define	_HPCBOOT_ROOTWINDOW_H_
34
35class TabWindow;
36class TabBaseWindow;
37
38class RootWindow : public Window {
39public:
40	BootButton	*_boot_button;
41	CancelButton	*_cancel_button;
42	ProgressBar	*_progress_bar;
43	TabWindowBase	*_base;
44	TabWindow	*_main;
45	TabWindow	*_option;
46	TabWindow	*_console;
47
48	int _button_width;
49	int _button_height;
50
51private:
52	HWND _saved_focus;
53	void SaveFocus();
54	void RestoreFocus();
55	void WMCreate(HWND, LPCREATESTRUCT);
56	void WMPaint(HWND, LPCREATESTRUCT);
57
58public:
59	RootWindow(HpcBootApp &);
60	virtual ~RootWindow(void);
61	virtual BOOL create(LPCREATESTRUCT);
62	virtual BOOL proc(HWND, UINT, WPARAM, LPARAM);
63
64	void disableTimer(void);
65	BOOL isDialogMessage(MSG &);
66	BOOL focusManagerHook(MSG &, HWND);
67
68	void progress(const char * = NULL);
69	void unprogress();
70};
71
72class BootButton : public Window
73{
74private:
75	RootWindow &_root;
76public:
77	BootButton(HpcBootApp &app, RootWindow &root, RECT &rect)
78		: Window(app, root._window), _root(root) {
79		_rect = rect;
80	}
81	virtual ~BootButton(void) { /* NO-OP */ }
82	virtual BOOL create(LPCREATESTRUCT aux);
83};
84
85class CancelButton : public Window
86{
87private:
88	RootWindow &_root;
89public:
90	CancelButton(HpcBootApp &app, RootWindow &root, RECT &rect)
91		: Window(app, root._window), _root(root) {
92		_rect = rect;
93	}
94	virtual ~CancelButton(void) { /* NO-OP */ }
95	virtual BOOL create(LPCREATESTRUCT aux);
96};
97
98class ProgressBar : public Window
99{
100private:
101	RootWindow &_root;
102public:
103	ProgressBar(HpcBootApp &app, RootWindow &root, RECT &rect)
104		: Window(app, root._window), _root(root) {
105		_rect = rect;
106	}
107	virtual ~ProgressBar(void) { /* NO-OP */ }
108	virtual BOOL create(LPCREATESTRUCT aux);
109};
110
111#endif // _HPCBOOT_TABWINDOW_H_
112