ReactOS 0.4.16-dev-1098-g0ca6002
CApplicationView Class Reference

#include <appview.h>

Inheritance diagram for CApplicationView:
Collaboration diagram for CApplicationView:

Classes

struct  RESTORELISTSELECTION
 

Public Member Functions

 CApplicationView (CMainWindow *MainWindow)
 
 ~CApplicationView ()
 
HWND Create (HWND hwndParent)
 
void SetRedraw (BOOL bRedraw)
 
void RefreshAvailableItem (PCWSTR PackageName)
 
void SetFocusOnSearchBar ()
 
BOOL SetDisplayAppType (APPLICATION_VIEW_TYPE AppType)
 
BOOL AddApplication (CAppInfo *InstAppInfo, BOOL InitialCheckState)
 
VOID SetWatermark (const CStringW &Text)
 
void CheckAll ()
 
PVOID GetFocusedItemData ()
 
int GetItemCount ()
 
VOID AppendTabOrderWindow (int Direction, ATL::CSimpleArray< HWND > &TabOrderList)
 
VOID GetRestoreListSelectionData (RESTORELISTSELECTION &Restore)
 
VOID RestoreListSelection (const RESTORELISTSELECTION &Restore)
 
VOID RefreshDetailsPane (CAppInfo &Info, bool OnlyUpdateText=false)
 
VOID ItemGetFocus (LPVOID CallbackParam)
 
VOID ItemCheckStateChanged (BOOL bChecked, LPVOID CallbackParam)
 
- Public Member Functions inherited from CUiWindow< CWindowImpl< CApplicationView > >
virtual CUiBoxAsBox ()
 
HWND GetWindow ()
 
virtual VOID ComputeMinimalSize (SIZE *size)
 
virtual VOID ComputeContentBounds (RECT *rect)
 
virtual DWORD_PTR CountSizableChildren ()
 
virtual HDWP OnParentSize (RECT parentRect, HDWP hDwp)
 
virtual VOID AppendTabOrderWindow (int Direction, ATL::CSimpleArray< HWND > &TabOrderList)
 
virtual ~CUiWindow ()
 
VOID GetWindowTextW (CStringW &szText)
 
- Public Member Functions inherited from CUiPrimitive
virtual ~CUiPrimitive ()
 
virtual CUiBoxAsBox ()
 
virtual VOID ComputeMinimalSize (SIZE *size)
 
virtual VOID ComputeContentBounds (RECT *rect)
 
virtual DWORD_PTR CountSizableChildren ()
 
virtual HDWP OnParentSize (RECT parentRect, HDWP hDwp)
 

Static Public Member Functions

static ATL::CWndClassInfoGetWndClassInfo ()
 

Private Member Functions

BOOL ProcessWindowMessage (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT &theResult, DWORD dwMapId)
 
BOOL CreateToolbar ()
 
BOOL CreateSearchBar ()
 
BOOL CreateComboBox ()
 
BOOL CreateHSplitter ()
 
BOOL CreateListView ()
 
BOOL CreateAppInfoDisplay ()
 
VOID OnSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 
VOID OnCommand (WPARAM wParam, LPARAM lParam)
 
void _UpdateInstallBtn ()
 

Private Attributes

CUiPanelm_Panel = NULL
 
CMainToolbarm_Toolbar = NULL
 
CUiWindow< CComboBox > * m_ComboBox = NULL
 
CUiWindow< CSearchBar > * m_SearchBar = NULL
 
CAppsListViewm_ListView = NULL
 
CAppInfoDisplaym_AppsInfo = NULL
 
CUiSplitPanelm_HSplitter = NULL
 
CMainWindowm_MainWindow = NULL
 
APPLICATION_VIEW_TYPE ApplicationViewType = AppViewTypeAvailableApps
 

Additional Inherited Members

- Public Attributes inherited from CUiBox
CUiMargin m_Margin
 
CUiAlignment m_HorizontalAlignment
 
CUiAlignment m_VerticalAlignment
 
- Protected Member Functions inherited from CUiBox
 CUiBox ()
 
virtual VOID ComputeRect (RECT parentRect, RECT currentRect, RECT *newRect)
 
- Protected Attributes inherited from CUiPrimitive
CUiPrimitivem_Parent
 

Detailed Description

Definition at line 345 of file appview.h.

Constructor & Destructor Documentation

◆ CApplicationView()

CApplicationView::CApplicationView ( CMainWindow MainWindow)

Definition at line 2003 of file appview.cpp.

2003 : m_MainWindow(MainWindow)
2004{
2005}
CMainWindow * m_MainWindow
Definition: appview.h:355

◆ ~CApplicationView()

CApplicationView::~CApplicationView ( )

Definition at line 2007 of file appview.cpp.

2008{
2009 delete m_Toolbar;
2010 delete m_SearchBar;
2011 delete m_ListView;
2012 delete m_AppsInfo;
2013 delete m_HSplitter;
2014}
CUiWindow< CSearchBar > * m_SearchBar
Definition: appview.h:351
CAppInfoDisplay * m_AppsInfo
Definition: appview.h:353
CUiSplitPanel * m_HSplitter
Definition: appview.h:354
CMainToolbar * m_Toolbar
Definition: appview.h:349
CAppsListView * m_ListView
Definition: appview.h:352

Member Function Documentation

◆ _UpdateInstallBtn()

