xref: /haiku/src/preferences/keymap/ModifierKeysWindow.h (revision 541ff51a6ef4c47f8ab105ba6ff895cdbba83aca)
1 /*
2  * Copyright 2011 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 <Bitmap.h>
13 #include <Button.h>
14 #include <CheckBox.h>
15 #include <InterfaceDefs.h>
16 #include <MenuField.h>
17 #include <PopUpMenu.h>
18 #include <StringView.h>
19 #include <Window.h>
20 
21 
22 class ConflictView;
23 
24 class ModifierKeysWindow : public BWindow {
25 public:
26 									ModifierKeysWindow();
27 	virtual							~ModifierKeysWindow();
28 
29 	virtual	void					MessageReceived(BMessage* message);
30 
31 protected:
32 			BMenuField*				_CreateShiftMenuField();
33 			BMenuField*				_CreateControlMenuField();
34 			BMenuField*				_CreateOptionMenuField();
35 			BMenuField*				_CreateCommandMenuField();
36 
37 			void					_MarkMenuItems();
38 			const char*				_KeyToString(int32 key);
39 			uint32					_KeyToKeyCode(int32 key,
40 										bool right = false);
41 			int32					_LastKey();
42 			void					_ValidateDuplicateKeys();
43 			uint32					_DuplicateKeys();
44 
45 private:
46 			BStringView*			fShiftStringView;
47 			BStringView*			fControlStringView;
48 			BStringView*			fOptionStringView;
49 			BStringView*			fCommandStringView;
50 
51 			BPopUpMenu*				fShiftMenu;
52 			BPopUpMenu*				fControlMenu;
53 			BPopUpMenu*				fOptionMenu;
54 			BPopUpMenu*				fCommandMenu;
55 
56 			ConflictView*			fShiftConflictView;
57 			ConflictView*			fControlConflictView;
58 			ConflictView*			fOptionConflictView;
59 			ConflictView*			fCommandConflictView;
60 
61 			BButton*				fRevertButton;
62 			BButton*				fCancelButton;
63 			BButton*				fOkButton;
64 
65 			key_map*				fCurrentMap;
66 			key_map*				fSavedMap;
67 
68 			char*					fCurrentBuffer;
69 			char*					fSavedBuffer;
70 };
71 
72 
73 class ConflictView : public BView {
74 	public:
75 									ConflictView(const char* name);
76 									~ConflictView();
77 				BBitmap*			Icon();
78 				void				ShowIcon(bool show);
79 
80 	protected:
81 		virtual void				Draw(BRect updateRect);
82 		void						_FillSavedIcon();
83 
84 	private:
85 		BBitmap*					fIcon;
86 		BBitmap*					fSavedIcon;
87 };
88 
89 
90 #endif	// MODIFIER_KEYS_WINDOW_H
91