[RAPPS] RC of final commit

- Hide checkboxes in "Installed"

svn path=/branches/GSoC_2017/rapps/; revision=75686
This commit is contained in:
Alexander Shaposhnikov 2017-08-27 00:00:45 +00:00
parent 15a86cdf6a
commit 3f0ba7a08e

View file

@ -25,8 +25,7 @@
HWND hListView = NULL; HWND hListView = NULL;
INT INT GetSystemColorDepth()
GetSystemColorDepth()
{ {
DEVMODEW pDevMode; DEVMODEW pDevMode;
INT ColorDepth; INT ColorDepth;
@ -362,14 +361,30 @@ class CAppsListView :
BOOL bHasAllChecked; BOOL bHasAllChecked;
BOOL bAscending; BOOL bAscending;
BOOL bHasCheckboxes;
public: public:
CAppsListView() : CAppsListView() :
bAscending(TRUE), bAscending(TRUE),
bHasAllChecked(FALSE) bHasAllChecked(FALSE),
bHasCheckboxes(FALSE)
{ {
} }
VOID SetCheckboxesVisible(BOOL bIsVisible)
{
if (bIsVisible)
{
SetExtendedListViewStyle(LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);
}
else
{
SetExtendedListViewStyle(LVS_EX_FULLROWSELECT);
}
bHasCheckboxes = bIsVisible;
}
VOID ColumnClick(LPNMLISTVIEW pnmv) VOID ColumnClick(LPNMLISTVIEW pnmv)
{ {
SortContext ctx = {this, pnmv->iSubItem}; SortContext ctx = {this, pnmv->iSubItem};
@ -482,7 +497,7 @@ public:
if (hwnd) if (hwnd)
{ {
SetExtendedListViewStyle(LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT); SetCheckboxesVisible(FALSE);
} }
return hwnd; return hwnd;
@ -494,18 +509,29 @@ public:
} }
VOID SetCheckState(INT item, BOOL fCheck) VOID SetCheckState(INT item, BOOL fCheck)
{
if (bHasCheckboxes)
{ {
SetItemState(item, INDEXTOSTATEIMAGEMASK((fCheck) ? 2 : 1), LVIS_STATEIMAGEMASK); SetItemState(item, INDEXTOSTATEIMAGEMASK((fCheck) ? 2 : 1), LVIS_STATEIMAGEMASK);
} }
}
VOID CheckAll() VOID CheckAll()
{
if (bHasCheckboxes)
{ {
bHasAllChecked = !bHasAllChecked; bHasAllChecked = !bHasAllChecked;
SetCheckState(-1, bHasAllChecked); SetCheckState(-1, bHasAllChecked);
} }
}
ATL::CSimpleArray<CAvailableApplicationInfo*> GetCheckedItems() ATL::CSimpleArray<CAvailableApplicationInfo*> GetCheckedItems()
{ {
if (!bHasCheckboxes)
{
return ATL::CSimpleArray<CAvailableApplicationInfo*>();
}
ATL::CSimpleArray<CAvailableApplicationInfo*> list; ATL::CSimpleArray<CAvailableApplicationInfo*> list;
for (INT i = 0; i >= 0; i = GetNextItem(i, LVNI_ALL)) for (INT i = 0; i >= 0; i = GetNextItem(i, LVNI_ALL))
{ {
@ -1475,21 +1501,27 @@ private:
{ {
ATL::CStringW szBuffer1, szBuffer2; ATL::CStringW szBuffer1, szBuffer2;
HIMAGELIST hImageListView; HIMAGELIST hImageListView;
bUpdating = TRUE; BOOL bWasInInstalled = IS_INSTALLED_ENUM(SelectedEnumType);
bUpdating = TRUE;
m_ListView->SetRedraw(FALSE); m_ListView->SetRedraw(FALSE);
nSelectedApps = 0; nSelectedApps = 0;
if (EnumType < 0) EnumType = SelectedEnumType; if (EnumType < 0)
{
EnumType = SelectedEnumType;
}
if (IS_INSTALLED_ENUM(SelectedEnumType)) //if previous one was INSTALLED purge the list
//TODO: make the Installed category a separate class to avoid doing this
if (bWasInInstalled)
{ {
FreeInstalledAppList(); FreeInstalledAppList();
} }
m_ListView->DeleteAllItems(); m_ListView->DeleteAllItems();
/* Create new ImageList */ // Create new ImageList
hImageListView = ImageList_Create(LISTVIEW_ICON_SIZE, hImageListView = ImageList_Create(LISTVIEW_ICON_SIZE,
LISTVIEW_ICON_SIZE, LISTVIEW_ICON_SIZE,
GetSystemColorDepth() | ILC_MASK, GetSystemColorDepth() | ILC_MASK,
@ -1500,18 +1532,30 @@ private:
ImageList_Destroy(hImageListBuf); ImageList_Destroy(hImageListBuf);
} }
//if previous one was INSTALLED purge the list
if (IS_INSTALLED_ENUM(EnumType)) if (IS_INSTALLED_ENUM(EnumType))
{ {
if (!bWasInInstalled)
{
m_ListView->SetCheckboxesVisible(FALSE);
}
HICON hIcon = (HICON) LoadIconW(hInst, MAKEINTRESOURCEW(IDI_MAIN)); HICON hIcon = (HICON) LoadIconW(hInst, MAKEINTRESOURCEW(IDI_MAIN));
ImageList_AddIcon(hImageListView, hIcon); ImageList_AddIcon(hImageListView, hIcon);
DestroyIcon(hIcon); DestroyIcon(hIcon);
/* Enum installed applications and updates */
// Enum installed applications and updates
EnumInstalledApplications(EnumType, TRUE, s_EnumInstalledAppProc); EnumInstalledApplications(EnumType, TRUE, s_EnumInstalledAppProc);
EnumInstalledApplications(EnumType, FALSE, s_EnumInstalledAppProc); EnumInstalledApplications(EnumType, FALSE, s_EnumInstalledAppProc);
} }
else if (IsAvailableEnum(EnumType)) else if (IsAvailableEnum(EnumType))
{ {
/* Enum available applications */ if (bWasInInstalled)
{
m_ListView->SetCheckboxesVisible(TRUE);
}
// Enum available applications
m_AvailableApps.EnumAvailableApplications(EnumType, s_EnumAvailableAppProc); m_AvailableApps.EnumAvailableApplications(EnumType, s_EnumAvailableAppProc);
} }
@ -1519,7 +1563,7 @@ private:
UpdateStatusBarText(); UpdateStatusBarText();
SetWelcomeText(); SetWelcomeText();
/* Set automatic column width for program names if the list is not empty */ // Set automatic column width for program names if the list is not empty
if (m_ListView->GetItemCount() > 0) if (m_ListView->GetItemCount() > 0)
{ {
ListView_SetColumnWidth(m_ListView->GetWindow(), 0, LVSCW_AUTOSIZE); ListView_SetColumnWidth(m_ListView->GetWindow(), 0, LVSCW_AUTOSIZE);