xref: /haiku/src/preferences/keymap/ModifierKeysWindow.h (revision e81a954787e50e56a7f06f72705b7859b6ab06d1)
1 /*
2  * Copyright 2011-2014 Haiku, Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		John Scipione, jscipione@gmail.com
7  */
8 #ifndef MODIFIER_KEYS_WINDOW_H
9 #define MODIFIER_KEYS_WINDOW_H
10 
11 
12 #include <View.h>
13 #include <Window.h>
14 
15 
16 class BMenuField;
17 class BPopUpMenu;
18 
19 
20 class ConflictView : public BView {
21 public:
22 								ConflictView(const char* name);
23 								~ConflictView();
24 
25 	virtual	void				Draw(BRect updateRect);
26 
27 			BBitmap*			Icon();
28 			void				SetStopIcon(bool show);
29 			void				SetWarnIcon(bool show);
30 
31 private:
32 			void				_FillIcons();
33 
34 			BBitmap*			fIcon;
35 			BBitmap*			fStopIcon;
36 			BBitmap*			fWarnIcon;
37 };
38 
39 
40 class ModifierKeysWindow : public BWindow {
41 public:
42 									ModifierKeysWindow();
43 	virtual							~ModifierKeysWindow();
44 
45 	virtual	void					MessageReceived(BMessage* message);
46 
47 private:
48 			BMenuField*				_CreateShiftMenuField();
49 			BMenuField*				_CreateControlMenuField();
50 			BMenuField*				_CreateOptionMenuField();
51 			BMenuField*				_CreateCommandMenuField();
52 
53 			void					_MarkMenuItems();
54 			const char*				_KeyToString(int32 key);
55 			uint32					_KeyToKeyCode(int32 key,
56 										bool right = false);
57 			int32					_LastKey();
58 			void					_ValidateDuplicateKeys();
59 			uint32					_DuplicateKeys();
60 			void					_HideShowIcons();
61 
62 			BPopUpMenu*				fShiftMenu;
63 			BPopUpMenu*				fControlMenu;
64 			BPopUpMenu*				fOptionMenu;
65 			BPopUpMenu*				fCommandMenu;
66 
67 			ConflictView*			fShiftConflictView;
68 			ConflictView*			fControlConflictView;
69 			ConflictView*			fOptionConflictView;
70 			ConflictView*			fCommandConflictView;
71 
72 			BButton*				fRevertButton;
73 			BButton*				fCancelButton;
74 			BButton*				fOkButton;
75 
76 			key_map*				fCurrentMap;
77 			key_map*				fSavedMap;
78 
79 			char*					fCurrentBuffer;
80 			char*					fSavedBuffer;
81 };
82 
83 
84 #endif	// MODIFIER_KEYS_WINDOW_H
85