[Option][GUI] Confirm before calls

This commit is contained in:
Eric Kotato 2022-08-26 22:37:54 +03:00 committed by Eric Kotato
parent e057642851
commit c7cfe23892
7 changed files with 67 additions and 4 deletions

View file

@ -63,6 +63,9 @@
"ktg_profile_supergroup_id": "Supergroup ID",
"ktg_profile_channel_id": "Channel ID",
"ktg_settings_show_phone_number": "Show phone in drawer",
"ktg_settings_call_confirm": "Confirm before calling",
"ktg_call_sure": "Are you sure you want to call this user?",
"ktg_call_button": "Call",
"ktg_settings_adaptive_bubbles": "Adaptive bubbles",
"ktg_settings_filters": "Folders",
"ktg_settings_messages": "Messages",

View file

@ -7,7 +7,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#include "calls/calls_box_controller.h"
#include "kotato/kotato_lang.h"
#include "kotato/kotato_settings.h"
#include "lang/lang_keys.h"
#include "ui/boxes/confirm_box.h"
#include "ui/effects/ripple_animation.h"
#include "ui/widgets/labels.h"
#include "ui/widgets/checkbox.h"
@ -388,7 +391,18 @@ void BoxController::rowRightActionClicked(not_null<PeerListRow*> row) {
auto user = row->peer()->asUser();
Assert(user != nullptr);
Core::App().calls().startOutgoingCall(user, false);
if (::Kotato::JsonSettings::GetBool("confirm_before_calls")) {
Ui::show(Ui::MakeConfirmBox({
.text = ktr("ktg_call_sure"),
.confirmed = [=] {
Ui::hideLayer();
Core::App().calls().startOutgoingCall(user, false);
},
.confirmText = ktr("ktg_call_button"),
}));
} else {
Core::App().calls().startOutgoingCall(user, false);
}
}
void BoxController::receivedCalls(const QVector<MTPMessage> &result) {

View file

@ -9,6 +9,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include <rpl/combine.h>
#include <rpl/combine_previous.h>
#include "kotato/kotato_lang.h"
#include "kotato/kotato_settings.h"
#include "history/history.h"
#include "history/view/history_view_send_action.h"
#include "boxes/add_contact_box.h"
@ -234,7 +236,18 @@ void TopBarWidget::refreshLang() {
void TopBarWidget::call() {
if (const auto peer = _activeChat.key.peer()) {
if (const auto user = peer->asUser()) {
Core::App().calls().startOutgoingCall(user, false);
if (::Kotato::JsonSettings::GetBool("confirm_before_calls")) {
Ui::show(Ui::MakeConfirmBox({
.text = ktr("ktg_call_sure"),
.confirmed = [=] {
Ui::hideLayer();
Core::App().calls().startOutgoingCall(user, false);
},
.confirmText = ktr("ktg_call_button"),
}));
} else {
Core::App().calls().startOutgoingCall(user, false);
}
}
}
}

View file

@ -7,6 +7,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#include "history/view/media/history_view_call.h"
#include "kotato/kotato_settings.h"
#include "kotato/kotato_lang.h"
#include "boxes/abstract_box.h" // Ui::hideLayer().
#include "ui/boxes/confirm_box.h"
#include "lang/lang_keys.h"
#include "ui/chat/chat_style.h"
#include "ui/text/format_values.h"
@ -61,7 +65,18 @@ QSize Call::countOptimalSize() {
const auto video = _video;
_link = std::make_shared<LambdaClickHandler>([=] {
if (user) {
Core::App().calls().startOutgoingCall(user, video);
if (::Kotato::JsonSettings::GetBool("confirm_before_calls")) {
Ui::show(Ui::MakeConfirmBox({
.text = ktr("ktg_call_sure"),
.confirmed = [=] {
Ui::hideLayer();
Core::App().calls().startOutgoingCall(user, false);
},
.confirmText = ktr("ktg_call_button"),
}));
} else {
Core::App().calls().startOutgoingCall(user, video);
}
}
});

View file

@ -7,6 +7,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#include "info/info_wrap_widget.h"
#include "kotato/kotato_lang.h"
#include "kotato/kotato_settings.h"
#include "kotato/kotato_settings_menu.h"
#include "info/profile/info_profile_widget.h"
#include "info/profile/info_profile_values.h"
@ -511,7 +513,18 @@ void WrapWidget::addProfileCallsButton() {
? st::infoLayerTopBarCall
: st::infoTopBarCall))
)->addClickHandler([=] {
Core::App().calls().startOutgoingCall(user, false);
if (::Kotato::JsonSettings::GetBool("confirm_before_calls")) {
Ui::show(Ui::MakeConfirmBox({
.text = ktr("ktg_call_sure"),
.confirmed = [=] {
Ui::hideLayer();
Core::App().calls().startOutgoingCall(user, false);
},
.confirmText = ktr("ktg_call_button"),
}));
} else {
Core::App().calls().startOutgoingCall(user, false);
}
});
}, _topBar->lifetime());

View file

@ -349,6 +349,9 @@ const std::map<QString, Definition, std::greater<QString>> DefinitionMap {
{ "replaces", {
.type = SettingType::QJsonArraySetting,
.limitHandler = ReplacesLimit(), }},
{ "confirm_before_calls", {
.type = SettingType::BoolSetting,
.defaultValue = true, }},
};
using OldOptionKey = QString;

View file

@ -355,6 +355,8 @@ void SetupKotatoOther(
::Kotato::JsonSettings::Write();
}));
});
SettingsMenuJsonSwitch(ktg_settings_call_confirm, confirm_before_calls);
}
Kotato::Kotato(