1 // Copyright (C) 2007 Mark Pustjens <pustjens@dds.nl>
2 // Copyright (C) 2010-2015 Petr Pavlu <setup@dagobah.cz>
4 // This file is part of CenterIM.
6 // CenterIM is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 2 of the License, or
9 // (at your option) any later version.
11 // CenterIM is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with CenterIM. If not, see <http://www.gnu.org/licenses/>.
19 #include "GeneralMenu.h"
21 #include "AccountStatusMenu.h"
22 #include "AccountWindow.h"
25 #include "OptionWindow.h"
26 #include "PluginWindow.h"
30 GeneralMenu::GeneralMenu() : MenuWindow(0, 0, AUTOSIZE
, AUTOSIZE
)
32 setColorScheme(CenterIM::SCHEME_GENERALMENU
);
35 _("Change status"), sigc::mem_fun(this, &GeneralMenu::openStatusWindow
));
37 _("Accounts..."), sigc::mem_fun(this, &GeneralMenu::openAccountWindow
));
39 _("Add buddy..."), sigc::mem_fun(this, &GeneralMenu::openAddBuddyRequest
));
41 _("Add chat..."), sigc::mem_fun(this, &GeneralMenu::openAddChatRequest
));
43 _("Add group..."), sigc::mem_fun(this, &GeneralMenu::openAddGroupRequest
));
44 appendItem(_("Pending requests..."),
45 sigc::mem_fun(this, &GeneralMenu::openPendingRequests
));
46 appendItem(_("Config options..."),
47 sigc::mem_fun(this, &GeneralMenu::openOptionWindow
));
49 _("Plugins..."), sigc::mem_fun(this, &GeneralMenu::openPluginWindow
));
52 auto submenu
= new MenuWindow(0, 0, AUTOSIZE
, AUTOSIZE
);
53 submenu
->setColorScheme(CenterIM::SCHEME_GENERALMENU
);
55 "Request input", sigc::mem_fun(this, &GeneralMenu::openRequestInputTest
));
57 "Request choice", sigc::mem_fun(this, &GeneralMenu::openRequestChoiceTest
));
59 "Request action", sigc::mem_fun(this, &GeneralMenu::openRequestActionTest
));
61 "Request fields", sigc::mem_fun(this, &GeneralMenu::openRequestFieldsTest
));
62 appendSubMenu("Debug...", *submenu
);
65 appendItem(_("Quit"), sigc::hide(sigc::mem_fun(CENTERIM
, &CenterIM::quit
)));
70 void GeneralMenu::onScreenResized()
72 CppConsUI::Rect chat
= CENTERIM
->getScreenArea(CenterIM::CHAT_AREA
);
76 void GeneralMenu::openStatusWindow(CppConsUI::Button
& /*activator*/)
78 auto win
= new AccountStatusMenu
;
83 void GeneralMenu::openAccountWindow(CppConsUI::Button
& /*activator*/)
85 auto win
= new AccountWindow
;
90 void GeneralMenu::openAddBuddyRequest(CppConsUI::Button
& /*activator*/)
92 purple_blist_request_add_buddy(nullptr, nullptr, nullptr, nullptr);
96 void GeneralMenu::openAddChatRequest(CppConsUI::Button
& /*activator*/)
98 purple_blist_request_add_chat(nullptr, nullptr, nullptr, nullptr);
102 void GeneralMenu::openAddGroupRequest(CppConsUI::Button
& /*activator*/)
104 purple_blist_request_add_group();
108 void GeneralMenu::openPendingRequests(CppConsUI::Button
& /*activator*/)
110 ACCOUNTS
->openPendingRequests();
114 void GeneralMenu::openOptionWindow(CppConsUI::Button
& /*activator*/)
116 auto win
= new OptionWindow
;
121 void GeneralMenu::openPluginWindow(CppConsUI::Button
& /*activator*/)
123 auto win
= new PluginWindow
;
129 void GeneralMenu::openRequestInputTest(CppConsUI::Button
& /*activator*/)
131 purple_request_input(nullptr, "Title", "Primary", "Secondary",
132 "default value", FALSE
, FALSE
, nullptr, "Ok", G_CALLBACK(input_ok_cb_
),
133 "Cancel", nullptr, nullptr, nullptr, nullptr, this);
138 void GeneralMenu::openRequestChoiceTest(CppConsUI::Button
& /*activator*/)
140 purple_request_choice(nullptr, "Title", "Primary", "Secondary", 1, "Ok",
141 G_CALLBACK(choice_ok_cb_
), "Cancel", nullptr, nullptr, nullptr, nullptr,
142 this, "Option 0", 0, "Option 1", 1, "Option 2", 2, nullptr);
147 void GeneralMenu::openRequestActionTest(CppConsUI::Button
& /*activator*/)
149 purple_request_action(nullptr, "Title", "Primary", "Secondary", 1, nullptr,
150 nullptr, nullptr, this, 3, "Action 0", G_CALLBACK(action_cb_
), "Action 1",
151 nullptr, "Action 2", G_CALLBACK(action_cb_
));
156 void GeneralMenu::openRequestFieldsTest(CppConsUI::Button
& /*activator*/)
158 PurpleRequestFields
*fields
= purple_request_fields_new();
159 PurpleRequestFieldGroup
*g
= purple_request_field_group_new("Group 0");
161 purple_request_fields_add_group(fields
, g
);
163 PurpleRequestField
*f
;
164 f
= purple_request_field_string_new("text0", "String field 0", "def0", FALSE
);
165 purple_request_field_group_add_field(g
, f
);
167 purple_request_field_string_new("text1", "String field 1", nullptr, FALSE
);
168 purple_request_field_group_add_field(g
, f
);
169 f
= purple_request_field_int_new("int0", "Int field 0", INT_MAX
);
170 purple_request_field_group_add_field(g
, f
);
171 f
= purple_request_field_bool_new("bool0", "Bool field 0", FALSE
);
172 purple_request_field_group_add_field(g
, f
);
174 f
= purple_request_field_choice_new("choice0", "Choice field 0", 2);
175 purple_request_field_choice_add(f
, "One");
176 purple_request_field_choice_add(f
, "Two");
177 purple_request_field_choice_add(f
, "Three");
178 purple_request_field_choice_add(f
, "Four");
179 purple_request_field_group_add_field(g
, f
);
181 f
= purple_request_field_list_new("list0", "List field 0, multiple");
182 purple_request_field_list_set_multi_select(f
, TRUE
);
183 purple_request_field_list_add(f
, "One", this);
184 purple_request_field_list_add(f
, "Two", this);
185 purple_request_field_list_add(f
, "Three", this);
186 purple_request_field_list_add(f
, "Four", this);
187 purple_request_field_list_add_selected(f
, "Three");
188 purple_request_field_group_add_field(g
, f
);
190 f
= purple_request_field_list_new("list1", "List field 1, single");
191 purple_request_field_list_set_multi_select(f
, FALSE
);
192 purple_request_field_list_add(f
, "One", this);
193 purple_request_field_list_add(f
, "Two", this);
194 purple_request_field_list_add(f
, "Three", this);
195 purple_request_field_list_add(f
, "Four", this);
196 purple_request_field_list_add_selected(f
, "Three");
197 purple_request_field_group_add_field(g
, f
);
199 f
= purple_request_field_account_new("account0", "Account field 0", nullptr);
200 purple_request_field_account_set_show_all(f
, TRUE
);
201 purple_request_field_group_add_field(g
, f
);
203 purple_request_fields(nullptr, "Title", "Primary", "Secondary", fields
, "Ok",
204 G_CALLBACK(fields_ok_cb_
), "Cancel", nullptr, nullptr, nullptr, nullptr,
210 void GeneralMenu::input_ok_cb(const char *text
)
212 LOG
->debug("input_ok_cb: %s", text
);
215 void GeneralMenu::choice_ok_cb(int selected
)
217 LOG
->debug("choice_ok_cb: %d", selected
);
220 void GeneralMenu::action_cb(int action
)
222 LOG
->debug("action_cb: %d", action
);
225 void GeneralMenu::fields_ok_cb(PurpleRequestFields
*fields
)
228 "fields_ok_cb: text0=%s, text1=%s, int0=%d, bool0=%d, choice0=%d\n",
229 purple_request_fields_get_string(fields
, "text0"),
230 purple_request_fields_get_string(fields
, "text1"),
231 purple_request_fields_get_integer(fields
, "int0"),
232 purple_request_fields_get_bool(fields
, "bool0"),
233 purple_request_fields_get_choice(fields
, "choice0"));
235 for (GList
*list
= purple_request_field_list_get_selected(
236 purple_request_fields_get_field(fields
, "list0"));
237 list
!= nullptr; list
= list
->next
)
239 "fields_ok_cb: list0=%s", reinterpret_cast<const char *>(list
->data
));
241 for (GList
*list
= purple_request_field_list_get_selected(
242 purple_request_fields_get_field(fields
, "list1"));
243 list
!= nullptr; list
= list
->next
)
245 "fields_ok_cb: list1=%s", reinterpret_cast<const char *>(list
->data
));
247 PurpleAccount
*account
=
248 purple_request_fields_get_account(fields
, "account0");
249 LOG
->debug("fields_ok_cb: account0=[%s] %s",
250 purple_account_get_protocol_name(account
),
251 purple_account_get_username(account
));
255 // vim: set tabstop=2 shiftwidth=2 textwidth=80 expandtab: