[gnome-todo] project: move scheduled panel to a plugin of its own



commit 415412cba151d2ee0265b56348f3a18b7bf8c4fe
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Oct 6 18:14:51 2016 -0300

    project: move scheduled panel to a plugin of its own

 configure.ac                                       |    1 +
 data/org.gnome.todo.gschema.xml                    |    2 +-
 data/todo.gresource.xml                            |    5 +
 plugins/Makefile.am                                |    2 +-
 plugins/eds/Makefile.am                            |    2 -
 plugins/eds/gtd-plugin-eds.c                       |   13 +--
 plugins/scheduled-panel/Makefile.am                |   19 +++
 .../{eds => scheduled-panel}/gtd-panel-scheduled.c |    0
 .../{eds => scheduled-panel}/gtd-panel-scheduled.h |    0
 .../scheduled-panel/gtd-plugin-scheduled-panel.c   |  159 ++++++++++++++++++++
 .../gtd-plugin-scheduled-panel.h}                  |   19 ++-
 plugins/scheduled-panel/scheduled-panel.plugin.in  |   13 ++
 po/POTFILES.in                                     |    2 +-
 src/Makefile.am                                    |    3 +
 14 files changed, 214 insertions(+), 26 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index a104b13..6ac8414 100644
--- a/configure.ac
+++ b/configure.ac
@@ -88,6 +88,7 @@ dnl Plugins
 dnl ================================================================
 GNOME_TODO_ADD_PLUGIN([eds], [Evolution-Data-Server], [yes])
 GNOME_TODO_ADD_PLUGIN([dark-theme], [Dark theme], [yes])
+GNOME_TODO_ADD_PLUGIN([scheduled-panel], [Scheduled Panel], [yes])
 GNOME_TODO_ADD_PLUGIN([score], [Score], [yes])
 GNOME_TODO_ADD_PLUGIN([today-panel], [Today Panel], [yes])
 GNOME_TODO_ADD_PLUGIN([unscheduled-panel], [Unscheduled Tasks Panel], [yes])
diff --git a/data/org.gnome.todo.gschema.xml b/data/org.gnome.todo.gschema.xml
index 15f9e6a..9efcbfe 100644
--- a/data/org.gnome.todo.gschema.xml
+++ b/data/org.gnome.todo.gschema.xml
@@ -27,7 +27,7 @@
             <description>The identifier of the default provider to add new lists to</description>
         </key>
         <key name="active-extensions" type="as">
-            <default>["eds", "today-panel"]</default>
+            <default>["eds", "today-panel", "scheduled-panel"]</default>
             <summary>List of active extensions</summary>
             <description>The list of active extensions</description>
         </key>
diff --git a/data/todo.gresource.xml b/data/todo.gresource.xml
index eda32a8..a4d8302 100644
--- a/data/todo.gresource.xml
+++ b/data/todo.gresource.xml
@@ -31,6 +31,11 @@
     <file alias="plugins/eds/eds.plugin">../plugins/eds/eds.plugin</file>
   </gresource>
 
+  <!--Scheduled panel-->
+  <gresource prefix="/org/gnome/todo">
+    <file 
alias="plugins/scheduled-panel/scheduled-panel.plugin">../plugins/scheduled-panel/scheduled-panel.plugin</file>
+  </gresource>
+
   <!--Today panel-->
   <gresource prefix="/org/gnome/todo">
     <file alias="plugins/today-panel/today-panel.plugin">../plugins/today-panel/today-panel.plugin</file>
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index a1c8d4b..3319b3c 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = eds dark-theme today-panel
+SUBDIRS = eds dark-theme scheduled-panel today-panel
 
 if BUILD_SCORE_PLUGIN
 SUBDIRS += score
diff --git a/plugins/eds/Makefile.am b/plugins/eds/Makefile.am
index a38a589..0699d7c 100644
--- a/plugins/eds/Makefile.am
+++ b/plugins/eds/Makefile.am
@@ -3,8 +3,6 @@ include $(top_srcdir)/common.am
 noinst_LTLIBRARIES = libeds.la
 
 libeds_la_SOURCES = \
-       gtd-panel-scheduled.c \
-       gtd-panel-scheduled.h \
        gtd-plugin-eds.c \
        gtd-plugin-eds.h \
        gtd-provider-eds.c \
