Set default folder by id
This commit is contained in:
parent
a63f44ce1d
commit
581bbc0d00
8 changed files with 31 additions and 10 deletions
|
|
@ -333,6 +333,10 @@ bool Manager::readCustomFile() {
|
|||
cSetCustomAppIcon(v);
|
||||
}
|
||||
});
|
||||
|
||||
ReadIntOption(settings, "default_folder_id", [&](auto v) {
|
||||
cSetDefaultFilterId(v);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -377,6 +381,7 @@ void Manager::writeDefaultFile() {
|
|||
settings.insert(qsl("userpic_corner_type"), cUserpicCornersType());
|
||||
settings.insert(qsl("always_show_top_userpic"), cShowTopBarUserpic());
|
||||
settings.insert(qsl("custom_app_icon"), cCustomAppIcon());
|
||||
settings.insert(qsl("default_folder_id"), cDefaultFilterId());
|
||||
|
||||
auto settingsScales = QJsonArray();
|
||||
settings.insert(qsl("scales"), settingsScales);
|
||||
|
|
@ -442,6 +447,7 @@ void Manager::writeCurrentSettings() {
|
|||
settings.insert(qsl("userpic_corner_type"), cUserpicCornersType());
|
||||
settings.insert(qsl("always_show_top_userpic"), cShowTopBarUserpic());
|
||||
settings.insert(qsl("custom_app_icon"), cCustomAppIcon());
|
||||
settings.insert(qsl("default_folder_id"), cDefaultFilterId());
|
||||
|
||||
auto settingsScales = QJsonArray();
|
||||
auto currentScales = cInterfaceScales();
|
||||
|
|
|
|||
|
|
@ -687,8 +687,8 @@ void Widget::escape() {
|
|||
} else if (!onCancelSearch()) {
|
||||
if (controller()->activeChatEntryCurrent().key) {
|
||||
emit cancelled();
|
||||
} else if (controller()->activeChatsFilterCurrent()) {
|
||||
controller()->setActiveChatsFilter(FilterId(0));
|
||||
} else if (controller()->activeChatsFilterCurrent() != cDefaultFilterId()) {
|
||||
controller()->setActiveChatsFilter(cDefaultFilterId());
|
||||
}
|
||||
} else if (!_searchInChat && !App::main()->selectingPeer()) {
|
||||
if (controller()->activeChatEntryCurrent().key) {
|
||||
|
|
|
|||
|
|
@ -319,3 +319,6 @@ rpl::producer<int> RecentStickersLimitChanges() {
|
|||
int gUserpicCornersType = 3;
|
||||
bool gShowTopBarUserpic = false;
|
||||
int gCustomAppIcon = 0;
|
||||
|
||||
int gDefaultFilterId = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -249,3 +249,5 @@ void SetRecentStickersLimit(int limit);
|
|||
DeclareSetting(int, UserpicCornersType);
|
||||
DeclareSetting(bool, ShowTopBarUserpic);
|
||||
DeclareSetting(int, CustomAppIcon);
|
||||
|
||||
DeclareSetting(int, DefaultFilterId);
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ void FiltersMenu::setup() {
|
|||
) | rpl::then(
|
||||
filters->changed()
|
||||
) | rpl::start_with_next([=] {
|
||||
refresh();
|
||||
refresh(true);
|
||||
}, _outer.lifetime());
|
||||
|
||||
_activeFilterId = _session->activeChatsFilterCurrent();
|
||||
|
|
@ -132,7 +132,7 @@ void FiltersMenu::setup() {
|
|||
});
|
||||
}
|
||||
|
||||
void FiltersMenu::refresh() {
|
||||
void FiltersMenu::refresh(bool firstLoad) {
|
||||
const auto filters = &_session->session().data().chatsFilters();
|
||||
if (filters->list().empty() || _ignoreRefresh) {
|
||||
return;
|
||||
|
|
@ -156,6 +156,10 @@ void FiltersMenu::refresh() {
|
|||
_reorder->start();
|
||||
|
||||
_container->resizeToWidth(_outer.width());
|
||||
|
||||
if (firstLoad) {
|
||||
_session->setActiveChatsFilter(cDefaultFilterId());
|
||||
}
|
||||
}
|
||||
|
||||
void FiltersMenu::setupList() {
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public:
|
|||
|
||||
private:
|
||||
void setup();
|
||||
void refresh();
|
||||
void refresh(bool firstLoad = false);
|
||||
void setupList();
|
||||
void applyReorder(
|
||||
not_null<Ui::RpWidget*> widget,
|
||||
|
|
|
|||
|
|
@ -230,7 +230,8 @@ void SessionController::checkOpenedFilter() {
|
|||
const auto &list = session().data().chatsFilters().list();
|
||||
const auto i = ranges::find(list, filterId, &Data::ChatFilter::id);
|
||||
if (i == end(list)) {
|
||||
setActiveChatsFilter(0);
|
||||
const auto j = ranges::find(list, FilterId(cDefaultFilterId()), &Data::ChatFilter::id);
|
||||
setActiveChatsFilter(j == end(list) ? 0 : cDefaultFilterId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -246,8 +247,13 @@ void SessionController::openFolder(not_null<Data::Folder*> folder) {
|
|||
_openedFolder = folder.get();
|
||||
}
|
||||
|
||||
void SessionController::closeFolder() {
|
||||
_openedFolder = nullptr;
|
||||
void SessionController::closeFolder(bool force) {
|
||||
if (cDefaultFilterId() == 0 || force) {
|
||||
_openedFolder = nullptr;
|
||||
} else {
|
||||
setActiveChatsFilter(cDefaultFilterId());
|
||||
checkOpenedFilter();
|
||||
}
|
||||
}
|
||||
|
||||
const rpl::variable<Data::Folder*> &SessionController::openedFolder() const {
|
||||
|
|
@ -783,7 +789,7 @@ FilterId SessionController::activeChatsFilterCurrent() const {
|
|||
void SessionController::setActiveChatsFilter(FilterId id) {
|
||||
_activeChatsFilter.force_assign(id);
|
||||
if (id) {
|
||||
closeFolder();
|
||||
closeFolder(true);
|
||||
}
|
||||
if (Adaptive::OneColumn()) {
|
||||
Ui::showChatsList();
|
||||
|
|
|
|||
|
|
@ -184,7 +184,7 @@ public:
|
|||
rpl::variable<Dialogs::Key> searchInChat;
|
||||
bool uniqueChatsInSearchResults() const;
|
||||
void openFolder(not_null<Data::Folder*> folder);
|
||||
void closeFolder();
|
||||
void closeFolder(bool force = false);
|
||||
const rpl::variable<Data::Folder*> &openedFolder() const;
|
||||
|
||||
void setActiveChatEntry(Dialogs::RowDescriptor row);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue