| 1770 | } |
| 1771 | |
| 1772 | void LLMChatUI::initSelectAgent() { |
| 1773 | mLocateAgentBarLayout = findByClass<UIVLinearLayoutCommandExecuter>( "llm_chat_select_agent" ); |
| 1774 | mLocateAgentInput = findByClass<UITextInput>( "llm_chat_select_agent_input" ); |
| 1775 | mLocateAgentTable = findByClass<UITableView>( "llm_chat_agent_locate" ); |
| 1776 | mLocateAgentTable->setHeadersVisible( false ); |
| 1777 | |
| 1778 | mLocateAgentTable->on( Event::OnSizeChange, |
| 1779 | [this]( const Event* ) { updateLocateAgentBarColumns(); } ); |
| 1780 | |
| 1781 | mLocateAgentInput->on( Event::OnTextChanged, [this]( const Event* ) { |
| 1782 | showSelectAgent(); |
| 1783 | updateLocateAgentBarColumns(); |
| 1784 | } ); |
| 1785 | mLocateAgentInput->on( Event::OnPressEnter, [this]( const Event* ) { |
| 1786 | KeyEvent keyEvent( mLocateAgentTable, Event::KeyDown, KEY_RETURN, SCANCODE_UNKNOWN, 0, 0 ); |
| 1787 | mLocateAgentTable->forceKeyDown( keyEvent ); |
| 1788 | } ); |
| 1789 | mLocateAgentInput->on( Event::KeyDown, [this]( const Event* event ) { |
| 1790 | const KeyEvent* keyEvent = static_cast<const KeyEvent*>( event ); |
| 1791 | mLocateAgentTable->forceKeyDown( *keyEvent ); |
| 1792 | } ); |
| 1793 | mLocateAgentBarLayout->setCommand( "close-locatebar", [this] { |
| 1794 | hideSelectAgent(); |
| 1795 | if ( mChatInput ) |
| 1796 | mChatInput->setFocus(); |
| 1797 | } ); |
| 1798 | mLocateAgentBarLayout->getKeyBindings().addKeybindsString( { |
| 1799 | { "escape", "close-locatebar" }, |
| 1800 | } ); |
| 1801 | mLocateAgentTable->on( Event::KeyDown, [this]( const Event* event ) { |
| 1802 | const KeyEvent* keyEvent = static_cast<const KeyEvent*>( event ); |
| 1803 | if ( keyEvent->getKeyCode() == KEY_ESCAPE ) |
| 1804 | mLocateAgentBarLayout->execute( "close-locatebar" ); |
| 1805 | } ); |
| 1806 | mLocateAgentTable->on( Event::OnModelEvent, [this]( const Event* event ) { |
| 1807 | const ModelEvent* modelEvent = static_cast<const ModelEvent*>( event ); |
| 1808 | if ( modelEvent->getModelEventType() == ModelEventType::Open ) { |
| 1809 | Variant vName( modelEvent->getModel()->data( |
| 1810 | modelEvent->getModel()->index( modelEvent->getModelIndex().row(), |
| 1811 | ACPAgentsModel::Name ), |
| 1812 | ModelRole::Display ) ); |
| 1813 | |
| 1814 | if ( vName.isValid() ) { |
| 1815 | std::string name( vName.toString() ); |
| 1816 | if ( name != mCurAgent ) { |
| 1817 | selectAgent( name ); |
| 1818 | if ( mAgentSession ) { |
| 1819 | mAgentSession->stop(); |
| 1820 | mAgentSession.reset(); |
| 1821 | } |
| 1822 | updateTabTitle(); |
| 1823 | } |
| 1824 | } |
| 1825 | |
| 1826 | mLocateAgentBarLayout->execute( "close-locatebar" ); |
| 1827 | } |
| 1828 | } ); |
| 1829 | } |
nothing calls this directly
no test coverage detected