Mercurial > pidgin.yaz
view plugins/timestamp_format.c @ 13392:e132f0969763
[gaim-migrate @ 15765]
The timestamp plugin shouldn't be disabling the "Gaim timestamps" in this way. It causes the Show Timestamps item in the conversation window's Options menu to not reflect reality (i.e. the option is checked, but no timestamps show up).
I think that users can just use the Show Timestamps option to control that setting independently. If people really want this plugin to force timestamps off, it should do so by setting "/gaim/gtk/conversations/show_timestamps" to FALSE and greying out the Show Timestamps menu item.
I think this fixes SF Bug #1385439. (It does if they were using this plugin.)
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Sat, 04 Mar 2006 20:18:34 +0000 |
parents | c73c7dd0721f |
children | f94309c7c480 |
line wrap: on
line source
#include "internal.h" #include "debug.h" #include "log.h" #include "plugin.h" #include "util.h" #include "version.h" #include "gtkconv.h" #include "gtkplugin.h" #include <time.h> static GaimPluginPrefFrame * get_plugin_pref_frame(GaimPlugin *plugin) { GaimPluginPrefFrame *frame; GaimPluginPref *ppref; frame = gaim_plugin_pref_frame_new(); ppref = gaim_plugin_pref_new_with_label(_("Timestamp Format Options")); gaim_plugin_pref_frame_add(frame, ppref); ppref = gaim_plugin_pref_new_with_name_and_label( "/plugins/gtk/timestamp_format/force_24hr", _("_Force (traditional Gaim) 24-hour time format")); gaim_plugin_pref_frame_add(frame, ppref); ppref = gaim_plugin_pref_new_with_label(_("Show dates in...")); gaim_plugin_pref_frame_add(frame, ppref); ppref = gaim_plugin_pref_new_with_name_and_label( "/plugins/gtk/timestamp_format/use_dates/conversation", _("Co_nversations:")); gaim_plugin_pref_set_type(ppref, GAIM_PLUGIN_PREF_CHOICE); gaim_plugin_pref_add_choice(ppref, _("For delayed messages"), "automatic"); gaim_plugin_pref_add_choice(ppref, _("For delayed messages and in chats"), "chats"); gaim_plugin_pref_add_choice(ppref, _("Always"), "always"); gaim_plugin_pref_frame_add(frame, ppref); ppref = gaim_plugin_pref_new_with_name_and_label( "/plugins/gtk/timestamp_format/use_dates/log", _("_Message Logs:")); gaim_plugin_pref_set_type(ppref, GAIM_PLUGIN_PREF_CHOICE); gaim_plugin_pref_add_choice(ppref, _("For delayed messages"), "automatic"); gaim_plugin_pref_add_choice(ppref, _("For delayed messages and in chats"), "chats"); gaim_plugin_pref_add_choice(ppref, _("Always"), "always"); gaim_plugin_pref_frame_add(frame, ppref); return frame; } static char *timestamp_cb_common(GaimConversation *conv, const struct tm *tm, gboolean force, const char *dates) { g_return_val_if_fail(conv != NULL, NULL); g_return_val_if_fail(tm != NULL, NULL); g_return_val_if_fail(dates != NULL, NULL); if (!strcmp(dates, "always") || (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT && !strcmp(dates, "chats")) || (time(NULL) > (mktime((struct tm *)tm) + 20*60))) { if (force) return g_strdup(gaim_utf8_strftime("%Y-%m-%d %H:%M:%S", tm)); else return g_strdup(gaim_date_format_long(tm)); } if (force) return g_strdup(gaim_utf8_strftime("%H:%M:%S", tm)); return NULL; } static char *conversation_timestamp_cb(GaimConversation *conv, const struct tm *tm, gpointer data) { gboolean force = gaim_prefs_get_bool( "/plugins/gtk/timestamp_format/force_24hr"); const char *dates = gaim_prefs_get_string( "/plugins/gtk/timestamp_format/use_dates/conversation"); g_return_val_if_fail(conv != NULL, NULL); g_return_val_if_fail(tm != NULL, NULL); return timestamp_cb_common(conv, tm, force, dates); } static char *log_timestamp_cb(GaimLog *log, const struct tm *tm, gpointer data) { gboolean force = gaim_prefs_get_bool( "/plugins/gtk/timestamp_format/force_24hr"); const char *dates = gaim_prefs_get_string( "/plugins/gtk/timestamp_format/use_dates/log"); g_return_val_if_fail(log != NULL, NULL); g_return_val_if_fail(tm != NULL, NULL); if (log->type == GAIM_LOG_SYSTEM) { if (force) return g_strdup(gaim_utf8_strftime("%Y-%m-%d %H:%M:%S", tm)); else return NULL; } return timestamp_cb_common(log->conv, tm, force, dates); } static gboolean plugin_load(GaimPlugin *plugin) { gaim_signal_connect(gaim_gtk_conversations_get_handle(), "conversation-timestamp", plugin, GAIM_CALLBACK(conversation_timestamp_cb), NULL); gaim_signal_connect(gaim_log_get_handle(), "log-timestamp", plugin, GAIM_CALLBACK(log_timestamp_cb), NULL); return TRUE; } static gboolean plugin_unload(GaimPlugin *plugin) { return TRUE; } static GaimPluginUiInfo prefs_info = { get_plugin_pref_frame, 0, /* page num (Reserved) */ NULL /* frame (Reserved) */ }; static GaimPluginInfo info = { GAIM_PLUGIN_MAGIC, GAIM_MAJOR_VERSION, GAIM_MINOR_VERSION, GAIM_PLUGIN_STANDARD, /**< type */ GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ 0, /**< flags */ NULL, /**< dependencies */ GAIM_PRIORITY_DEFAULT, /**< priority */ NULL, /**< id */ N_("Message Timestamp Formats"), /**< name */ VERSION, /**< version */ /** summary */ N_("Customizes the message timestamp formats."), /** description */ N_("This plugin allows the user to customize " "conversation and logging message timestamp " "formats."), "Richard Laager <rlaager@users.sf.net>", /**< author */ GAIM_WEBSITE, /**< homepage */ plugin_load, /**< load */ plugin_unload, /**< unload */ NULL, /**< destroy */ NULL, /**< ui_info */ NULL, /**< extra_info */ &prefs_info, /**< prefs_info */ NULL /**< actions */ }; static void init_plugin(GaimPlugin *plugin) { gaim_prefs_add_none("/plugins/gtk"); gaim_prefs_add_none("/plugins/gtk/timestamp_format"); gaim_prefs_add_bool("/plugins/gtk/timestamp_format/force_24hr", TRUE); gaim_prefs_add_none("/plugins/gtk/timestamp_format/use_dates"); gaim_prefs_add_string("/plugins/gtk/timestamp_format/use_dates/conversation", "automatic"); gaim_prefs_add_string("/plugins/gtk/timestamp_format/use_dates/log", "automatic"); } GAIM_INIT_PLUGIN(timestamp_format, init_plugin, info)