void CApplicationView::_UpdateInstallBtn ( )
private

Definition at line 2170 of file appview.cpp.

2171{
2173 {
2175 m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_INSTALL, FALSE);
2176 }
2178 {
2179 // We shouldn't get there in APPWIZ-mode.
2181
2182 /* Even if no ListView item is focused at this point, enable
2183 * or disable ID_INSTALL if there are selected applications. */
2184 BOOL CanInstall = !m_MainWindow->m_Selected.IsEmpty();
2185 CanInstall = CanInstall || (m_ListView->GetSelectedCount() > 0);
2187 m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_INSTALL, CanInstall);
2188 }
2189}
#define ATLASSERT(x)
Definition: CComVariant.cpp:10
@ AppViewTypeInstalledApps
Definition: appview.h:72
@ AppViewTypeAvailableApps
Definition: appview.h:71
#define ID_INSTALL
Definition: resource.h:74
bool IsEmpty() const
Definition: atlcoll.h:548
APPLICATION_VIEW_TYPE ApplicationViewType
Definition: appview.h:356
BOOL m_bAppwizMode
Definition: gui.h:61
CAtlList< CAppInfo * > m_Selected
Definition: gui.h:58
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define TB_ENABLEBUTTON
Definition: commctrl.h:1042
#define MF_ENABLED
Definition: winuser.h:128
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
HMENU WINAPI GetMenu(_In_ HWND)
#define MF_GRAYED
Definition: winuser.h:129

Referenced by ProcessWindowMessage(), and SetDisplayAppType().

◆ AddApplication()

BOOL CApplicationView::AddApplication ( CAppInfo InstAppInfo,
BOOL  InitialCheckState 
)

Definition at line 2089 of file appview.cpp.

2090{
2091 return m_ListView->AddApplication(AppInfo, InitialCheckState);
2092}
BOOL AddApplication(CAppInfo *AppInfo, BOOL InitialCheckState)
Definition: appview.cpp:1465

Referenced by CMainWindow::AddApplicationsToView().

◆ AppendTabOrderWindow()

VOID CApplicationView::AppendTabOrderWindow ( int  Direction,
ATL::CSimpleArray< HWND > &  TabOrderList 
)
virtual

Reimplemented from CUiWindow< CWindowImpl< CApplicationView > >.

Definition at line 2119 of file appview.cpp.

2120{
2126}
CUiWindow< CComboBox > * m_ComboBox
Definition: appview.h:350
virtual VOID AppendTabOrderWindow(int Direction, ATL::CSimpleArray< HWND > &TabOrderList)
Definition: rosui.h:546
WDF_EXTERN_C_START typedef _In_ WDFDEVICE _In_ WDFCONTEXT _In_ WDF_DMA_DIRECTION Direction

Referenced by CMainWindow::HandleTabOrder().

◆ CheckAll()

void CApplicationView::CheckAll ( )

Definition at line 2101 of file appview.cpp.

2102{
2104}
VOID CheckAll()
Definition: appview.cpp:1347

Referenced by CMainWindow::OnCommand().

◆ Create()

HWND CApplicationView::Create ( HWND  hwndParent)

Definition at line 2033 of file appview.cpp.

2034{
2035 RECT r = {0, 0, 0, 0};
2036
2037 // Pick the "Programs" sub-menu for building the context menu.
2038 HMENU hMenu = ::GetSubMenu(m_MainWindow->GetMenu(), 1);
2039
2041}
HWND Create(HWND hWndParent, _U_RECT rect=NULL, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
Definition: atlwin.h:1734
HMENU GetMenu() const
Definition: atlwin.h:682
static HWND hwndParent
Definition: cryptui.c:300
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
#define L(x)
Definition: ntvdm.h:50
#define WS_CHILD
Definition: pedump.c:617
#define WS_VISIBLE
Definition: pedump.c:620
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define WS_CLIPCHILDREN
Definition: pedump.c:619
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)

Referenced by CMainWindow::CreateApplicationView().

◆ CreateAppInfoDisplay()

BOOL CApplicationView::CreateAppInfoDisplay ( )
private

Definition at line 1803 of file appview.cpp.

1804{
1809
1810 return m_AppsInfo->Create(m_hWnd) != NULL;
1811}
HWND Create(HWND hwndParent)
Definition: appview.cpp:951
INT Append(T *ptr)
Definition: rosui.h:87
CUiAlignment m_HorizontalAlignment
Definition: rosui.h:257
CUiAlignment m_VerticalAlignment
Definition: rosui.h:258
CUiCollection & Second()
Definition: rosui.h:623
#define NULL
Definition: types.h:112
@ UiAlign_Stretch
Definition: rosui.h:249

Referenced by ProcessWindowMessage().

◆ CreateComboBox()

BOOL CApplicationView::CreateComboBox ( )
private

Definition at line 1765 of file appview.cpp.

1766{
1770 m_ComboBox->m_Margin.top = 4;
1771
1772 return m_ComboBox->Create(m_Toolbar->m_hWnd) != NULL;
1773}
HWND Create(HWND hwndParent)
Definition: appview.cpp:262
CUiMargin m_Margin
Definition: rosui.h:255
@ UiAlign_LeftTop
Definition: rosui.h:246
@ UiAlign_RightBtm
Definition: rosui.h:248
LONG top
Definition: windef.h:307

