* started work on modest-viewer-window
authorNils Faerber <nils@kernelconcepts.de>
Mon, 12 Jun 2006 15:24:24 +0000 (15:24 +0000)
committerNils Faerber <nils@kernelconcepts.de>
Mon, 12 Jun 2006 15:24:24 +0000 (15:24 +0000)
* started filling modest-ui-message-viewer

pmo-trunk-r236

src/Makefile.am
src/gtk-glade/modest-ui-message-editor.c
src/gtk-glade/modest-ui-message-viewer.c
src/modest-editor-window.h
src/modest-ui.h
src/modest-viewer-window.c [new file with mode: 0644]
src/modest-viewer-window.h [new file with mode: 0644]

index e0343af..7c47629 100644 (file)
@@ -52,6 +52,8 @@ modest_SOURCES=\
        modest-tny-store-actions.h\
        modest-editor-window.c\
        modest-editor-window.h\
+       modest-viewer-window.c\
+       modest-viewer-window.h\
        modest-ui.h
 
 modest_LDADD = \
index 1458614..a4e9591 100644 (file)
@@ -90,6 +90,11 @@ close_edit_window (GtkWidget *win, GdkEvent *event, gpointer data)
                } else {
                        g_message("not closing window");
                }
+       } else {
+               gtk_widget_hide (GTK_WIDGET(edit_win));
+               modest_window_mgr_unregister(priv->modest_window_mgr, G_OBJECT(edit_win));
+               gtk_widget_destroy(GTK_WIDGET(edit_win));
+               g_message("closing window");
        }
 }
 
@@ -98,7 +103,6 @@ GtkContainer
 *modest_ui_new_editor_window (ModestUI *modest_ui, gpointer *user_data)
 {
        GtkWidget       *top_container;
-
        GladeXML                *glade_xml;
        EditWinData             *win_data;
 
@@ -109,6 +113,8 @@ GtkContainer
        win_data = g_malloc(sizeof(EditWinData));
        win_data->modest_ui = modest_ui;
        win_data->glade_xml = glade_xml;
+       win_data->attachments = NULL;
+
        *user_data = win_data;
 
        top_container = glade_xml_get_widget(glade_xml, "new_mail_top_container");
@@ -117,8 +123,6 @@ GtkContainer
                return NULL;
        }
        
-       win_data->attachments = NULL; /* redundant */
-
        return GTK_CONTAINER(top_container);
 }
 
