[geary: 1/2] Move undo to in app notifications
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary: 1/2] Move undo to in app notifications
- Date: Wed, 26 Jun 2019 03:35:43 +0000 (UTC)
commit e2896f303c636b105943abba40f29697bfdfadcf
Author: Mete Can Eris <caneris gmail com>
Date: Wed Jun 26 03:35:27 2019 +0000
Move undo to in app notifications
src/client/application/application-controller.vala | 28 ++++++++++++----------
src/client/components/main-toolbar.vala | 9 -------
ui/main-toolbar.ui | 21 ----------------
3 files changed, 16 insertions(+), 42 deletions(-)
---
diff --git a/src/client/application/application-controller.vala
b/src/client/application/application-controller.vala
index 90fcd0ea..ba244cf5 100644
--- a/src/client/application/application-controller.vala
+++ b/src/client/application/application-controller.vala
@@ -8,7 +8,7 @@
/**
- * Primary controller for a application instance.
+ * Primary controller for an application instance.
*
* @see GearyAplication
*/
@@ -172,6 +172,10 @@ public class Application.Controller : Geary.BaseObject {
private uint operation_count = 0;
private Geary.Revokable? revokable = null;
+ // Store the description for the revokable for tooltip display.
+ // This was previously stored within the context of undo button of the main toolbar.
+ private string revokable_description { get; set; }
+
// List of windows we're waiting to close before Geary closes.
private Gee.List<ComposerWidget> waiting_to_close = new Gee.ArrayList<ComposerWidget>();
@@ -1702,7 +1706,7 @@ public class Application.Controller : Geary.BaseObject {
Cancellable? cancellable) {
try {
save_revokable(yield source_folder.move_email_async(ids, destination, cancellable),
- _("Undo move (Ctrl+Z)"));
+ ngettext("Moved %d message to %s", "Moved %d messages to %s", ids.size).printf(ids.size,
destination.to_string()));
} catch (Error err) {
debug("%s: Unable to move %d emails: %s", source_folder.to_string(), ids.size,
err.message);
@@ -2302,7 +2306,7 @@ public class Application.Controller : Geary.BaseObject {
Geary.FolderPath trash_path = (yield current_account.get_required_special_folder_async(
Geary.SpecialFolderType.TRASH, cancellable)).path;
save_revokable(yield supports_move.move_email_async(ids, trash_path, cancellable),
- _("Undo trash (Ctrl+Z)"));
+ ngettext("Trashed %d message", "Trashed %d messages", ids.size).printf(ids.size));
} else {
debug("Folder %s doesn't support move or account %s doesn't have a trash folder",
current_folder.to_string(), current_account.to_string());
@@ -2352,7 +2356,7 @@ public class Application.Controller : Geary.BaseObject {
debug("Folder %s doesn't support archive", current_folder.to_string());
} else {
save_revokable(yield supports_archive.archive_email_async(ids, cancellable),
- _("Undo archive (Ctrl+Z)"));
+ ngettext("Archived %d message", "Archived %d messages", ids.size).printf(ids.size));
}
return;
@@ -2385,7 +2389,8 @@ public class Application.Controller : Geary.BaseObject {
}
// store new revokable
- revokable = new_revokable;
+ this.revokable = new_revokable;
+ this.revokable_description = description;
// connect to new revokable
if (revokable != null) {
@@ -2395,11 +2400,11 @@ public class Application.Controller : Geary.BaseObject {
}
if (this.main_window != null) {
- if (revokable != null && description != null)
- this.main_window.main_toolbar.undo_tooltip = description;
- else
- this.main_window.main_toolbar.undo_tooltip = _("Undo (Ctrl+Z)");
-
+ if (this.revokable != null && this.revokable_description != null) {
+ InAppNotification ian = new InAppNotification(this.revokable_description);
+ ian.set_button(_("Undo"), "win." + GearyApplication.ACTION_UNDO);
+ this.main_window.add_notification(ian);
+ }
update_revokable_action();
}
}
@@ -2422,8 +2427,7 @@ public class Application.Controller : Geary.BaseObject {
if (committed_revokable == null)
return;
- // use existing description
- save_revokable(committed_revokable, this.main_window.main_toolbar.undo_tooltip);
+ save_revokable(committed_revokable, this.revokable_description);
}
private void on_revoke() {
diff --git a/src/client/components/main-toolbar.vala b/src/client/components/main-toolbar.vala
index 9a1b30cd..c7ab8273 100644
--- a/src/client/components/main-toolbar.vala
+++ b/src/client/components/main-toolbar.vala
@@ -26,11 +26,6 @@ public class MainToolbar : Gtk.Box {
public int selected_conversations { get; set; }
// Whether to show the trash or the delete button
public bool show_trash_button { get; set; default = true; }
- // The tooltip of the Undo-button
- public string undo_tooltip {
- owned get { return this.undo_button.tooltip_text; }
- set { this.undo_button.tooltip_text = value; }
- }
// Folder header elements
[GtkChild]
@@ -57,10 +52,6 @@ public class MainToolbar : Gtk.Box {
[GtkChild]
private Gtk.ToggleButton find_button;
- // Other
- [GtkChild]
- private Gtk.Button undo_button;
-
// Load these at construction time
private Gtk.Image trash_image = new Gtk.Image.from_icon_name("user-trash-symbolic", Gtk.IconSize.MENU);
private Gtk.Image delete_image = new Gtk.Image.from_icon_name("edit-delete-symbolic", Gtk.IconSize.MENU);
diff --git a/ui/main-toolbar.ui b/ui/main-toolbar.ui
index dcbc4c91..7e739880 100644
--- a/ui/main-toolbar.ui
+++ b/ui/main-toolbar.ui
@@ -277,27 +277,6 @@
<property name="position">2</property>
</packing>
</child>
- <child>
- <object class="GtkButton" id="undo_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="focus_on_click">False</property>
- <property name="receives_default">False</property>
- <property name="action_name">win.undo</property>
- <property name="always_show_image">True</property>
- <child>
- <object class="GtkImage" id="undo_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">edit-undo-symbolic</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="pack_type">end</property>
- <property name="position">3</property>
- </packing>
- </child>
<child>
<object class="GtkBox" id="archive_trash_delete_buttons">
<property name="visible">True</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]