settings_dialog: Use AdwPreferencesWindow and AdwActionRow
AdwPreferencesWindow contains a nice API for preferences windows, and AdwActionRow is the widget to use for rows of preferences.
This commit is contained in:
parent
5568bbc6bf
commit
b19986a685
|
@ -1,66 +1,81 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<interface>
|
<interface>
|
||||||
<template class="DinoUiSettingsDialog">
|
<template class="DinoUiSettingsDialog" parent="AdwPreferencesWindow">
|
||||||
<property name="title" translatable="yes">Settings</property>
|
<property name="default-width">500</property>
|
||||||
|
<property name="default-height">420</property>
|
||||||
<property name="modal">True</property>
|
<property name="modal">True</property>
|
||||||
<child type="titlebar">
|
<property name="search-enabled">False</property>
|
||||||
<object class="GtkHeaderBar">
|
<child>
|
||||||
</object>
|
<object class="AdwPreferencesPage">
|
||||||
</child>
|
|
||||||
<child internal-child="content_area">
|
|
||||||
<object class="GtkBox">
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkGrid">
|
<object class="AdwPreferencesGroup">
|
||||||
<property name="margin_top">10</property>
|
|
||||||
<property name="margin_bottom">10</property>
|
|
||||||
<property name="margin_start">10</property>
|
|
||||||
<property name="margin_end">10</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="row-spacing">10</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="typing_checkbutton">
|
<object class="AdwActionRow">
|
||||||
<property name="label" translatable="yes">Send typing notifications</property>
|
<property name="title" translatable="yes">Send _Typing Notifications</property>
|
||||||
<layout>
|
<property name="use-underline">True</property>
|
||||||
<property name="column">0</property>
|
<property name="activatable-widget">typing_switch</property>
|
||||||
<property name="row">0</property>
|
<child type="suffix">
|
||||||
</layout>
|
<object class="GtkSwitch" id="typing_switch">
|
||||||
|
<property name="valign">center</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="marker_checkbutton">
|
<object class="AdwActionRow">
|
||||||
<property name="label" translatable="yes">Send read receipts</property>
|
<property name="title" translatable="yes">Send _Read Receipts</property>
|
||||||
<layout>
|
<property name="use-underline">True</property>
|
||||||
<property name="column">0</property>
|
<property name="activatable-widget">marker_switch</property>
|
||||||
<property name="row">1</property>
|
<child type="suffix">
|
||||||
</layout>
|
<object class="GtkSwitch" id="marker_switch">
|
||||||
|
<property name="valign">center</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="AdwPreferencesGroup">
|
||||||
|
<child>
|
||||||
|
<object class="AdwActionRow">
|
||||||
|
<property name="title" translatable="yes">_Notifications</property>
|
||||||
|
<property name="subtitle" translatable="yes">Notify when a new message arrives</property>
|
||||||
|
<property name="use-underline">True</property>
|
||||||
|
<property name="activatable-widget">notification_switch</property>
|
||||||
|
<child type="suffix">
|
||||||
|
<object class="GtkSwitch" id="notification_switch">
|
||||||
|
<property name="valign">center</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="AdwPreferencesGroup">
|
||||||
|
<child>
|
||||||
|
<object class="AdwActionRow">
|
||||||
|
<property name="title" translatable="yes">_Convert Smileys to Emoji</property>
|
||||||
|
<property name="use-underline">True</property>
|
||||||
|
<property name="activatable-widget">emoji_switch</property>
|
||||||
|
<child type="suffix">
|
||||||
|
<object class="GtkSwitch" id="emoji_switch">
|
||||||
|
<property name="valign">center</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="notification_checkbutton">
|
<object class="AdwActionRow">
|
||||||
<property name="label" translatable="yes">Notify when a new message arrives</property>
|
<property name="title" translatable="yes">Check _Spelling</property>
|
||||||
<layout>
|
<property name="use-underline">True</property>
|
||||||
<property name="column">0</property>
|
<property name="activatable-widget">check_spelling_switch</property>
|
||||||
<property name="row">2</property>
|
<child type="suffix">
|
||||||
</layout>
|
<object class="GtkSwitch" id="check_spelling_switch">
|
||||||
</object>
|
<property name="valign">center</property>
|
||||||
</child>
|
</object>
|
||||||
<child>
|
</child>
|
||||||
<object class="GtkCheckButton" id="emoji_checkbutton">
|
|
||||||
<property name="label" translatable="yes">Convert smileys to emojis</property>
|
|
||||||
<layout>
|
|
||||||
<property name="column">0</property>
|
|
||||||
<property name="row">3</property>
|
|
||||||
</layout>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkCheckButton" id="check_spelling_checkbutton">
|
|
||||||
<property name="label" translatable="yes">Check spelling</property>
|
|
||||||
<layout>
|
|
||||||
<property name="column">0</property>
|
|
||||||
<property name="row">4</property>
|
|
||||||
</layout>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
|
|
@ -3,30 +3,30 @@ using Gtk;
|
||||||
namespace Dino.Ui {
|
namespace Dino.Ui {
|
||||||
|
|
||||||
[GtkTemplate (ui = "/im/dino/Dino/settings_dialog.ui")]
|
[GtkTemplate (ui = "/im/dino/Dino/settings_dialog.ui")]
|
||||||
class SettingsDialog : Dialog {
|
class SettingsDialog : Adw.PreferencesWindow {
|
||||||
|
|
||||||
[GtkChild] private unowned CheckButton typing_checkbutton;
|
[GtkChild] private unowned Switch typing_switch;
|
||||||
[GtkChild] private unowned CheckButton marker_checkbutton;
|
[GtkChild] private unowned Switch marker_switch;
|
||||||
[GtkChild] private unowned CheckButton notification_checkbutton;
|
[GtkChild] private unowned Switch notification_switch;
|
||||||
[GtkChild] private unowned CheckButton emoji_checkbutton;
|
[GtkChild] private unowned Switch emoji_switch;
|
||||||
[GtkChild] private unowned CheckButton check_spelling_checkbutton;
|
[GtkChild] private unowned Switch check_spelling_switch;
|
||||||
|
|
||||||
Dino.Entities.Settings settings = Dino.Application.get_default().settings;
|
Dino.Entities.Settings settings = Dino.Application.get_default().settings;
|
||||||
|
|
||||||
public SettingsDialog() {
|
public SettingsDialog() {
|
||||||
Object(use_header_bar : Util.use_csd() ? 1 : 0);
|
Object();
|
||||||
|
|
||||||
typing_checkbutton.active = settings.send_typing;
|
typing_switch.active = settings.send_typing;
|
||||||
marker_checkbutton.active = settings.send_marker;
|
marker_switch.active = settings.send_marker;
|
||||||
notification_checkbutton.active = settings.notifications;
|
notification_switch.active = settings.notifications;
|
||||||
emoji_checkbutton.active = settings.convert_utf8_smileys;
|
emoji_switch.active = settings.convert_utf8_smileys;
|
||||||
check_spelling_checkbutton.active = settings.check_spelling;
|
check_spelling_switch.active = settings.check_spelling;
|
||||||
|
|
||||||
typing_checkbutton.toggled.connect(() => { settings.send_typing = typing_checkbutton.active; } );
|
typing_switch.activate.connect(() => { settings.send_typing = typing_switch.active; } );
|
||||||
marker_checkbutton.toggled.connect(() => { settings.send_marker = marker_checkbutton.active; } );
|
marker_switch.activate.connect(() => { settings.send_marker = marker_switch.active; } );
|
||||||
notification_checkbutton.toggled.connect(() => { settings.notifications = notification_checkbutton.active; } );
|
notification_switch.activate.connect(() => { settings.notifications = notification_switch.active; } );
|
||||||
emoji_checkbutton.toggled.connect(() => { settings.convert_utf8_smileys = emoji_checkbutton.active; });
|
emoji_switch.activate.connect(() => { settings.convert_utf8_smileys = emoji_switch.active; });
|
||||||
check_spelling_checkbutton.toggled.connect(() => { settings.check_spelling = check_spelling_checkbutton.active; });
|
check_spelling_switch.activate.connect(() => { settings.check_spelling = check_spelling_switch.active; });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue