Added description to context menu for anonymous phone numbers.
This commit is contained in:
parent
d424a8b039
commit
aa8ca28f77
|
@ -849,6 +849,8 @@ PRIVATE
|
||||||
info/profile/info_profile_members.h
|
info/profile/info_profile_members.h
|
||||||
info/profile/info_profile_members_controllers.cpp
|
info/profile/info_profile_members_controllers.cpp
|
||||||
info/profile/info_profile_members_controllers.h
|
info/profile/info_profile_members_controllers.h
|
||||||
|
info/profile/info_profile_phone_menu.cpp
|
||||||
|
info/profile/info_profile_phone_menu.h
|
||||||
info/profile/info_profile_text.cpp
|
info/profile/info_profile_text.cpp
|
||||||
info/profile/info_profile_text.h
|
info/profile/info_profile_text.h
|
||||||
info/profile/info_profile_values.cpp
|
info/profile/info_profile_values.cpp
|
||||||
|
|
|
@ -1196,6 +1196,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
"lng_info_tab_media" = "Media";
|
"lng_info_tab_media" = "Media";
|
||||||
"lng_info_public_photo" = "public photo";
|
"lng_info_public_photo" = "public photo";
|
||||||
"lng_info_mobile_label" = "Mobile";
|
"lng_info_mobile_label" = "Mobile";
|
||||||
|
"lng_info_mobile_context_menu_fragment_about" = "This number is not tied to a SIM card and was acquired on {link}.";
|
||||||
|
"lng_info_mobile_context_menu_fragment_about_link" = "Fragment";
|
||||||
"lng_info_mobile_hidden" = "Hidden";
|
"lng_info_mobile_hidden" = "Hidden";
|
||||||
"lng_info_username_label" = "Username";
|
"lng_info_username_label" = "Username";
|
||||||
"lng_info_usernames_label" = "also";
|
"lng_info_usernames_label" = "also";
|
||||||
|
|
|
@ -45,6 +45,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "info/info_controller.h"
|
#include "info/info_controller.h"
|
||||||
#include "info/info_memento.h"
|
#include "info/info_memento.h"
|
||||||
#include "info/profile/info_profile_icon.h"
|
#include "info/profile/info_profile_icon.h"
|
||||||
|
#include "info/profile/info_profile_phone_menu.h"
|
||||||
#include "info/profile/info_profile_values.h"
|
#include "info/profile/info_profile_values.h"
|
||||||
#include "info/profile/info_profile_text.h"
|
#include "info/profile/info_profile_text.h"
|
||||||
#include "support/support_helper.h"
|
#include "support/support_helper.h"
|
||||||
|
@ -391,10 +392,17 @@ object_ptr<Ui::RpWidget> DetailsFiller::setupInfo() {
|
||||||
user->session().supportHelper().infoTextValue(user));
|
user->session().supportHelper().infoTextValue(user));
|
||||||
}
|
}
|
||||||
|
|
||||||
addInfoOneLine(
|
{
|
||||||
tr::lng_info_mobile_label(),
|
const auto phoneLabel = addInfoOneLine(
|
||||||
PhoneOrHiddenValue(user),
|
tr::lng_info_mobile_label(),
|
||||||
tr::lng_profile_copy_phone(tr::now));
|
PhoneOrHiddenValue(user),
|
||||||
|
tr::lng_profile_copy_phone(tr::now)).text;
|
||||||
|
const auto hook = [=](Ui::FlatLabel::ContextMenuRequest request) {
|
||||||
|
phoneLabel->fillContextMenu(request);
|
||||||
|
AddPhoneMenu(request.menu, user);
|
||||||
|
};
|
||||||
|
phoneLabel->setContextMenuHook(hook);
|
||||||
|
}
|
||||||
auto label = user->isBot()
|
auto label = user->isBot()
|
||||||
? tr::lng_info_about_label()
|
? tr::lng_info_about_label()
|
||||||
: tr::lng_info_bio_label();
|
: tr::lng_info_bio_label();
|
||||||
|
|
123
Telegram/SourceFiles/info/profile/info_profile_phone_menu.cpp
Normal file
123
Telegram/SourceFiles/info/profile/info_profile_phone_menu.cpp
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
/*
|
||||||
|
This file is part of Telegram Desktop,
|
||||||
|
the official desktop application for the Telegram messaging service.
|
||||||
|
|
||||||
|
For license and copyright information please follow this link:
|
||||||
|
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
|
*/
|
||||||
|
#include "info/profile/info_profile_phone_menu.h"
|
||||||
|
|
||||||
|
#include "data/data_user.h"
|
||||||
|
#include "lang/lang_keys.h"
|
||||||
|
#include "main/main_account.h"
|
||||||
|
#include "main/main_app_config.h"
|
||||||
|
#include "main/main_session.h"
|
||||||
|
#include "ui/text/text_utilities.h"
|
||||||
|
#include "ui/widgets/labels.h"
|
||||||
|
#include "ui/widgets/menu/menu_action.h"
|
||||||
|
#include "ui/widgets/popup_menu.h"
|
||||||
|
#include "styles/style_chat.h" // expandedMenuSeparator.
|
||||||
|
|
||||||
|
namespace Info {
|
||||||
|
namespace Profile {
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
class TextItem final : public Ui::Menu::ItemBase {
|
||||||
|
public:
|
||||||
|
TextItem(
|
||||||
|
not_null<Ui::RpWidget*> parent,
|
||||||
|
const style::Menu &st,
|
||||||
|
rpl::producer<TextWithEntities> &&text);
|
||||||
|
|
||||||
|
not_null<QAction*> action() const override;
|
||||||
|
bool isEnabled() const override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int contentHeight() const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
const base::unique_qptr<Ui::FlatLabel> _label;
|
||||||
|
const not_null<QAction*> _dummyAction;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
TextItem::TextItem(
|
||||||
|
not_null<Ui::RpWidget*> parent,
|
||||||
|
const style::Menu &st,
|
||||||
|
rpl::producer<TextWithEntities> &&text)
|
||||||
|
: ItemBase(parent, st)
|
||||||
|
, _label(base::make_unique_q<Ui::FlatLabel>(
|
||||||
|
this,
|
||||||
|
std::move(text),
|
||||||
|
st::historyMessagesTTLLabel))
|
||||||
|
, _dummyAction(Ui::CreateChild<QAction>(parent.get())) {
|
||||||
|
|
||||||
|
setMinWidth(st::historyMessagesTTLLabel.minWidth
|
||||||
|
+ st.itemPadding.left());
|
||||||
|
|
||||||
|
sizeValue(
|
||||||
|
) | rpl::start_with_next([=](const QSize &s) {
|
||||||
|
_label->moveToLeft(
|
||||||
|
st.itemPadding.left(),
|
||||||
|
(s.height() - _label->height()) / 2);
|
||||||
|
}, lifetime());
|
||||||
|
|
||||||
|
initResizeHook(parent->sizeValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
not_null<QAction*> TextItem::action() const {
|
||||||
|
return _dummyAction;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TextItem::isEnabled() const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TextItem::contentHeight() const {
|
||||||
|
return _label->height();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
void AddPhoneMenu(not_null<Ui::PopupMenu*> menu, not_null<UserData*> user) {
|
||||||
|
if (user->isSelf()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
using Strings = std::vector<QString>;
|
||||||
|
const auto prefixes = user->session().account().appConfig().get<Strings>(
|
||||||
|
u"fragment_prefixes"_q,
|
||||||
|
std::vector<QString>());
|
||||||
|
{
|
||||||
|
const auto proj = [&phone = user->phone()](const QString &p) {
|
||||||
|
return phone.startsWith(p);
|
||||||
|
};
|
||||||
|
if (ranges::none_of(prefixes, proj)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const auto domains = user->session().account().appConfig().get<Strings>(
|
||||||
|
u"whitelisted_domains"_q,
|
||||||
|
std::vector<QString>());
|
||||||
|
const auto proj = [&, domain = u"fragment"_q](const QString &p) {
|
||||||
|
return p.contains(domain);
|
||||||
|
};
|
||||||
|
const auto it = ranges::find_if(domains, proj);
|
||||||
|
if (it == end(domains)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
menu->addSeparator(&st::expandedMenuSeparator);
|
||||||
|
const auto link = Ui::Text::Link(
|
||||||
|
tr::lng_info_mobile_context_menu_fragment_about_link(tr::now),
|
||||||
|
*it);
|
||||||
|
menu->addAction(base::make_unique_q<TextItem>(
|
||||||
|
menu->menu(),
|
||||||
|
st::reactionMenu.menu,
|
||||||
|
tr::lng_info_mobile_context_menu_fragment_about(
|
||||||
|
lt_link,
|
||||||
|
rpl::single(link),
|
||||||
|
Ui::Text::RichLangValue)));
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Profile
|
||||||
|
} // namespace Info
|
22
Telegram/SourceFiles/info/profile/info_profile_phone_menu.h
Normal file
22
Telegram/SourceFiles/info/profile/info_profile_phone_menu.h
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
/*
|
||||||
|
This file is part of Telegram Desktop,
|
||||||
|
the official desktop application for the Telegram messaging service.
|
||||||
|
|
||||||
|
For license and copyright information please follow this link:
|
||||||
|
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
class UserData;
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class PopupMenu;
|
||||||
|
} // namespace Ui
|
||||||
|
|
||||||
|
namespace Info {
|
||||||
|
namespace Profile {
|
||||||
|
|
||||||
|
void AddPhoneMenu(not_null<Ui::PopupMenu*> menu, not_null<UserData*> user);
|
||||||
|
|
||||||
|
} // namespace Profile
|
||||||
|
} // namespace Info
|
Loading…
Reference in New Issue
Block a user