src/Carnac.Logic/Models/Message.cs
(开头部分) 7KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows.Media;
namespace Carnac.Logic.Models
{
public sealed class Message
{
readonly ReadOnlyCollection<string> textCollection;
readonly ReadOnlyCollection<KeyPress> keys;
readonly string processName;
readonly ImageSource processIcon;
readonly string shortcutName;
readonly bool canBeMerged;
readonly bool isShortcut;
readonly bool isDeleting;
readonly DateTime lastMessage;
readonly Message previous;
public Message()
{
lastMessage = DateTime.Now;
}
public Message(KeyPress key)
: this()
{
processName = key.Process.ProcessName;
processIcon = key.Process.ProcessIcon;
canBeMerged = !key.HasModifierPressed;
keys = new ReadOnlyCollection<KeyPress>(new[] { key });
textCollection = new ReadOnlyCollection<string>(CreateTextSequence(key).ToArray());
}
public Message(IEnumerable<KeyPress> keys, KeyShortcut shortcut)
: this()
{
var allKeys = keys.ToArray();
var distinctProcessName = allKeys.Select(k => k.Process.ProcessName)
.Distinct()
.ToArray();
if (distinctProcessName.Count() != 1)
throw new InvalidOperationException("Keys are from different processes");
processName = distinctProcessName.Single();
processIcon = allKeys.First().Process.ProcessIcon;
shortcutName = shortcut.Name;
isShortcut = true;
canBeMerged = false;
this.keys = new ReadOnlyCollection<KeyPress>(allKeys);
var textSeq = CreateTextSequence(allKeys).ToList();
if (!string.IsNullOrEmpty(shortcutName))
textSeq.Add(string.Format(" [{0}]", shortcutName));
textCollection = new ReadOnlyCollection<string>(textSeq);
}
后面还有 163 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。