[gnome-sound-recorder] Dialog on delete recording



commit ab53b0cbcc810a1bd06ccce51a77e315692fa902
Author: Kavan Mevada <kavanmevada gmail com>
Date:   Wed Sep 9 17:46:36 2020 +0530

    Dialog on delete recording

 data/ui/help-overlay.ui |  4 ++--
 data/ui/recorder.ui     |  2 +-
 po/POTFILES.in          |  1 +
 src/recorderWidget.js   | 48 ++++++++++++++++++++++++++++++++++++++++++------
 4 files changed, 46 insertions(+), 9 deletions(-)
---
diff --git a/data/ui/help-overlay.ui b/data/ui/help-overlay.ui
index 8f7d3a7..fc559ef 100644
--- a/data/ui/help-overlay.ui
+++ b/data/ui/help-overlay.ui
@@ -65,7 +65,7 @@
               <object class="GtkShortcutsShortcut">
                 <property name="visible">1</property>
                 <property name="accelerator">&lt;ctrl&gt;C</property>
-                <property name="title" translatable="yes" context="shortcut window">Cancel</property>
+                <property name="title" translatable="yes" context="shortcut window">Delete</property>
               </object>
             </child>
           </object>
@@ -121,4 +121,4 @@
       </object>
     </child>
   </object>
-</interface>
\ No newline at end of file
+</interface>
diff --git a/data/ui/recorder.ui b/data/ui/recorder.ui
index f7c60ab..b70f994 100644
--- a/data/ui/recorder.ui
+++ b/data/ui/recorder.ui
@@ -150,7 +150,7 @@
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
-                    <property name="tooltip_text" translatable="yes">Cancel Recording</property>
+                    <property name="tooltip_text" translatable="yes">Delete Recording</property>
                     <property name="halign">center</property>
                     <property name="valign">center</property>
                     <property name="action_name">recorder.cancel</property>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index cdab85f..73bfaac 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -10,6 +10,7 @@ data/ui/window.ui
 src/application.js
 src/main.js
 src/recorder.js
+src/recorderWidget.js
 src/recordingList.js
 src/row.js
 src/utils.js
diff --git a/src/recorderWidget.js b/src/recorderWidget.js
index 8d996f3..a487c0f 100644
--- a/src/recorderWidget.js
+++ b/src/recorderWidget.js
@@ -1,5 +1,5 @@
 /* exported RecorderState RecorderWidget */
-const { Gio, GObject, Gtk } = imports.gi;
+const { Gdk, Gio, GObject, Gtk } = imports.gi;
 const { formatTime } = imports.utils;
 const { WaveForm, WaveType } = imports.waveform;
 
@@ -82,12 +82,48 @@ var RecorderWidget = GObject.registerClass({
     }
 
     onCancel() {
-        const recording = this.recorder.stop();
-        this.state = RecorderState.STOPPED;
-        this.waveform.destroy();
+        this.onPause();
+        let dialog = new Gtk.MessageDialog({
+            modal: true,
+            destroy_with_parent: true,
+            buttons: Gtk.ButtonsType.NONE,
+            message_type: Gtk.MessageType.QUESTION,
+            text: _('Delete recording?'),
+            secondary_text: _('This recording will not be saved.'),
+        });
+
+        dialog.set_default_response(Gtk.ResponseType.NO);
+        dialog.add_button(_('Resume'), Gtk.ResponseType.NO);
+        dialog.add_button(_('Delete'), Gtk.ResponseType.YES)
+            .get_style_context().add_class('destructive-action');
+
+        dialog.set_transient_for(Gio.Application.get_default().get_active_window());
+        dialog.connect('response', (_, response) => {
+            switch (response) {
+            case Gtk.ResponseType.YES: {
+                const recording = this.recorder.stop();
+                this.state = RecorderState.STOPPED;
+                this.waveform.destroy();
+
+                recording.delete();
+                this.emit('canceled');
+                break;
+            }
+            case Gtk.ResponseType.NO:
+                this.onResume();
+                break;
+            }
+
+            dialog.close();
+        });
+
+        dialog.connect('key-press-event', (_, event) => {
+            const key = event.get_keyval()[1];
+            if (key === Gdk.KEY_Escape)
+                dialog.response(Gtk.ResponseType.NO);
+        });
 
-        recording.delete();
-        this.emit('canceled');
+        dialog.show();
     }
 
     onStop() {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]