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