1 #include "XABContactMenu.h"
2 #include "../frmMain.h"
3 #include "../frmSearch.h"
10 ID_CONTACTMENU_REFRESHAB,
14 XABContactMenu::XABContactMenu(int MenuTypeIn){
16 MenuType = MenuTypeIn;
18 // Setup the menu items.
20 AppendMenuItem(wxT("opencontact"), _("Open Contact..."), _(""), ID_CONTACTMENU_OPEN, wxITEM_NORMAL);
21 AppendMenuItem(wxT("sep1"), _(""), _(""), wxID_ANY, wxITEM_SEPARATOR);
23 if (MenuType == XABCONTACTMENU_MAIN){
25 // Setup up the add contact option if in the main window.
27 AppendMenuItem(wxT("newcontact"), _("New Contact..."), _(""), ID_CONTACTMENU_NEW, wxITEM_NORMAL);
31 AppendMenuItem(wxT("editcontact"), _("Edit Contact..."), _(""), ID_CONTACTMENU_EDIT, wxITEM_NORMAL);
33 if (MenuType == XABCONTACTMENU_SEARCH){
35 // Setup up the reveal contact option if in the search window.
37 AppendMenuItem(wxT("revealcontact"), _("Reveal Contact..."), _(""), ID_CONTACTMENU_REVEAL, wxITEM_NORMAL);
41 if (MenuType == XABCONTACTMENU_MAIN){
43 // Setup the delete and refresh contact options if in the main window.
45 AppendMenuItem(wxT("deletecontact"), _("Delete Contact..."), _(""), ID_CONTACTMENU_DELETE, wxITEM_NORMAL);
46 AppendMenuItem(wxT("sep2"), _(""), _(""), wxID_ANY, wxITEM_SEPARATOR);
47 AppendMenuItem(wxT("refreshab"), _("Refresh Address Book"), _(""), ID_CONTACTMENU_REFRESHAB, wxITEM_NORMAL);
53 XABContactMenu::~XABContactMenu(){
55 // Delete the menu items.
57 for (std::map<std::string, wxMenuItem*>::iterator MenuItemIter = MenuItems.begin();
58 MenuItemIter != MenuItems.end(); ++MenuItemIter){
60 // Delete the wxMenuItem object.
62 this->Disconnect(MenuItemIter->second->GetId(), wxEVT_COMMAND_MENU_SELECTED,
63 wxCommandEventHandler(XABContactMenu::ProcessMenuItemClick) );
64 delete(MenuItemIter->second);
65 MenuItemIter->second = NULL;
73 void XABContactMenu::AppendMenuItem(wxString ObjectName,
75 wxString MenuDescription,
79 wxMenuItem *menuitem = new wxMenuItem(
88 this->Connect(menuitem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(XABContactMenu::ProcessMenuItemClick));
89 this->Append(menuitem);
90 MenuItems.insert(std::make_pair(ObjectName.ToStdString(), menuitem));
94 void XABContactMenu::SetupPointers(wxWindow* WindowPtrIn,
95 wxListCtrl* ContactListCtrlIn){
97 WindowPtr = WindowPtrIn;
98 ContactListCtrl = ContactListCtrlIn;
102 void XABContactMenu::SetupPointers(wxWindow* WindowPtrIn,
103 wxListCtrl* ContactListCtrlIn,
104 bool EnableAccountSettingsIn){
106 WindowPtr = WindowPtrIn;
107 ContactListCtrl = ContactListCtrlIn;
108 EnableAccountSettings = EnableAccountSettingsIn;
112 wxMenu* XABContactMenu::MenuPointer(){
114 // Check for the following before passing the pointer:
115 // If an account has been selected.
116 // - Disable Refresh Address Book if not.
117 // If one or more contacts have been selected.
118 // - Disable New, Edit, Delete and Reveal contact as needed.
120 bool ContactSelected = FALSE;
122 int ContactCount = 0;
126 ItemIndex = ContactListCtrl->GetNextItem(ItemIndex,
128 wxLIST_STATE_SELECTED);
130 if (ItemIndex == -1){
136 ContactSelected = TRUE;
141 if (MenuType == XABCONTACTMENU_MAIN){
143 std::map<std::string, wxMenuItem*>::iterator MenuItemIter = MenuItems.find("refreshab");
145 if (EnableAccountSettings == FALSE){
146 MenuItemIter->second->Enable(FALSE);
147 MenuItemIter = MenuItems.find("newcontact");
148 MenuItemIter->second->Enable(FALSE);
151 MenuItemIter = MenuItems.find("opencontact");
152 MenuItemIter->second->Enable(ContactSelected);
153 MenuItemIter = MenuItems.find("editcontact");
154 MenuItemIter->second->Enable(ContactSelected);
155 MenuItemIter = MenuItems.find("deletecontact");
156 MenuItemIter->second->Enable(ContactSelected);
158 } else if (MenuType == XABCONTACTMENU_SEARCH){
160 std::map<std::string, wxMenuItem*>::iterator MenuItemIter = MenuItems.find("opencontact");
161 MenuItemIter->second->Enable(ContactSelected);
162 MenuItemIter = MenuItems.find("editcontact");
163 MenuItemIter->second->Enable(ContactSelected);
164 MenuItemIter = MenuItems.find("revealcontact");
165 MenuItemIter->second->Enable(ContactSelected);
173 void XABContactMenu::ProcessMenuItemClick( wxCommandEvent& event){
175 int ItemID = event.GetId();
177 if (MenuType == XABCONTACTMENU_MAIN){
181 case ID_CONTACTMENU_OPEN:
183 wxCommandEvent rcevent(CE_OPENCONTACTLIST);
184 wxPostEvent(WindowPtr, rcevent);
187 case ID_CONTACTMENU_NEW:
189 wxCommandEvent rcevent(CE_NEWCONTACT);
190 wxPostEvent(WindowPtr, rcevent);
193 case ID_CONTACTMENU_EDIT:
195 wxCommandEvent rcevent(CE_EDITCONTACT);
196 wxPostEvent(WindowPtr, rcevent);
199 case ID_CONTACTMENU_DELETE:
201 wxCommandEvent rcevent(CE_DELETECONTACT);
202 wxPostEvent(WindowPtr, rcevent);
205 case ID_CONTACTMENU_REFRESHAB:
207 wxCommandEvent rcevent(REFRESHADDRESSBOOK);
208 wxPostEvent(WindowPtr, rcevent);
214 } else if (MenuType == XABCONTACTMENU_SEARCH){
218 case ID_CONTACTMENU_OPEN:
220 wxCommandEvent rcevent(SE_OPENCONTACT);
221 wxPostEvent(WindowPtr, rcevent);
224 case ID_CONTACTMENU_EDIT:
226 wxCommandEvent rcevent(SE_EDITCONTACT);
227 wxPostEvent(WindowPtr, rcevent);
230 case ID_CONTACTMENU_REVEAL:
232 wxCommandEvent rcevent(SE_REVEALCONTACT);
233 wxPostEvent(WindowPtr, rcevent);