Mercurial > pidgin
comparison plugins/extplacement.c @ 9157:bd1ea0a717d7
[gaim-migrate @ 9941]
make deryni's removed placement option a plugin
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Tue, 01 Jun 2004 01:55:55 +0000 |
parents | |
children | fb09ed68fbd2 |
comparison
equal
deleted
inserted
replaced
9156:41fba1972ed0 | 9157:bd1ea0a717d7 |
---|---|
1 #include "internal.h" | |
2 #include "conversation.h" | |
3 | |
4 #define EXTPLACEMENT_OPT "/plugins/core/nosnilmot/extplacement" | |
5 | |
6 static void | |
7 conv_placement_last_created_win_split(GaimConversation *conv) | |
8 { | |
9 GaimConvWindow *win; | |
10 | |
11 win = gaim_get_last_window_with_type(gaim_conversation_get_type(conv)); | |
12 | |
13 if (win == NULL) { | |
14 win = gaim_conv_window_new(); | |
15 | |
16 gaim_conv_window_add_conversation(win, conv); | |
17 gaim_conv_window_show(win); | |
18 } | |
19 else | |
20 gaim_conv_window_add_conversation(win, conv); | |
21 } | |
22 | |
23 static void | |
24 conv_placement_by_number(GaimConversation *conv) | |
25 { | |
26 GaimConvWindow *win = NULL; | |
27 | |
28 if (gaim_prefs_get_bool("/core/conversations/combine_chat_im")) | |
29 win = g_list_last(gaim_get_windows())->data; | |
30 else | |
31 win = gaim_get_last_window_with_type(gaim_conversation_get_type(conv)); | |
32 | |
33 if (win == NULL) { | |
34 win = gaim_conv_window_new(); | |
35 | |
36 gaim_conv_window_add_conversation(win, conv); | |
37 gaim_conv_window_show(win); | |
38 } else { | |
39 int max_count = gaim_prefs_get_int(EXTPLACEMENT_OPT "/placement_number"); | |
40 int count = gaim_conv_window_get_conversation_count(win); | |
41 | |
42 if (count < max_count) | |
43 gaim_conv_window_add_conversation(win, conv); | |
44 else { | |
45 GList *l = NULL; | |
46 | |
47 for (l = gaim_get_windows(); l != NULL; l = l->next) { | |
48 win = (GaimConvWindow *)l->data; | |
49 | |
50 count = gaim_conv_window_get_conversation_count(win); | |
51 if (count < max_count) { | |
52 gaim_conv_window_add_conversation(win, conv); | |
53 return; | |
54 } | |
55 } | |
56 win = gaim_conv_window_new(); | |
57 | |
58 gaim_conv_window_add_conversation(win, conv); | |
59 gaim_conv_window_show(win); | |
60 } | |
61 } | |
62 } | |
63 | |
64 static gboolean | |
65 plugin_load(GaimPlugin *plugin) | |
66 { | |
67 gaim_prefs_add_none("/plugins/core/nosnilmot"); | |
68 gaim_prefs_add_none("/plugins/core/nosnilmot/extplacement"); | |
69 gaim_prefs_add_int(EXTPLACEMENT_OPT "/placement_number", 4); | |
70 gaim_conv_placement_add_fnc("im_chat", _("Separate IM and Chat windows"), | |
71 &conv_placement_last_created_win_split); | |
72 gaim_conv_placement_add_fnc("number", _("By conversation count"), | |
73 &conv_placement_by_number); | |
74 return TRUE; | |
75 } | |
76 | |
77 static gboolean | |
78 plugin_unload(GaimPlugin *plugin) | |
79 { | |
80 gaim_conv_placement_remove_fnc("im_chat"); | |
81 gaim_conv_placement_remove_fnc("number"); | |
82 return TRUE; | |
83 } | |
84 | |
85 static GaimPluginPrefFrame * | |
86 get_plugin_pref_frame(GaimPlugin *plugin) { | |
87 GaimPluginPrefFrame *frame; | |
88 GaimPluginPref *ppref; | |
89 | |
90 frame = gaim_plugin_pref_frame_new(); | |
91 | |
92 ppref = gaim_plugin_pref_new_with_label("Conversation Placement"); | |
93 gaim_plugin_pref_frame_add(frame, ppref); | |
94 | |
95 ppref = gaim_plugin_pref_new_with_name_and_label( | |
96 EXTPLACEMENT_OPT "/placement_number", | |
97 "Number of conversations per window"); | |
98 gaim_plugin_pref_set_bounds(ppref, 1, 50); | |
99 gaim_plugin_pref_frame_add(frame, ppref); | |
100 | |
101 return frame; | |
102 } | |
103 | |
104 static GaimPluginUiInfo prefs_info = { | |
105 get_plugin_pref_frame | |
106 }; | |
107 | |
108 static GaimPluginInfo info = | |
109 { | |
110 GAIM_PLUGIN_API_VERSION, /**< api_version */ | |
111 GAIM_PLUGIN_STANDARD, /**< type */ | |
112 NULL, /**< ui_requirement */ | |
113 0, /**< flags */ | |
114 NULL, /**< dependencies */ | |
115 GAIM_PRIORITY_DEFAULT, /**< priority */ | |
116 | |
117 "core-nosnilmot-extplacement", /**< id */ | |
118 N_("ExtPlacement"), /**< name */ | |
119 VERSION, /**< version */ | |
120 /** summary */ | |
121 N_("Extra conversation placement options."), | |
122 /** description */ | |
123 N_("Either restrict the number of conversations per windows" | |
124 " or use separate windows for IMs and Chats"), | |
125 "Stu Tomlinson <stu@nosnilmot.com>", /**< author */ | |
126 "http://www.nosnilmot.com/gaim/plugins/", /**< homepage */ | |
127 | |
128 plugin_load, /**< load */ | |
129 plugin_unload, /**< unload */ | |
130 NULL, /**< destroy */ | |
131 | |
132 NULL, /**< ui_info */ | |
133 NULL, /**< extra_info */ | |
134 &prefs_info, /**< prefs_info */ | |
135 NULL /**< actions */ | |
136 }; | |
137 | |
138 static void | |
139 init_plugin(GaimPlugin *plugin) | |
140 { | |
141 } | |
142 | |
143 GAIM_INIT_PLUGIN(extplacement, init_plugin, info) |