Referenced by ProcessWindowMessage().

◆ CreateHSplitter()

BOOL CApplicationView::CreateHSplitter ( )
private

Definition at line 1776 of file appview.cpp.

1777{
1778 m_HSplitter = new CUiSplitPanel();
1783 m_HSplitter->m_Pos = INT_MAX; // set INT_MAX to use lowest possible position (m_MinSecond)
1784 m_HSplitter->m_MinFirst = 10;
1785 m_HSplitter->m_MinSecond = 140;
1787
1788 return m_HSplitter->Create(m_hWnd) != NULL;
1789}
CUiPanel * m_Panel
Definition: appview.h:348
CUiCollection & Children()
Definition: rosui.h:384
INT m_Pos
Definition: rosui.h:584
BOOL m_Horizontal
Definition: rosui.h:585
BOOL m_DynamicFirst
Definition: rosui.h:586
INT m_MinSecond
Definition: rosui.h:588
HWND Create(HWND hwndParent)
Definition: rosui.h:867
INT m_MinFirst
Definition: rosui.h:587
#define TRUE
Definition: types.h:120
#define INT_MAX
Definition: intsafe.h:150

Referenced by ProcessWindowMessage().

◆ CreateListView()

BOOL CApplicationView::CreateListView ( )
private

Definition at line 1792 of file appview.cpp.

1793{
1794 m_ListView = new CAppsListView();
1798
1799 return m_ListView->Create(m_hWnd) != NULL;
1800}
HWND Create(HWND hwndParent)
Definition: appview.cpp:1309
CUiCollection & First()
Definition: rosui.h:618

Referenced by ProcessWindowMessage().

◆ CreateSearchBar()

BOOL CApplicationView::CreateSearchBar ( )
private

Definition at line 1753 of file appview.cpp.

1754{
1760
1761 return m_SearchBar->Create(m_Toolbar->m_hWnd) != NULL;
1762}
#define TOOLBAR_PADDING
Definition: appview.h:36
HWND Create(HWND hwndParent)
Definition: appview.cpp:241
LONG right
Definition: windef.h:308

Referenced by ProcessWindowMessage().

◆ CreateToolbar()

BOOL CApplicationView::CreateToolbar ( )
private

Definition at line 1742 of file appview.cpp.

1743{
1744 m_Toolbar = new CMainToolbar();
1748
1749 return m_Toolbar->Create(m_hWnd) != NULL;
1750}
HWND Create(HWND hwndParent)
Definition: appview.cpp:147

Referenced by ProcessWindowMessage().

◆ GetFocusedItemData()

PVOID CApplicationView::GetFocusedItemData ( )

◆ GetItemCount()

int CApplicationView::GetItemCount ( )

Definition at line 2113 of file appview.cpp.

2114{
2115 return m_ListView->GetItemCount();
2116}

Referenced by CMainWindow::UpdateApplicationsList(), and CMainWindow::UpdateStatusBarText().

◆ GetRestoreListSelectionData()

VOID CApplicationView::GetRestoreListSelectionData ( RESTORELISTSELECTION Restore)

Definition at line 2129 of file appview.cpp.

2130{
2131 LVITEMW &Item = Restore.Item;
2133 Item.iItem = -1, Item.iSubItem = 0;
2134 Item.stateMask = LVIS_FOCUSED|LVIS_SELECTED;
2135 Item.pszText = Restore.Name, Item.cchTextMax = _countof(Restore.Name);
2136
2137 HWND hList = m_ListView ? m_ListView->m_hWnd : NULL;
2138 if (hList)
2139 {
2142 }
2143}
HWND hList
Definition: livecd.c:10
#define LVIF_STATE
Definition: commctrl.h:2317
#define LVNI_FOCUSED
Definition: commctrl.h:2428
#define ListView_GetNextItem(hwnd, i, flags)
Definition: commctrl.h:2439
#define LVIS_SELECTED
Definition: commctrl.h:2324
#define LVIF_TEXT
Definition: commctrl.h:2314
#define LVIS_FOCUSED
Definition: commctrl.h:2323
#define ListView_GetItem(hwnd, pitem)
Definition: commctrl.h:2399
#define _countof(array)
Definition: sndvol32.h:70
UINT mask
Definition: commctrl.h:2365
_In_ WDFCOLLECTION _In_ WDFOBJECT Item

Referenced by CMainWindow::UpdateApplicationsList().

◆ GetWndClassInfo()

ATL::CWndClassInfo & CApplicationView::GetWndClassInfo ( )
static

Definition at line 2017 of file appview.cpp.

2018{
2019 DWORD csStyle = CS_VREDRAW | CS_HREDRAW;
2020 static ATL::CWndClassInfo wc = {
2021 {sizeof(WNDCLASSEX), csStyle, StartWindowProc, 0, 0, NULL, NULL, NULL, (HBRUSH)(COLOR_BTNFACE + 1), NULL,
2022 L"RAppsApplicationView", NULL},
2023 NULL,
2024 NULL,
2025 IDC_ARROW,
2026 TRUE,
2027 0,
2028 _T("")};
2029 return wc;
2030}
unsigned long DWORD
Definition: ntddk_ex.h:95
#define _T(x)
Definition: vfdio.h:22
#define CS_VREDRAW
Definition: winuser.h:666
#define CS_HREDRAW
Definition: winuser.h:661
#define IDC_ARROW
Definition: winuser.h:695
WNDCLASSEXA WNDCLASSEX
Definition: winuser.h:5739
#define COLOR_BTNFACE
Definition: winuser.h:939

