X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fwidgets%2FXABContactMenu.cpp;h=6a30afcb95ad7cb8b4cd1479f822f871579366b6;hb=f69e09d827e06435ea94bb73aa71ab5f9d5c035b;hp=fc3f59a52d6d37adf8725878b215415191deb661;hpb=4ea07d6964c0f73c858e83513e14a28000054256;p=xestiaab%2F.git diff --git a/source/widgets/XABContactMenu.cpp b/source/widgets/XABContactMenu.cpp index fc3f59a..6a30afc 100644 --- a/source/widgets/XABContactMenu.cpp +++ b/source/widgets/XABContactMenu.cpp @@ -1,6 +1,6 @@ // XABContactMenu.cpp - XABContactMenu widget // -// (c) 2012-2015 Xestia Software Development. +// (c) 2012-2016 Xestia Software Development. // // This file is part of Xestia Address Book. // @@ -20,39 +20,32 @@ #include "../frmMain.h" #include "../search/frmSearch.h" -enum { - ID_CONTACTMENU_OPEN, - ID_CONTACTMENU_NEW, - ID_CONTACTMENU_EDIT, - ID_CONTACTMENU_DELETE, - ID_CONTACTMENU_REFRESHAB, - ID_CONTACTMENU_REVEAL -}; - -XABContactMenu::XABContactMenu(int MenuTypeIn){ +XABContactMenu::XABContactMenu(XABContactMenuType MenuTypeIn){ + // Setup the XABContactMenu control. + MenuType = MenuTypeIn; // Setup the menu items. - AppendMenuItem(wxT("opencontact"), _("Open Contact..."), _(""), ID_CONTACTMENU_OPEN, wxITEM_NORMAL); - AppendMenuItem(wxT("sep1"), _(""), _(""), wxID_ANY, wxITEM_SEPARATOR); + AppendMenuItem(wxT("opencontact"), _("Open Contact..."), wxT(""), ID_CONTACTMENU_OPEN, wxITEM_NORMAL); + AppendMenuItem(wxT("sep1"), wxT(""), wxT(""), ID_CONTACTMENU_SEPARATOR, wxITEM_SEPARATOR); if (MenuType == XABCONTACTMENU_MAIN){ // Setup up the add contact option if in the main window. - AppendMenuItem(wxT("newcontact"), _("New Contact..."), _(""), ID_CONTACTMENU_NEW, wxITEM_NORMAL); + AppendMenuItem(wxT("newcontact"), _("New Contact..."), wxT(""), ID_CONTACTMENU_NEW, wxITEM_NORMAL); } - AppendMenuItem(wxT("editcontact"), _("Edit Contact..."), _(""), ID_CONTACTMENU_EDIT, wxITEM_NORMAL); + AppendMenuItem(wxT("editcontact"), _("Edit Contact..."), wxT(""), ID_CONTACTMENU_EDIT, wxITEM_NORMAL); if (MenuType == XABCONTACTMENU_SEARCH){ // Setup up the reveal contact option if in the search window. - AppendMenuItem(wxT("revealcontact"), _("Reveal Contact..."), _(""), ID_CONTACTMENU_REVEAL, wxITEM_NORMAL); + AppendMenuItem(wxT("revealcontact"), _("Reveal Contact..."), wxT(""), ID_CONTACTMENU_REVEAL, wxITEM_NORMAL); } @@ -60,9 +53,9 @@ XABContactMenu::XABContactMenu(int MenuTypeIn){ // Setup the delete and refresh contact options if in the main window. - AppendMenuItem(wxT("deletecontact"), _("Delete Contact..."), _(""), ID_CONTACTMENU_DELETE, wxITEM_NORMAL); - AppendMenuItem(wxT("sep2"), _(""), _(""), wxID_ANY, wxITEM_SEPARATOR); - AppendMenuItem(wxT("refreshab"), _("Refresh Address Book"), _(""), ID_CONTACTMENU_REFRESHAB, wxITEM_NORMAL); + AppendMenuItem(wxT("deletecontact"), _("Delete Contact..."), wxT(""), ID_CONTACTMENU_DELETE, wxITEM_NORMAL); + AppendMenuItem(wxT("sep2"), wxT(""), wxT(""), ID_CONTACTMENU_SEPARATOR, wxITEM_SEPARATOR); + AppendMenuItem(wxT("refreshab"), _("Refresh Address Book"), wxT(""), ID_CONTACTMENU_REFRESHAB, wxITEM_NORMAL); } @@ -70,6 +63,8 @@ XABContactMenu::XABContactMenu(int MenuTypeIn){ XABContactMenu::~XABContactMenu(){ + // Destory the XABContactMenu object. + // Delete the menu items. for (std::map::iterator MenuItemIter = MenuItems.begin(); @@ -91,29 +86,31 @@ XABContactMenu::~XABContactMenu(){ void XABContactMenu::AppendMenuItem(wxString ObjectName, wxString MenuName, wxString MenuDescription, - int ItemID, + XABContactMenuID ItemID, wxItemKind ItemType){ - wxMenuItem *menuitem = new wxMenuItem( - NULL, - ItemID, - MenuName, - MenuDescription, - ItemType, - NULL - ); + if (ItemType == wxITEM_SEPARATOR){ + this->AppendSeparator(); + return; + } + // Append a menu item to the XABContactMenu control. + + wxMenuItem *menuitem = this->Append(ItemID, MenuName, MenuDescription); this->Connect(menuitem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(XABContactMenu::ProcessMenuItemClick)); - this->Append(menuitem); MenuItems.insert(std::make_pair(ObjectName.ToStdString(), menuitem)); } -void XABContactMenu::SetupPointers(wxWindow* WindowPtrIn, - wxListCtrl* ContactListCtrlIn){ +void XABContactMenu::SetupPointersSearch(wxWindow* WindowPtrIn, + wxListCtrl* ContactListCtrlIn, + bool SearchModeOnlyIn){ + // Setup the pointers when being used in the search window. + WindowPtr = WindowPtrIn; ContactListCtrl = ContactListCtrlIn; + SearchModeOnly = SearchModeOnlyIn; } @@ -121,6 +118,8 @@ void XABContactMenu::SetupPointers(wxWindow* WindowPtrIn, wxListCtrl* ContactListCtrlIn, bool EnableAccountSettingsIn){ + // Setup the pointers. + WindowPtr = WindowPtrIn; ContactListCtrl = ContactListCtrlIn; EnableAccountSettings = EnableAccountSettingsIn; @@ -129,6 +128,8 @@ void XABContactMenu::SetupPointers(wxWindow* WindowPtrIn, wxMenu* XABContactMenu::MenuPointer(){ + // Process the menu pointer. + // Check for the following before passing the pointer: // If an account has been selected. // - Disable Refresh Address Book if not. @@ -177,10 +178,22 @@ wxMenu* XABContactMenu::MenuPointer(){ std::map::iterator MenuItemIter = MenuItems.find("opencontact"); MenuItemIter->second->Enable(ContactSelected); - MenuItemIter = MenuItems.find("editcontact"); - MenuItemIter->second->Enable(ContactSelected); - MenuItemIter = MenuItems.find("revealcontact"); - MenuItemIter->second->Enable(ContactSelected); + + if (SearchModeOnly == TRUE){ + + MenuItemIter = MenuItems.find("editcontact"); + MenuItemIter->second->Enable(FALSE); + MenuItemIter = MenuItems.find("revealcontact"); + MenuItemIter->second->Enable(FALSE); + + } else { + + MenuItemIter = MenuItems.find("editcontact"); + MenuItemIter->second->Enable(ContactSelected); + MenuItemIter = MenuItems.find("revealcontact"); + MenuItemIter->second->Enable(ContactSelected); + + } } @@ -190,6 +203,9 @@ wxMenu* XABContactMenu::MenuPointer(){ void XABContactMenu::ProcessMenuItemClick( wxCommandEvent& event){ + // Process an action when a menu item in the XABContactMenu + // control is selected. + int ItemID = event.GetId(); if (MenuType == XABCONTACTMENU_MAIN){