Use shorter 'FAQ' prefix for search results instead of full
'Telegram FAQ' that's used for the main FAQ button label.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Now FAQ entries appear in filtered search results when the query
matches, not just when query is empty. Uses same button cache and
first-letter index for both settings and FAQ entries.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Build search index once when the section is created instead
of recomputing on every query. Use first-letter lookup for
O(1) candidate filtering, following the pattern from theme
editor's searchByQuery implementation.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use the stepDataReference mechanism to save and restore the
search query when navigating from results to a section and back.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use TextUtilities::PrepareSearchWords() to normalize query and
entry text: split into words, remove accents, and lowercase.
Match by word prefix: each query word must match at least one
entry word by startsWith().
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
SearchEntry now has an optional `deeplink` field. When set, clicking
the search result activates the deeplink URL instead of navigating.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The custom build method in Main::setupContent() was missing the
HighlightRegistry setup, so widgets added via builder.add() with
search entries weren't being registered for highlighting.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
sectionPath() was starting with parentId instead of the section itself,
causing subtitles to skip the section name the entry belongs to.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move Advanced class definition into .cpp file anonymous namespace
- Export only Type AdvancedId() in header
- Keep exported helper functions (SetupConnectionType, HasUpdate, etc.)
- Remove unused SetupWindowCloseBehaviorContent declaration
- Update callers to use AdvancedId() instead of Advanced::Id()
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move Main class definition from header to .cpp file
- Export only Type MainId() from header
- Update all external references from Main::Id() to MainId()
- Remove Builder::MainSection export from namespace
- Add missing includes for settings_common_session.h where needed
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move LocalPasscodeManage class into anonymous namespace
- Remove Builder::LocalPasscodeManageSection export from header
- Use inline buildMethod for setupContent()
- Keep Create/Check/Change enter-type sections as-is (form-based)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move Calls class to anonymous namespace in .cpp
- Export only Type CallsId() from header
- Move AddCameraSubsection to be a free function (exported)
- Keep all device helper functions exported
- Update all references to use CallsId() and AddCameraSubsection()
- Add missing include to calls_group_settings.cpp
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move Information class to anonymous namespace in .cpp
- Export only Type InformationId() from header
- Keep exported helpers: SetupAccounts, UpdatePhotoLocally, Badge::*
- Use custom buildMethod with HighlightRegistry for all profile widgets
- Update all references to use InformationId() instead of Information::Id()
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move Shortcuts class to anonymous namespace in .cpp
- Export only Type ShortcutsId() from header
- Use custom buildMethod with HighlightRegistry for reset button
- Update settings_chat.cpp to use ShortcutsId() instead of Shortcuts::Id()
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move widget creation into BuildNotificationsTypeContent() builder function
- Use builder.add() with widget and search callbacks for indexed controls
- Update setupContent() to use build() with custom buildMethod that captures _type
- Remove manual highlight tracking (QPointer fields and showFinished() registrations)
- Class remains in header due to parameterized constructor (takes Notify type)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>