◆ ItemCheckStateChanged()

VOID CApplicationView::ItemCheckStateChanged ( BOOL  bChecked,
LPVOID  CallbackParam 
)

Definition at line 2234 of file appview.cpp.

2235{
2236 m_MainWindow->ItemCheckStateChanged(bChecked, CallbackParam);
2237}
VOID ItemCheckStateChanged(BOOL bChecked, LPVOID CallbackParam)
Definition: gui.cpp:815

Referenced by ProcessWindowMessage().

◆ ItemGetFocus()

VOID CApplicationView::ItemGetFocus ( LPVOID  CallbackParam)

Definition at line 2194 of file appview.cpp.

2195{
2196 if (!CallbackParam)
2197 return;
2198
2199 CAppInfo *Info = static_cast<CAppInfo *>(CallbackParam);
2201
2202 HMENU hMenu = GetMenu();
2204 {
2205 /* ID_INSTALL is left disabled */
2206
2208 m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_UNINSTALL, TRUE);
2209
2210 BOOL CanModify = Info->CanModify();
2211 EnableMenuItem(hMenu, ID_MODIFY, CanModify ? MF_ENABLED : MF_GRAYED);
2212 m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_MODIFY, CanModify);
2213
2215 }
2217 {
2218 // We shouldn't get there in APPWIZ-mode.
2220
2222 m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_INSTALL, TRUE);
2223
2224 /* ID_UNINSTALL, ID_MODIFY and ID_REGREMOVE are left disabled */
2225 // TODO: When we are able to detect whether this selected available
2226 // application is already installed (could be an older version),
2227 // do also what's done in the AppViewTypeInstalledApps case above.
2228 }
2229}
#define ID_REGREMOVE
Definition: resource.h:83
#define ID_UNINSTALL
Definition: resource.h:75
#define ID_MODIFY
Definition: resource.h:78
VOID RefreshDetailsPane(CAppInfo &Info, bool OnlyUpdateText=false)
Definition: appview.cpp:2164
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:690

Referenced by ProcessWindowMessage().

◆ OnCommand()

VOID CApplicationView::OnCommand ( WPARAM  wParam,
LPARAM  lParam 
)
private

Definition at line 1903 of file appview.cpp.

1904{
1905 if (lParam)
1906 {
1907 if ((HWND)lParam == m_SearchBar->GetWindow())
1908 {
1909 CStringW szBuf;
1910 switch (HIWORD(wParam))
1911 {
1912 case EN_SETFOCUS:
1913 {
1914 CStringW szWndText;
1915
1916 szBuf.LoadStringW(IDS_SEARCH_TEXT);
1917 m_SearchBar->GetWindowTextW(szWndText);
1918 if (szBuf == szWndText)
1919 {
1920 m_SearchBar->SetWindowTextW(L"");
1921 }
1922 }
1923 break;
1924
1925 case EN_KILLFOCUS:
1926 {
1928 if (szBuf.IsEmpty())
1929 {
1930 szBuf.LoadStringW(IDS_SEARCH_TEXT);
1931 m_SearchBar->SetWindowTextW(szBuf.GetString());
1932 }
1933 }
1934 break;
1935
1936 case EN_CHANGE:
1937 {
1938 CStringW szWndText;
1939
1940 szBuf.LoadStringW(IDS_SEARCH_TEXT);
1941 m_SearchBar->GetWindowTextW(szWndText);
1942 if (szBuf == szWndText)
1943 {
1944 szWndText = L"";
1945 m_MainWindow->SearchTextChanged(szWndText);
1946 }
1947 else
1948 {
1949 m_MainWindow->SearchTextChanged(szWndText);
1950 }
1951 }
1952 break;
1953 }
1954
1955 return;
1956 }
1957 else if ((HWND)lParam == m_ComboBox->GetWindow())
1958 {
1959 int NotifyCode = HIWORD(wParam);
1960 switch (NotifyCode)
1961 {
1962 case CBN_SELCHANGE:
1963 int CurrSelection = m_ComboBox->SendMessageW(CB_GETCURSEL);
1964
1965 int ViewModeList[] = {LV_VIEW_DETAILS, LV_VIEW_LIST, LV_VIEW_TILE};
1966 ATLASSERT(CurrSelection < (int)_countof(ViewModeList));
1967 if (!m_ListView->SetViewMode(ViewModeList[CurrSelection]))
1968 {
1969 MessageBoxW(L"View mode invalid or unimplemented");
1970 }
1971 break;
1972 }
1973
1974 return;
1975 }
1976 else if ((HWND)lParam == m_Toolbar->GetWindow())
1977 {
1978 // the message is sent from Toolbar. fall down to continue process
1979 }
1980 else
1981 {
1982 return;
1983 }
1984 }
1985
1986 // the LOWORD of wParam contains a Menu or Control ID
1987 WORD wCommand = LOWORD(wParam);
1988
1989 switch (wCommand)
1990 {
1991 case ID_INSTALL:
1992 case ID_UNINSTALL:
1993 case ID_MODIFY:
1994 case ID_REGREMOVE:
1995 case ID_REFRESH:
1996 case ID_RESETDB:
1997 case ID_CHECK_ALL:
1998 m_MainWindow->SendMessageW(WM_COMMAND, wCommand, 0);
1999 break;
2000 }
2001}
#define ID_REFRESH
Definition: resource.h:16
#define IDS_SEARCH_TEXT
Definition: resource.h:102
#define ID_CHECK_ALL
Definition: resource.h:85
#define ID_RESETDB
Definition: resource.h:84
bool IsEmpty() const noexcept
Definition: atlsimpstr.h:394
PXSTR GetString() noexcept
Definition: atlsimpstr.h:367
BOOL SetViewMode(DWORD ViewMode)
Definition: appview.cpp:1459
BOOL SearchTextChanged(CStringW &SearchText)
Definition: gui.cpp:849
VOID GetWindowTextW(CStringW &szText)
Definition: rosui.h:561
HWND GetWindow()
Definition: rosui.h:492
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
unsigned short WORD
Definition: ntddk_ex.h:93
#define LOWORD(l)
Definition: pedump.c:82
#define LV_VIEW_DETAILS
Definition: commctrl.h:2846
#define LV_VIEW_LIST
Definition: commctrl.h:2848
#define LV_VIEW_TILE
Definition: commctrl.h:2849
#define HIWORD(l)
Definition: typedefs.h:247
_In_ ULONG NotifyCode
Definition: winddi.h:4265
#define EN_KILLFOCUS
Definition: winuser.h:2036
#define EN_SETFOCUS
Definition: winuser.h:2038
#define WM_COMMAND
Definition: winuser.h:1751
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define CBN_SELCHANGE
Definition: winuser.h:1990
#define CB_GETCURSEL
Definition: winuser.h:1954
#define EN_CHANGE
Definition: winuser.h:2033

