X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fwidgets%2FXABContactMenu.cpp;h=6a30afcb95ad7cb8b4cd1479f822f871579366b6;hb=4cb2dd4fe16b0ba1d636c5cb91f14d950f68e849;hp=18003d5100327879454a46d3c93fcf548685614e;hpb=e0521275eee34ef6feb06612512c611bb3c3b518;p=xestiaab%2F.git diff --git a/source/widgets/XABContactMenu.cpp b/source/widgets/XABContactMenu.cpp index 18003d5..6a30afc 100644 --- a/source/widgets/XABContactMenu.cpp +++ b/source/widgets/XABContactMenu.cpp @@ -1,40 +1,51 @@ +// XABContactMenu.cpp - XABContactMenu widget +// +// (c) 2012-2016 Xestia Software Development. +// +// This file is part of Xestia Address Book. +// +// Xestia Address Book is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by the +// Free Software Foundation, version 3 of the license. +// +// Xestia Address Book is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with Xestia Address Book. If not, see + #include "XABContactMenu.h" #include "../frmMain.h" -#include "../frmSearch.h" - -enum { - ID_CONTACTMENU_OPEN, - ID_CONTACTMENU_NEW, - ID_CONTACTMENU_EDIT, - ID_CONTACTMENU_DELETE, - ID_CONTACTMENU_REFRESHAB, - ID_CONTACTMENU_REVEAL -}; +#include "../search/frmSearch.h" -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); } @@ -42,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); } @@ -52,6 +63,8 @@ XABContactMenu::XABContactMenu(int MenuTypeIn){ XABContactMenu::~XABContactMenu(){ + // Destory the XABContactMenu object. + // Delete the menu items. for (std::map::iterator MenuItemIter = MenuItems.begin(); @@ -73,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; } @@ -103,6 +118,8 @@ void XABContactMenu::SetupPointers(wxWindow* WindowPtrIn, wxListCtrl* ContactListCtrlIn, bool EnableAccountSettingsIn){ + // Setup the pointers. + WindowPtr = WindowPtrIn; ContactListCtrl = ContactListCtrlIn; EnableAccountSettings = EnableAccountSettingsIn; @@ -111,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. @@ -159,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); + + } } @@ -172,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){