// XABAccountView.cpp - XABAccountView widget // // (c) 2012-2015 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 "XABAccountView.h" BEGIN_EVENT_TABLE(XABAccountView, wxTreeCtrl) EVT_LEFT_DCLICK(XABAccountView::OnMouseClick) EVT_TREE_ITEM_EXPANDED(-1, XABAccountView::ExpColProc) EVT_TREE_ITEM_COLLAPSED(-1, XABAccountView::ExpColProc) END_EVENT_TABLE() void XABAccountView::Init(){ // Initialise the XABAccountView object. idx = -1; } bool XABAccountView::Create(wxWindow* parent){ // Create the XABAccountView control. return wxTreeCtrl::Create(parent, 1, wxPoint(0,0), wxSize(100,100), wxTR_DEFAULT_STYLE|wxTR_HIDE_ROOT); } wxWindow* XABAccountView::GetControl(){ // Get the control pointer. return this; } void XABAccountView::SetStringValue(const wxString& s){ // Set the string value for the XABAccountView control. tid = wxTreeCtrl::GetSelection(); } wxString XABAccountView::GetStringValue() const{ // Get the string value for the XABAccountView control. if (tid.IsOk()){ wxString wxStrName = wxTreeCtrl::GetItemText(tid); return wxStrName; } return wxEmptyString; } void XABAccountView::OnMouseClick(wxMouseEvent& WXUNUSED(event)){ // Update control. // Check if item expanding or collapsed // has occured before dismissing. if (ixp == FALSE){ // Item expansion/collapsing didn't occur. tid = wxTreeCtrl::GetSelection(); Dismiss(); } ixp = FALSE; } void XABAccountView::SetAccount(){ // Set the account for the XABAccountView control. tid = wxTreeCtrl::GetSelection(); Dismiss(); } wxTreeItemId XABAccountView::FindItemByText(wxTreeItemId parent, const wxString& text) { // Find an item based on the supplied wxString value. // Return a wxTreeItemId object if found. wxTreeItemIdValue cookie; wxTreeItemId child = GetFirstChild(parent, cookie); while (child.IsOk()) { if (GetItemText(child) == text) { return child; } if (ItemHasChildren(child)) { wxTreeItemId found = FindItemByText(child, text); if (found.IsOk()) return found; } child = GetNextChild(parent, cookie); } return wxTreeItemId(); } void XABAccountView::ExpColProc(wxTreeEvent& event){ // Function when pressing the down button on the // XABAccountView control. ixp = TRUE; }