Referenced by ProcessWindowMessage().

◆ OnSize()

VOID CApplicationView::OnSize ( HWND  hwnd,
WPARAM  wParam,
LPARAM  lParam 
)
private

Definition at line 1843 of file appview.cpp.

1844{
1845 if (wParam == SIZE_MINIMIZED)
1846 return;
1847
1848 /* Resize the toolbar */
1850
1851 /* Automatically hide captions */
1852 DWORD dToolbarTreshold = m_Toolbar->GetMaxButtonsWidth();
1853 DWORD dSearchbarMargin = (LOWORD(lParam) - m_SearchBar->m_Width - m_ComboBox->m_Width - TOOLBAR_PADDING * 2);
1854
1855 if (dSearchbarMargin > dToolbarTreshold)
1856 {
1858 }
1859 else if (dSearchbarMargin < dToolbarTreshold)
1860 {
1862 }
1863
1864 RECT r = {0, 0, LOWORD(lParam), HIWORD(lParam)};
1865 HDWP hdwp = NULL;
1867
1868 hdwp = BeginDeferWindowPos(count);
1869 if (hdwp)
1870 {
1871 hdwp = m_Panel->OnParentSize(r, hdwp);
1872 if (hdwp)
1873 {
1874 EndDeferWindowPos(hdwp);
1875 }
1876 }
1877
1879 hdwp = BeginDeferWindowPos(count);
1880 if (hdwp)
1881 {
1882 hdwp = m_SearchBar->OnParentSize(r, hdwp);
1883 if (hdwp)
1884 {
1885 EndDeferWindowPos(hdwp);
1886 }
1887 }
1888
1891 hdwp = BeginDeferWindowPos(count);
1892 if (hdwp)
1893 {
1894 hdwp = m_ComboBox->OnParentSize(r, hdwp);
1895 if (hdwp)
1896 {
1897 EndDeferWindowPos(hdwp);
1898 }
1899 }
1900}
int m_Width
Definition: appview.h:336
DWORD GetMaxButtonsWidth() const
Definition: appview.cpp:222
void ShowButtonCaption(bool bShow)
Definition: appview.cpp:204
const INT m_Width
Definition: appview.h:308
DWORD AutoSize()
Definition: rosctrls.h:378
virtual DWORD_PTR CountSizableChildren()
Definition: rosui.h:439
virtual HDWP OnParentSize(RECT parentRect, HDWP hDwp)
Definition: rosui.h:454
virtual HDWP OnParentSize(RECT parentRect, HDWP hDwp)
Definition: rosui.h:522
virtual DWORD_PTR CountSizableChildren()
Definition: rosui.h:516
GLuint GLuint GLsizei count
Definition: gl.h:1545
int32_t INT
Definition: typedefs.h:58
#define SIZE_MINIMIZED
Definition: winuser.h:2517
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
HDWP WINAPI BeginDeferWindowPos(_In_ int)

Referenced by ProcessWindowMessage().

◆ ProcessWindowMessage()

BOOL CApplicationView::ProcessWindowMessage ( HWND  hwnd,
UINT  message,
WPARAM  wParam,
LPARAM  lParam,
LRESULT theResult,
DWORD  dwMapId 
)
private

Definition at line 1529 of file appview.cpp.

