[tepl] App: add handle_metadata()
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tepl] App: add handle_metadata()
- Date: Sun, 19 Apr 2020 13:44:59 +0000 (UTC)
commit 89de58de2f57ecf5c2a1f8c2aa4a2c25865b668b
Author: Sébastien Wilmet <swilmet gnome org>
Date: Sun Apr 19 15:40:57 2020 +0200
App: add handle_metadata()
docs/reference/tepl-sections.txt | 1 +
tepl/tepl-application.c | 90 ++++++++++++++++++++++++++++++++++++++++
tepl/tepl-application.h | 2 +
3 files changed, 93 insertions(+)
---
diff --git a/docs/reference/tepl-sections.txt b/docs/reference/tepl-sections.txt
index dd62bad..a630317 100644
--- a/docs/reference/tepl-sections.txt
+++ b/docs/reference/tepl-sections.txt
@@ -42,6 +42,7 @@ tepl_application_get_active_main_window
tepl_application_open_simple
tepl_application_handle_activate
tepl_application_handle_open
+tepl_application_handle_metadata
<SUBSECTION Standard>
TEPL_APPLICATION
TEPL_APPLICATION_CLASS
diff --git a/tepl/tepl-application.c b/tepl/tepl-application.c
index b5b0fbc..edbb1ca 100644
--- a/tepl/tepl-application.c
+++ b/tepl/tepl-application.c
@@ -22,6 +22,7 @@
#include <glib/gi18n-lib.h>
#include "tepl-abstract-factory.h"
#include "tepl-application-window.h"
+#include "tepl-metadata-manager.h"
/**
* SECTION:application
@@ -60,6 +61,7 @@ struct _TeplApplicationPrivate
guint handle_activate : 1;
guint handle_open : 1;
+ guint handle_metadata : 1;
};
enum
@@ -601,4 +603,92 @@ tepl_application_handle_open (TeplApplication *tepl_app)
}
}
+static void
+handle_metadata__startup_cb (GtkApplication *gtk_app,
+ TeplApplication *tepl_app)
+{
+ TeplAbstractFactory *factory = tepl_abstract_factory_get_singleton ();
+ TeplMetadataManager *manager = tepl_metadata_manager_get_singleton ();
+ GFile *file;
+ GError *error = NULL;
+
+ file = tepl_abstract_factory_create_metadata_manager_file (factory);
+ if (file == NULL)
+ {
+ return;
+ }
+
+ tepl_metadata_manager_load_from_disk (manager, file, &error);
+ if (error != NULL)
+ {
+ g_warning ("Failed to load metadata: %s", error->message);
+ g_clear_error (&error);
+ }
+
+ g_object_unref (file);
+}
+
+static void
+handle_metadata__shutdown_cb (GtkApplication *gtk_app,
+ TeplApplication *tepl_app)
+{
+ TeplAbstractFactory *factory = tepl_abstract_factory_get_singleton ();
+ TeplMetadataManager *manager = tepl_metadata_manager_get_singleton ();
+ GFile *file;
+ GError *error = NULL;
+
+ file = tepl_abstract_factory_create_metadata_manager_file (factory);
+ if (file == NULL)
+ {
+ return;
+ }
+
+ tepl_metadata_manager_save_to_disk (manager, file, TRUE, &error);
+ if (error != NULL)
+ {
+ g_warning ("Failed to save metadata: %s", error->message);
+ g_clear_error (&error);
+ }
+
+ g_object_unref (file);
+}
+
+/**
+ * tepl_application_handle_metadata:
+ * @tepl_app: a #TeplApplication.
+ *
+ * This function:
+ * - Connects to the #GApplication::startup signal to call
+ * tepl_metadata_manager_load_from_disk().
+ * - Connects to the #GApplication::shutdown signal to call
+ * tepl_metadata_manager_save_to_disk() with @trim set to %TRUE.
+ *
+ * It gets the #GFile by calling
+ * tepl_abstract_factory_create_metadata_manager_file().
+ *
+ * Since: 5.0
+ */
+void
+tepl_application_handle_metadata (TeplApplication *tepl_app)
+{
+ g_return_if_fail (TEPL_IS_APPLICATION (tepl_app));
+
+ if (!tepl_app->priv->handle_metadata)
+ {
+ g_signal_connect_object (tepl_app->priv->gtk_app,
+ "startup",
+ G_CALLBACK (handle_metadata__startup_cb),
+ tepl_app,
+ 0);
+
+ g_signal_connect_object (tepl_app->priv->gtk_app,
+ "shutdown",
+ G_CALLBACK (handle_metadata__shutdown_cb),
+ tepl_app,
+ 0);
+
+ tepl_app->priv->handle_metadata = TRUE;
+ }
+}
+
/* ex:set ts=8 noet: */
diff --git a/tepl/tepl-application.h b/tepl/tepl-application.h
index c00276f..c8e5d1a 100644
--- a/tepl/tepl-application.h
+++ b/tepl/tepl-application.h
@@ -75,6 +75,8 @@ void tepl_application_handle_activate (TeplApplication
*tepl_app);
void tepl_application_handle_open (TeplApplication *tepl_app);
+void tepl_application_handle_metadata (TeplApplication *tepl_app);
+
G_END_DECLS
#endif /* TEPL_APPLICATION_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]