mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-07-25 06:54:43 +00:00
@@ -347,6 +347,70 @@ void BuildWindowTitleSection(SectionBuilder &builder) {
|
||||
builder.addSkip();
|
||||
}
|
||||
|
||||
#if !defined Q_OS_WIN && !defined Q_OS_MAC
|
||||
void BuildWindowCloseBehaviorSection(SectionBuilder &builder) {
|
||||
using Behavior = Core::Settings::CloseBehavior;
|
||||
|
||||
const auto settings = &Core::App().settings();
|
||||
auto shown = Platform::TrayIconSupported()
|
||||
? (Core::App().settings().workModeValue(
|
||||
) | rpl::map([](Core::Settings::WorkMode mode) {
|
||||
return (mode == Core::Settings::WorkMode::WindowOnly);
|
||||
}) | rpl::distinct_until_changed() | rpl::type_erased())
|
||||
: rpl::producer<bool>(nullptr);
|
||||
|
||||
builder.scope([&] {
|
||||
builder.addDivider();
|
||||
builder.addSkip();
|
||||
builder.addSubsectionTitle({
|
||||
.id = u"advanced/window_close"_q,
|
||||
.title = tr::lng_settings_window_close(),
|
||||
.keywords = { u"close"_q, u"window"_q, u"background"_q, u"quit"_q, u"taskbar"_q, u"minimize"_q },
|
||||
});
|
||||
|
||||
builder.add([settings](const WidgetContext &ctx) {
|
||||
const auto container = ctx.container.get();
|
||||
auto wrap = object_ptr<Ui::VerticalLayout>(container);
|
||||
const auto inner = wrap.data();
|
||||
|
||||
const auto group = std::make_shared<Ui::RadioenumGroup<Behavior>>(
|
||||
settings->closeBehavior());
|
||||
const auto addRadio = [&](Behavior value, const QString &label) {
|
||||
inner->add(
|
||||
object_ptr<Ui::Radioenum<Behavior>>(
|
||||
inner,
|
||||
group,
|
||||
value,
|
||||
label,
|
||||
st::settingsSendType),
|
||||
st::settingsSendTypePadding);
|
||||
};
|
||||
|
||||
addRadio(
|
||||
Behavior::RunInBackground,
|
||||
tr::lng_settings_run_in_background(tr::now));
|
||||
addRadio(
|
||||
Behavior::CloseToTaskbar,
|
||||
tr::lng_settings_close_to_taskbar(tr::now));
|
||||
addRadio(
|
||||
Behavior::Quit,
|
||||
tr::lng_settings_quit_on_close(tr::now));
|
||||
|
||||
group->value() | rpl::filter([=](Behavior value) {
|
||||
return (value != settings->closeBehavior());
|
||||
}) | rpl::on_next([=](Behavior value) {
|
||||
settings->setCloseBehavior(value);
|
||||
Local::writeSettings();
|
||||
}, inner->lifetime());
|
||||
|
||||
return SectionBuilder::WidgetToAdd{ .widget = std::move(wrap) };
|
||||
});
|
||||
|
||||
builder.addSkip();
|
||||
}, std::move(shown));
|
||||
}
|
||||
#endif // !Q_OS_WIN && !Q_OS_MAC
|
||||
|
||||
void BuildSystemIntegrationSection(SectionBuilder &builder) {
|
||||
const auto controller = builder.controller();
|
||||
const auto settings = &Core::App().settings();
|
||||
@@ -1126,6 +1190,9 @@ const auto kMeta = BuildHelper({
|
||||
BuildDataStorageSection(builder);
|
||||
BuildAutoDownloadSection(builder);
|
||||
BuildWindowTitleSection(builder);
|
||||
#if !defined Q_OS_WIN && !defined Q_OS_MAC
|
||||
BuildWindowCloseBehaviorSection(builder);
|
||||
#endif
|
||||
BuildSystemIntegrationSection(builder);
|
||||
BuildPerformanceSection(builder);
|
||||
BuildSpellcheckerSection(builder);
|
||||
|
||||
Reference in New Issue
Block a user