1536{
1537 theResult = 0;
1538 switch (message)
1539 {
1540 case WM_CREATE:
1541 {
1542 BOOL bSuccess = TRUE;
1543 m_Panel = new CUiPanel();
1546
1547 bSuccess &= CreateToolbar();
1548 bSuccess &= CreateSearchBar();
1549 bSuccess &= CreateComboBox();
1550 bSuccess &= CreateHSplitter();
1551 bSuccess &= CreateListView();
1552 bSuccess &= CreateAppInfoDisplay();
1553
1554 /* APPWIZ-mode: Remove the unneeded menu items and toolbar buttons */
1556 {
1557 HMENU hMenu;
1558
1559 /* Delete the "Settings" item in the "File" sub-menu */
1560 hMenu = ::GetSubMenu(m_MainWindow->GetMenu(), 0);
1562
1563 /* Remove the menu items: ID_INSTALL, ID_RESETDB */
1564 hMenu = GetMenu();
1567
1568 /* Remove the toolbar buttons:
1569 * ID_INSTALL, ID_CHECK_ALL, ID_RESETDB
1570 * We only keep:
1571 * ID_UNINSTALL, ID_MODIFY, ID_REFRESH */
1572 TBBUTTONINFO info = { sizeof(info), 0 };
1573 int index;
1574
1576 if (index >= 0) m_Toolbar->DeleteButton(index);
1577
1579 if (index >= 0) m_Toolbar->DeleteButton(index);
1580
1582 if (index >= 0) m_Toolbar->DeleteButton(index);
1583
1584 /* Update the ideal width to use as a max width of buttons */
1586 }
1587
1588 /* Resize the toolbar */
1590
1591 RECT rTop;
1592
1593 ::GetWindowRect(m_Toolbar->m_hWnd, &rTop);
1594 m_HSplitter->m_Margin.top = rTop.bottom - rTop.top;
1595 if (!bSuccess)
1596 {
1597 return -1; // creation failure
1598 }
1599 }
1600 break;
1601
1602 case WM_NOTIFY:
1603 {
1604 LPNMHDR pNotifyHeader = (LPNMHDR)lParam;
1605 if (pNotifyHeader->hwndFrom == m_ListView->GetWindow())
1606 {
1607 switch (pNotifyHeader->code)
1608 {
1609 case LVN_ITEMCHANGED:
1610 {
1612
1613 /* Check if this is a valid item
1614 * (technically, it can be also an unselect) */
1615 INT ItemIndex = pnic->iItem;
1616 if (ItemIndex == -1 || ItemIndex >= ListView_GetItemCount(pnic->hdr.hwndFrom))
1617 {
1618 break;
1619 }
1620
1621 /* Check if the focus has been moved to another item */
1622 if ((pnic->uChanged & LVIF_STATE) && (pnic->uNewState & LVIS_FOCUSED) &&
1623 !(pnic->uOldState & LVIS_FOCUSED))
1624 {
1625 ItemGetFocus((LPVOID)pnic->lParam);
1626 }
1627
1628 /* Check if the item is checked/unchecked */
1629 if (pnic->uChanged & LVIF_STATE)
1630 {
1631 int iOldState = STATEIMAGETOINDEX(pnic->uOldState);
1632 int iNewState = STATEIMAGETOINDEX(pnic->uNewState);
1633
1634 if (iOldState == STATEIMAGE_UNCHECKED && iNewState == STATEIMAGE_CHECKED)
1635 {
1636 // this item is just checked
1639 }
1640 else if (iOldState == STATEIMAGE_CHECKED && iNewState == STATEIMAGE_UNCHECKED)
1641 {
1642 // this item is just unchecked
1645 }
1646 }
1647
1648 /* Ensure that if there are any items still focused/selected,
1649 * the ID_INSTALL menu item and toolbar button stay enabled */
1650 if ((pnic->uChanged & LVIF_STATE) && !m_MainWindow->bUpdating)
1652 }
1653 break;
1654
1655 case LVN_COLUMNCLICK:
1656 {
1658
1659 m_ListView->ColumnClick(pnmv);
1660 }
1661 break;
1662
1663 case NM_DBLCLK:
1664 {
1666 if (Item->iItem != -1)
1667 {
1668 /* this won't do anything if the program is already installed */
1669
1671 {
1673 (CAppInfo *)m_ListView->GetItemData(Item->iItem));
1674 }
1675 }
1676 }
1677 break;
1678 }
1679 }
1680 else if (pNotifyHeader->hwndFrom == m_Toolbar->GetWindow())
1681 {
1682 switch (pNotifyHeader->code)
1683 {
1684 case TTN_GETDISPINFO:
1686 break;
1687 }
1688 }
1689 }
1690 break;
1691
1692 case WM_SYSCOLORCHANGE:
1693 {
1694 /* Forward WM_SYSCOLORCHANGE to common controls */
1695 m_ListView->SendMessageW(WM_SYSCOLORCHANGE, wParam, lParam);
1696 m_AppsInfo->SendMessageW(WM_SYSCOLORCHANGE, wParam, lParam);
1697 m_Toolbar->SendMessageW(WM_SYSCOLORCHANGE, wParam, lParam);
1698 m_ComboBox->SendMessageW(WM_SYSCOLORCHANGE, wParam, lParam);
1699 }
1700 break;
1701
1702 case WM_SIZE:
1703 {
1705 break;
1706 }
1707
1708 case WM_COMMAND:
1709 {
1711 }
1712 break;
1713
1714 case WM_CONTEXTMENU:
1715 {
1716 bool kbd = -1 == (int)(INT_PTR)lParam;
1717 if ((HWND)wParam == m_ListView->m_hWnd)
1718 {
1719 int item = m_ListView->GetNextItem(-1, LVNI_FOCUSED | LVNI_SELECTED);
1720 if (item != -1)
1721 {
1722 POINT *ppt = NULL, pt;
1723 if (kbd)
1724 {
1725 RECT r;
1727 pt.x = r.left + (r.right - r.left) / 2;
1728 pt.y = r.top + (r.bottom - r.top) / 2;
1729 ::ClientToScreen((HWND)wParam, ppt = &pt);
1730 }
1731 ShowPopupMenuEx(m_hWnd, m_hWnd, 0, ID_INSTALL, ppt);
1732 return TRUE;
1733 }
1734 }
1735 }
1736 break;
1737 }
1738 return FALSE;
1739}
BOOL DeleteMenuEx(_In_ HMENU hMenu, _In_ UINT uPosition, _In_ UINT uFlags)
Definition: appview.cpp:23
#define STATEIMAGETOINDEX(x)
Definition: appview.h:60
#define STATEIMAGE_UNCHECKED
Definition: appview.h:64
#define STATEIMAGE_CHECKED
Definition: appview.h:65
#define index(s, c)
Definition: various.h:29
VOID ShowPopupMenuEx(HWND hwnd, HWND hwndOwner, UINT MenuID, UINT DefaultItem, POINT *Point=NULL)
Definition: misc.cpp:80
#define ID_SETTINGS
Definition: resource.h:81
BOOL CreateToolbar()
Definition: appview.cpp:1742
void _UpdateInstallBtn()
Definition: appview.cpp:2170
VOID ItemGetFocus(LPVOID CallbackParam)
Definition: appview.cpp:2194
BOOL CreateHSplitter()
Definition: appview.cpp:1776
BOOL CreateAppInfoDisplay()
Definition: appview.cpp:1803
VOID OnCommand(WPARAM wParam, LPARAM lParam)
Definition: appview.cpp:1903
VOID OnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
Definition: appview.cpp:1843
BOOL CreateComboBox()
Definition: appview.cpp:1765
BOOL CreateSearchBar()
Definition: appview.cpp:1753
BOOL CreateListView()
Definition: appview.cpp:1792
VOID ItemCheckStateChanged(BOOL bChecked, LPVOID CallbackParam)
Definition: appview.cpp:2234
VOID ColumnClick(LPNMLISTVIEW pnmv)
Definition: appview.cpp:1190
VOID ItemCheckStateNotify(int iItem, BOOL bCheck)
Definition: appview.cpp:1513
void UpdateMaxButtonsWidth()
Definition: appview.cpp:214
VOID OnGetDispInfo(LPTOOLTIPTEXT lpttt)
Definition: appview.cpp:110
BOOL bUpdating
Definition: gui.h:60
BOOL InstallApplication(CAppInfo *Info)
Definition: gui.cpp:843
DWORD DeleteButton(int index)
Definition: rosctrls.h:347
DWORD GetButtonInfo(int cmdId, TBBUTTONINFO *info)
Definition: rosctrls.h:352
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
#define pt(x, y)
Definition: drawing.c:79
GLuint index
Definition: glext.h:6031
static ATOM item
Definition: dde.c:856
#define ListView_GetItemRect(hwnd, i, prc, code)
Definition: commctrl.h:2483
#define LVN_COLUMNCLICK
Definition: commctrl.h:3144
#define NM_DBLCLK
Definition: commctrl.h:131
#define LVNI_SELECTED
Definition: commctrl.h:2429
#define TBBUTTONINFO
Definition: commctrl.h:1254
#define TTN_GETDISPINFO
Definition: commctrl.h:1883
#define ListView_GetItemCount(hwnd)
Definition: commctrl.h:2312
struct tagNMITEMACTIVATE * LPNMITEMACTIVATE
#define LVIR_LABEL
Definition: commctrl.h:2479
struct tagNMLISTVIEW * LPNMLISTVIEW
#define LVN_ITEMCHANGED
Definition: commctrl.h:3136
#define LPTOOLTIPTEXT
Definition: commctrl.h:1895
#define WM_CONTEXTMENU
Definition: richedit.h:64
#define WM_NOTIFY
Definition: richedit.h:61
Definition: tftpd.h:60
UINT code
Definition: winuser.h:3170
HWND hwndFrom
Definition: winuser.h:3168
UINT uNewState
Definition: commctrl.h:3041
LPARAM lParam
Definition: commctrl.h:3045
UINT uOldState
Definition: commctrl.h:3042
LONG bottom
Definition: windef.h:309
int32_t INT_PTR
Definition: typedefs.h:64
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
#define MF_BYCOMMAND
Definition: winuser.h:202
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define WM_CREATE
Definition: winuser.h:1619
#define WM_SIZE
Definition: winuser.h:1622
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1637
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
struct tagNMHDR * LPNMHDR

