Removed masks panel when there are no masks.

This commit is contained in:
23rd 2021-03-31 03:26:32 +03:00
parent 2a58d01927
commit b2a1c10036
5 changed files with 50 additions and 14 deletions

View file

@ -641,7 +641,7 @@ void StickersBox::refreshTabs() {
sections.push_back(tr::lng_stickers_installed_tab(tr::now).toUpper()); sections.push_back(tr::lng_stickers_installed_tab(tr::now).toUpper());
_tabIndices.push_back(Section::Installed); _tabIndices.push_back(Section::Installed);
} }
if (!stickers.maskSetsOrder().isEmpty() && _masks.widget()) { if (_masks.widget()) {
sections.push_back(tr::lng_stickers_masks_tab(tr::now).toUpper()); sections.push_back(tr::lng_stickers_masks_tab(tr::now).toUpper());
_tabIndices.push_back(Section::Masks); _tabIndices.push_back(Section::Masks);
} }

View file

@ -3237,6 +3237,7 @@ void StickersListWidget::removeSet(uint64 setId) {
if (writeRecent) { if (writeRecent) {
session().saveSettings(); session().saveSettings();
} }
session().data().stickers().notifyUpdated();
} }
_removingSetId = 0; _removingSetId = 0;
_checkForHide.fire({}); _checkForHide.fire({});
@ -3258,6 +3259,10 @@ Data::StickersSetsOrder &StickersListWidget::defaultSetsOrderRef() {
: session().data().stickers().maskSetsOrderRef(); : session().data().stickers().maskSetsOrderRef();
} }
bool StickersListWidget::mySetsEmpty() const {
return _mySets.empty();
}
StickersListWidget::~StickersListWidget() = default; StickersListWidget::~StickersListWidget() = default;
} // namespace ChatHelpers } // namespace ChatHelpers

View file

@ -89,6 +89,8 @@ public:
not_null<Ui::PopupMenu*> menu, not_null<Ui::PopupMenu*> menu,
SendMenu::Type type) override; SendMenu::Type type) override;
bool mySetsEmpty() const;
~StickersListWidget(); ~StickersListWidget();
protected: protected:

View file

@ -496,11 +496,19 @@ rpl::producer<> TabbedSelector::slideFinished() const {
return _slideFinished.events(); return _slideFinished.events();
} }
void TabbedSelector::resizeEvent(QResizeEvent *e) { void TabbedSelector::updateTabsSliderGeometry() {
if (_tabsSlider) { if (!_tabsSlider) {
_tabsSlider->resizeToWidth(width()); return;
_tabsSlider->moveToLeft(0, 0);
} }
const auto w = mediaEditor() && hasMasksTab() && masks()->mySetsEmpty()
? width() / 2
: width();
_tabsSlider->resizeToWidth(w);
_tabsSlider->moveToLeft(0, 0);
}
void TabbedSelector::resizeEvent(QResizeEvent *e) {
updateTabsSliderGeometry();
if (_topShadow && _tabsSlider) { if (_topShadow && _tabsSlider) {
_topShadow->setGeometry( _topShadow->setGeometry(
_tabsSlider->x(), _tabsSlider->x(),
@ -680,9 +688,16 @@ void TabbedSelector::refreshStickers() {
} }
} }
if (hasMasksTab()) { if (hasMasksTab()) {
masks()->refreshStickers(); const auto masksList = masks();
masksList->refreshStickers();
if (isHidden() || _currentTabType != SelectorTab::Masks) { if (isHidden() || _currentTabType != SelectorTab::Masks) {
masks()->preloadImages(); masksList->preloadImages();
}
fillTabsSliderSections();
updateTabsSliderGeometry();
if (hasStickersTab() && masksList->mySetsEmpty()) {
_tabsSlider->setActiveSection(indexByType(SelectorTab::Stickers));
} }
} }
} }
@ -869,9 +884,27 @@ void TabbedSelector::setRoundRadius(int radius) {
void TabbedSelector::createTabsSlider() { void TabbedSelector::createTabsSlider() {
_tabsSlider.create(this, st::emojiTabs); _tabsSlider.create(this, st::emojiTabs);
fillTabsSliderSections();
_tabsSlider->setActiveSectionFast(indexByType(_currentTabType));
_tabsSlider->sectionActivated(
) | rpl::start_with_next([=] {
switchTab();
}, lifetime());
}
void TabbedSelector::fillTabsSliderSections() {
if (!_tabsSlider) {
return;
}
const auto sections = ranges::views::all( const auto sections = ranges::views::all(
_tabs _tabs
) | ranges::views::transform([=](const Tab &tab) { ) | ranges::views::filter([&](const Tab &tab) {
return (tab.type() == SelectorTab::Masks)
? !masks()->mySetsEmpty()
: true;
}) | ranges::views::transform([&](const Tab &tab) {
return [type = tab.type()] { return [type = tab.type()] {
switch (type) { switch (type) {
case SelectorTab::Emoji: case SelectorTab::Emoji:
@ -886,12 +919,6 @@ void TabbedSelector::createTabsSlider() {
}()(tr::now).toUpper(); }()(tr::now).toUpper();
}) | ranges::to_vector; }) | ranges::to_vector;
_tabsSlider->setSections(sections); _tabsSlider->setSections(sections);
_tabsSlider->setActiveSectionFast(indexByType(_currentTabType));
_tabsSlider->sectionActivated(
) | rpl::start_with_next([=] {
switchTab();
}, lifetime());
} }
bool TabbedSelector::hasSectionIcons() const { bool TabbedSelector::hasSectionIcons() const {

View file

@ -198,6 +198,8 @@ private:
bool hasSectionIcons() const; bool hasSectionIcons() const;
void setWidgetToScrollArea(); void setWidgetToScrollArea();
void createTabsSlider(); void createTabsSlider();
void fillTabsSliderSections();
void updateTabsSliderGeometry();
void switchTab(); void switchTab();
not_null<Tab*> getTab(int index); not_null<Tab*> getTab(int index);