ReactOS 0.4.17-dev-940-g8bd6e85
CAddDialog Class Reference

#include <CAddDialog.h>

Inheritance diagram for CAddDialog:
Collaboration diagram for CAddDialog:

Public Types

enum  { IDD = IDD_DIALOG_ADD }
 

Public Member Functions

 CAddDialog (CMainWnd *MainWnd, CConsoleWnd *console)
 
 ~CAddDialog ()
 
void InitLV (CListView &listView)
 
void InsertListItem (CListView &listView, CSnapinCacheEntry *CacheEntry)
 
void InitTV (CTreeView &treeView)
 
HTREEITEM InsertTreeItem (CTreeView &treeView, CSnapinAlias *Alias, HTREEITEM hParent=NULL, HTREEITEM hInsertAfter=TVI_LAST)
 
LRESULT OnInitDialog (UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnCommand (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
 
LRESULT OnItemChanged (INT uCode, LPNMHDR hdr, BOOL &bHandled)
 
LRESULT OnSelectionChanged (INT uCode, LPNMHDR hdr, BOOL &bHandled)
 
LRESULT OnItemDblClicked (INT uCode, LPNMHDR hdr, BOOL &bHandled)
 
void UpdateButtons ()
 

Private Member Functions

void CreateSnapinAliases (CSnapinAlias *ParentAlias, CSnapin *ParentSnapin)
 
void ReconnectSnapins (CSnapinAlias *ParentAlias, CSnapin *ParentSnapin)
 
void DeleteSnapinAliasesRecursive (CSnapinAlias *ParentAlias, BOOL RemoveDeletedSnapins)
 
void DeleteSnapinAliases (BOOL RemoveDeletedSnapins)
 

Private Attributes

CListView m_Available
 
CTreeView m_Selected
 
CWindow m_BtnAdd
 
CWindow m_BtnRemove
 
CWindow m_Description
 
CMainWnd * m_MainWnd
 
CComPtr< CConsoleWnd > m_Console
 
CSnapin * m_RootSnapin
 
CSnapinAlias * m_RootAlias
 

Detailed Description

Definition at line 11 of file CAddDialog.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
IDD 

Definition at line 15 of file CAddDialog.h.

#define IDD_DIALOG_ADD
Definition: resource.h:70

Constructor & Destructor Documentation

◆ CAddDialog()

CAddDialog::CAddDialog ( CMainWnd *  MainWnd,
CConsoleWnd *  console 
)

Definition at line 11 of file CAddDialog.cpp.

12{
13 m_MainWnd = MainWnd;
15}
CConsole Console
CMainWnd * m_MainWnd
Definition: CAddDialog.h:37
CComPtr< CConsoleWnd > m_Console
Definition: CAddDialog.h:38

◆ ~CAddDialog()

CAddDialog::~CAddDialog ( )

Definition at line 17 of file CAddDialog.cpp.

18{
19}

Member Function Documentation

◆ CreateSnapinAliases()

void CAddDialog::CreateSnapinAliases ( CSnapinAlias *  ParentAlias,
CSnapin *  ParentSnapin 
)
private

Definition at line 244 of file CAddDialog.cpp.

245{
246 POSITION pos = ParentSnapin->m_SubNodes.GetHeadPosition();
247 while (pos)
248 {
249 CSnapin *Snapin = (CSnapin*)ParentSnapin->m_SubNodes.GetNext(pos);
250 if (Snapin)
251 {
252 CSnapinAlias *Alias = new CSnapinAlias(ParentAlias, Snapin);
253 ParentAlias->m_SubNodes.AddTail(Alias);
254 CreateSnapinAliases(Alias, Snapin);
255 }
256 }
257}
void CreateSnapinAliases(CSnapinAlias *ParentAlias, CSnapin *ParentSnapin)
Definition: CAddDialog.cpp:244
CAtlList< CSnapinAlias * > m_SubNodes
Definition: CSnapinAlias.h:18
CAtlList< CSnapin * > m_SubNodes
Definition: CSnapin.h:42

Referenced by CreateSnapinAliases(), and OnInitDialog().

◆ DeleteSnapinAliases()

void CAddDialog::DeleteSnapinAliases ( BOOL  RemoveDeletedSnapins)
private

Definition at line 298 of file CAddDialog.cpp.

299{
300 if (m_RootAlias)
301 {
302 DeleteSnapinAliasesRecursive(m_RootAlias, RemoveDeletedSnapins);
303 m_RootAlias->m_SubNodes.RemoveAll();
304 delete m_RootAlias;
306 }
307}
void DeleteSnapinAliasesRecursive(CSnapinAlias *ParentAlias, BOOL RemoveDeletedSnapins)
Definition: CAddDialog.cpp:280
CSnapinAlias * m_RootAlias
Definition: CAddDialog.h:41
#define NULL
Definition: types.h:112

Referenced by OnCommand().

◆ DeleteSnapinAliasesRecursive()

void CAddDialog::DeleteSnapinAliasesRecursive ( CSnapinAlias *  ParentAlias,
BOOL  RemoveDeletedSnapins 
)
private

Definition at line 280 of file CAddDialog.cpp.

281{
282 POSITION pos = ParentAlias->m_SubNodes.GetHeadPosition();
283 while (pos)
284 {
285 CSnapinAlias *Alias = (CSnapinAlias*)ParentAlias->m_SubNodes.GetNext(pos);
286 if (Alias)
287 {
288 DeleteSnapinAliasesRecursive(Alias, RemoveDeletedSnapins);
289 Alias->m_SubNodes.RemoveAll();
290 if (RemoveDeletedSnapins && (Alias->IsDeleted()))
291 delete Alias->Snapin();
292 delete Alias;
293 }
294 }
295}

Referenced by DeleteSnapinAliases(), and DeleteSnapinAliasesRecursive().

◆ InitLV()

void CAddDialog::InitLV ( CListView &  listView)

Definition at line 22 of file CAddDialog.cpp.

23{
24 listView.DeleteAllItems();
25
27 listView.InsertColumn(0, (LPWSTR)module.GetString(), LVCFMT_LEFT, 130, 0);
28
30 listView.InsertColumn(1, (LPWSTR)vendor.GetString(), LVCFMT_LEFT, 120, 1);
31
33}
#define IDS_MODULE
Definition: resource.h:13
#define IDS_VENDOR
Definition: resource.h:14
BOOL DeleteAllItems()
Definition: rosctrls.h:126
HIMAGELIST SetImageList(HIMAGELIST himl, int iImageList)
Definition: rosctrls.h:91
int InsertColumn(int iCol, LV_COLUMN *pcol)
Definition: rosctrls.h:52
HIMAGELIST SnapinImageList()
Definition: CMainWnd.cpp:550
const WCHAR * vendor
Definition: db.cpp:873
#define MAKEINTRESOURCE(i)
Definition: ntverrsrc.c:25
#define LVSIL_SMALL
Definition: commctrl.h:2304
#define LVCFMT_LEFT
Definition: commctrl.h:2603
uint16_t * LPWSTR
Definition: typedefs.h:56

Referenced by OnInitDialog().

◆ InitTV()

void CAddDialog::InitTV ( CTreeView &  treeView)

Definition at line 50 of file CAddDialog.cpp.

51{
53}
HIMAGELIST SetImageList(HIMAGELIST himl, int iImageList)
Definition: rosctrls.h:535
#define TVSIL_NORMAL
Definition: commctrl.h:3448

Referenced by OnInitDialog().

◆ InsertListItem()

void CAddDialog::InsertListItem ( CListView &  listView,
CSnapinCacheEntry *  CacheEntry 
)

Definition at line 36 of file CAddDialog.cpp.

37{
38 LVITEM lvi = { 0 };
39 lvi.mask = LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE;
40 lvi.lParam = (LPARAM)CacheEntry;
41 lvi.pszText = (LPWSTR)CacheEntry->Name().GetString();
42 lvi.iItem = INT_MAX;
43 lvi.iImage = CacheEntry->NormalImageIndex();
44 int item = listView.InsertItem(&lvi);
45
46 listView.SetItemText(item, 1, (LPWSTR)CacheEntry->Provider().GetString());
47}
PXSTR GetString() noexcept
Definition: atlsimpstr.h:367
int InsertItem(const LV_ITEM *pitem)
Definition: rosctrls.h:96
BOOL SetItemText(int i, int subItem, LPCWSTR text)
Definition: rosctrls.h:186
const CAtlString & Provider() const
const CAtlString & Name() const
#define INT_MAX
Definition: limits.h:26
LONG_PTR LPARAM
Definition: minwindef.h:175
#define LVITEM
Definition: commctrl.h:2380
#define LVIF_PARAM
Definition: commctrl.h:2316
#define LVIF_TEXT
Definition: commctrl.h:2314
#define LVIF_IMAGE
Definition: commctrl.h:2315

Referenced by OnInitDialog().

◆ InsertTreeItem()

HTREEITEM CAddDialog::InsertTreeItem ( CTreeView &  treeView,
CSnapinAlias *  Alias,
HTREEITEM  hParent = NULL,
HTREEITEM  hInsertAfter = TVI_LAST 
)

Definition at line 56 of file CAddDialog.cpp.

57{
58 TVINSERTSTRUCTW Insert;
59
60 ZeroMemory(&Insert, sizeof(TVINSERTSTRUCTW));
61
63 Insert.item.pszText = (LPWSTR)Alias->Snapin()->DisplayName().GetString();
64 Insert.item.iImage = Alias->Snapin()->CacheEntry()->NormalImageIndex();
65 Insert.item.iSelectedImage = Alias->Snapin()->CacheEntry()->OpenImageIndex();
66 Insert.item.lParam = (LPARAM)Alias;
67
68 Insert.hParent = hParent;
69 Insert.hInsertAfter = hInsertAfter;
70
71 return treeView.InsertItem(&Insert);
72}
HTREEITEM InsertItem(const TVINSERTSTRUCTW *pitem)
Definition: rosctrls.h:540
#define ZeroMemory
Definition: minwinbase.h:31
#define TVIF_TEXT
Definition: commctrl.h:3271
#define TVIF_IMAGE
Definition: commctrl.h:3272
#define TVIF_PARAM
Definition: commctrl.h:3273
#define TVIF_SELECTEDIMAGE
Definition: commctrl.h:3276
HTREEITEM hParent
Definition: commctrl.h:3398
HTREEITEM hInsertAfter
Definition: commctrl.h:3399

Referenced by OnCommand(), OnInitDialog(), and OnItemDblClicked().

◆ OnCommand()

LRESULT CAddDialog::OnCommand ( WORD  wNotifyCode,
WORD  wID,
HWND  hWndCtl,
BOOL &  bHandled 
)

Definition at line 120 of file CAddDialog.cpp.

121{
122 switch (wID)
123 {
124 case IDC_BUTTON_ADD:
125 {
126 int iItem = m_Available.GetNextItem(-1, LVNI_SELECTED);
127 if (iItem != -1)
128 {
130 if (CacheEntry)
131 {
132 CSnapinAlias *Alias = new CSnapinAlias(m_RootAlias, new CSnapin(CacheEntry));
133 m_RootAlias->m_SubNodes.AddTail(Alias);
134// Alias->Snapin()->OnAdd(m_Console);
135 Alias->hTreeItem = InsertTreeItem(m_Selected, Alias, NULL /*m_RootAlias->hTreeItem*/);
136 m_Selected.Expand(Alias->hTreeItem, TVE_EXPAND);
137 }
138 }
139 }
140 break;
141
143 {
144 HTREEITEM hTreeItem = m_Selected.GetSelection();
145 if (hTreeItem != NULL)
146 {
148 if (Alias)
149 {
150 Alias->Deleted();
151 m_Selected.DeleteItem(Alias->hTreeItem);
152 }
153 }
154 }
155 break;
156
157 case IDOK:
158 {
162 }
163 return 0;
164
165 case IDCANCEL:
166 {
169 }
170 return 0;
171 }
172
174
175 return 0;
176}
#define IDC_BUTTON_ADD
Definition: resource.h:72
#define IDC_BUTTON_REMOVE
Definition: resource.h:72
void UpdateButtons()
Definition: CAddDialog.cpp:227
CListView m_Available
Definition: CAddDialog.h:31
CSnapin * m_RootSnapin
Definition: CAddDialog.h:40
void DeleteSnapinAliases(BOOL RemoveDeletedSnapins)
Definition: CAddDialog.cpp:298
HTREEITEM InsertTreeItem(CTreeView &treeView, CSnapinAlias *Alias, HTREEITEM hParent=NULL, HTREEITEM hInsertAfter=TVI_LAST)
Definition: CAddDialog.cpp:56
CTreeView m_Selected
Definition: CAddDialog.h:32
void ReconnectSnapins(CSnapinAlias *ParentAlias, CSnapin *ParentSnapin)
Definition: CAddDialog.cpp:260
int GetNextItem(int i, WORD flags)
Definition: rosctrls.h:161
DWORD_PTR GetItemData(int i)
Definition: rosctrls.h:204
BOOL Expand(HTREEITEM item, DWORD action)
Definition: rosctrls.h:604
BOOL DeleteItem(HTREEITEM i)
Definition: rosctrls.h:545
DWORD_PTR GetItemData(HTREEITEM item)
Definition: rosctrls.h:590
HTREEITEM GetSelection()
Definition: rosctrls.h:599
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define LVNI_SELECTED
Definition: commctrl.h:2429
#define TVE_EXPAND
Definition: commctrl.h:3428
#define IDCANCEL
Definition: winuser.h:842
#define IDOK
Definition: winuser.h:841
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)

◆ OnInitDialog()

LRESULT CAddDialog::OnInitDialog ( UINT  nMessage,
WPARAM  wParam,
LPARAM  lParam,
BOOL &  bHandled 
)

Definition at line 75 of file CAddDialog.cpp.

76{
77 CenterWindow(m_Console->m_hWnd);
78
84
87
88 /* Get Snapins from the Cache */
89 for (int i = 0; i < m_MainWnd->GetSnapinCacheCount(); i++)
90 {
92 }
93
94 /* Create the snapin alias tree */
97
99
102
103 POSITION pos = m_RootAlias->m_SubNodes.GetHeadPosition();
104 while (pos)
105 {
107 if (Alias)
108 {
109 Alias->hTreeItem = InsertTreeItem(m_Selected, Alias, NULL /*m_RootAlias->hTreeItem*/);
110 m_Selected.Expand(Alias->hTreeItem, TVE_EXPAND);
111 }
112 }
113
115
116 return TRUE;
117}
#define IDC_DESCRIPTION
Definition: resource.h:17
#define IDC_LIST_SELECTED
Definition: resource.h:74
#define IDC_LIST_AVAILABLE
Definition: resource.h:73
static VOID CenterWindow(HWND hWnd)
Definition: reactos.c:45
void Attach(HWND hWndNew)
Definition: atlwin.h:298
void InitTV(CTreeView &treeView)
Definition: CAddDialog.cpp:50
CWindow m_BtnRemove
Definition: CAddDialog.h:34
void InsertListItem(CListView &listView, CSnapinCacheEntry *CacheEntry)
Definition: CAddDialog.cpp:36
void InitLV(CListView &listView)
Definition: CAddDialog.cpp:22
CWindow m_Description
Definition: CAddDialog.h:35
CWindow m_BtnAdd
Definition: CAddDialog.h:33
int GetSnapinCacheCount()
Definition: CMainWnd.cpp:526
CSnapin * GetRootSnapin()
Definition: CMainWnd.cpp:556
CSnapinCacheEntry * GetSnapinCacheEntry(int nIndex)
Definition: CMainWnd.cpp:532
HTREEITEM hTreeItem
Definition: CSnapinAlias.h:19
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)