◆ RefreshAvailableItem()

void CApplicationView::RefreshAvailableItem ( PCWSTR  PackageName)

Definition at line 1821 of file appview.cpp.

1822{
1823 if (ApplicationViewType != AppViewTypeAvailableApps || !PackageName)
1824 return;
1825 CAppInfo *pApp;
1826 for (UINT i = 0; (pApp = (CAppInfo*)m_ListView->GetItemData(i)) != NULL; ++i)
1827 {
1828 if (pApp->szIdentifier.CompareNoCase(PackageName) == 0)
1829 {
1830 RefreshDetailsPane(*pApp, true);
1831 break;
1832 }
1833 }
1834}
int CompareNoCase(_In_z_ PCXSTR psz) const
Definition: cstringt.h:743
const CStringW szIdentifier
Definition: appinfo.h:114
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
unsigned int UINT
Definition: ndis.h:50

Referenced by CMainWindow::ProcessWindowMessage().

◆ RefreshDetailsPane()

VOID CApplicationView::RefreshDetailsPane ( CAppInfo Info,
bool  OnlyUpdateText = false 
)

Definition at line 2164 of file appview.cpp.

2165{
2166 m_AppsInfo->ShowAppInfo(Info, OnlyUpdateText);
2167}
VOID ShowAppInfo(CAppInfo &Info, bool OnlyUpdateText=false)
Definition: appview.cpp:959

