aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--src/main.c3
-rw-r--r--src/plugin.c40
-rw-r--r--src/plugin.h4
4 files changed, 53 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index e2f0f09f..9b776923 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2009-10-13
+ * src/plugin.[ch]
+ src/main.c: added new APIs: syl_plugin_summary_lock(),
+ syl_plugin_summary_unlock() and syl_plugin_summary_is_locked().
+
+2009-10-13
+
* libsylph/utils.c
libsylph/imap.c
libsylph/socket.c
diff --git a/src/main.c b/src/main.c
index 44d29565..b0013642 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1096,6 +1096,9 @@ static void plugin_init(void)
summary_select_by_msgnum);
syl_plugin_add_symbol("summary_select_by_msginfo",
summary_select_by_msginfo);
+ syl_plugin_add_symbol("summary_lock", summary_lock);
+ syl_plugin_add_symbol("summary_unlock", summary_unlock);
+ syl_plugin_add_symbol("summary_is_locked", summary_is_locked);
syl_plugin_add_symbol("messageview_create_with_new_window",
messageview_create_with_new_window);
diff --git a/src/plugin.c b/src/plugin.c
index d934101b..16f9e0ef 100644
--- a/src/plugin.c
+++ b/src/plugin.c
@@ -39,6 +39,8 @@ enum {
#define SAFE_CALL_ARG1(func_ptr, arg1) { if (func_ptr) func_ptr(arg1); }
#define SAFE_CALL_ARG1_RET(func_ptr, arg1) \
(func_ptr ? func_ptr(arg1) : NULL)
+#define SAFE_CALL_ARG1_RET_VAL(func_ptr, arg1, retval) \
+ (func_ptr ? func_ptr(arg1) : retval)
#define SAFE_CALL_ARG2(func_ptr, arg1, arg2) \
{ if (func_ptr) func_ptr(arg1, arg2); }
#define SAFE_CALL_ARG2_RET(func_ptr, arg1, arg2) \
@@ -551,6 +553,44 @@ void syl_plugin_open_message(const gchar *folder_id, guint msgnum)
}
}
+void syl_plugin_summary_lock(void)
+{
+ void (*func)(gpointer);
+ gpointer summary;
+
+ summary = syl_plugin_summary_view_get();
+ if (summary) {
+ func = syl_plugin_lookup_symbol("summary_lock");
+ SAFE_CALL_ARG1(func, summary);
+ }
+}
+
+void syl_plugin_summary_unlock(void)
+{
+ void (*func)(gpointer);
+ gpointer summary;
+
+ summary = syl_plugin_summary_view_get();
+ if (summary) {
+ func = syl_plugin_lookup_symbol("summary_unlock");
+ SAFE_CALL_ARG1(func, summary);
+ }
+}
+
+gboolean syl_plugin_summary_is_locked(void)
+{
+ gboolean (*func)(gpointer);
+ gpointer summary;
+
+ summary = syl_plugin_summary_view_get();
+ if (summary) {
+ func = syl_plugin_lookup_symbol("summary_is_locked");
+ return SAFE_CALL_ARG1_RET_VAL(func, summary, FALSE);
+ }
+
+ return FALSE;
+}
+
gpointer syl_plugin_messageview_create_with_new_window(void)
{
gpointer (*func)(void);
diff --git a/src/plugin.h b/src/plugin.h
index 177a8463..238bab87 100644
--- a/src/plugin.h
+++ b/src/plugin.h
@@ -144,6 +144,10 @@ gboolean syl_plugin_summary_select_by_msginfo (MsgInfo *msginfo);
void syl_plugin_open_message (const gchar *folder_id,
guint msgnum);
+void syl_plugin_summary_lock (void);
+void syl_plugin_summary_unlock (void);
+gboolean syl_plugin_summary_is_locked (void);
+
/* MessageView */
gpointer syl_plugin_messageview_create_with_new_window
(void);