From 80fe2f57e98561d711c33ccc8886026016db68ee Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Thu, 27 May 2021 02:20:27 +0300 Subject: [PATCH] Removed Adaptive namespace from Window::Controller and MainWidget. --- .../SourceFiles/info/info_section_widget.cpp | 3 +- Telegram/SourceFiles/mainwidget.cpp | 110 ++++++++++-------- Telegram/SourceFiles/mainwidget.h | 4 + .../window/window_connecting_widget.cpp | 10 -- .../window/window_connecting_widget.h | 2 - .../window/window_session_controller.cpp | 13 ++- .../window/window_session_controller.h | 4 +- 7 files changed, 76 insertions(+), 70 deletions(-) diff --git a/Telegram/SourceFiles/info/info_section_widget.cpp b/Telegram/SourceFiles/info/info_section_widget.cpp index 99b289bf98..1884323083 100644 --- a/Telegram/SourceFiles/info/info_section_widget.cpp +++ b/Telegram/SourceFiles/info/info_section_widget.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "info/info_section_widget.h" +#include "window/window_adaptive.h" #include "window/window_connecting_widget.h" #include "window/window_session_controller.h" #include "main/main_session.h" @@ -51,7 +52,7 @@ void SectionWidget::init() { _connecting = std::make_unique( _content.data(), &controller()->session().account(), - Window::AdaptiveIsOneColumn()); + controller()->adaptive().oneColumnValue()); _content->contentChanged( ) | rpl::start_with_next([=] { diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index 8edbfd39b5..d7aeff77a0 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -380,10 +380,13 @@ MainWidget::MainWidget( } }); - subscribe(Adaptive::Changed(), [this]() { handleAdaptiveLayoutUpdate(); }); + _controller->adaptive().changed( + ) | rpl::start_with_next([=] { + handleAdaptiveLayoutUpdate(); + }, lifetime()); _dialogs->show(); - if (Adaptive::OneColumn()) { + if (isOneColumn()) { _history->hide(); } else { _history->show(); @@ -416,7 +419,7 @@ void MainWidget::setupConnectingWidget() { _connecting = std::make_unique( this, &session().account(), - Window::AdaptiveIsOneColumn() | rpl::map(!_1)); + _controller->adaptive().oneColumnValue() | rpl::map(!_1)); } not_null MainWidget::floatPlayerDelegate() { @@ -429,7 +432,7 @@ not_null MainWidget::floatPlayerWidget() { auto MainWidget::floatPlayerGetSection(Window::Column column) -> not_null { - if (Adaptive::ThreeColumn()) { + if (isThreeColumn()) { if (column == Window::Column::First) { return _dialogs; } else if (column == Window::Column::Second @@ -440,7 +443,7 @@ auto MainWidget::floatPlayerGetSection(Window::Column column) return _history; } return _thirdSection; - } else if (Adaptive::Normal()) { + } else if (isNormalColumn()) { if (column == Window::Column::First) { return _dialogs; } else if (_mainSection) { @@ -448,11 +451,11 @@ auto MainWidget::floatPlayerGetSection(Window::Column column) } return _history; } - if (Adaptive::OneColumn() && selectingPeer()) { + if (isOneColumn() && selectingPeer()) { return _dialogs; } else if (_mainSection) { return _mainSection; - } else if (!Adaptive::OneColumn() || _history->peer()) { + } else if (!isOneColumn() || _history->peer()) { return _history; } return _dialogs; @@ -461,7 +464,7 @@ auto MainWidget::floatPlayerGetSection(Window::Column column) void MainWidget::floatPlayerEnumerateSections(Fn widget, Window::Column widgetColumn)> callback) { - if (Adaptive::ThreeColumn()) { + if (isThreeColumn()) { callback(_dialogs, Window::Column::First); if (_mainSection) { callback(_mainSection, Window::Column::Second); @@ -471,7 +474,7 @@ void MainWidget::floatPlayerEnumerateSections(Fnpeer()) { + } else if (!isOneColumn() || _history->peer()) { callback(_history, Window::Column::Second); } else { callback(_dialogs, Window::Column::First); @@ -645,7 +648,7 @@ void MainWidget::clearHider(not_null instance) { _hider.release(); controller()->setSelectingPeer(false); - if (Adaptive::OneColumn()) { + if (isOneColumn()) { if (_mainSection || (_history->peer() && _history->peer()->id)) { auto animationParams = ([=] { if (_mainSection) { @@ -693,7 +696,7 @@ void MainWidget::hiderLayer(base::unique_qptr hider) { _dialogs->onCancelSearch(); }, _hider->lifetime()); - if (Adaptive::OneColumn()) { + if (isOneColumn()) { dialogsToUp(); _hider->hide(); @@ -873,7 +876,7 @@ bool MainWidget::insertBotCommand(const QString &cmd) { void MainWidget::searchMessages(const QString &query, Dialogs::Key inChat) { _dialogs->searchMessages(query, inChat); - if (Adaptive::OneColumn()) { + if (isOneColumn()) { Ui::showChatsList(&session()); } else { _dialogs->setInnerFocus(); @@ -1541,18 +1544,18 @@ void MainWidget::ui_showPeerHistory( return false; } if (!peerId) { - if (Adaptive::OneColumn()) { + if (isOneColumn()) { return _dialogs->isHidden(); } else { return false; } } if (_history->isHidden()) { - if (!Adaptive::OneColumn() && way == Way::ClearStack) { + if (!isOneColumn() && way == Way::ClearStack) { return false; } return (_mainSection != nullptr) - || (Adaptive::OneColumn() && !_dialogs->isHidden()); + || (isOneColumn() && !_dialogs->isHidden()); } if (back || way == Way::Forward) { return true; @@ -1573,7 +1576,7 @@ void MainWidget::ui_showPeerHistory( _history->showHistory(peerId, showAtMsgId); auto noPeer = !_history->peer(); - auto onlyDialogs = noPeer && Adaptive::OneColumn(); + auto onlyDialogs = noPeer && isOneColumn(); _mainSection.destroy(); updateControlsGeometry(); @@ -1597,7 +1600,7 @@ void MainWidget::ui_showPeerHistory( if (nowActivePeer && nowActivePeer != wasActivePeer) { _viewsIncremented.remove(nowActivePeer); } - if (Adaptive::OneColumn() && !_dialogs->isHidden()) { + if (isOneColumn() && !_dialogs->isHidden()) { _dialogs->hide(); } if (!_a_show.animating()) { @@ -1711,7 +1714,7 @@ Window::SectionSlideParams MainWidget::prepareShowAnimation( bool willHaveTopBarShadow) { Window::SectionSlideParams result; result.withTopBarShadow = willHaveTopBarShadow; - if (selectingPeer() && Adaptive::OneColumn()) { + if (selectingPeer() && isOneColumn()) { result.withTopBarShadow = false; } else if (_mainSection) { if (!_mainSection->hasTopBarShadow()) { @@ -1735,7 +1738,7 @@ Window::SectionSlideParams MainWidget::prepareShowAnimation( } auto sectionTop = getMainSectionTop(); - if (selectingPeer() && Adaptive::OneColumn()) { + if (selectingPeer() && isOneColumn()) { result.oldContentCache = Ui::GrabWidget(this, QRect( 0, sectionTop, @@ -1743,7 +1746,7 @@ Window::SectionSlideParams MainWidget::prepareShowAnimation( height() - sectionTop)); } else if (_mainSection) { result.oldContentCache = _mainSection->grabForShowAnimation(result); - } else if (!Adaptive::OneColumn() || !_history->isHidden()) { + } else if (!isOneColumn() || !_history->isHidden()) { result.oldContentCache = _history->grabForShowAnimation(result); } else { result.oldContentCache = Ui::GrabWidget(this, QRect( @@ -1791,7 +1794,7 @@ void MainWidget::showNewSection( thirdSectionTop, st::columnMinimalWidthThird, height() - thirdSectionTop); - auto newThirdSection = (Adaptive::ThreeColumn() && params.thirdColumn) + auto newThirdSection = (isThreeColumn() && params.thirdColumn) ? memento->createWidget( this, _controller, @@ -1827,7 +1830,7 @@ void MainWidget::showNewSection( : memento->createWidget( this, _controller, - Adaptive::OneColumn() ? Column::First : Column::Second, + isOneColumn() ? Column::First : Column::Second, newMainGeometry); Assert(newMainSection || newThirdSection); @@ -1838,9 +1841,9 @@ void MainWidget::showNewSection( || memento->instant()) { return false; } - if (!Adaptive::OneColumn() && params.way == SectionShow::Way::ClearStack) { + if (!isOneColumn() && params.way == SectionShow::Way::ClearStack) { return false; - } else if (Adaptive::OneColumn() + } else if (isOneColumn() || (newThirdSection && _thirdSection) || (newMainSection && isMainSectionShown())) { return true; @@ -1876,7 +1879,7 @@ void MainWidget::showNewSection( _history->finishAnimating(); _history->showHistory(0, 0); _history->hide(); - if (Adaptive::OneColumn()) _dialogs->hide(); + if (isOneColumn()) _dialogs->hide(); } if (animationParams) { @@ -1884,7 +1887,7 @@ void MainWidget::showNewSection( auto direction = (back || settingSection->forceAnimateBack()) ? Window::SlideDirection::FromLeft : Window::SlideDirection::FromRight; - if (Adaptive::OneColumn()) { + if (isOneColumn()) { _controller->removeLayerBlackout(); } settingSection->showAnimated(direction, animationParams); @@ -2054,7 +2057,7 @@ QPixmap MainWidget::grabForShowAnimation(const Window::SectionSlideParams ¶m } auto sectionTop = getMainSectionTop(); - if (Adaptive::OneColumn()) { + if (isOneColumn()) { result = Ui::GrabWidget(this, QRect( 0, sectionTop, @@ -2191,7 +2194,7 @@ void MainWidget::showAll() { cSetPasswordRecovered(false); Ui::show(Box(tr::lng_signin_password_removed(tr::now))); } - if (Adaptive::OneColumn()) { + if (isOneColumn()) { _sideShadow->hide(); if (_hider) { _hider->hide(); @@ -2266,7 +2269,7 @@ void MainWidget::updateControlsGeometry() { if (!_a_dialogsWidth.animating()) { _dialogs->stopWidthAnimation(); } - if (Adaptive::ThreeColumn()) { + if (isThreeColumn()) { if (!_thirdSection && !_controller->takeThirdSectionFromLayer()) { auto params = Window::SectionShow( @@ -2294,7 +2297,7 @@ void MainWidget::updateControlsGeometry() { } auto mainSectionTop = getMainSectionTop(); auto dialogsWidth = qRound(_a_dialogsWidth.value(_dialogsWidth)); - if (Adaptive::OneColumn()) { + if (isOneColumn()) { if (_callTopBar) { _callTopBar->resizeToWidth(dialogsWidth); _callTopBar->moveToLeft(0, 0); @@ -2375,7 +2378,7 @@ void MainWidget::updateControlsGeometry() { } void MainWidget::refreshResizeAreas() { - if (!Adaptive::OneColumn()) { + if (!isOneColumn()) { ensureFirstColumnResizeAreaCreated(); _firstColumnResizeArea->setGeometryToLeft( _history->x(), @@ -2386,7 +2389,7 @@ void MainWidget::refreshResizeAreas() { _firstColumnResizeArea.destroy(); } - if (Adaptive::ThreeColumn() && _thirdSection) { + if (isThreeColumn() && _thirdSection) { ensureThirdColumnResizeAreaCreated(); _thirdColumnResizeArea->setGeometryToLeft( _thirdSection->x(), @@ -2424,7 +2427,7 @@ void MainWidget::ensureFirstColumnResizeAreaCreated() { Core::App().settings().setDialogsWidthRatio(newRatio); }; auto moveFinishedCallback = [=] { - if (Adaptive::OneColumn()) { + if (isOneColumn()) { return; } if (Core::App().settings().dialogsWidthRatio() > 0) { @@ -2448,7 +2451,7 @@ void MainWidget::ensureThirdColumnResizeAreaCreated() { Core::App().settings().setThirdColumnWidth(newWidth); }; auto moveFinishedCallback = [=] { - if (!Adaptive::ThreeColumn() || !_thirdSection) { + if (!isThreeColumn() || !_thirdSection) { return; } Core::App().settings().setThirdColumnWidth(std::clamp( @@ -2523,7 +2526,7 @@ void MainWidget::updateThirdColumnToCurrentChat( // // Like in _controller->showPeerInfo() // - if (Adaptive::ThreeColumn() + if (isThreeColumn() && !settings.thirdSectionInfoEnabled()) { settings.setThirdSectionInfoEnabled(true); Core::App().saveSettingsDelayed(); @@ -2539,7 +2542,7 @@ void MainWidget::updateThirdColumnToCurrentChat( ? _mainSection->pushTabbedSelectorToThirdSection(peer, params) : _history->pushTabbedSelectorToThirdSection(peer, params); }; - if (Adaptive::ThreeColumn() + if (isThreeColumn() && settings.tabbedSelectorSectionEnabled() && key) { if (!canWrite) { @@ -2559,7 +2562,7 @@ void MainWidget::updateThirdColumnToCurrentChat( _thirdShadow.destroy(); updateControlsGeometry(); } - } else if (Adaptive::ThreeColumn() + } else if (isThreeColumn() && settings.thirdSectionInfoEnabled()) { switchInfoFast(); } @@ -2626,7 +2629,7 @@ bool MainWidget::eventFilter(QObject *o, QEvent *e) { void MainWidget::handleAdaptiveLayoutUpdate() { showAll(); - _sideShadow->setVisible(!Adaptive::OneColumn()); + _sideShadow->setVisible(!isOneColumn()); if (_player) { _player->updateAdaptiveLayout(); } @@ -2653,7 +2656,7 @@ void MainWidget::updateWindowAdaptiveLayout() { // Check if we are in a single-column layout in a wide enough window // for the normal layout. If so, switch to the normal layout. - if (layout.windowLayout == Adaptive::WindowLayout::OneColumn) { + if (layout.windowLayout == Window::AdaptiveModern::WindowLayout::OneColumn) { auto chatWidth = layout.chatWidth; //if (session().settings().tabbedSelectorSectionEnabled() // && chatWidth >= _history->minimalWidthForTabbedSelectorSection()) { @@ -2663,7 +2666,7 @@ void MainWidget::updateWindowAdaptiveLayout() { + st::columnMinimalWidthMain; if (chatWidth >= minimalNormalWidth) { // Switch layout back to normal in a wide enough window. - layout.windowLayout = Adaptive::WindowLayout::Normal; + layout.windowLayout = Window::AdaptiveModern::WindowLayout::Normal; layout.dialogsWidth = st::columnMinimalWidthLeft; layout.chatWidth = layout.bodyWidth - layout.dialogsWidth; dialogsWidthRatio = float64(layout.dialogsWidth) / layout.bodyWidth; @@ -2673,7 +2676,7 @@ void MainWidget::updateWindowAdaptiveLayout() { // Check if we are going to create the third column and shrink the // dialogs widget to provide a wide enough chat history column. // Don't shrink the column on the first call, when window is inited. - if (layout.windowLayout == Adaptive::WindowLayout::ThreeColumn + if (layout.windowLayout == Window::AdaptiveModern::WindowLayout::ThreeColumn && _controller->widget()->positionInited()) { //auto chatWidth = layout.chatWidth; //if (_history->willSwitchToTabbedSelectorWithWidth(chatWidth)) { @@ -2694,17 +2697,14 @@ void MainWidget::updateWindowAdaptiveLayout() { Core::App().settings().setDialogsWidthRatio(dialogsWidthRatio); - auto useSmallColumnWidth = !Adaptive::OneColumn() + auto useSmallColumnWidth = !isOneColumn() && !dialogsWidthRatio && !_controller->forceWideDialogs(); _dialogsWidth = useSmallColumnWidth ? _controller->dialogsSmallColumnWidth() : layout.dialogsWidth; _thirdColumnWidth = layout.thirdWidth; - if (layout.windowLayout != Global::AdaptiveWindowLayout()) { - Global::SetAdaptiveWindowLayout(layout.windowLayout); - Adaptive::Changed().notify(true); - } + _controller->adaptive().setWindowLayout(layout.windowLayout); } int MainWidget::backgroundFromY() const { @@ -2716,7 +2716,7 @@ void MainWidget::searchInChat(Dialogs::Key chat) { _controller->closeFolder(); } _dialogs->searchInChat(chat); - if (Adaptive::OneColumn()) { + if (isOneColumn()) { Ui::showChatsList(&session()); } else { _dialogs->setInnerFocus(); @@ -2778,6 +2778,18 @@ void MainWidget::saveFieldToHistoryLocalDraft() { _history->saveFieldToHistoryLocalDraft(); } +bool MainWidget::isOneColumn() const { + return _controller->adaptive().isOneColumn(); +} + +bool MainWidget::isNormalColumn() const { + return _controller->adaptive().isNormal(); +} + +bool MainWidget::isThreeColumn() const { + return _controller->adaptive().isThreeColumn(); +} + namespace App { MainWidget *main() { diff --git a/Telegram/SourceFiles/mainwidget.h b/Telegram/SourceFiles/mainwidget.h index 62246291c2..bdd705aa5c 100644 --- a/Telegram/SourceFiles/mainwidget.h +++ b/Telegram/SourceFiles/mainwidget.h @@ -344,6 +344,10 @@ private: void handleHistoryBack(); + bool isOneColumn() const; + bool isNormalColumn() const; + bool isThreeColumn() const; + const not_null _controller; MTP::Sender _api; diff --git a/Telegram/SourceFiles/window/window_connecting_widget.cpp b/Telegram/SourceFiles/window/window_connecting_widget.cpp index a735a9c3b9..d3a31cd380 100644 --- a/Telegram/SourceFiles/window/window_connecting_widget.cpp +++ b/Telegram/SourceFiles/window/window_connecting_widget.cpp @@ -623,14 +623,4 @@ void ConnectionState::Widget::refreshRetryLink(bool hasRetry) { } } -rpl::producer AdaptiveIsOneColumn() { - return rpl::single( - Adaptive::OneColumn() - ) | rpl::then(base::ObservableViewer( - Adaptive::Changed() - ) | rpl::map([] { - return Adaptive::OneColumn(); - })); -} - } // namespace Window diff --git a/Telegram/SourceFiles/window/window_connecting_widget.h b/Telegram/SourceFiles/window/window_connecting_widget.h index e714cc61f3..5d362179bb 100644 --- a/Telegram/SourceFiles/window/window_connecting_widget.h +++ b/Telegram/SourceFiles/window/window_connecting_widget.h @@ -92,6 +92,4 @@ private: }; -rpl::producer AdaptiveIsOneColumn(); - } // namespace Window diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index 27e0c2700a..cd81876e63 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "boxes/add_contact_box.h" #include "boxes/peers/edit_peer_info_box.h" #include "boxes/peer_list_controllers.h" +#include "window/window_adaptive.h" #include "window/window_controller.h" #include "window/main_window.h" #include "window/window_filters_menu.h" @@ -802,7 +803,7 @@ bool SessionController::forceWideDialogs() const { } auto SessionController::computeColumnLayout() const -> ColumnLayout { - auto layout = Adaptive::WindowLayout::OneColumn; + auto layout = AdaptiveModern::WindowLayout::OneColumn; auto bodyWidth = widget()->bodyWidget()->width() - filtersWidth(); auto dialogsWidth = 0, chatWidth = 0, thirdWidth = 0; @@ -831,12 +832,12 @@ auto SessionController::computeColumnLayout() const -> ColumnLayout { if (useOneColumnLayout()) { dialogsWidth = chatWidth = bodyWidth; } else if (useNormalLayout()) { - layout = Adaptive::WindowLayout::Normal; + layout = AdaptiveModern::WindowLayout::Normal; dialogsWidth = countDialogsWidthFromRatio(bodyWidth); accumulate_min(dialogsWidth, bodyWidth - st::columnMinimalWidthMain); chatWidth = bodyWidth - dialogsWidth; } else { - layout = Adaptive::WindowLayout::ThreeColumn; + layout = AdaptiveModern::WindowLayout::ThreeColumn; dialogsWidth = countDialogsWidthFromRatio(bodyWidth); thirdWidth = countThirdColumnWidthFromRatio(bodyWidth); auto shrink = shrinkDialogsAndThirdColumns( @@ -906,7 +907,7 @@ bool SessionController::takeThirdSectionFromLayer() { } void SessionController::resizeForThirdSection() { - if (Adaptive::ThreeColumn()) { + if (adaptive().isThreeColumn()) { return; } @@ -959,7 +960,7 @@ void SessionController::closeThirdSection() { auto &settings = Core::App().settings(); auto newWindowSize = widget()->size(); auto layout = computeColumnLayout(); - if (layout.windowLayout == Adaptive::WindowLayout::ThreeColumn) { + if (layout.windowLayout == AdaptiveModern::WindowLayout::ThreeColumn) { auto noResize = widget()->isFullScreen() || widget()->isMaximized(); auto savedValue = settings.thirdSectionExtendedBy(); @@ -1182,7 +1183,7 @@ void SessionController::setActiveChatsFilter(FilterId id) { if (id) { closeFolder(); } - if (Adaptive::OneColumn()) { + if (adaptive().isOneColumn()) { Ui::showChatsList(&session()); } } diff --git a/Telegram/SourceFiles/window/window_session_controller.h b/Telegram/SourceFiles/window/window_session_controller.h index 93e0a98a5e..1b7eaa4b91 100644 --- a/Telegram/SourceFiles/window/window_session_controller.h +++ b/Telegram/SourceFiles/window/window_session_controller.h @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/timer.h" #include "dialogs/dialogs_key.h" #include "ui/effects/animation_value.h" +#include "window/window_adaptive.h" class PhotoData; class MainWidget; @@ -53,7 +54,6 @@ class MainWindow; class SectionMemento; class Controller; class FiltersMenu; -class AdaptiveModern; enum class GifPauseReason { Any = 0, @@ -287,7 +287,7 @@ public: int dialogsWidth; int chatWidth; int thirdWidth; - Adaptive::WindowLayout windowLayout; + AdaptiveModern::WindowLayout windowLayout; }; [[nodiscard]] ColumnLayout computeColumnLayout() const; int dialogsSmallColumnWidth() const;