Referenced by ItemGetFocus(), and RefreshAvailableItem().

◆ RestoreListSelection()

VOID CApplicationView::RestoreListSelection ( const RESTORELISTSELECTION Restore)

Definition at line 2146 of file appview.cpp.

2147{
2148 const LVITEMW &Item = Restore.Item;
2149 int index = Item.iItem;
2150 if (index != -1) // Was there a selected item?
2151 {
2152 LVFINDINFOW fi;
2153 fi.flags = LVFI_STRING;
2154 fi.psz = Item.pszText;
2155 index = ListView_FindItem(m_ListView->m_hWnd, -1, &fi);
2156 }
2157 if (index != -1) // Is it still in the list?
2158 {
2159 ListView_SetItemState(m_ListView->m_hWnd, index, Item.state, Item.stateMask);
2160 }
2161}
#define ListView_SetItemState(hwndLV, i, data, mask)
Definition: commctrl.h:2678
#define LVFI_STRING
Definition: commctrl.h:2442
#define ListView_FindItem(hwnd, iStart, plvfi)
Definition: commctrl.h:2475
LPCWSTR psz
Definition: commctrl.h:2462

Referenced by CMainWindow::UpdateApplicationsList().

◆ SetDisplayAppType()

BOOL CApplicationView::SetDisplayAppType ( APPLICATION_VIEW_TYPE  AppType)

Definition at line 2044 of file appview.cpp.

2045{
2046 if (!m_ListView->SetDisplayAppType(AppType))
2047 return FALSE;
2048
2049 ApplicationViewType = AppType;
2051
2052 HMENU hMenu = GetMenu();
2053 switch (AppType)
2054 {
2056 {
2058 m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_INSTALL, FALSE);
2059
2061 break;
2062 }
2063
2065 {
2066 // We shouldn't get there in APPWIZ-mode.
2068
2069 /* Even if no ListView item is focused at this point, enable
2070 * or disable ID_INSTALL if there are selected applications. */
2072
2073 m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_CHECK_ALL, TRUE);
2074 break;
2075 }
2076 }
2077
2078 /* Always disable these items by default */
2083 m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_MODIFY, FALSE);
2084
2085 return TRUE;
2086}
void SetWelcomeText(bool bAppwiz)
Definition: appview.cpp:978
BOOL SetDisplayAppType(APPLICATION_VIEW_TYPE AppType)
Definition: appview.cpp:1376

Referenced by CMainWindow::UpdateApplicationsList().

◆ SetFocusOnSearchBar()

void CApplicationView::SetFocusOnSearchBar ( )

Definition at line 1837 of file appview.cpp.

1838{
1840}
HWND SetFocus()
Definition: atlwin.h:1198

Referenced by CMainWindow::OnCommand().

◆ SetRedraw()

void CApplicationView::SetRedraw ( BOOL  bRedraw)

Definition at line 1814 of file appview.cpp.

1815{
1816 CWindow::SetRedraw(bRedraw);
1817 m_ListView->SetRedraw(bRedraw);
1818}
void SetRedraw(BOOL bRedraw=TRUE)
Definition: atlwin.h:1234

Referenced by CMainWindow::UpdateApplicationsList().

◆ SetWatermark()

VOID CApplicationView::SetWatermark ( const CStringW Text)

Definition at line 2095 of file appview.cpp.

2096{
2098}
VOID SetWatermark(const CStringW &Text)
Definition: appview.cpp:1177
char * Text
Definition: combotst.c:136

Referenced by CMainWindow::UpdateApplicationsList().

Member Data Documentation

◆ ApplicationViewType

APPLICATION_VIEW_TYPE CApplicationView::ApplicationViewType = AppViewTypeAvailableApps
private

◆ m_AppsInfo

◆ m_ComboBox

CUiWindow<CComboBox>* CApplicationView::m_ComboBox = NULL
private

◆ m_HSplitter

CUiSplitPanel* CApplicationView::m_HSplitter = NULL
private

◆ m_ListView

◆ m_MainWindow

CMainWindow* CApplicationView::m_MainWindow = NULL
private

◆ m_Panel

CUiPanel* CApplicationView::m_Panel = NULL
private

Definition at line 348 of file appview.h.

Referenced by CreateHSplitter(), CreateToolbar(), OnSize(), and ProcessWindowMessage().

◆ m_SearchBar

CUiWindow<CSearchBar>* CApplicationView::m_SearchBar = NULL
private

◆ m_Toolbar


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