| 280 | } |
| 281 | |
| 282 | void ShareBox::prepare() { |
| 283 | prepareCommentField(); |
| 284 | |
| 285 | _select->resizeToWidth(st::boxWideWidth); |
| 286 | Ui::SendPendingMoveResizeEvents(_select); |
| 287 | |
| 288 | setTitle(header); |
| 289 | |
| 290 | _inner = setInnerWidget( |
| 291 | object_ptr<Inner>(this, _descriptor, uiShow()), |
| 292 | getTopScrollSkip(), |
| 293 | getBottomScrollSkip()); |
| 294 | |
| 295 | createButtons(); |
| 296 | |
| 297 | setDimensions(st::boxWideWidth, st::boxMaxListHeight); |
| 298 | |
| 299 | _select->setQueryChangedCallback([=](const QString &query) { |
| 300 | applyFilterUpdate(query); |
| 301 | if (_chatsFilters) { |
| 302 | updateScrollSkips(); |
| 303 | scrollToY(0); |
| 304 | } |
| 305 | }); |
| 306 | _select->setItemRemovedCallback([=](uint64 itemId) { |
| 307 | if (const auto peer = _descriptor.session->data().peerLoaded(PeerId(itemId))) { |
| 308 | _inner->peerUnselected(peer); |
| 309 | selectedChanged(); |
| 310 | update(); |
| 311 | } |
| 312 | }); |
| 313 | _select->setResizedCallback([=] { updateScrollSkips(); }); |
| 314 | _select->setSubmittedCallback([=](Qt::KeyboardModifiers modifiers) { |
| 315 | if (modifiers.testFlag(Qt::ControlModifier) |
| 316 | || modifiers.testFlag(Qt::MetaModifier)) { |
| 317 | submit({}); |
| 318 | } else { |
| 319 | _inner->selectActive(); |
| 320 | } |
| 321 | }); |
| 322 | rpl::combine( |
| 323 | _comment->heightValue(), |
| 324 | (_bottomWidget |
| 325 | ? _bottomWidget->heightValue() |
| 326 | : rpl::single(0) | rpl::type_erased) |
| 327 | ) | rpl::on_next([=] { |
| 328 | updateScrollSkips(); |
| 329 | }, _comment->lifetime()); |
| 330 | |
| 331 | _inner->searchRequests( |
| 332 | ) | rpl::on_next([=] { |
| 333 | needSearchByUsername(); |
| 334 | }, _inner->lifetime()); |
| 335 | |
| 336 | _inner->scrollToRequests( |
| 337 | ) | rpl::on_next([=](const Ui::ScrollToRequest &request) { |
| 338 | scrollTo(request); |
| 339 | }, _inner->lifetime()); |
nothing calls this directly
no test coverage detected