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
39 lines
1.5 KiB
C#
39 lines
1.5 KiB
C#
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();
|
|
}
|
|
}
|