From 51a23728694a3f1312cc9396fc093ca178457c3c Mon Sep 17 00:00:00 2001
From: fiaxh <git@lightrise.org>
Date: Wed, 22 Apr 2020 15:44:12 +0200
Subject: Add file upload preview

fixes #756
---
 main/src/ui/chat_input/chat_input_controller.vala | 15 +++++++--------
 main/src/ui/chat_input/view.vala                  | 17 +++--------------
 2 files changed, 10 insertions(+), 22 deletions(-)

(limited to 'main/src/ui/chat_input')

diff --git a/main/src/ui/chat_input/chat_input_controller.vala b/main/src/ui/chat_input/chat_input_controller.vala
index 4844ff6c..fb7f88b1 100644
--- a/main/src/ui/chat_input/chat_input_controller.vala
+++ b/main/src/ui/chat_input/chat_input_controller.vala
@@ -9,6 +9,7 @@ namespace Dino.Ui {
 public class ChatInputController : Object {
 
     public signal void activate_last_message_correction();
+    public signal void file_picker_selected();
 
     public new string? conversation_display_name { get; set; }
     public string? conversation_topic { get; set; }
@@ -33,11 +34,12 @@ public class ChatInputController : Object {
 
         chat_input.chat_text_view.text_view.buffer.changed.connect(on_text_input_changed);
         chat_input.chat_text_view.text_view.key_press_event.connect(on_text_input_key_press);
+
         chat_text_view_controller.send_text.connect(send_text);
 
         chat_input.encryption_widget.encryption_changed.connect(on_encryption_changed);
 
-        stream_interactor.get_module(FileManager.IDENTITY).upload_available.connect(on_upload_available);
+        chat_input.file_button.clicked.connect(() => file_picker_selected());
     }
 
     public void set_conversation(Conversation conversation) {
@@ -51,6 +53,10 @@ public class ChatInputController : Object {
         chat_text_view_controller.initialize_for_conversation(conversation);
     }
 
+    public void set_file_upload_active(bool active) {
+        chat_input.set_file_upload_active(active);
+    }
+
     private void on_encryption_changed(Plugins.EncryptionListEntry? encryption_entry) {
         reset_input_field_status();
 
@@ -72,13 +78,6 @@ public class ChatInputController : Object {
         set_input_field_status(new Plugins.InputFieldStatus("", Plugins.InputFieldStatus.MessageType.NONE, Plugins.InputFieldStatus.InputState.NORMAL));
     }
 
-    private void on_upload_available(Account account) {
-        if (conversation != null && conversation.account.equals(account)) {
-            chat_input.file_button.visible = true;
-            chat_input.file_separator.visible = true;
-        }
-    }
-
     private void send_text() {
         // Don't do anything if we're in a NO_SEND state. Don't clear the chat input, don't send.
         if (input_field_status.input_state == Plugins.InputFieldStatus.InputState.NO_SEND) {
diff --git a/main/src/ui/chat_input/view.vala b/main/src/ui/chat_input/view.vala
index 166ead2e..b99cd1c4 100644
--- a/main/src/ui/chat_input/view.vala
+++ b/main/src/ui/chat_input/view.vala
@@ -33,17 +33,9 @@ public class View : Box {
 
         encryption_widget = new EncryptionButton(stream_interactor) { relief=ReliefStyle.NONE, margin_top=3, valign=Align.START, visible=true };
 
-        file_button.clicked.connect(() => {
-            PreviewFileChooserNative chooser = new PreviewFileChooserNative("Select file", get_toplevel() as Gtk.Window, FileChooserAction.OPEN, "Select", "Cancel");
-            if (chooser.run() == Gtk.ResponseType.ACCEPT) {
-                string uri = chooser.get_filename();
-                stream_interactor.get_module(FileManager.IDENTITY).send_file.begin(uri, conversation);
-            }
-        });
         file_button.get_style_context().add_class("dino-attach-button");
 
         encryption_widget.get_style_context().add_class("dino-chatinput-button");
-        encryption_widget.encryption_changed.connect(update_file_transfer_availability);
 
         // Emoji button for emoji picker (recents don't work < 3.22.19, category icons don't work <3.23.2)
         if (Gtk.get_major_version() >= 3 && Gtk.get_minor_version() >= 24) {
@@ -68,18 +60,15 @@ public class View : Box {
         return this;
     }
 
-    private void update_file_transfer_availability() {
-        bool upload_available = stream_interactor.get_module(FileManager.IDENTITY).is_upload_available(conversation);
-        file_button.visible = upload_available;
-        file_separator.visible = upload_available;
+    public void set_file_upload_active(bool active) {
+        file_button.visible = active;
+        file_separator.visible = active;
     }
 
     public void initialize_for_conversation(Conversation conversation) {
         if (this.conversation != null) entry_cache[this.conversation] = chat_text_view.text_view.buffer.text;
         this.conversation = conversation;
 
-        update_file_transfer_availability();
-
         chat_text_view.text_view.buffer.text = "";
         if (entry_cache.has_key(conversation)) {
             chat_text_view.text_view.buffer.text = entry_cache[conversation];
-- 
cgit v1.2.3-70-g09d2