aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-09-18 23:15:06 +0200
committerXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-10-09 14:08:59 +0200
commit2f1f04b3e80beaf2c7f333a14cb7e14eeafe935e (patch)
tree8595300e969dc7510804ea26e7d15d2d2e5ea7b7 /main/src/ui
parentbe7e0c2d5689d962fd2424e60ed21062d0674e95 (diff)
downloaddino-2f1f04b3e80beaf2c7f333a14cb7e14eeafe935e.tar.gz
Make send button settings-selectable
Diffstat (limited to 'main/src/ui')
-rw-r--r--main/src/ui/chat_input/chat_text_view.vala7
-rw-r--r--main/src/ui/chat_input/view.vala66
-rw-r--r--main/src/ui/settings_dialog.vala15
3 files changed, 55 insertions, 33 deletions
diff --git a/main/src/ui/chat_input/chat_text_view.vala b/main/src/ui/chat_input/chat_text_view.vala
index 6b85b082..0bfb41a9 100644
--- a/main/src/ui/chat_input/chat_text_view.vala
+++ b/main/src/ui/chat_input/chat_text_view.vala
@@ -76,8 +76,11 @@ public class ChatTextView : ScrolledWindow {
private bool on_text_input_key_press(EventKey event) {
if (event.keyval in new uint[]{Key.Return, Key.KP_Enter}) {
- if ((event.state & ModifierType.CONTROL_MASK) > 0) {
- text_view.buffer.insert_at_cursor("\n", 1);
+ Dino.Entities.Settings settings = Dino.Application.get_default().settings;
+
+ if ((event.state & ModifierType.SHIFT_MASK) > 0
+ || settings.enter_newline) {
+ text_view.buffer.insert_at_cursor("\n", 1);
} else if (text_view.buffer.text.strip() != "") {
send_text();
edit_history.reset_history();
diff --git a/main/src/ui/chat_input/view.vala b/main/src/ui/chat_input/view.vala
index 9de7c33f..454cff52 100644
--- a/main/src/ui/chat_input/view.vala
+++ b/main/src/ui/chat_input/view.vala
@@ -55,39 +55,43 @@ public class View : Box {
outer_box.add(encryption_widget);
- {
- MenuButton send_button = new MenuButton() {
- tooltip_text="Send message",
- relief=ReliefStyle.NONE,
- margin_top=3,
- valign=Align.CENTER,
- visible=true,
- sensitive=false
- };
-
- send_button.get_style_context().add_class("flat");
- send_button.get_style_context().add_class("dino-chatinput-button");
- send_button.image = new Image.from_icon_name("document-send", IconSize.BUTTON) {
- visible=true,
- icon_size=3
- };
-
- chat_text_view.text_view.buffer.changed.connect(() => {
- if (chat_text_view.text_view.buffer.text != "") {
- send_button.sensitive = true;
- }
- else {
- send_button.sensitive = false;
- }
- });
+ Dino.Entities.Settings settings = Dino.Application.get_default().settings;
+
+ MenuButton send_button = new MenuButton() {
+ tooltip_text="Send message",
+ relief=ReliefStyle.NONE,
+ margin_top=3,
+ valign=Align.CENTER,
+ visible=settings.send_button,
+ sensitive=false
+ };
+
+ settings.send_button_update.connect(() => {
+ send_button.visible = settings.send_button;
+ });
- send_button.button_release_event.connect(() => {
- chat_text_view.send_text();
- return true;
- });
+ send_button.get_style_context().add_class("flat");
+ send_button.get_style_context().add_class("dino-chatinput-button");
+ send_button.image = new Image.from_icon_name("document-send", IconSize.BUTTON) {
+ visible=true,
+ icon_size=3
+ };
+
+ chat_text_view.text_view.buffer.changed.connect(() => {
+ if (chat_text_view.text_view.buffer.text != "") {
+ send_button.sensitive = true;
+ }
+ else {
+ send_button.sensitive = false;
+ }
+ });
- outer_box.add(send_button);
- }
+ send_button.button_release_event.connect(() => {
+ chat_text_view.send_text();
+ return true;
+ });
+
+ outer_box.add(send_button);
Util.force_css(frame, "* { border-radius: 3px; }");
diff --git a/main/src/ui/settings_dialog.vala b/main/src/ui/settings_dialog.vala
index 59edef2c..fc1eb678 100644
--- a/main/src/ui/settings_dialog.vala
+++ b/main/src/ui/settings_dialog.vala
@@ -14,6 +14,8 @@ class SettingsDialog : Dialog {
[GtkChild] private unowned RadioButton encryption_radio_undecided;
[GtkChild] private unowned RadioButton encryption_radio_omemo;
[GtkChild] private unowned RadioButton encryption_radio_openpgp;
+ [GtkChild] private unowned CheckButton send_button_checkbutton;
+ [GtkChild] private unowned CheckButton enter_newline_checkbutton;
Dino.Entities.Settings settings = Dino.Application.get_default().settings;
@@ -28,6 +30,9 @@ class SettingsDialog : Dialog {
encryption_radio_undecided.active = settings.default_encryption == Encryption.UNKNOWN;
encryption_radio_omemo.active = settings.default_encryption == Encryption.OMEMO;
encryption_radio_openpgp.active = settings.default_encryption == Encryption.PGP;
+ send_button_checkbutton.active = settings.send_button;
+ enter_newline_checkbutton.active = settings.enter_newline;
+ enter_newline_checkbutton.sensitive = settings.send_button;
typing_checkbutton.toggled.connect(() => { settings.send_typing = typing_checkbutton.active; } );
marker_checkbutton.toggled.connect(() => { settings.send_marker = marker_checkbutton.active; } );
@@ -52,6 +57,16 @@ class SettingsDialog : Dialog {
settings.default_encryption = Encryption.PGP;
}
});
+
+ send_button_checkbutton.toggled.connect(() => { settings.send_button = send_button_checkbutton.active; });
+ enter_newline_checkbutton.toggled.connect(() => { settings.enter_newline = enter_newline_checkbutton.active; });
+ settings.send_button_update.connect((visible) => {
+ enter_newline_checkbutton.sensitive = visible;
+
+ if (visible == false) {
+ enter_newline_checkbutton.active = visible;
+ }
+ });
}
}