@@ -299,6 +303,7 @@ new_editor_with_presets (ModestUI *modest_ui, const gchar *to_header,
                gtk_window_set_title (GTK_WINDOW(edit_win), subject_header);
        else
                gtk_window_set_title (GTK_WINDOW(edit_win), _("Untitled"));
+
        modest_window_mgr_register(priv->modest_window_mgr, G_OBJECT(edit_win), MODEST_EDIT_WINDOW, 0);
 
        modest_editor_window_set_to_header(MODEST_EDITOR_WINDOW(edit_win), to_header);
index 7a19b73..7906f18 100644 (file)
 #include "../modest-text-utils.h"
 #include "../modest-tny-msg-actions.h"
 
-#include "../modest-editor-window.h"
+#include "../modest-viewer-window.h"
 
 #include "modest-ui-glade.h"
 #include "modest-ui-wizard.h"
+
+
+typedef struct {
+       ModestUI *modest_ui;
+       ModestViewerWindow *viewer_win;
+       GladeXML *glade_xml;
+} ViewerWinData;
+
+
+GtkContainer
+*modest_ui_new_viewer_window (ModestUI *modest_ui, gpointer *user_data)
+{
+       GtkWidget       *top_container;
+       GladeXML        *glade_xml;
+       ViewerWinData   *win_data;
+
+       glade_xml = glade_xml_new(MODEST_GLADE, "viewer_top_container", NULL);
+       if (!glade_xml)
+               return NULL;
+
+       win_data = g_malloc(sizeof(ViewerWinData));
+       win_data->modest_ui = modest_ui;
+       win_data->glade_xml = glade_xml;
+
+       *user_data = win_data;
+
+       top_container = glade_xml_get_widget(glade_xml, "viewer_top_container");
+       if (!top_container) {
+               g_object_unref(G_OBJECT(glade_xml));
+               return NULL;
+       }
+
+       return GTK_CONTAINER(top_container);
+}
+
index b47a351..252b8a2 100644 (file)
@@ -81,7 +81,7 @@ gboolean modest_editor_window_set_modified(ModestEditorWindow *edit_win, gboolea
  *
  * Gets the state of the modified-flag of this instance. This flag can be used to store
  * information whether the contents of the editor window was modified by the
- * user or not. If it was modified (see also modest_editor_window_get_modified())
+ * user or not. If it was modified (see also modest_editor_window_set_modified())
  * a dialog can be presented to ask the user for confirmation.
  *
  * Returns: gboolean the new state of the modified flag
index 9ef6cb1..584d11c 100644 (file)
@@ -95,6 +95,8 @@ gboolean modest_ui_editor_window_set_subject_header(const gchar *subject, gpoint
 gboolean modest_ui_editor_window_set_body(const gchar *body, gpointer window_data);
 gboolean modest_ui_editor_window_update_attachments(gpointer window_data);
 
+GtkContainer *modest_ui_new_viewer_window (ModestUI *modest_ui, gpointer *user_data);
+
 G_END_DECLS
 
 #endif /* __MODEST_UI_H__ */
diff --git a/src/modest-viewer-window.c b/src/modest-viewer-window.c
new file mode 100644 (file)
index 0000000..9e16e20
--- /dev/null
@@ -0,0 +1,139 @@
+/* modest-viewer-window.c */
+
+/* insert (c)/licensing information) */
+
+#include "modest-ui.h"
+#include "modest-viewer-window.h"
+/* include other impl specific header files */
+
+/* 'private'/'protected' functions */
+static void                      modest_viewer_window_class_init    (ModestViewerWindowClass *klass);
+static void                      modest_viewer_window_init          (ModestViewerWindow *obj);
+static void                      modest_viewer_window_finalize      (GObject *obj);
+
+/* list my signals */
+enum {
+       LAST_SIGNAL
+};
+
+typedef struct _ModestViewerWindowPrivate ModestViewerWindowPrivate;
+struct _ModestViewerWindowPrivate {
+       gpointer user_data;
+};
+#define MODEST_VIEWER_WINDOW_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
+                                                  MODEST_TYPE_VIEWER_WINDOW, \
+                                                  ModestViewerWindowPrivate))
+/* globals */
+static GtkWindowClass *parent_class = NULL;
+
+/* uncomment the following if you have defined any signals */
+/* static guint signals[LAST_SIGNAL] = {0}; */
+
+GType
+modest_viewer_window_get_type (void)
+{
+       static GType my_type = 0;
+       if (!my_type) {
+               static const GTypeInfo my_info = {
+                       sizeof(ModestViewerWindowClass),
+                       NULL,           /* base init */
+                       NULL,           /* base finalize */
+                       (GClassInitFunc) modest_viewer_window_class_init,
+                       NULL,           /* class finalize */
+                       NULL,           /* class data */
+                       sizeof(ModestViewerWindow),
+                       1,              /* n_preallocs */
+                       (GInstanceInitFunc) modest_viewer_window_init,
+               };
+               my_type = g_type_register_static (GTK_TYPE_WINDOW,
+                                                 "ModestViewerWindow",
+                                                 &my_info, 0);
+       }
+       return my_type;
+}
+
+static void
+modest_viewer_window_class_init (ModestViewerWindowClass *klass)
+{
+       GObjectClass *gobject_class;
+       gobject_class = (GObjectClass*) klass;
+
+       parent_class            = g_type_class_peek_parent (klass);
+       gobject_class->finalize = modest_viewer_window_finalize;
+
+       g_type_class_add_private (gobject_class, sizeof(ModestViewerWindowPrivate));
+
+       /* signal definitions go here, e.g.: */
+/*     signals[MY_SIGNAL_1] = */
+/*             g_signal_new ("my_signal_1",....); */
+/*     signals[MY_SIGNAL_2] = */
+/*             g_signal_new ("my_signal_2",....); */
+/*     etc. */
+}
+
+
+static void
+modest_viewer_window_init (ModestViewerWindow *obj)
+{
+       ModestViewerWindowPrivate *priv = MODEST_VIEWER_WINDOW_GET_PRIVATE(obj);
+
+       priv->user_data = NULL;
+}
+
+
+static void
+modest_viewer_window_finalize (GObject *obj)
+{
+       ModestViewerWindowPrivate *priv;
+
+       priv = MODEST_VIEWER_WINDOW_GET_PRIVATE(obj);
+               
+       if (priv->user_data)
+               g_free(priv->user_data);
+
+       G_OBJECT_CLASS(parent_class)->finalize (obj);
+}
+
+
+GtkWidget*
+modest_viewer_window_new (ModestUI *ui)
+{
+       GObject *self;
+       ModestViewerWindowPrivate *priv;
+       GtkWidget *w;
+       gpointer data;
+
+       self = G_OBJECT(g_object_new(MODEST_TYPE_VIEWER_WINDOW, NULL));
+       priv = MODEST_VIEWER_WINDOW_GET_PRIVATE(self);
+
+       data = NULL;
+       w = GTK_WIDGET(modest_ui_new_viewer_window(ui, &data));
+       if (!w)
+               return NULL;
+       if (!data)
+               g_message("viewer window user data is emtpy");
+
+       gtk_container_add(GTK_CONTAINER(self), w);
+       priv->user_data = data;
+
+       return GTK_WIDGET(self);
+}
+
+
+/*
+ * return user defined data from a ModestViewerWindow instance
+ * like e.g. a refernce to a GladeXML*
+ */
+gpointer modest_viewer_window_get_data(ModestViewerWindow *viewer_win)
+{
+       ModestViewerWindowPrivate *priv;
+
+       if (!viewer_win) {
+               return NULL;
+       }
+       priv = MODEST_VIEWER_WINDOW_GET_PRIVATE(viewer_win);
+
+       // g_message("get priv->data = %p", priv->user_data);
+
+       return priv->user_data;
+}
diff --git a/src/modest-viewer-window.h b/src/modest-viewer-window.h
new file mode 100644 (file)
index 0000000..3f2f876
--- /dev/null
@@ -0,0 +1,50 @@
+/* modest-viewer-window.h */
+/* insert (c)/licensing information) */
+
+#ifndef __MODEST_VIEWER_WINDOW_H__
+#define __MODEST_VIEWER_WINDOW_H__
+
+#include <gtk/gtkwindow.h>
+/* other include files */
+
+G_BEGIN_DECLS
+
+/* convenience macros */
+#define MODEST_TYPE_VIEWER_WINDOW             (modest_viewer_window_get_type())
+#define MODEST_VIEWER_WINDOW(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_VIEWER_WINDOW,ModestViewerWindow))
+#define MODEST_VIEWER_WINDOW_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_VIEWER_WINDOW,GtkWindow))
+#define MODEST_IS_VIEWER_WINDOW(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_VIEWER_WINDOW))
+#define MODEST_IS_VIEWER_WINDOW_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_VIEWER_WINDOW))
+#define MODEST_VIEWER_WINDOW_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_VIEWER_WINDOW,ModestViewerWindowClass))
+
+typedef struct _ModestViewerWindow      ModestViewerWindow;
+typedef struct _ModestViewerWindowClass ModestViewerWindowClass;
+
+struct _ModestViewerWindow {
+        GtkWindow parent;
+       /* insert public members, if any */
+};
+
+struct _ModestViewerWindowClass {
+       GtkWindowClass parent_class;
+       /* insert signal callback declarations, eg. */
+       /* void (* my_event) (ModestViewerWindow* obj); */
+};
+
+/* member functions */
+GType        modest_viewer_window_get_type    (void) G_GNUC_CONST;
+
+/* typical parameter-less _new function */
+/* if this is a kind of GtkWidget, it should probably return at GtkWidget*, */
+/*    otherwise probably a GObject*. */
+GtkWidget*   modest_viewer_window_new         (ModestUI *ui);
+
+/* fill in other public functions, eg.: */
+/*     void       modest_viewer_window_do_something (ModestViewerWindow *self, const gchar* param); */
+/*     gboolean   modest_viewer_window_has_foo      (ModestViewerWindow *self, gint value); */
+
+
+G_END_DECLS
+
+#endif /* __MODEST_VIEWER_WINDOW_H__ */
+