Skip to content

Commit 864052b

Browse files
committed
优化 局域网聊天体验
1 parent 0e08574 commit 864052b

2 files changed

Lines changed: 39 additions & 9 deletions

File tree

Core/ViewModel/Pages/device/DeviceCommunicationPageViewModel.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,10 +291,23 @@ private async Task PasteSendAsync() {
291291
if (_clipboardService.HasText()) {
292292
var text = _clipboardService.GetText()?.Trim();
293293
if (!string.IsNullOrWhiteSpace(text)) {
294+
var textMessage = new DeviceChatMessageItem(text, isOutgoing: true, DateTimeOffset.Now) {
295+
IsPending = true
296+
};
297+
conversation.Messages.Add(textMessage);
298+
conversation.SetLastMessage(text, textMessage.Timestamp);
299+
conversation.UnreadCount = 0;
300+
SortConversations();
301+
RequestMessageListAutoScroll();
302+
294303
try {
295304
await SendToConversationAsync(conversation, text);
305+
textMessage.IsPending = false;
306+
textMessage.IsFailed = false;
296307
}
297308
catch (Exception ex) {
309+
textMessage.IsPending = false;
310+
textMessage.IsFailed = true;
298311
errors.Add($"text:{ex.Message}");
299312
}
300313
}

KitopiaAvalonia/Pages/DeviceCommunicationPage.axaml

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@
166166
</MenuFlyout>
167167
</Image.ContextFlyout>
168168
</Image>
169-
<TextBlock Text="{Binding Text}" TextWrapping="Wrap" IsVisible="{Binding HasText}" />
169+
<SelectableTextBlock Text="{Binding Text}" TextWrapping="Wrap" IsVisible="{Binding HasText}" />
170170
<StackPanel Orientation="Horizontal"
171171
Spacing="8"
172172
IsVisible="{Binding CanHandleIncomingOffer}">
@@ -219,8 +219,8 @@
219219
</MenuFlyout>
220220
</Image.ContextFlyout>
221221
</Image>
222-
<TextBlock Text="{Binding Text}" TextWrapping="Wrap" IsVisible="{Binding HasText}"
223-
Foreground="White" />
222+
<SelectableTextBlock Text="{Binding Text}" TextWrapping="Wrap" IsVisible="{Binding HasText}"
223+
Foreground="White" />
224224
<StackPanel Spacing="4" IsVisible="{Binding IsReceiving}">
225225
<ProgressBar Minimum="0"
226226
Maximum="1"
@@ -261,16 +261,33 @@
261261
Padding="10">
262262
<Grid ColumnDefinitions="*,Auto,Auto" ColumnSpacing="10">
263263
<TextBox Text="{Binding MessageText}"
264-
Watermark="输入消息..."
265-
AcceptsReturn="False"
266-
TextWrapping="Wrap"
267-
MinHeight="42"
268-
VerticalAlignment="Stretch"
269-
IsEnabled="{Binding HasConversationSelected}">
264+
Watermark="输入消息..."
265+
AcceptsReturn="False"
266+
TextWrapping="Wrap"
267+
MinHeight="42"
268+
VerticalAlignment="Stretch"
269+
IsEnabled="{Binding HasConversationSelected}">
270270
<TextBox.KeyBindings>
271271
<KeyBinding Gesture="Enter" Command="{Binding SendMessageCommand}" />
272272
<KeyBinding Gesture="Ctrl+V" Command="{Binding PasteSendCommand}" />
273273
</TextBox.KeyBindings>
274+
<TextBox.ContextMenu>
275+
<ContextMenu>
276+
<MenuItem Header="剪切"
277+
Command="{Binding $parent[TextBox].Cut}"
278+
InputGesture="Ctrl+X" />
279+
<MenuItem Header="复制"
280+
Command="{Binding $parent[TextBox].Copy}"
281+
InputGesture="Ctrl+C" />
282+
<MenuItem Header="粘贴发送"
283+
Command="{Binding $parent[UserControl].((vm:DeviceCommunicationPageViewModel)DataContext).PasteSendCommand}"
284+
InputGesture="Ctrl+V" />
285+
<Separator />
286+
<MenuItem Header="全选"
287+
Command="{Binding $parent[TextBox].SelectAll}"
288+
InputGesture="Ctrl+A" />
289+
</ContextMenu>
290+
</TextBox.ContextMenu>
274291
</TextBox>
275292
<Button Grid.Column="1"
276293
Content="发送"

0 commit comments

Comments
 (0)