◆ OnItemChanged()

LRESULT CAddDialog::OnItemChanged ( INT  uCode,
LPNMHDR  hdr,
BOOL &  bHandled 
)

Definition at line 179 of file CAddDialog.cpp.

180{
181 int iItem = m_Available.GetNextItem(-1, LVNI_SELECTED);
182 CSnapinCacheEntry *CacheEntry;
183 if (iItem != -1 && (CacheEntry = (CSnapinCacheEntry*)m_Available.GetItemData(iItem)))
184 {
186 }
187 else
188 {
190 }
191
193
194 return TRUE;
195}
BOOL SetWindowText(LPCTSTR lpszString)
Definition: atlwin.h:1300
const CAtlString & Description() const

◆ OnItemDblClicked()

LRESULT CAddDialog::OnItemDblClicked ( INT  uCode,
LPNMHDR  hdr,
BOOL &  bHandled 
)

Definition at line 205 of file CAddDialog.cpp.

206{
207 if (hdr->hwndFrom == m_Available.m_hWnd)
208 {
210 if (lpnmitem->iItem != -1)
211 {
213 if (CacheEntry)
214 {
215 CSnapinAlias *Alias = new CSnapinAlias(m_RootAlias, new CSnapin(CacheEntry));
216 m_RootAlias->m_SubNodes.AddTail(Alias);
217// Alias->Snapin()->OnAdd(m_Console);
218 Alias->hTreeItem = InsertTreeItem(m_Selected, Alias, NULL /*m_RootAlias->hTreeItem*/);
219 m_Selected.Expand(Alias->hTreeItem, TVE_EXPAND);
220 }
221 }
222 }
223 return TRUE;
224}
char hdr[14]
Definition: iptest.cpp:33
struct tagNMITEMACTIVATE * LPNMITEMACTIVATE

