From 1e6236a98733e1604469d96d860a19f6251dec48 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 20 Aug 2024 22:12:33 +0300 Subject: [PATCH] Wrapped filter value labels with EditFlagsControl. --- Telegram/Resources/langs/lang.strings | 6 ++ .../boxes/peers/edit_peer_permissions_box.cpp | 21 +++++ .../boxes/peers/edit_peer_permissions_box.h | 9 +- .../admin_log/history_admin_log_filter.cpp | 92 +++++++++++++++++-- .../admin_log/history_admin_log_filter.h | 7 +- 5 files changed, 125 insertions(+), 10 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 05ae9113e..6787d39da 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -4344,11 +4344,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_admin_log_filter" = "Filter"; "lng_admin_log_filter_title" = "Filter"; "lng_admin_log_filter_all_actions" = "All actions"; +"lng_admin_log_filter_actions_type_subtitle" = "Filter actions by type"; +"lng_admin_log_filter_actions_member_section" = "Members And Admins"; "lng_admin_log_filter_restrictions" = "New restrictions"; "lng_admin_log_filter_admins_new" = "New admins"; "lng_admin_log_filter_members_new" = "New members"; +"lng_admin_log_filter_actions_settings_section" = "Group Settings"; "lng_admin_log_filter_info_group" = "Group info"; "lng_admin_log_filter_info_channel" = "Channel info"; +"lng_admin_log_filter_actions_messages_section" = "Messages"; "lng_admin_log_filter_messages_deleted" = "Deleted messages"; "lng_admin_log_filter_messages_edited" = "Edited messages"; "lng_admin_log_filter_messages_pinned" = "Pinned messages"; @@ -4358,6 +4362,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_admin_log_filter_members_removed" = "Leaving members"; "lng_admin_log_filter_topics" = "Topics"; "lng_admin_log_filter_all_admins" = "All users and admins"; +"lng_admin_log_filter_actions_admins_subtitle" = "Filter actions by admins"; +"lng_admin_log_filter_actions_admins_section" = "Show Actions by All Admins"; "lng_admin_log_about" = "What is this?"; "lng_admin_log_about_text" = "This is a list of all service actions taken by the group's members and admins in the last 48 hours."; "lng_admin_log_about_text_channel" = "This is a list of all service actions taken by the channel's admins in the last 48 hours."; diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_permissions_box.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_permissions_box.cpp index 385cb1ac6..3cb0265ba 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_permissions_box.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_permissions_box.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "boxes/peers/edit_peer_permissions_box.h" #include "lang/lang_keys.h" +#include "history/admin_log/history_admin_log_filter.h" #include "core/ui_integration.h" #include "data/stickers/data_custom_emoji.h" #include "data/data_channel.h" @@ -55,6 +56,11 @@ constexpr auto kForceDisableTooltipDuration = 3 * crl::time(1000); return {}; } +[[nodiscard]] auto Dependencies(AdminLog::FilterValue::Flags) { + using Flag = AdminLog::FilterValue::Flag; + return std::vector>{}; +} + [[nodiscard]] auto NestedRestrictionLabelsList( Data::RestrictionsSetOptions options) -> std::vector> { @@ -1432,3 +1438,18 @@ EditFlagsControl CreateEditPowerSaving( return result; } + +EditFlagsControl CreateEditAdminLogFilter( + QWidget *parent, + AdminLog::FilterValue::Flags flags, + bool isChannel) { + auto widget = object_ptr(parent); + auto descriptor = AdminLog::FilterValueLabels(isChannel); + auto result = CreateEditFlags( + widget.data(), + flags, + std::move(descriptor)); + result.widget = std::move(widget); + + return result; +} diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_permissions_box.h b/Telegram/SourceFiles/boxes/peers/edit_peer_permissions_box.h index 05e1962d4..b7e63e2e2 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_permissions_box.h +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_permissions_box.h @@ -7,8 +7,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "data/data_chat_participant_status.h" #include "base/object_ptr.h" +#include "data/data_chat_participant_status.h" +#include "history/admin_log/history_admin_log_filter_value.h" namespace style { struct SettingsButton; @@ -115,3 +116,9 @@ using AdminRightLabel = EditFlagsLabel; PowerSaving::Flags flags, rpl::producer forceDisabledMessage ) -> EditFlagsControl; + +[[nodiscard]] auto CreateEditAdminLogFilter( + QWidget *parent, + AdminLog::FilterValue::Flags flags, + bool isChannel +) -> EditFlagsControl; diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_filter.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_filter.cpp index 6265c81e4..bf0fc2fca 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_filter.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_filter.cpp @@ -7,15 +7,19 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "history/admin_log/history_admin_log_filter.h" -#include "ui/widgets/checkbox.h" -#include "ui/effects/ripple_animation.h" -#include "ui/text/text_options.h" -#include "ui/painter.h" -#include "lang/lang_keys.h" -#include "data/data_peer_values.h" -#include "data/data_channel.h" -#include "data/data_user.h" #include "base/unixtime.h" +#include "boxes/peers/edit_peer_permissions_box.h" +#include "data/data_channel.h" +#include "data/data_peer_values.h" +#include "data/data_user.h" +#include "history/admin_log/history_admin_log_filter_value.h" +#include "lang/lang_keys.h" +#include "ui/effects/ripple_animation.h" +#include "ui/layers/generic_box.h" +#include "ui/painter.h" +#include "ui/text/text_options.h" +#include "ui/vertical_list.h" +#include "ui/widgets/checkbox.h" #include "styles/style_layers.h" #include "styles/style_boxes.h" #include "styles/style_chat.h" @@ -440,4 +444,76 @@ void FilterBox::resizeToContent() { setDimensions(_inner->width(), _inner->height()); } +EditFlagsDescriptor FilterValueLabels(bool isChannel) { + using Label = EditFlagsLabel; + using Flag = FilterValue::Flag; + + const auto adminRights = Flag::Promote | Flag::Demote; + const auto restrictions = Flag::Ban + | Flag::Unban + | Flag::Kick + | Flag::Unkick; + const auto membersNew = Flag::Join | Flag::Invite; + const auto membersRemoved = Flag::Leave; + + auto members = std::vector