aboutsummaryrefslogtreecommitdiffstats
path: root/calendar
diff options
context:
space:
mode:
authorSrinivasa Ragavan <sragavan@src.gnome.org>2006-01-28 03:39:45 +0800
committerSrinivasa Ragavan <sragavan@src.gnome.org>2006-01-28 03:39:45 +0800
commita9ee877c3368d9db97498d23e9cd15337d06e974 (patch)
tree5bc3e76b65eefcbab95c3eac5d5b3e4c916f6f2b /calendar
parent824714d55eda1314ca5e7933084b21a58244e87f (diff)
downloadgsoc2013-evolution-a9ee877c3368d9db97498d23e9cd15337d06e974.tar
gsoc2013-evolution-a9ee877c3368d9db97498d23e9cd15337d06e974.tar.gz
gsoc2013-evolution-a9ee877c3368d9db97498d23e9cd15337d06e974.tar.bz2
gsoc2013-evolution-a9ee877c3368d9db97498d23e9cd15337d06e974.tar.lz
gsoc2013-evolution-a9ee877c3368d9db97498d23e9cd15337d06e974.tar.xz
gsoc2013-evolution-a9ee877c3368d9db97498d23e9cd15337d06e974.tar.zst
gsoc2013-evolution-a9ee877c3368d9db97498d23e9cd15337d06e974.zip
Committing Rajeev's patch.
svn path=/trunk/; revision=31332
Diffstat (limited to 'calendar')
-rw-r--r--calendar/ChangeLog29
-rw-r--r--calendar/calendar.error.xml9
-rw-r--r--calendar/gui/dialogs/event-editor.c18
-rw-r--r--calendar/gui/dialogs/memo-editor.c119
-rw-r--r--calendar/gui/dialogs/memo-page.c220
-rw-r--r--calendar/gui/dialogs/memo-page.glade183
-rw-r--r--calendar/gui/dialogs/memo-page.h5
-rw-r--r--calendar/gui/dialogs/save-comp.c2
-rw-r--r--calendar/gui/dialogs/task-editor.c15
9 files changed, 356 insertions, 244 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index 1c29c78c4d..ffc10c704f 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,32 @@
+2006-01-28 Rajeev ramanathan <rajeevramanathan_2004@yahoo.co.in>
+
+ ** Fixes bug #328510, #328885
+
+ * calendar.error.xml: Added error for saving memos.
+ * gui/dialogs/event-editor.c: (menu_class_public_cb),
+ (menu_class_private_cb), (menu_class_confidential_cb):
+ Added change notification for event page.
+ * gui/dialogs/memo-editor.c: (menu_show_categories_cb),
+ (menu_class_public_cb), (menu_class_private_cb),
+ (menu_class_confidential_cb), (memo_editor_init),
+ (memo_editor_construct), (memo_editor_set_e_cal),
+ (memo_editor_finalize): Added menus to memo.
+ * gui/dialogs/memo-page.c: (memo_page_init), (memo_page_finalize),
+ (set_classification_menu), (memo_page_get_widget),
+ (memo_page_focus_main_widget), (clear_widgets),
+ (memo_page_set_classification), (sensitize_widgets),
+ (memo_page_fill_widgets), (memo_page_fill_component),
+ (memo_page_set_show_categories), (get_widgets),
+ (categories_clicked_cb), (field_changed_cb), (source_changed_cb),
+ (init_widgets), (memo_page_construct), (memo_page_new): Added code to
+ handle memos.
+ * gui/dialogs/memo-page.glade:
+ * gui/dialogs/memo-page.h:
+ * gui/dialogs/save-comp.c: (save_component_dialog):
+ * gui/dialogs/task-editor.c: (menu_class_public_cb),
+ (menu_class_private_cb), (menu_class_confidential_cb): Added code to
+ change notification for task page.
+
2006-01-27 Srinivasa Ragavan <sragavan@novell.com>
* gui/dialogs/alarm-list-dialog.c (get_widgets),
diff --git a/calendar/calendar.error.xml b/calendar/calendar.error.xml
index 77f002f3ab..c37e1f8d47 100644
--- a/calendar/calendar.error.xml
+++ b/calendar/calendar.error.xml
@@ -123,6 +123,15 @@
<button stock="gtk-cancel" response="GTK_RESPONSE_CANCEL"/>
<button _label="_Save Changes" response="GTK_RESPONSE_YES"/>
</error>
+
+ <error id="prompt-save-memo" type="warning" default="GTK_RESPONSE_YES">
+ <title>Save Memo</title>
+ <_primary>Would you like to save your changes to this memo?</_primary>
+ <_secondary>You have made changes to this memo, but not yet saved them.</_secondary>
+ <button _label="_Discard Changes" response="GTK_RESPONSE_NO"/>
+ <button stock="gtk-cancel" response="GTK_RESPONSE_CANCEL"/>
+ <button _label="_Save Changes" response="GTK_RESPONSE_YES"/>
+ </error>
<error id="prompt-meeting-invite" type="question" default="GTK_RESPONSE_YES">
<_primary>Would you like to send meeting invitations to participants?</_primary>
diff --git a/calendar/gui/dialogs/event-editor.c b/calendar/gui/dialogs/event-editor.c
index 5d574ef801..0d160d5c3a 100644
--- a/calendar/gui/dialogs/event-editor.c
+++ b/calendar/gui/dialogs/event-editor.c
@@ -240,35 +240,39 @@ menu_show_categories_cb (BonoboUIComponent *component,
}
static void
-menu_class_public_cb (BonoboUIComponent *ui_component,
+menu_class_public_cb (BonoboUIComponent *ui_component,
const char *path,
Bonobo_UIComponent_EventType type,
const char *state,
gpointer user_data)
{
EventEditor *ee = (EventEditor *) user_data;
-
if (state[0] == '0')
return;
+
+ comp_editor_page_notify_changed (COMP_EDITOR_PAGE (ee->priv->event_page));
+
event_page_set_classification (ee->priv->event_page, E_CAL_COMPONENT_CLASS_PUBLIC);
}
static void
-menu_class_private_cb (BonoboUIComponent *ui_component,
+menu_class_private_cb (BonoboUIComponent *ui_component,
const char *path,
Bonobo_UIComponent_EventType type,
const char *state,
- gpointer user_data)
+ gpointer user_data)
{
EventEditor *ee = (EventEditor *) user_data;
if (state[0] == '0')
return;
+ comp_editor_page_notify_changed (COMP_EDITOR_PAGE (ee->priv->event_page));
+
event_page_set_classification (ee->priv->event_page, E_CAL_COMPONENT_CLASS_PRIVATE);
}
static void
-menu_class_confidential_cb (BonoboUIComponent *ui_component,
+menu_class_confidential_cb (BonoboUIComponent *ui_component,
const char *path,
Bonobo_UIComponent_EventType type,
const char *state,
@@ -277,7 +281,9 @@ menu_class_confidential_cb (BonoboUIComponent *ui_component,
EventEditor *ee = (EventEditor *) user_data;
if (state[0] == '0')
return;
-
+
+ comp_editor_page_notify_changed (COMP_EDITOR_PAGE (ee->priv->event_page));
+
event_page_set_classification (ee->priv->event_page, E_CAL_COMPONENT_CLASS_CONFIDENTIAL);
}
diff --git a/calendar/gui/dialogs/memo-editor.c b/calendar/gui/dialogs/memo-editor.c
index f81d1fd9cd..5d18450203 100644
--- a/calendar/gui/dialogs/memo-editor.c
+++ b/calendar/gui/dialogs/memo-editor.c
@@ -32,8 +32,11 @@
#include <glade/glade.h>
#include <libgnome/gnome-i18n.h>
+#include <evolution-shell-component-utils.h>
+#include <e-util/e-util-private.h>
#include "memo-page.h"
#include "cancel-comp.h"
+#include "../calendar-config.h"
#include "memo-editor.h"
struct _MemoEditorPrivate {
@@ -98,31 +101,127 @@ client_changed_cb (CompEditorPage *page, ECal *client, gpointer user_data)
/* set_menu_sens (MEMO_EDITOR (user_data)); */
}
+static void
+menu_show_categories_cb (BonoboUIComponent *component,
+ const char *path,
+ Bonobo_UIComponent_EventType type,
+ const char *state,
+ gpointer user_data)
+{
+ MemoEditor *me = (MemoEditor *) user_data;
+
+ if (type != Bonobo_UIComponent_STATE_CHANGED)
+ return;
+
+ memo_page_set_show_categories (me->priv->memo_page, atoi(state));
+ calendar_config_set_show_categories (atoi(state));
+}
+
+static void
+menu_class_public_cb (BonoboUIComponent *ui_component,
+ const char *path,
+ Bonobo_UIComponent_EventType type,
+ const char *state,
+ gpointer user_data)
+{
+ MemoEditor *me = (MemoEditor *) user_data;
+
+ if (state[0] == '0')
+ return;
+
+ comp_editor_page_notify_changed (COMP_EDITOR_PAGE (me->priv->memo_page));
+ memo_page_set_classification (me->priv->memo_page, E_CAL_COMPONENT_CLASS_PUBLIC);
+}
+
+static void
+menu_class_private_cb (BonoboUIComponent *ui_component,
+ const char *path,
+ Bonobo_UIComponent_EventType type,
+ const char *state,
+ gpointer user_data)
+{
+ MemoEditor *me = (MemoEditor *) user_data;
+ if (state[0] == '0')
+ return;
+
+ comp_editor_page_notify_changed (COMP_EDITOR_PAGE (me->priv->memo_page));
+ memo_page_set_classification (me->priv->memo_page, E_CAL_COMPONENT_CLASS_PRIVATE);
+}
+
+static void
+menu_class_confidential_cb (BonoboUIComponent *ui_component,
+ const char *path,
+ Bonobo_UIComponent_EventType type,
+ const char *state,
+ gpointer user_data)
+{
+ MemoEditor *me = (MemoEditor *) user_data;
+ if (state[0] == '0')
+ return;
+
+ comp_editor_page_notify_changed (COMP_EDITOR_PAGE (me->priv->memo_page));
+ memo_page_set_classification (me->priv->memo_page, E_CAL_COMPONENT_CLASS_CONFIDENTIAL);
+}
+
/* Object initialization function for the memo editor */
static void
-memo_editor_init (MemoEditor *te)
+memo_editor_init (MemoEditor *me)
{
MemoEditorPrivate *priv;
+ CompEditor *editor = COMP_EDITOR(me);
+ gboolean status;
+ char *xmlfile;
priv = g_new0 (MemoEditorPrivate, 1);
- te->priv = priv;
+ me->priv = priv;
priv->updating = FALSE;
+ bonobo_ui_component_freeze (editor->uic, NULL);
+
+ xmlfile = g_build_filename (EVOLUTION_UIDIR, "evolution-memo-editor.xml", NULL);
+ bonobo_ui_util_set_ui (editor->uic, PREFIX,
+ xmlfile,
+ "evolution-memo-editor", NULL);
+ g_free (xmlfile);
+
+ status = calendar_config_get_show_categories ();
+ bonobo_ui_component_set_prop (
+ editor->uic, "/commands/ViewCategories",
+ "state", status ? "1" : "0", NULL);
+ bonobo_ui_component_add_listener (
+ editor->uic, "ViewCategories",
+ menu_show_categories_cb, editor);
+
+ bonobo_ui_component_set_prop (
+ editor->uic, "/commands/ActionClassPublic",
+ "state", "1", NULL);
+ bonobo_ui_component_add_listener (
+ editor->uic, "ActionClassPublic",
+ menu_class_public_cb, editor);
+ bonobo_ui_component_add_listener (
+ editor->uic, "ActionClassPrivate",
+ menu_class_private_cb, editor);
+ bonobo_ui_component_add_listener (
+ editor->uic, "ActionClassConfidential",
+ menu_class_confidential_cb, editor);
+
+ bonobo_ui_component_thaw (editor->uic, NULL);
+
/* TODO add help stuff */
-/* comp_editor_set_help_section (COMP_EDITOR (te), "usage-calendar-memo"); */
+/* comp_editor_set_help_section (COMP_EDITOR (me), "usage-calendar-memo"); */
}
MemoEditor *
memo_editor_construct (MemoEditor *me, ECal *client)
{
MemoEditorPrivate *priv;
-
+ CompEditor *editor = COMP_EDITOR (me);
gboolean read_only = FALSE;
priv = me->priv;
- priv->memo_page = memo_page_new ();
+ priv->memo_page = memo_page_new (editor->uic);
g_object_ref (priv->memo_page);
gtk_object_sink (GTK_OBJECT (priv->memo_page));
comp_editor_append_page (COMP_EDITOR (me),
@@ -133,7 +232,8 @@ memo_editor_construct (MemoEditor *me, ECal *client)
if (!e_cal_is_read_only (client, &read_only, NULL))
read_only = TRUE;
-
+
+ bonobo_ui_component_set_prop (editor->uic, "/Toolbar/ecal3", "hidden", "1", NULL);
comp_editor_set_e_cal (COMP_EDITOR (me), client);
init_widgets (me);
@@ -144,11 +244,11 @@ memo_editor_construct (MemoEditor *me, ECal *client)
static void
memo_editor_set_e_cal (CompEditor *editor, ECal *client)
{
- MemoEditor *te;
+ MemoEditor *me;
MemoEditorPrivate *priv;
- te = MEMO_EDITOR (editor);
- priv = te->priv;
+ me = MEMO_EDITOR (editor);
+ priv = me->priv;
if (COMP_EDITOR_CLASS (memo_editor_parent_class)->set_e_cal)
COMP_EDITOR_CLASS (memo_editor_parent_class)->set_e_cal (editor, client);
@@ -196,6 +296,7 @@ memo_editor_finalize (GObject *object)
{
MemoEditor *me;
MemoEditorPrivate *priv;
+ ECalComponent *comp;
g_return_if_fail (object != NULL);
g_return_if_fail (IS_MEMO_EDITOR (object));
diff --git a/calendar/gui/dialogs/memo-page.c b/calendar/gui/dialogs/memo-page.c
index c7682f13f9..762b366624 100644
--- a/calendar/gui/dialogs/memo-page.c
+++ b/calendar/gui/dialogs/memo-page.c
@@ -59,7 +59,10 @@ struct _MemoPagePrivate {
GtkWidget *memo_content;
- GtkWidget *classification;
+ /* Bonobo Controller for the menu/toolbar */
+ BonoboUIComponent *uic;
+
+ ECalComponentClassification classification;
GtkWidget *categories_btn;
GtkWidget *categories;
@@ -118,37 +121,38 @@ memo_page_class_init (MemoPageClass *klass)
/* Object initialization function for the memo page */
static void
-memo_page_init (MemoPage *tpage)
+memo_page_init (MemoPage *mpage)
{
MemoPagePrivate *priv;
priv = g_new0 (MemoPagePrivate, 1);
- tpage->priv = priv;
+ mpage->priv = priv;
priv->xml = NULL;
priv->main = NULL;
priv->memo_content = NULL;
- priv->classification = NULL;
+ priv->classification = E_CAL_COMPONENT_CLASS_NONE;
priv->categories_btn = NULL;
priv->categories = NULL;
priv->updating = FALSE;
+
}
/* Destroy handler for the memo page */
static void
memo_page_finalize (GObject *object)
{
- MemoPage *tpage;
+ MemoPage *mpage;
MemoPagePrivate *priv;
g_return_if_fail (object != NULL);
g_return_if_fail (IS_MEMO_PAGE (object));
- tpage = MEMO_PAGE (object);
- priv = tpage->priv;
-
+ mpage = MEMO_PAGE (object);
+ priv = mpage->priv;
+
if (priv->main)
gtk_widget_unref (priv->main);
@@ -158,23 +162,45 @@ memo_page_finalize (GObject *object)
}
g_free (priv);
- tpage->priv = NULL;
+ mpage->priv = NULL;
if (G_OBJECT_CLASS (memo_page_parent_class)->finalize)
(* G_OBJECT_CLASS (memo_page_parent_class)->finalize) (object);
}
-
+static void
+set_classification_menu (MemoPage *page, gint class)
+{
+ bonobo_ui_component_freeze (page->priv->uic, NULL);
+ switch (class) {
+ case E_CAL_COMPONENT_CLASS_PUBLIC:
+ bonobo_ui_component_set_prop (
+ page->priv->uic, "/commands/ActionClassPublic",
+ "state", "1", NULL);
+ break;
+ case E_CAL_COMPONENT_CLASS_CONFIDENTIAL:
+ bonobo_ui_component_set_prop (
+ page->priv->uic, "/commands/ActionClassConfidential",
+ "state", "1", NULL);
+ break;
+ case E_CAL_COMPONENT_CLASS_PRIVATE:
+ bonobo_ui_component_set_prop (
+ page->priv->uic, "/commands/ActionClassPrivate",
+ "state", "1", NULL);
+ break;
+ }
+ bonobo_ui_component_thaw (page->priv->uic, NULL);
+}
/* get_widget handler for the task page */
static GtkWidget *
memo_page_get_widget (CompEditorPage *page)
{
- MemoPage *tpage;
+ MemoPage *mpage;
MemoPagePrivate *priv;
- tpage = MEMO_PAGE (page);
- priv = tpage->priv;
+ mpage = MEMO_PAGE (page);
+ priv = mpage->priv;
return priv->main;
}
@@ -183,44 +209,44 @@ memo_page_get_widget (CompEditorPage *page)
static void
memo_page_focus_main_widget (CompEditorPage *page)
{
- MemoPage *tpage;
+ MemoPage *mpage;
MemoPagePrivate *priv;
- tpage = MEMO_PAGE (page);
- priv = tpage->priv;
+ mpage = MEMO_PAGE (page);
+ priv = mpage->priv;
gtk_widget_grab_focus (priv->memo_content);
}
/* Fills the widgets with default values */
static void
-clear_widgets (MemoPage *tpage)
+clear_widgets (MemoPage *mpage)
{
MemoPagePrivate *priv;
- priv = tpage->priv;
+ priv = mpage->priv;
/* memo content */
gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->memo_content)), "", 0);
/* Classification */
- e_dialog_option_menu_set (priv->classification, E_CAL_COMPONENT_CLASS_PRIVATE, classification_map);
+ priv->classification = E_CAL_COMPONENT_CLASS_PRIVATE;
+ set_classification_menu (mpage, priv->classification);
/* Categories */
e_dialog_editable_set (priv->categories, NULL);
}
-/* Decode the radio button group for classifications */
-static ECalComponentClassification
-classification_get (GtkWidget *widget)
+void
+memo_page_set_classification (MemoPage *page, ECalComponentClassification class)
{
- return e_dialog_option_menu_get (widget, classification_map);
+ page->priv->classification = class;
}
static void
sensitize_widgets (MemoPage *mpage)
{
- gboolean read_only;
+ gboolean read_only, sens, sensitize;
MemoPagePrivate *priv;
priv = mpage->priv;
@@ -228,30 +254,48 @@ sensitize_widgets (MemoPage *mpage)
if (!e_cal_is_read_only (COMP_EDITOR_PAGE (mpage)->client, &read_only, NULL))
read_only = TRUE;
+ if (COMP_EDITOR_PAGE (mpage)->flags & COMP_EDITOR_IS_ASSIGNED)
+ sens = COMP_EDITOR_PAGE (mpage)->flags & COMP_EDITOR_PAGE_USER_ORG;
+
+ sensitize = (!read_only && sens);
+
+ priv = mpage->priv;
+
+ if (!e_cal_is_read_only (COMP_EDITOR_PAGE (mpage)->client, &read_only, NULL))
+ read_only = TRUE;
+
gtk_widget_set_sensitive (priv->memo_content, !read_only);
- gtk_widget_set_sensitive (priv->classification, !read_only);
gtk_widget_set_sensitive (priv->categories_btn, !read_only);
gtk_entry_set_editable (GTK_ENTRY (priv->categories), !read_only);
+
+ bonobo_ui_component_set_prop (priv->uic, "/commands/ActionClassPublic", "sensitive", sensitize ? "1" : "0"
+ , NULL);
+ bonobo_ui_component_set_prop (priv->uic, "/commands/ActionClassPrivate", "sensitive", sensitize ? "1" : "0"
+ , NULL);
+ bonobo_ui_component_set_prop (priv->uic, "/commands/ActionClassConfidential", "sensitive",
+ sensitize ? "1" : "0", NULL);
+ bonobo_ui_component_set_prop (priv->uic, "/commands/ViewCategories", "sensitive", sensitize ? "1" : "0"
+ , NULL);
}
/* fill_widgets handler for the memo page */
static gboolean
memo_page_fill_widgets (CompEditorPage *page, ECalComponent *comp)
{
- MemoPage *tpage;
+ MemoPage *mpage;
MemoPagePrivate *priv;
ECalComponentClassification cl;
GSList *l;
const char *categories;
ESource *source;
- tpage = MEMO_PAGE (page);
- priv = tpage->priv;
+ mpage = MEMO_PAGE (page);
+ priv = mpage->priv;
priv->updating = TRUE;
/* Clean the screen */
- clear_widgets (tpage);
+ clear_widgets (mpage);
e_cal_component_get_description_list (comp, &l);
if (l && l->data) {
@@ -271,15 +315,26 @@ memo_page_fill_widgets (CompEditorPage *page, ECalComponent *comp)
switch (cl) {
case E_CAL_COMPONENT_CLASS_PUBLIC:
+ {
+ cl = E_CAL_COMPONENT_CLASS_PUBLIC;
+ break;
+ }
case E_CAL_COMPONENT_CLASS_PRIVATE:
+ {
+ cl = E_CAL_COMPONENT_CLASS_PRIVATE;
+ break;
+ }
case E_CAL_COMPONENT_CLASS_CONFIDENTIAL:
- break;
+ {
+ cl = E_CAL_COMPONENT_CLASS_CONFIDENTIAL;
+ break;
+ }
default:
/* default to PUBLIC */
cl = E_CAL_COMPONENT_CLASS_PUBLIC;
break;
}
- e_dialog_option_menu_set (priv->classification, cl, classification_map);
+ set_classification_menu (mpage, cl);
/* Categories */
e_cal_component_get_categories (comp, &categories);
@@ -291,7 +346,7 @@ memo_page_fill_widgets (CompEditorPage *page, ECalComponent *comp)
priv->updating = FALSE;
- sensitize_widgets (tpage);
+ sensitize_widgets (mpage);
return TRUE;
}
@@ -300,15 +355,15 @@ memo_page_fill_widgets (CompEditorPage *page, ECalComponent *comp)
static gboolean
memo_page_fill_component (CompEditorPage *page, ECalComponent *comp)
{
- MemoPage *tpage;
+ MemoPage *mpage;
MemoPagePrivate *priv;
char *cat, *str;
int i;
GtkTextBuffer *text_buffer;
GtkTextIter text_iter_start, text_iter_end;
- tpage = MEMO_PAGE (page);
- priv = tpage->priv;
+ mpage = MEMO_PAGE (page);
+ priv = mpage->priv;
text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->memo_content));
/* Memo Content */
@@ -365,7 +420,7 @@ memo_page_fill_component (CompEditorPage *page, ECalComponent *comp)
g_free (str);
/* Classification. */
- e_cal_component_set_classification (comp, classification_get (priv->classification));
+ e_cal_component_set_classification (comp, priv->classification);
/* Categories */
cat = e_dialog_editable_get (priv->categories);
@@ -381,19 +436,28 @@ memo_page_fill_component (CompEditorPage *page, ECalComponent *comp)
return TRUE;
}
-
-
+void
+memo_page_set_show_categories (MemoPage *page, gboolean state)
+{
+ if (state) {
+ gtk_widget_show (page->priv->categories_btn);
+ gtk_widget_show (page->priv->categories);
+ } else {
+ gtk_widget_hide (page->priv->categories_btn);
+ gtk_widget_hide (page->priv->categories);
+ }
+}
/* Gets the widgets from the XML file and returns if they are all available. */
static gboolean
-get_widgets (MemoPage *tpage)
+get_widgets (MemoPage *mpage)
{
- CompEditorPage *page = COMP_EDITOR_PAGE (tpage);
+ CompEditorPage *page = COMP_EDITOR_PAGE (mpage);
MemoPagePrivate *priv;
GSList *accel_groups;
GtkWidget *toplevel;
- priv = tpage->priv;
+ priv = mpage->priv;
#define GW(name) glade_xml_get_widget (priv->xml, name)
@@ -417,8 +481,6 @@ get_widgets (MemoPage *tpage)
priv->memo_content = GW ("memo_content");
- priv->classification = GW ("classification");
-
priv->categories_btn = GW ("categories-button");
priv->categories = GW ("categories");
@@ -426,8 +488,7 @@ get_widgets (MemoPage *tpage)
#undef GW
- return (priv->classification
- && priv->memo_content
+ return (priv->memo_content
&& priv->categories_btn
&& priv->categories);
}
@@ -438,12 +499,12 @@ get_widgets (MemoPage *tpage)
static void
categories_clicked_cb (GtkWidget *button, gpointer data)
{
- MemoPage *tpage;
+ MemoPage *mpage;
MemoPagePrivate *priv;
GtkWidget *entry;
- tpage = MEMO_PAGE (data);
- priv = tpage->priv;
+ mpage = MEMO_PAGE (data);
+ priv = mpage->priv;
entry = priv->categories;
e_categories_config_open_dialog_for_entry (GTK_ENTRY (entry));
@@ -453,24 +514,24 @@ categories_clicked_cb (GtkWidget *button, gpointer data)
static void
field_changed_cb (GtkWidget *widget, gpointer data)
{
- MemoPage *tpage;
+ MemoPage *mpage;
MemoPagePrivate *priv;
- tpage = MEMO_PAGE (data);
- priv = tpage->priv;
+ mpage = MEMO_PAGE (data);
+ priv = mpage->priv;
if (!priv->updating)
- comp_editor_page_notify_changed (COMP_EDITOR_PAGE (tpage));
+ comp_editor_page_notify_changed (COMP_EDITOR_PAGE (mpage));
}
static void
source_changed_cb (GtkWidget *widget, ESource *source, gpointer data)
{
- MemoPage *tpage;
+ MemoPage *mpage;
MemoPagePrivate *priv;
- tpage = MEMO_PAGE (data);
- priv = tpage->priv;
+ mpage = MEMO_PAGE (data);
+ priv = mpage->priv;
if (!priv->updating) {
ECal *client;
@@ -483,7 +544,7 @@ source_changed_cb (GtkWidget *widget, ESource *source, gpointer data)
g_object_unref (client);
e_source_option_menu_select (E_SOURCE_OPTION_MENU (priv->source_selector),
- e_cal_get_source (COMP_EDITOR_PAGE (tpage)->client));
+ e_cal_get_source (COMP_EDITOR_PAGE (mpage)->client));
dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL,
GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,
@@ -495,19 +556,19 @@ source_changed_cb (GtkWidget *widget, ESource *source, gpointer data)
comp_editor_notify_client_changed (
COMP_EDITOR (gtk_widget_get_toplevel (priv->main)),
client);
- sensitize_widgets (tpage);
+ sensitize_widgets (mpage);
}
}
}
/* Hooks the widget signals */
static gboolean
-init_widgets (MemoPage *tpage)
+init_widgets (MemoPage *mpage)
{
MemoPagePrivate *priv;
GtkTextBuffer *text_buffer;
- priv = tpage->priv;
+ priv = mpage->priv;
/* Memo Content */
text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->memo_content));
@@ -516,44 +577,44 @@ init_widgets (MemoPage *tpage)
/* Categories button */
g_signal_connect((priv->categories_btn), "clicked",
- G_CALLBACK (categories_clicked_cb), tpage);
+ G_CALLBACK (categories_clicked_cb), mpage);
/* Source selector */
g_signal_connect((priv->source_selector), "source_selected",
- G_CALLBACK (source_changed_cb), tpage);
+ G_CALLBACK (source_changed_cb), mpage);
/* Connect the default signal handler to use to make sure the "changed"
field gets set whenever a field is changed. */
/* Belongs to priv->memo_content */
g_signal_connect ((text_buffer), "changed",
- G_CALLBACK (field_changed_cb), tpage);
+ G_CALLBACK (field_changed_cb), mpage);
- g_signal_connect((priv->classification), "changed",
- G_CALLBACK (field_changed_cb), tpage);
g_signal_connect((priv->categories), "changed",
- G_CALLBACK (field_changed_cb), tpage);
-
+ G_CALLBACK (field_changed_cb), mpage);
+
+ memo_page_set_show_categories (mpage, calendar_config_get_show_categories());
+
return TRUE;
}
/**
* memo_page_construct:
- * @tpage: An memo page.
+ * @mpage: An memo page.
*
* Constructs an memo page by loading its Glade data.
*
- * Return value: The same object as @tpage, or NULL if the widgets could not be
+ * Return value: The same object as @mpage, or NULL if the widgets could not be
* created.
**/
MemoPage *
-memo_page_construct (MemoPage *tpage)
+memo_page_construct (MemoPage *mpage)
{
MemoPagePrivate *priv;
char *gladefile;
- priv = tpage->priv;
+ priv = mpage->priv;
gladefile = g_build_filename (EVOLUTION_GLADEDIR,
"memo-page.glade",
@@ -567,19 +628,19 @@ memo_page_construct (MemoPage *tpage)
return NULL;
}
- if (!get_widgets (tpage)) {
+ if (!get_widgets (mpage)) {
g_message ("memo_page_construct(): "
"Could not find all widgets in the XML file!");
return NULL;
}
- if (!init_widgets (tpage)) {
+ if (!init_widgets (mpage)) {
g_message ("memo_page_construct(): "
"Could not initialize the widgets!");
return NULL;
}
- return tpage;
+ return mpage;
}
/**
@@ -591,17 +652,18 @@ memo_page_construct (MemoPage *tpage)
* not be created.
**/
MemoPage *
-memo_page_new (void)
+memo_page_new (BonoboUIComponent *uic)
{
- MemoPage *tpage;
+ MemoPage *mpage;
- tpage = gtk_type_new (TYPE_MEMO_PAGE);
- if (!memo_page_construct (tpage)) {
- g_object_unref (tpage);
+ mpage = gtk_type_new (TYPE_MEMO_PAGE);
+ mpage->priv->uic = uic;
+ if (!memo_page_construct (mpage)) {
+ g_object_unref (mpage);
return NULL;
}
- return tpage;
+ return mpage;
}
GtkWidget *memo_page_create_source_option_menu (void);
diff --git a/calendar/gui/dialogs/memo-page.glade b/calendar/gui/dialogs/memo-page.glade
index 2553e1a4f2..ab9d2e2473 100644
--- a/calendar/gui/dialogs/memo-page.glade
+++ b/calendar/gui/dialogs/memo-page.glade
@@ -24,86 +24,19 @@
<property name="spacing">6</property>
<child>
- <widget class="GtkLabel" id="label21">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;Basics&lt;/span&gt;</property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
<widget class="GtkHBox" id="hbox7">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
- <widget class="GtkLabel" id="label22">
- <property name="visible">True</property>
- <property name="label" translatable="yes"></property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">12</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
<widget class="GtkTable" id="table3">
<property name="visible">True</property>
- <property name="n_rows">4</property>
+ <property name="n_rows">3</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="label100">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Classi_fication:</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">classification</property>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
<child>
<widget class="GtkHBox" id="hbox10">
@@ -112,70 +45,6 @@
<property name="spacing">0</property>
<child>
- <widget class="GtkOptionMenu" id="classification">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="history">0</property>
-
- <child>
- <widget class="GtkMenu" id="menu1">
-
- <child>
- <widget class="GtkMenuItem" id="public1">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Public</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkMenuItem" id="private1">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Private</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkMenuItem" id="confidential1">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Confidential</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label23">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Group:</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">12</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">source</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
<widget class="Custom" id="source">
<property name="visible">True</property>
<property name="creation_function">memo_page_create_source_option_menu</property>
@@ -193,8 +62,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -212,8 +81,8 @@
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
@@ -234,8 +103,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
@@ -271,8 +140,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">expand|shrink|fill</property>
<property name="y_options">expand|shrink|fill</property>
</packing>
@@ -296,12 +165,42 @@
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkLabel" id="label23">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Group:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">12</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">source</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+
+ </packing>
+ </child>
</widget>
<packing>
<property name="padding">0</property>
diff --git a/calendar/gui/dialogs/memo-page.h b/calendar/gui/dialogs/memo-page.h
index 8df3b5ff65..45928d96e0 100644
--- a/calendar/gui/dialogs/memo-page.h
+++ b/calendar/gui/dialogs/memo-page.h
@@ -24,6 +24,9 @@
#ifndef MEMO_PAGE_H
#define MEMO_PAGE_H
+#include <bonobo/bonobo-window.h>
+#include <bonobo/bonobo-ui-util.h>
+#include <bonobo/bonobo-widget.h>
#include "comp-editor-page.h"
G_BEGIN_DECLS
@@ -49,7 +52,7 @@ typedef struct {
GtkType memo_page_get_type (void);
MemoPage *memo_page_construct (MemoPage *epage);
-MemoPage *memo_page_new (void);
+MemoPage *memo_page_new (BonoboUIComponent *uic);
G_END_DECLS
diff --git a/calendar/gui/dialogs/save-comp.c b/calendar/gui/dialogs/save-comp.c
index 2c9146dac6..1fb77dedb3 100644
--- a/calendar/gui/dialogs/save-comp.c
+++ b/calendar/gui/dialogs/save-comp.c
@@ -48,6 +48,8 @@ save_component_dialog (GtkWindow *parent, ECalComponent *comp)
return e_error_run (parent, "calendar:prompt-save-appointment", NULL);
case E_CAL_COMPONENT_TODO:
return e_error_run (parent, "calendar:prompt-save-task", NULL);
+ case E_CAL_COMPONENT_JOURNAL:
+ return e_error_run (parent, "calendar:prompt-save-memo", NULL);
default:
return GTK_RESPONSE_NO;
}
diff --git a/calendar/gui/dialogs/task-editor.c b/calendar/gui/dialogs/task-editor.c
index 9dabb2059f..4416fabc93 100644
--- a/calendar/gui/dialogs/task-editor.c
+++ b/calendar/gui/dialogs/task-editor.c
@@ -196,7 +196,7 @@ menu_show_categories_cb (BonoboUIComponent *component,
}
static void
-menu_class_public_cb (BonoboUIComponent *ui_component,
+menu_class_public_cb (BonoboUIComponent *ui_component,
const char *path,
Bonobo_UIComponent_EventType type,
const char *state,
@@ -206,27 +206,28 @@ menu_class_public_cb (BonoboUIComponent *ui_component,
if (state[0] == '0')
return;
- printf("Setting to public\n");
+
+ comp_editor_page_notify_changed (COMP_EDITOR_PAGE (te->priv->task_page));
task_page_set_classification (te->priv->task_page, E_CAL_COMPONENT_CLASS_PUBLIC);
}
static void
-menu_class_private_cb (BonoboUIComponent *ui_component,
+menu_class_private_cb (BonoboUIComponent *ui_component,
const char *path,
Bonobo_UIComponent_EventType type,
const char *state,
- gpointer user_data)
+ gpointer user_data)
{
TaskEditor *te = (TaskEditor *) user_data;
if (state[0] == '0')
return;
- printf("Setting to private\n");
+ comp_editor_page_notify_changed (COMP_EDITOR_PAGE (te->priv->task_page));
task_page_set_classification (te->priv->task_page, E_CAL_COMPONENT_CLASS_PRIVATE);
}
static void
-menu_class_confidential_cb (BonoboUIComponent *ui_component,
+menu_class_confidential_cb (BonoboUIComponent *ui_component,
const char *path,
Bonobo_UIComponent_EventType type,
const char *state,
@@ -236,7 +237,7 @@ menu_class_confidential_cb (BonoboUIComponent *ui_component,
if (state[0] == '0')
return;
- printf("Setting to confidential\n");
+ comp_editor_page_notify_changed (COMP_EDITOR_PAGE (te->priv->task_page));
task_page_set_classification (te->priv->task_page, E_CAL_COMPONENT_CLASS_CONFIDENTIAL);
}