[simple-scan] Implement prompt to load autosaved data.



commit c0e0cf0af81e121ef8eb44dc5cbba96352e4178c
Author: Victor Mireyev <victor mireyev gmail com>
Date:   Thu Nov 28 21:43:11 2019 +0000

    Implement prompt to load autosaved data.

 src/app-window.vala       | 42 +++++++++++++++++++++++++++++-------------
 src/autosave-manager.vala |  6 ++++++
 2 files changed, 35 insertions(+), 13 deletions(-)
---
diff --git a/src/app-window.vala b/src/app-window.vala
index 7901cd7..16f10b7 100644
--- a/src/app-window.vala
+++ b/src/app-window.vala
@@ -193,19 +193,6 @@ public class AppWindow : Gtk.ApplicationWindow
         load ();
 
         clear_document ();
-        autosave_manager = new AutosaveManager ();
-        autosave_manager.book = book;
-        autosave_manager.load ();
-
-        if (book.n_pages == 0)
-            book_needs_saving = false;
-        else
-        {
-            stack.set_visible_child_name ("document");
-            book_view.selected_page = book.get_page (0);
-            book_needs_saving = true;
-            book_changed_cb (book);
-        }
     }
 
     ~AppWindow ()
@@ -283,6 +270,20 @@ public class AppWindow : Gtk.ApplicationWindow
         update_scan_status ();
     }
 
+    private bool prompt_to_load_autosaved_book ()
+    {
+        var dialog = new Gtk.MessageDialog (this,
+                                            Gtk.DialogFlags.MODAL,
+                                            Gtk.MessageType.QUESTION,
+                                            Gtk.ButtonsType.YES_NO,
+                                            /* Contents of dialog that shows if autosaved book should be 
loaded. */
+                                            _("An autosaved book exists. Do you want to open it?"));
+        dialog.set_default_response(Gtk.ResponseType.YES);
+        var response = dialog.run ();
+        dialog.destroy ();
+        return response == Gtk.ResponseType.YES;
+    }
+
     private string? choose_file_location ()
     {
         /* Get directory to save to */
@@ -1769,6 +1770,21 @@ public class AppWindow : Gtk.ApplicationWindow
     public void start ()
     {
         visible = true;
+        autosave_manager = new AutosaveManager ();
+        autosave_manager.book = book;
+
+        if (autosave_manager.exists () && prompt_to_load_autosaved_book ())
+            autosave_manager.load ();
+
+        if (book.n_pages == 0)
+            book_needs_saving = false;
+        else
+        {
+            stack.set_visible_child_name ("document");
+            book_view.selected_page = book.get_page (0);
+            book_needs_saving = true;
+            book_changed_cb (book);
+        }
     }
 }
 
diff --git a/src/autosave-manager.vala b/src/autosave-manager.vala
index 84a1e00..35ada7f 100644
--- a/src/autosave-manager.vala
+++ b/src/autosave-manager.vala
@@ -59,6 +59,12 @@ public class AutosaveManager
         page_filenames = new HashTable<Page, string> (direct_hash, direct_equal);
     }
 
+    public bool exists ()
+    {
+        var file = File.new_for_path (AUTOSAVE_PATH);
+        return file.query_exists ();
+    }
+
     public void load ()
     {
         debug ("Loading autosave information");


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