◆ OnSelectionChanged()

LRESULT CAddDialog::OnSelectionChanged ( INT  uCode,
LPNMHDR  hdr,
BOOL &  bHandled 
)

Definition at line 198 of file CAddDialog.cpp.

199{
201 return TRUE;
202}

◆ ReconnectSnapins()

void CAddDialog::ReconnectSnapins ( CSnapinAlias *  ParentAlias,
CSnapin *  ParentSnapin 
)
private

Definition at line 260 of file CAddDialog.cpp.

261{
262 ParentSnapin->m_SubNodes.RemoveAll();
263
264 POSITION pos = ParentAlias->m_SubNodes.GetHeadPosition();
265 while (pos)
266 {
267 CSnapinAlias *Alias = (CSnapinAlias*)ParentAlias->m_SubNodes.GetNext(pos);
268 if (Alias)
269 {
270 if (!Alias->IsDeleted())
271 {
272 ParentSnapin->m_SubNodes.AddTail(Alias->Snapin());
273 ReconnectSnapins(Alias, Alias->Snapin());
274 }
275 }
276 }
277}

Referenced by OnCommand(), and ReconnectSnapins().

◆ UpdateButtons()

void CAddDialog::UpdateButtons ( )

Definition at line 227 of file CAddDialog.cpp.

