41 :rEntryList( _entryList )
42 ,sCurrentSearchString()
48 aSearchTimeout.
SetDebugName(
"vcl::QuickSelectionEngine_Data aSearchTimeout" );
53 aSearchTimeout.
Stop();
61 void lcl_reset( QuickSelectionEngine_Data& _data )
63 _data.sCurrentSearchString.clear();
64 _data.aSingleSearchChar.reset();
65 _data.aSearchTimeout.Stop();
86 while ( pSearchEntry )
88 if ( rI18nHelper.
MatchString( _searchString, sEntryText ) )
92 if ( pSearchEntry == pStartedWith )
93 pSearchEntry =
nullptr;
114 m_pData->sCurrentSearchString += OUStringChar(c);
115 SAL_INFO(
"vcl",
"QuickSelectionEngine::HandleKeyEvent: searching for " <<
m_pData->sCurrentSearchString );
117 if (
m_pData->sCurrentSearchString.getLength() == 1 )
119 m_pData->aSingleSearchChar = c;
121 else if (
m_pData->sCurrentSearchString.getLength() > 1 )
123 if ( !!
m_pData->aSingleSearchChar && ( *
m_pData->aSingleSearchChar != c ) )
125 m_pData->aSingleSearchChar.reset();
128 OUString aSearchTemp(
m_pData->sCurrentSearchString );
131 SAL_INFO(
"vcl",
"QuickSelectionEngine::HandleKeyEvent: found " << pMatchingEntry );
132 if ( !pMatchingEntry && (aSearchTemp.getLength() > 1) && !!
m_pData->aSingleSearchChar )
135 aSearchTemp = OUString(*
m_pData->aSingleSearchChar);
139 if ( pMatchingEntry )
141 m_pData->rEntryList.SelectEntry( pMatchingEntry );
142 m_pData->aSearchTimeout.Start();
#define LINK(Instance, Class, Member)
bool HandleKeyEvent(const KeyEvent &_rKEvt)
static const AllSettings & GetSettings()
Gets the application's settings.
virtual StringEntryIdentifier CurrentEntry(OUString &_out_entryText) const =0
returns the current entry in the list of searchable strings.
bool MatchString(const OUString &rStr1, const OUString &rStr2) const
::std::unique_ptr< QuickSelectionEngine_Data > m_pData
~QuickSelectionEngine_Data()
const void * StringEntryIdentifier
DECL_LINK(SearchStringTimeout, Timer *, void)
ISearchableStringList & rEntryList
void SetDebugName(const char *pDebugName)
QuickSelectionEngine(ISearchableStringList &_entryList)
::std::optional< sal_Unicode > aSingleSearchChar
OUString sCurrentSearchString
void SetTimeout(sal_uInt64 nTimeoutMs)
const vcl::I18nHelper & GetLocaleI18nHelper() const
const vcl::KeyCode & GetKeyCode() const
virtual StringEntryIdentifier NextEntry(StringEntryIdentifier _currentEntry, OUString &_out_entryText) const =0
returns the next entry in the list.
static StringEntryIdentifier findMatchingEntry(const OUString &_searchString, QuickSelectionEngine_Data const &_engineData)
#define SAL_INFO(area, stream)
sal_Unicode GetCharCode() const
void SetInvokeHandler(const Link< Timer *, void > &rLink)
QuickSelectionEngine_Data(ISearchableStringList &_entryList)
IMPL_LINK_NOARG(QuickSelectionEngine_Data, SearchStringTimeout, Timer *, void)