Commit | Line | Data |
---|---|---|
f017f3c4 LOK |
1 | /* |
2 | * This file is part of the libCEC(R) library. | |
3 | * | |
16f47961 | 4 | * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved. |
f017f3c4 LOK |
5 | * libCEC(R) is an original work, containing original code. |
6 | * | |
7 | * libCEC(R) is a trademark of Pulse-Eight Limited. | |
8 | * | |
9 | * This program is dual-licensed; you can redistribute it and/or modify | |
10 | * it under the terms of the GNU General Public License as published by | |
11 | * the Free Software Foundation; either version 2 of the License, or | |
12 | * (at your option) any later version. | |
13 | * | |
14 | * This program is distributed in the hope that it will be useful, | |
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | * GNU General Public License for more details. | |
18 | * | |
19 | * You should have received a copy of the GNU General Public License | |
20 | * along with this program; if not, write to the Free Software | |
21 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
22 | * | |
23 | * | |
24 | * Alternatively, you can license this library under a commercial license, | |
25 | * please contact Pulse-Eight Licensing for more information. | |
26 | * | |
27 | * For more information contact: | |
28 | * Pulse-Eight Licensing <license@pulse-eight.com> | |
29 | * http://www.pulse-eight.com/ | |
30 | * http://www.pulse-eight.net/ | |
31 | */ | |
32 | ||
33 | using System; | |
34 | using System.ComponentModel; | |
35 | using System.Drawing; | |
36 | using System.Windows.Forms; | |
37 | using LibCECTray.ui; | |
38 | ||
39 | namespace LibCECTray.controller.applications | |
40 | { | |
41 | partial class CecButtonConfigUI : Form | |
42 | { | |
43 | public CecButtonConfigUI(CecButtonConfigItem button) | |
44 | { | |
45 | _button = button; | |
46 | InitializeComponent(); | |
47 | ||
48 | var keys = Enum.GetValues(typeof (WindowsAPI.VirtualKeyCode)); | |
49 | string[] friendlyNames = new string[keys.Length]; | |
50 | for (int i = 0; i < keys.Length; i++) | |
51 | friendlyNames[i] = WindowsAPI.GetVirtualKeyName((WindowsAPI.VirtualKeyCode)keys.GetValue(i)); | |
52 | Array.Sort(friendlyNames); | |
53 | foreach (var item in friendlyNames) | |
54 | cbAddKey.Items.Add(item); | |
55 | ||
56 | button.SettingChanged += delegate | |
57 | { | |
58 | _lastSelectedText = 0; | |
59 | tbAction.Text = button.Value.AsFriendlyString().Trim(); | |
60 | }; | |
61 | ||
62 | lButtonName.Text = button.Label.Text; | |
63 | tbAction.Text = button.Value.AsFriendlyString().Trim(); | |
64 | ||
65 | //TODO | |
66 | cbAddAction.Items.Add(ApplicationInput.FriendlyActionName(ActionType.CloseControllerApplication)); | |
67 | cbAddAction.Items.Add(ApplicationInput.FriendlyActionName(ActionType.StartApplication)); | |
68 | ||
69 | // take the icon of the main window | |
70 | ComponentResourceManager resources = new ComponentResourceManager(typeof(CECTray)); | |
71 | Icon = resources.GetObject("$this.Icon") as Icon; | |
72 | } | |
73 | ||
74 | private void ButtonControlCheckSelection(object sender, MouseEventArgs e) | |
75 | { | |
76 | ButtonControlCheckSelection(); | |
77 | } | |
78 | ||
79 | private void ButtonControlCheckSelection(object sender, KeyEventArgs e) | |
80 | { | |
81 | ButtonControlCheckSelection(); | |
82 | } | |
83 | ||
84 | private void ButtonControlCheckSelection() | |
85 | { | |
86 | if (tbAction.SelectionStart != _lastSelectedText) | |
87 | { | |
88 | _lastSelectedText = SelectionChanged(tbAction.SelectionStart) ? 0 : tbAction.SelectionStart; | |
89 | } | |
90 | } | |
91 | ||
92 | private bool SelectionChanged(int selection) | |
93 | { | |
94 | _button.Value = _button.Value.RemoveItem(selection); | |
95 | return true; | |
96 | } | |
97 | ||
98 | public CecButtonConfigUI() | |
99 | { | |
100 | InitializeComponent(); | |
101 | } | |
102 | ||
103 | private void BCloseClick(object sender, EventArgs e) | |
104 | { | |
105 | Hide(); | |
106 | } | |
107 | ||
108 | private void BDefaultClick(object sender, EventArgs e) | |
109 | { | |
110 | _button.Value = _button.DefaultValue; | |
111 | } | |
112 | ||
113 | private void BClearClick(object sender, EventArgs e) | |
114 | { | |
115 | _button.Value = null; | |
116 | } | |
117 | ||
118 | private void BAddKeyClick(object sender, EventArgs e) | |
119 | { | |
120 | foreach (var item in Enum.GetValues(typeof(WindowsAPI.VirtualKeyCode))) | |
121 | { | |
122 | if (cbAddKey.Text.Equals(WindowsAPI.GetVirtualKeyName((WindowsAPI.VirtualKeyCode)item))) | |
123 | { | |
124 | _button.Value = _button.Value.AddKey((WindowsAPI.VirtualKeyCode) item); | |
125 | break; | |
126 | } | |
127 | } | |
128 | } | |
129 | ||
130 | private void BAddActionClick(object sender, EventArgs e) | |
131 | { | |
132 | foreach (var item in Enum.GetValues(typeof(ActionType))) | |
133 | { | |
134 | if (cbAddAction.Text.ToUpper().Equals(ApplicationInput.FriendlyActionName((ActionType)item).ToUpper())) | |
135 | { | |
136 | _button.Value = _button.Value.AddAction((ActionType)item); | |
137 | break; | |
138 | } | |
139 | } | |
140 | } | |
141 | ||
142 | private int _lastSelectedText; | |
143 | private readonly CecButtonConfigItem _button; | |
144 | } | |
145 | } |