[easytag] Simplify application window file list navigation



commit 2c202d8e884da7d0749cf907f22c15de204f64b5
Author: David King <amigadave amigadave com>
Date:   Sat Feb 21 11:16:31 2015 +0000

    Simplify application window file list navigation
    
    Factor out the common code to a separate function.

 src/application_window.c |  107 ++++++++++++++--------------------------------
 1 files changed, 32 insertions(+), 75 deletions(-)
---
diff --git a/src/application_window.c b/src/application_window.c
index 163491c..ea44c89 100644
--- a/src/application_window.c
+++ b/src/application_window.c
@@ -1272,33 +1272,20 @@ on_go_default (GSimpleAction *action,
 }
 
 static void
-on_go_first (GSimpleAction *action,
-             GVariant *variant,
-             gpointer user_data)
+update_ui_for_et_file (EtApplicationWindow *self,
+                       ET_File *et_file)
 {
     EtApplicationWindowPrivate *priv;
-    EtApplicationWindow *self;
-    GList *etfilelist;
 
-    self = ET_APPLICATION_WINDOW (user_data);
     priv = et_application_window_get_instance_private (self);
 
-    g_return_if_fail (ETCore->ETFileDisplayedList);
-
-    et_application_window_update_et_file_from_ui (self);
-
-    /* Go to the first item of the list */
-    etfilelist = ET_Displayed_File_List_First ();
-
-    if (etfilelist)
+    if (et_file)
     {
         /* To avoid the last line still selected. */
         et_browser_unselect_all (ET_BROWSER (priv->browser));
-        et_application_window_browser_select_file_by_et_file (self,
-                                                              (ET_File *)etfilelist->data,
+        et_application_window_browser_select_file_by_et_file (self, et_file,
                                                               TRUE);
-        et_application_window_display_et_file (self,
-                                               (ET_File *)etfilelist->data);
+        et_application_window_display_et_file (self, et_file);
     }
 
     et_application_window_update_actions (self);
@@ -1311,16 +1298,35 @@ on_go_first (GSimpleAction *action,
 }
 
 static void
+on_go_first (GSimpleAction *action,
+             GVariant *variant,
+             gpointer user_data)
+{
+    EtApplicationWindow *self;
+    GList *etfilelist;
+
+    self = ET_APPLICATION_WINDOW (user_data);
+
+    g_return_if_fail (ETCore->ETFileDisplayedList);
+
+    et_application_window_update_et_file_from_ui (self);
+
+    /* Go to the first item of the list */
+    etfilelist = ET_Displayed_File_List_First ();
+
+    update_ui_for_et_file (self, etfilelist ? (ET_File *)etfilelist->data
+                                            : NULL);
+}
+
+static void
 on_go_previous (GSimpleAction *action,
                 GVariant *variant,
                 gpointer user_data)
 {
-    EtApplicationWindowPrivate *priv;
     EtApplicationWindow *self;
     GList *etfilelist;
 
     self = ET_APPLICATION_WINDOW (user_data);
-    priv = et_application_window_get_instance_private (self);
 
     g_return_if_fail (ETCore->ETFileDisplayedList
                       && ETCore->ETFileDisplayedList->prev);
@@ -1330,23 +1336,8 @@ on_go_previous (GSimpleAction *action,
     /* Go to the prev item of the list */
     etfilelist = ET_Displayed_File_List_Previous ();
 
-    if (etfilelist)
-    {
-        et_browser_unselect_all (ET_BROWSER (priv->browser));
-        et_application_window_browser_select_file_by_et_file (self,
-                                                              (ET_File *)etfilelist->data,
-                                                              TRUE);
-        et_application_window_display_et_file (self,
-                                               (ET_File *)etfilelist->data);
-    }
-
-    et_application_window_update_actions (self);
-    et_application_window_scan_dialog_update_previews (self);
-
-    if (!g_settings_get_boolean (MainSettings, "tag-preserve-focus"))
-    {
-        et_tag_area_title_grab_focus (ET_TAG_AREA (priv->tag_area));
-    }
+    update_ui_for_et_file (self, etfilelist ? (ET_File *)etfilelist->data
+                                            : NULL);
 }
 
 static void
@@ -1354,12 +1345,10 @@ on_go_next (GSimpleAction *action,
             GVariant *variant,
             gpointer user_data)
 {
-    EtApplicationWindowPrivate *priv;
     EtApplicationWindow *self;
     GList *etfilelist;
 
     self = ET_APPLICATION_WINDOW (user_data);
-    priv = et_application_window_get_instance_private (self);
 
     g_return_if_fail (ETCore->ETFileDisplayedList
                       && ETCore->ETFileDisplayedList->next);
@@ -1369,23 +1358,8 @@ on_go_next (GSimpleAction *action,
     /* Go to the next item of the list */
     etfilelist = ET_Displayed_File_List_Next ();
 
-    if (etfilelist)
-    {
-        et_browser_unselect_all (ET_BROWSER (priv->browser));
-        et_application_window_browser_select_file_by_et_file (self,
-                                                              (ET_File *)etfilelist->data,
-                                                              TRUE);
-        et_application_window_display_et_file (self,
-                                               (ET_File *)etfilelist->data);
-    }
-
-    et_application_window_update_actions (self);
-    et_application_window_scan_dialog_update_previews (self);
-
-    if (!g_settings_get_boolean (MainSettings, "tag-preserve-focus"))
-    {
-        et_tag_area_title_grab_focus (ET_TAG_AREA (priv->tag_area));
-    }
+    update_ui_for_et_file (self, etfilelist ? (ET_File *)etfilelist->data
+                                            : NULL);
 }
 
 static void
@@ -1393,12 +1367,10 @@ on_go_last (GSimpleAction *action,
             GVariant *variant,
             gpointer user_data)
 {
-    EtApplicationWindowPrivate *priv;
     EtApplicationWindow *self;
     GList *etfilelist;
 
     self = ET_APPLICATION_WINDOW (user_data);
-    priv = et_application_window_get_instance_private (self);
 
     g_return_if_fail (ETCore->ETFileDisplayedList
                       && ETCore->ETFileDisplayedList->next);
@@ -1408,23 +1380,8 @@ on_go_last (GSimpleAction *action,
     /* Go to the last item of the list */
     etfilelist = ET_Displayed_File_List_Last ();
 
-    if (etfilelist)
-    {
-        et_browser_unselect_all (ET_BROWSER (priv->browser));
-        et_application_window_browser_select_file_by_et_file (self,
-                                                              (ET_File *)etfilelist->data,
-                                                              TRUE);
-        et_application_window_display_et_file (self,
-                                               (ET_File *)etfilelist->data);
-    }
-
-    et_application_window_update_actions (self);
-    et_application_window_scan_dialog_update_previews (self);
-
-    if (!g_settings_get_boolean (MainSettings, "tag-preserve-focus"))
-    {
-        et_tag_area_title_grab_focus (ET_TAG_AREA (priv->tag_area));
-    }
+    update_ui_for_et_file (self, etfilelist ? (ET_File *)etfilelist->data
+                                            : NULL);
 }
 
 static void


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