228{
230
231 CSnapinAlias *ParentAlias = NULL;
233 if (hTreeItem)
234 {
236 if (Alias)
237 ParentAlias = Alias->Parent();
238 }
239
240 m_BtnRemove.EnableWindow((hTreeItem != NULL) && (ParentAlias != NULL));
241}
BOOL EnableWindow(BOOL bEnable=TRUE)
Definition: atlwin.h:523
HTREEITEM GetNextItem(HTREEITEM i, WORD flags)
Definition: rosctrls.h:575
#define ListView_GetSelectedCount(hwndLV)
Definition: commctrl.h:2714
#define TVGN_CARET
Definition: commctrl.h:3466

Referenced by OnCommand(), OnInitDialog(), OnItemChanged(), and OnSelectionChanged().

Member Data Documentation

◆ m_Available

CListView CAddDialog::m_Available
private

Definition at line 31 of file CAddDialog.h.

Referenced by OnCommand(), OnInitDialog(), OnItemChanged(), OnItemDblClicked(), and UpdateButtons().

◆ m_BtnAdd

CWindow CAddDialog::m_BtnAdd
private

Definition at line 33 of file CAddDialog.h.

Referenced by OnInitDialog(), and UpdateButtons().

◆ m_BtnRemove

CWindow CAddDialog::m_BtnRemove
private

