런처 Agent Compare 기능 1차 이식 및 현재 런처 구조 연결
- Agent Compare 기준으로 런처 빠른 실행 칩, 검색 히스토리 탐색, 선택 항목 미리보기 패널을 현재 런처에 이식 - 하단 위젯 바, QuickLook(F3), 화면 OCR(F4), 관련 서비스/partial 파일을 현재 LauncherWindow/LauncherViewModel 구조에 연결 - UsageRankingService 상위 항목 조회와 SearchHistoryService를 추가해 실행 상위 경로/검색 기록이 실제 런처 동작에 반영되도록 정리 - README.md, docs/DEVELOPMENT.md에 이식 범위와 검증 결과를 2026-04-05 11:58 (KST) 기준으로 기록 검증 결과 - dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 경고 0 / 오류 0
This commit is contained in:
67
src/AxCopilot/Views/LauncherWindow.Shell.cs
Normal file
67
src/AxCopilot/Views/LauncherWindow.Shell.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Input;
|
||||
using AxCopilot.Models;
|
||||
|
||||
namespace AxCopilot.Views;
|
||||
|
||||
public partial class LauncherWindow
|
||||
{
|
||||
private QuickLookWindow? _quickLookWindow;
|
||||
|
||||
private async void QuickActionChip_Click(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
if (((FrameworkElement)sender).DataContext is not QuickActionChip chip)
|
||||
return;
|
||||
|
||||
var expanded = Environment.ExpandEnvironmentVariables(chip.Path);
|
||||
Hide();
|
||||
|
||||
try
|
||||
{
|
||||
await Task.Run(() =>
|
||||
System.Diagnostics.Process.Start(
|
||||
new System.Diagnostics.ProcessStartInfo(expanded)
|
||||
{
|
||||
UseShellExecute = true
|
||||
}));
|
||||
_ = Task.Run(() => Services.UsageRankingService.RecordExecution(chip.Path));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Services.LogService.Error($"빠른 실행 칩 열기 실패: {expanded} - {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
internal void ToggleQuickLook()
|
||||
{
|
||||
if (_quickLookWindow != null)
|
||||
{
|
||||
_quickLookWindow.Close();
|
||||
_quickLookWindow = null;
|
||||
return;
|
||||
}
|
||||
|
||||
if (_vm.SelectedItem?.Data is not Services.IndexEntry indexEntry)
|
||||
return;
|
||||
|
||||
var path = Environment.ExpandEnvironmentVariables(indexEntry.Path);
|
||||
if (!System.IO.File.Exists(path) && !System.IO.Directory.Exists(path))
|
||||
return;
|
||||
|
||||
var qlLeft = Left + ActualWidth + 8;
|
||||
var qlTop = Top;
|
||||
|
||||
var screen = System.Windows.Forms.Screen.FromHandle(
|
||||
new System.Windows.Interop.WindowInteropHelper(this).Handle);
|
||||
if (qlLeft + 400 > screen.WorkingArea.Right)
|
||||
qlLeft = Left - 408;
|
||||
|
||||
_quickLookWindow = new QuickLookWindow(path, this)
|
||||
{
|
||||
Left = qlLeft,
|
||||
Top = qlTop
|
||||
};
|
||||
_quickLookWindow.Closed += (_, _) => _quickLookWindow = null;
|
||||
_quickLookWindow.Show();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user