From e733ae39773abeb2c9bce9cb3e25812564506e6b Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 24 Oct 2020 16:55:39 +0300 Subject: CCtrlTreeOpts class moved to mir_core, to be reused later --- protocols/JabberG/src/jabber_opt.cpp | 1 - protocols/JabberG/src/jabber_opttree.cpp | 200 ------------------------------- protocols/JabberG/src/jabber_opttree.h | 69 ----------- 3 files changed, 270 deletions(-) delete mode 100644 protocols/JabberG/src/jabber_opttree.cpp delete mode 100644 protocols/JabberG/src/jabber_opttree.h (limited to 'protocols/JabberG/src') diff --git a/protocols/JabberG/src/jabber_opt.cpp b/protocols/JabberG/src/jabber_opt.cpp index 3045c470b2..ea16e42f93 100755 --- a/protocols/JabberG/src/jabber_opt.cpp +++ b/protocols/JabberG/src/jabber_opt.cpp @@ -26,7 +26,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h" #include "jabber_list.h" #include "jabber_caps.h" -#include "jabber_opttree.h" static BOOL(WINAPI *pfnEnableThemeDialogTexture)(HANDLE, DWORD) = nullptr; diff --git a/protocols/JabberG/src/jabber_opttree.cpp b/protocols/JabberG/src/jabber_opttree.cpp deleted file mode 100644 index 2a909a1bd8..0000000000 --- a/protocols/JabberG/src/jabber_opttree.cpp +++ /dev/null @@ -1,200 +0,0 @@ -/* - -Jabber Protocol Plugin for Miranda NG - -Copyright (c) 2002-04 Santithorn Bunchua -Copyright (c) 2005-12 George Hazan -Copyright (c) 2007 Maxim Mluhov -Copyright (c) 2007 Victor Pavlychko -Copyright (C) 2012-20 Miranda NG team - -This program 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; either version 2 -of the License, or (at your option) any later version. - -This program 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 this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*/ - -#include "stdafx.h" -#include "jabber_opttree.h" - -enum { IMG_GROUP, IMG_CHECK, IMG_NOCHECK, IMG_RCHECK, IMG_NORCHECK, IMG_GRPOPEN, IMG_GRPCLOSED }; - -CCtrlTreeOpts::CCtrlTreeOpts(CDlgBase* dlg, int ctrlId): - CCtrlTreeView(dlg, ctrlId), - m_options(5) -{ -} - -CCtrlTreeOpts::~CCtrlTreeOpts() -{ -} - -void CCtrlTreeOpts::AddOption(const wchar_t *pwszSection, const wchar_t *pwszName, CMOption &option) -{ - m_options.insert(new COptionsItem(pwszSection, pwszName, option), m_options.getCount()); -} - -BOOL CCtrlTreeOpts::OnNotify(int idCtrl, NMHDR *pnmh) -{ - switch (pnmh->code) { - case TVN_KEYDOWN: - { - LPNMTVKEYDOWN lpnmtvkd = (LPNMTVKEYDOWN)pnmh; - HTREEITEM hti; - if ((lpnmtvkd->wVKey == VK_SPACE) && (hti = GetSelection())) - ProcessItemClick(hti); - } - break; - - case NM_CLICK: - { - TVHITTESTINFO hti; - hti.pt.x = (short)LOWORD(GetMessagePos()); - hti.pt.y = (short)HIWORD(GetMessagePos()); - ScreenToClient(pnmh->hwndFrom, &hti.pt); - if (HitTest(&hti)) - if (hti.flags & TVHT_ONITEMICON) - ProcessItemClick(hti.hItem); - } - break; - - case TVN_ITEMEXPANDED: - { - LPNMTREEVIEW lpnmtv = (LPNMTREEVIEW)pnmh; - TVITEM tvi; - tvi.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; - tvi.hItem = lpnmtv->itemNew.hItem; - tvi.iImage = tvi.iSelectedImage = - (lpnmtv->itemNew.state & TVIS_EXPANDED) ? IMG_GRPOPEN : IMG_GRPCLOSED; - SendMessage(pnmh->hwndFrom, TVM_SETITEM, 0, (LPARAM)&tvi); - } - break; - } - - return CCtrlTreeView::OnNotify(idCtrl, pnmh); -} - -void CCtrlTreeOpts::OnInit() -{ - CCtrlTreeView::OnInit(); - - SelectItem(nullptr); - DeleteAllItems(); - - HIMAGELIST hImgLst = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLOR | ILC_COLOR32 | ILC_MASK, 5, 1); - ImageList_AddSkinIcon(hImgLst, SKINICON_OTHER_MIRANDA); - ImageList_AddSkinIcon(hImgLst, SKINICON_OTHER_TICK); // check on - ImageList_AddSkinIcon(hImgLst, SKINICON_OTHER_NOTICK); // check off - ImageList_AddSkinIcon(hImgLst, SKINICON_OTHER_TICK); // radio on - ImageList_AddSkinIcon(hImgLst, SKINICON_OTHER_NOTICK); // radio on - ImageList_AddSkinIcon(hImgLst, SKINICON_OTHER_GROUPOPEN); - ImageList_AddSkinIcon(hImgLst, SKINICON_OTHER_GROUPSHUT); - SetImageList(hImgLst, TVSIL_NORMAL); - - /* build options tree. based on code from IcoLib */ - for (auto &it : m_options) { - if (it->m_pwszSection) { - HTREEITEM hSection = FindNamedItem(nullptr, it->m_pwszSection); - if (!hSection) { - TVINSERTSTRUCT tvis = {}; - tvis.hParent = hSection; - tvis.hInsertAfter = TVI_LAST; - tvis.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_STATE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; - tvis.item.pszText = (LPWSTR)it->m_pwszSection; - tvis.item.state = tvis.item.stateMask = TVIS_EXPANDED | TVIS_BOLD; - tvis.item.iImage = tvis.item.iSelectedImage = IMG_GRPOPEN; - hSection = InsertItem(&tvis); - } - - TVINSERTSTRUCT tvis = {}; - tvis.hParent = hSection; - tvis.hInsertAfter = TVI_LAST; - tvis.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_STATE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; - tvis.item.pszText = (LPWSTR)it->m_pwszName; - tvis.item.state = tvis.item.stateMask = TVIS_EXPANDED; - tvis.item.lParam = m_options.indexOf(&it); - - BYTE val = *it->m_option; - if (it->m_groupId == OPTTREE_CHECK) - tvis.item.iImage = tvis.item.iSelectedImage = val ? IMG_CHECK : IMG_NOCHECK; - else - tvis.item.iImage = tvis.item.iSelectedImage = val ? IMG_RCHECK : IMG_NORCHECK; - - it->m_hItem = InsertItem(&tvis); - } - } - - TranslateTree(); - ShowWindow(m_hwnd, SW_SHOW); - SelectItem(FindNamedItem(nullptr, nullptr)); -} - -void CCtrlTreeOpts::OnDestroy() -{ - ImageList_Destroy(GetImageList(TVSIL_NORMAL)); -} - -bool CCtrlTreeOpts::OnApply() -{ - CCtrlTreeView::OnApply(); - - for (auto &it : m_options) { - TVITEMEX tvi; - GetItem(it->m_hItem, &tvi); - *it->m_option = ((tvi.iImage == IMG_CHECK) || (tvi.iImage == IMG_RCHECK)) ? 1 : 0; - } - return true; -} - -void CCtrlTreeOpts::ProcessItemClick(HTREEITEM hti) -{ - TVITEMEX tvi; - GetItem(hti, &tvi); - switch (tvi.iImage) { - case IMG_GRPOPEN: - tvi.iImage = tvi.iSelectedImage = IMG_GRPCLOSED; - Expand(tvi.hItem, TVE_COLLAPSE); - break; - - case IMG_GRPCLOSED: - tvi.iImage = tvi.iSelectedImage = IMG_GRPOPEN; - Expand(tvi.hItem, TVE_EXPAND); - break; - - case IMG_CHECK: - tvi.iImage = tvi.iSelectedImage = IMG_NOCHECK; - SendMessage(::GetParent(::GetParent(m_hwnd)), PSM_CHANGED, 0, 0); - break; - - case IMG_NOCHECK: - tvi.iImage = tvi.iSelectedImage = IMG_CHECK; - SendMessage(::GetParent(::GetParent(m_hwnd)), PSM_CHANGED, 0, 0); - break; - - case IMG_NORCHECK: - for (auto &it : m_options) { - if (it->m_groupId == m_options[tvi.lParam].m_groupId) { - TVITEMEX tvi_tmp; - tvi_tmp.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; - tvi_tmp.hItem = it->m_hItem; - tvi_tmp.iImage = tvi_tmp.iSelectedImage = IMG_NORCHECK; - SetItem(&tvi_tmp); - } - } - tvi.iImage = tvi.iSelectedImage = IMG_RCHECK; - SendMessage(::GetParent(::GetParent(m_hwnd)), PSM_CHANGED, 0, 0); - break; - } - - SetItem(&tvi); -} diff --git a/protocols/JabberG/src/jabber_opttree.h b/protocols/JabberG/src/jabber_opttree.h deleted file mode 100644 index e2b53015c8..0000000000 --- a/protocols/JabberG/src/jabber_opttree.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - -Jabber Protocol Plugin for Miranda NG - -Copyright (c) 2002-04 Santithorn Bunchua -Copyright (c) 2005-12 George Hazan -Copyright (c) 2007 Maxim Mluhov -Copyright (c) 2007 Victor Pavlychko -Copyright (C) 2012-20 Miranda NG team - -This program 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; either version 2 -of the License, or (at your option) any later version. - -This program 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 this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*/ - -#ifndef __jabber_opttree_h__ -#define __jabber_opttree_h__ - -#define OPTTREE_CHECK 0 - -class CCtrlTreeOpts : public CCtrlTreeView -{ - typedef CCtrlTreeView CSuper; - -public: - CCtrlTreeOpts(CDlgBase* dlg, int ctrlId); - ~CCtrlTreeOpts(); - - void AddOption(const wchar_t *pwszSection, const wchar_t *pwszName, CMOption &option); - - BOOL OnNotify(int idCtrl, NMHDR *pnmh) override; - void OnDestroy() override; - void OnInit() override; - bool OnApply() override; - -protected: - struct COptionsItem - { - const wchar_t *m_pwszSection, *m_pwszName; - int m_groupId = OPTTREE_CHECK; - - CMOption *m_option; - - HTREEITEM m_hItem = nullptr; - - COptionsItem(const wchar_t *pwszSection, const wchar_t *pwszName, CMOption &option) : - m_pwszSection(pwszSection), - m_pwszName(pwszName), - m_option(&option) - {} - }; - - OBJLIST m_options; - - void ProcessItemClick(HTREEITEM hti); -}; - -#endif // __opttree_h__ -- cgit v1.2.3