Definition at line 34 of file CAddDialog.h.

Referenced by OnInitDialog(), and UpdateButtons().

◆ m_Console

CComPtr<CConsoleWnd> CAddDialog::m_Console
private

Definition at line 38 of file CAddDialog.h.

Referenced by CAddDialog(), and OnInitDialog().

◆ m_Description

CWindow CAddDialog::m_Description
private

Definition at line 35 of file CAddDialog.h.

Referenced by OnInitDialog(), and OnItemChanged().

◆ m_MainWnd

CMainWnd* CAddDialog::m_MainWnd
private

Definition at line 37 of file CAddDialog.h.

Referenced by CAddDialog(), InitLV(), InitTV(), and OnInitDialog().

◆ m_RootAlias

CSnapinAlias* CAddDialog::m_RootAlias
private

Definition at line 41 of file CAddDialog.h.

Referenced by DeleteSnapinAliases(), OnCommand(), OnInitDialog(), and OnItemDblClicked().

◆ m_RootSnapin

CSnapin* CAddDialog::m_RootSnapin
private

Definition at line 40 of file CAddDialog.h.

Referenced by OnCommand(), and OnInitDialog().

◆ m_Selected

CTreeView CAddDialog::m_Selected
private

Definition at line 32 of file CAddDialog.h.

Referenced by OnCommand(), OnInitDialog(), OnItemDblClicked(), and UpdateButtons().


The documentation for this class was generated from the following files: