[Phase 17-UI-C/D/E] AgentSessionHeaderBar·AgentSidebarView·AgentInputArea UserControl 통합

Phase 17-UI-C: AgentSessionHeaderBar 통합 (ChatWindow.xaml 인라인 칩 교체)
- AgentSessionHeaderBar.xaml: 외부 Border 투명화, 높이 42→38px, PlanIcon/PermIcon x:Name 추가
- AgentSessionHeaderBar.xaml.cs: SetPlanMode() x:Name 직접 참조, ChipPermission_Click 이벤트 위임
- ChatWindow.xaml: ModelHeaderChip/BtnPlanMode/PermissionHeaderChip → SessionHeaderBar UserControl 교체
- ChatWindow.SessionHeaderBar.cs (신규, 46줄): InitSessionHeaderBar() 이벤트 구독
- ChatWindow.ModelSelector.cs: UpdateModelLabel() SessionHeaderBar.SetModel() 동기화
- ChatWindow.PermissionMenu.cs: UpdatePermissionUI() SessionHeaderBar.SetPermissionMode() 동기화
- ChatWindow.TabSwitching.cs: UpdatePlanModeUI() 단순화, UpdateTabUI() SetTabLabel() 동기화

Phase 17-UI-D: AgentSidebarView 통합 (SidebarPanel 인라인 110줄 → UserControl 1줄)
- AgentSidebarView.xaml: 7행 구조(헤더/탭세그먼트/검색/카테고리/대화목록/삭제/사용자계정) 재작성
- AgentSidebarView.xaml.cs: internal 프록시 프로퍼티 8개 + 5개 이벤트 추가, 완전 재작성
- ChatWindow.xaml: <Border x:Name="SidebarPanel"> 110줄 → <ctrl:AgentSidebarView x:Name="Sidebar"/> 1줄
- ChatWindow.SidebarCompat.cs (신규, 80줄): 프록시 계산 프로퍼티 8개 + InitSidebarEvents()
- ChatWindow.PermissionMenu.cs: SidebarPanel.Visibility → Sidebar.Visibility, PermissionHeaderChip → SessionHeaderBar
- ChatWindow.TabSwitching.cs: 탭 핸들러 3개 Sidebar?.SetActiveTab() 동기화 추가

Phase 17-UI-E: AgentInputArea IsToolbarOnly 모드 + 입력 툴바 추가
- AgentInputArea.xaml: OuterBorder/InputTextBoxRow/ChipsSendRow x:Name 추가
- AgentInputArea.xaml.cs: IsToolbarOnly 의존성 프로퍼티 + ApplyToolbarOnlyMode() 추가
- ChatWindow.xaml: InputBorder Grid에 Row 0 추가(AgentInputArea IsToolbarOnly=True), 기존 행 0→1/1→2/2→3 시프트
- ChatWindow.InputToolbar.cs (신규, 37줄): InitInputToolbar() — @/스킬/첨부 이벤트 기존 동작 위임
- ChatWindow.xaml.cs: Loaded에 InitSidebarEvents(), InitInputToolbar() 호출 추가

빌드: 경고 0, 오류 0
This commit is contained in:
2026-04-03 22:36:19 +09:00
parent 26c20cf3dc
commit 5fe6d5c6ba
15 changed files with 565 additions and 565 deletions

View File

@@ -0,0 +1,38 @@
using System.Windows;
namespace AxCopilot.Views;
/// <summary>
/// Phase 17-UI-C: AgentSessionHeaderBar 이벤트 연결 및 상태 동기화.
/// SessionHeaderBar(UserControl) ↔ ChatWindow 기존 로직 브리지.
/// </summary>
public partial class ChatWindow
{
/// <summary>Loaded 핸들러에서 호출 — SessionHeaderBar 이벤트 연결.</summary>
private void InitSessionHeaderBar()
{
// 모델 칩 클릭 → 기존 BtnModelSelector_Click 재사용
SessionHeaderBar.ModelChipClicked += (_, _) =>
BtnModelSelector_Click(SessionHeaderBar, new RoutedEventArgs());
// Plan 모드 순환 → 설정 저장 + 기존 UI 동기화
SessionHeaderBar.PlanModeChanged += (_, mode) =>
{
Llm.PlanMode = mode;
_settings.Save();
UpdatePlanModeUI(); // SessionHeaderBar.SetPlanMode()가 내부서 호출됨
};
// 권한 칩 클릭 → 권한 팝업을 SessionHeaderBar 위치에 표시
SessionHeaderBar.PermissionModeChanged += (_, _) =>
{
if (PermissionPopup == null) return;
PermissionPopup.PlacementTarget = SessionHeaderBar;
PermissionPopup.Placement = System.Windows.Controls.Primitives.PlacementMode.Bottom;
BtnPermission_Click(SessionHeaderBar, new RoutedEventArgs());
};
// 설정 버튼 → 기존 ToggleSettingsPanel() 재사용
SessionHeaderBar.SettingsRequested += (_, _) => ToggleSettingsPanel();
}
}