diff --git a/plugins/eds/gtd-plugin-eds.c b/plugins/eds/gtd-plugin-eds.c
index 10654af..f97969b 100644
--- a/plugins/eds/gtd-plugin-eds.c
+++ b/plugins/eds/gtd-plugin-eds.c
@@ -18,7 +18,6 @@
 
 #define G_LOG_DOMAIN "Evolution Data Server"
 
-#include "gtd-panel-scheduled.h"
 #include "gtd-plugin-eds.h"
 #include "gtd-provider-goa.h"
 #include "gtd-provider-local.h"
@@ -46,9 +45,6 @@ struct _GtdPluginEds
   GtkCssProvider         *provider;
   ESourceRegistry        *registry;
 
-  /* Panels */
-  GList                  *panels;
-
   /* Providers */
   GList                  *providers;
 };
@@ -104,9 +100,7 @@ gtd_plugin_eds_get_preferences_panel (GtdActivatable *activatable)
 static GList*
 gtd_plugin_eds_get_panels (GtdActivatable *activatable)
 {
-  GtdPluginEds *plugin = GTD_PLUGIN_EDS (activatable);
-
-  return plugin->panels;
+  return NULL;
 }
 
 static GList*
@@ -305,9 +299,6 @@ gtd_plugin_eds_finalize (GObject *object)
 {
   GtdPluginEds *self = (GtdPluginEds *)object;
 
-  g_list_free_full (self->panels, g_object_unref);
-  self->panels = NULL;
-
   g_list_free_full (self->providers, g_object_unref);
   self->providers = NULL;
 
@@ -350,8 +341,6 @@ gtd_plugin_eds_init (GtdPluginEds *self)
   GError *error = NULL;
   GFile* css_file;
 
-  self->panels = g_list_append (self->panels, gtd_panel_scheduled_new ());
-
   /* load the source registry */
   e_source_registry_new (NULL,
                          (GAsyncReadyCallback) gtd_plugin_eds_source_registry_finish_cb,
diff --git a/plugins/scheduled-panel/Makefile.am b/plugins/scheduled-panel/Makefile.am
new file mode 100644
index 0000000..7ac1fd5
--- /dev/null
+++ b/plugins/scheduled-panel/Makefile.am
@@ -0,0 +1,19 @@
+include $(top_srcdir)/common.am
+
+NULL=
+
+noinst_LTLIBRARIES = libscheduledpanel.la
+
+libscheduledpanel_la_SOURCES = \
+       gtd-panel-scheduled.c \
+       gtd-panel-scheduled.h \
+       gtd-plugin-scheduled-panel.c \
+       gtd-plugin-scheduled-panel.h \
+       $(NULL)
+
+libscheduledpanel_la_CFLAGS = \
+       $(GNOME_TODO_PLUGIN_CFLAGS) \
+       $(GNOME_TODO_PLUGIN_WARN_CFLAGS)
+
+EXTRA_DIST = \
+       scheduled-panel.plugin.in
diff --git a/plugins/eds/gtd-panel-scheduled.c b/plugins/scheduled-panel/gtd-panel-scheduled.c
similarity index 100%
rename from plugins/eds/gtd-panel-scheduled.c
rename to plugins/scheduled-panel/gtd-panel-scheduled.c
diff --git a/plugins/eds/gtd-panel-scheduled.h b/plugins/scheduled-panel/gtd-panel-scheduled.h
similarity index 100%
copy from plugins/eds/gtd-panel-scheduled.h
copy to plugins/scheduled-panel/gtd-panel-scheduled.h
diff --git a/plugins/scheduled-panel/gtd-plugin-scheduled-panel.c 
b/plugins/scheduled-panel/gtd-plugin-scheduled-panel.c
new file mode 100644
index 0000000..73033d5
--- /dev/null
+++ b/plugins/scheduled-panel/gtd-plugin-scheduled-panel.c
@@ -0,0 +1,159 @@
+/* gtd-plugin-scheduled-panel.c
+ *
+ * Copyright (C) 2016 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#define G_LOG_DOMAIN "Scheduled"
+
+#include "gtd-panel-scheduled.h"
+
+#include "gtd-plugin-scheduled-panel.h"
+
+#include <glib/gi18n.h>
+#include <glib-object.h>
+
+struct _GtdPluginScheduledPanel
+{
+  PeasExtensionBase   parent;
+
+  GList              *panels;
+};
+
+static void          gtd_activatable_iface_init                  (GtdActivatableInterface  *iface);
+
+G_DEFINE_DYNAMIC_TYPE_EXTENDED (GtdPluginScheduledPanel, gtd_plugin_scheduled_panel, 
PEAS_TYPE_EXTENSION_BASE,
+                                0,
+                                G_IMPLEMENT_INTERFACE_DYNAMIC (GTD_TYPE_ACTIVATABLE,
+                                                               gtd_activatable_iface_init))
+
+enum {
+  PROP_0,
+  PROP_PREFERENCES_PANEL,
+  N_PROPS
+};
+
+/*
+ * GtdActivatable interface implementation
+ */
+static void
+gtd_plugin_scheduled_panel_activate (GtdActivatable *activatable)
+{
+  ;
+}
+
+static void
+gtd_plugin_scheduled_panel_deactivate (GtdActivatable *activatable)
+{
+  ;
+}
+
+static GList*
+gtd_plugin_scheduled_panel_get_header_widgets (GtdActivatable *activatable)
+{
+  return NULL;
+}
+
+static GtkWidget*
+gtd_plugin_scheduled_panel_get_preferences_panel (GtdActivatable *activatable)
+{
+  return NULL;
+}
+
+static GList*
+gtd_plugin_scheduled_panel_get_panels (GtdActivatable *activatable)
+{
+  GtdPluginScheduledPanel *plugin = GTD_PLUGIN_SCHEDULED_PANEL (activatable);
+
+  return plugin->panels;
+}
+
+static GList*
+gtd_plugin_scheduled_panel_get_providers (GtdActivatable *activatable)
+{
+  return NULL;
+}
+
+static void
+gtd_activatable_iface_init (GtdActivatableInterface *iface)
+{
+  iface->activate = gtd_plugin_scheduled_panel_activate;
+  iface->deactivate = gtd_plugin_scheduled_panel_deactivate;
+  iface->get_header_widgets = gtd_plugin_scheduled_panel_get_header_widgets;
+  iface->get_preferences_panel = gtd_plugin_scheduled_panel_get_preferences_panel;
+  iface->get_panels = gtd_plugin_scheduled_panel_get_panels;
+  iface->get_providers = gtd_plugin_scheduled_panel_get_providers;
+}
+
+static void
+gtd_plugin_scheduled_panel_finalize (GObject *object)
+{
+  GtdPluginScheduledPanel *self = (GtdPluginScheduledPanel *)object;
+
+  g_list_free (self->panels);
+
+  G_OBJECT_CLASS (gtd_plugin_scheduled_panel_parent_class)->finalize (object);
+}
+
+static void
+gtd_plugin_scheduled_panel_get_property (GObject    *object,
+                                         guint       prop_id,
+                                         GValue     *value,
+                                         GParamSpec *pspec)
+{
+  switch (prop_id)
+    {
+    case PROP_PREFERENCES_PANEL:
+      g_value_set_object (value, NULL);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+gtd_plugin_scheduled_panel_class_init (GtdPluginScheduledPanelClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->finalize = gtd_plugin_scheduled_panel_finalize;
+  object_class->get_property = gtd_plugin_scheduled_panel_get_property;
+
+  g_object_class_override_property (object_class,
+                                    PROP_PREFERENCES_PANEL,
+                                    "preferences-panel");
+}
+
+static void
+gtd_plugin_scheduled_panel_init (GtdPluginScheduledPanel *self)
+{
+  self->panels = g_list_append (NULL, gtd_panel_scheduled_new ());
+}
+
+static void
+gtd_plugin_scheduled_panel_class_finalize (GtdPluginScheduledPanelClass *klass)
+{
+}
+
+G_MODULE_EXPORT void
+gtd_plugin_scheduled_panel_register_types (PeasObjectModule *module)
+{
+  gtd_plugin_scheduled_panel_register_type (G_TYPE_MODULE (module));
+
+  peas_object_module_register_extension_type (module,
+                                              GTD_TYPE_ACTIVATABLE,
+                                              GTD_TYPE_PLUGIN_SCHEDULED_PANEL);
+}
diff --git a/plugins/eds/gtd-panel-scheduled.h b/plugins/scheduled-panel/gtd-plugin-scheduled-panel.h
similarity index 57%
rename from plugins/eds/gtd-panel-scheduled.h
rename to plugins/scheduled-panel/gtd-plugin-scheduled-panel.h
index 59af3b5..5f85ec5 100644
--- a/plugins/eds/gtd-panel-scheduled.h
+++ b/plugins/scheduled-panel/gtd-plugin-scheduled-panel.h
@@ -1,6 +1,6 @@
-/* gtd-panel-scheduled.h
+/* gtd-plugin-scheduled-panel.h
  *
- * Copyright (C) 2015 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright (C) 2016 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -16,20 +16,21 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef GTD_PANEL_SCHEDULED_H
-#define GTD_PANEL_SCHEDULED_H
+#ifndef GTD_PLUGIN_SCHEDULED_PANEL_H
+#define GTD_PLUGIN_SCHEDULED_PANEL_H
 
 #include <glib.h>
-#include <gtk/gtk.h>
+#include <gnome-todo.h>
 
 G_BEGIN_DECLS
 
-#define GTD_TYPE_PANEL_SCHEDULED (gtd_panel_scheduled_get_type())
+#define GTD_TYPE_PLUGIN_SCHEDULED_PANEL (gtd_plugin_scheduled_panel_get_type())
 
-G_DECLARE_FINAL_TYPE (GtdPanelScheduled, gtd_panel_scheduled, GTD, PANEL_SCHEDULED, GtkBox)
+G_DECLARE_FINAL_TYPE (GtdPluginScheduledPanel, gtd_plugin_scheduled_panel, GTD, PLUGIN_SCHEDULED_PANEL, 
PeasExtensionBase)
 
-GtkWidget*           gtd_panel_scheduled_new                     (void);
+G_MODULE_EXPORT void gtd_plugin_scheduled_panel_register_types   (PeasObjectModule   *module);
 
 G_END_DECLS
 
-#endif /* GTD_PANEL_SCHEDULED_H */
+#endif /* GTD_PLUGIN_SCHEDULED_PANEL_H */
+
diff --git a/plugins/scheduled-panel/scheduled-panel.plugin.in 
b/plugins/scheduled-panel/scheduled-panel.plugin.in
new file mode 100644
index 0000000..79bcf79
--- /dev/null
+++ b/plugins/scheduled-panel/scheduled-panel.plugin.in
@@ -0,0 +1,13 @@
+[Plugin]
+Name = Scheduled tasks
+Module = scheduled-panel
+Description = A panel to show scheduled tasks
+Version = @VERSION@
+Authors = Georges Basile Stavracas Neto <gbsneto gnome org>
+Copyright = Copyleft © The To Do maintainers
+Website = https://wiki.gnome.org/Apps/Todo
+Builtin = true
+License = GPL
+Loader = C
+Embedded = gtd_plugin_scheduled_panel_register_types
+Depends =
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 47b8f44..17a56a0 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -14,11 +14,11 @@ data/org.gnome.todo.gschema.xml
 [type: gettext/glade]data/ui/task-row.ui
 [type: gettext/glade]data/ui/window.ui
 [type: gettext/glade]plugins/eds/edit-pane.ui
-plugins/eds/gtd-panel-scheduled.c
 plugins/eds/gtd-plugin-eds.c
 plugins/eds/gtd-provider-eds.c
 plugins/eds/gtd-provider-local.c
 plugins/eds/gtd-task-list-eds.c
+plugins/scheduled-panel/gtd-panel-scheduled.c
 plugins/score/score/__init__.py
 plugins/today-panel/gtd-panel-today.c
 plugins/unscheduled-panel/unscheduled-panel/__init__.py
diff --git a/src/Makefile.am b/src/Makefile.am
index db19b2f..5908ef2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -94,6 +94,7 @@ gnome_todo_LDFLAGS = \
        -Wl,--export-dynamic \
        -Wl,--undefined=gtd_plugin_eds_register_types \
        -Wl,--undefined=gtd_plugin_dark_theme_register_types \
+       -Wl,--undefined=gtd_plugin_scheduled_panel_register_types \
        -Wl,--undefined=gtd_plugin_today_panel_register_types \
        $(GNOME_TODO_WARN_LDFLAGS)
 
@@ -101,11 +102,13 @@ gnome_todo_LDADD = \
        $(GNOME_TODO_LIBS) \
        $(top_builddir)/plugins/eds/libeds.la \
        $(top_builddir)/plugins/dark-theme/libdarktheme.la \
+       $(top_builddir)/plugins/scheduled-panel/libscheduledpanel.la \
        $(top_builddir)/plugins/today-panel/libtodaypanel.la
 
 gnome_todo_DEPENDENCIES = \
        $(top_builddir)/plugins/eds/libeds.la \
        $(top_builddir)/plugins/dark-theme/libdarktheme.la \
+       $(top_builddir)/plugins/scheduled-panel/libscheduledpanel.la \
        $(top_builddir)/plugins/today-panel/libtodaypanel.la
 
 #


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