설정창에서 런처 색인 진행률과 남은 시간을 직접 표시하도록 개선
Some checks failed
Release Gate / gate (push) Has been cancelled
Some checks failed
Release Gate / gate (push) Has been cancelled
- IndexService에 LauncherIndexProgressInfo와 진행 이벤트를 추가해 전체 색인 중 진행률, 상태 문구, 예상 남은 시간을 계산하도록 변경 - 설정창 일반 탭의 인덱싱 속도 아래에 프로그레스바와 상태/상세 문구 패널을 추가하고 실시간으로 바인딩되도록 연결 - 전체 색인 완료 후 최근 색인 완료 요약과 검색 가능 항목 수를 같은 위치에 유지해 런처 하단 완료 문구 의존도를 낮춤 - README와 DEVELOPMENT 문서에 변경 이력 및 반영 시각을 기록 검증 - 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:
@@ -1056,6 +1056,26 @@
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border x:Name="IndexProgressPanel"
|
||||
Style="{StaticResource SettingsRow}"
|
||||
Visibility="Collapsed">
|
||||
<StackPanel>
|
||||
<TextBlock x:Name="IndexProgressStatusText"
|
||||
Text="색인 대기 중"
|
||||
Style="{StaticResource RowLabel}"/>
|
||||
<ProgressBar x:Name="IndexProgressBar"
|
||||
Height="8"
|
||||
Margin="0,10,0,0"
|
||||
Minimum="0"
|
||||
Maximum="100"
|
||||
Value="0"/>
|
||||
<TextBlock x:Name="IndexProgressDetailText"
|
||||
Text="필요할 때 전체 색인을 시작합니다."
|
||||
Margin="0,8,0,0"
|
||||
Style="{StaticResource RowHint}"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
<!-- 알림 패널 (하위 탭) — 기존 알림 탭 내용을 여기로 통합 -->
|
||||
|
||||
@@ -15,6 +15,7 @@ public partial class SettingsWindow : Window
|
||||
private readonly SettingsViewModel _vm;
|
||||
private readonly Action<string> _previewCallback;
|
||||
private readonly Action _revertCallback;
|
||||
private IndexService? _indexService;
|
||||
private bool _saved;
|
||||
private bool _isDisplayModeSyncing;
|
||||
|
||||
@@ -59,9 +60,15 @@ public partial class SettingsWindow : Window
|
||||
catch { /* 인덱싱 실패해도 설정 저장은 완료 */ }
|
||||
});
|
||||
};
|
||||
Closed += (_, _) =>
|
||||
{
|
||||
if (_indexService != null)
|
||||
_indexService.IndexProgressChanged -= IndexService_IndexProgressChanged;
|
||||
};
|
||||
|
||||
Loaded += async (_, _) =>
|
||||
{
|
||||
BindIndexProgress();
|
||||
RefreshHotkeyBadges();
|
||||
SetVersionText();
|
||||
EnsureHotkeyInCombo();
|
||||
@@ -104,6 +111,35 @@ public partial class SettingsWindow : Window
|
||||
};
|
||||
}
|
||||
|
||||
private void BindIndexProgress()
|
||||
{
|
||||
_indexService = (System.Windows.Application.Current as App)?.IndexService;
|
||||
if (_indexService == null)
|
||||
return;
|
||||
|
||||
_indexService.IndexProgressChanged -= IndexService_IndexProgressChanged;
|
||||
_indexService.IndexProgressChanged += IndexService_IndexProgressChanged;
|
||||
ApplyIndexProgress(_indexService.CurrentProgress);
|
||||
}
|
||||
|
||||
private void IndexService_IndexProgressChanged(object? sender, LauncherIndexProgressInfo e)
|
||||
{
|
||||
Dispatcher.BeginInvoke(() => ApplyIndexProgress(e));
|
||||
}
|
||||
|
||||
private void ApplyIndexProgress(LauncherIndexProgressInfo progress)
|
||||
{
|
||||
if (IndexProgressPanel == null || IndexProgressStatusText == null || IndexProgressBar == null || IndexProgressDetailText == null)
|
||||
return;
|
||||
|
||||
IndexProgressPanel.Visibility = Visibility.Visible;
|
||||
IndexProgressStatusText.Text = progress.StatusText;
|
||||
IndexProgressDetailText.Text = progress.DetailText;
|
||||
IndexProgressBar.IsIndeterminate = progress.IsRunning && progress.ProgressPercent <= 0.01;
|
||||
if (!IndexProgressBar.IsIndeterminate)
|
||||
IndexProgressBar.Value = progress.ProgressPercent;
|
||||
}
|
||||
|
||||
private bool HasLegacyAgentTab()
|
||||
=> MainSettingsTab != null && AgentTabItem != null && MainSettingsTab.Items.Contains(AgentTabItem);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user