| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using Content.Client.Stylesheets;
- using Content.Shared.Chat;
- using Content.Shared.Input;
- using Robust.Client.UserInterface.Controls;
- namespace Content.Client.UserInterface.Systems.Chat.Controls;
- [Virtual]
- public class ChatInputBox : PanelContainer
- {
- public readonly ChannelSelectorButton ChannelSelector;
- public readonly HistoryLineEdit Input;
- public readonly ChannelFilterButton FilterButton;
- protected readonly BoxContainer Container;
- protected ChatChannel ActiveChannel { get; private set; } = ChatChannel.Local;
- public ChatInputBox()
- {
- Container = new BoxContainer
- {
- Orientation = BoxContainer.LayoutOrientation.Horizontal,
- SeparationOverride = 4
- };
- AddChild(Container);
- ChannelSelector = new ChannelSelectorButton
- {
- Name = "ChannelSelector",
- ToggleMode = true,
- StyleClasses = {"chatSelectorOptionButton"},
- MinWidth = 75
- };
- Container.AddChild(ChannelSelector);
- Input = new HistoryLineEdit
- {
- Name = "Input",
- PlaceHolder = GetChatboxInfoPlaceholder(),
- HorizontalExpand = true,
- StyleClasses = {"chatLineEdit"}
- };
- Container.AddChild(Input);
- FilterButton = new ChannelFilterButton
- {
- Name = "FilterButton",
- StyleClasses = {"chatFilterOptionButton"}
- };
- Container.AddChild(FilterButton);
- AddStyleClass(StyleNano.StyleClassChatSubPanel);
- ChannelSelector.OnChannelSelect += UpdateActiveChannel;
- }
- private void UpdateActiveChannel(ChatSelectChannel selectedChannel)
- {
- ActiveChannel = (ChatChannel) selectedChannel;
- }
- private static string GetChatboxInfoPlaceholder()
- {
- return (BoundKeyHelper.IsBound(ContentKeyFunctions.FocusChat), BoundKeyHelper.IsBound(ContentKeyFunctions.CycleChatChannelForward)) switch
- {
- (true, true) => Loc.GetString("hud-chatbox-info", ("talk-key", BoundKeyHelper.ShortKeyName(ContentKeyFunctions.FocusChat)), ("cycle-key", BoundKeyHelper.ShortKeyName(ContentKeyFunctions.CycleChatChannelForward))),
- (true, false) => Loc.GetString("hud-chatbox-info-talk", ("talk-key", BoundKeyHelper.ShortKeyName(ContentKeyFunctions.FocusChat))),
- (false, true) => Loc.GetString("hud-chatbox-info-cycle", ("cycle-key", BoundKeyHelper.ShortKeyName(ContentKeyFunctions.CycleChatChannelForward))),
- (false, false) => Loc.GetString("hud-chatbox-info-unbound")
- };
- }
- }
|