ReactOS 0.4.16-dev-1025-gd3456f5
appview.cpp File Reference
#include "rapps.h"
#include "appview.h"
#include "gui.h"
#include <windowsx.h>
Include dependency graph for appview.cpp:

Go to the source code of this file.

Classes

struct  CAsyncLoadIcon
 

Functions

BOOL DeleteMenuEx (_In_ HMENU hMenu, _In_ UINT uPosition, _In_ UINT uFlags)
 
int ScrnshotDownloadCallback (pASYNCINET AsyncInet, ASYNC_EVENT Event, WPARAM wParam, LPARAM lParam, VOID *Extension)
 
static DWORD CALLBACK AsyncLoadIconProc (LPVOID Param)
 

Variables

HICON g_hDefaultPackageIcon = NULL
 
static int g_DefaultPackageIconILIdx = I_IMAGENONE
 
UINT g_IconSize = 0
 
struct CAsyncLoadIcong_AsyncIconTasks = NULL
 
static UINT g_AsyncIconTaskId = 0
 

Function Documentation

◆ AsyncLoadIconProc()

static DWORD CALLBACK AsyncLoadIconProc ( LPVOID  Param)
static

Definition at line 1060 of file appview.cpp.

1061{
1062 for (CAsyncLoadIcon *task = (CAsyncLoadIcon*)Param, *old; task; old->Free())
1063 {
1064 if (task->TaskId == g_AsyncIconTaskId)
1065 {
1066 HICON hIcon;
1067 HICON *phBigIcon = SettingsInfo.bSmallIcons ? NULL : &hIcon;
1068 HICON *phSmallIcon = phBigIcon ? NULL : &hIcon;
1069 if (!task->Parse)
1071 else if (!ExtractIconExW(task->Location, PathParseIconLocationW(task->Location), phBigIcon, phSmallIcon, 1))
1072 hIcon = NULL;
1073
1074 if (hIcon)
1075 {
1076 SendMessageW(task->hAppsList, WM_RAPPSLIST_ASYNCICON, (WPARAM)hIcon, (LPARAM)task);
1078 }
1079 }
1080 old = task;
1081 task = task->pNext;
1082 }
1083 return 0;
1084}
static UINT g_AsyncIconTaskId
Definition: appview.cpp:1057
UINT g_IconSize
Definition: appview.cpp:18
#define WM_RAPPSLIST_ASYNCICON
Definition: appview.h:42
SETTINGS_INFO SettingsInfo
Definition: winmain.cpp:21
#define NULL
Definition: types.h:112
int WINAPI PathParseIconLocationW(LPWSTR lpszPath)
Definition: path.c:1098
UINT WINAPI ExtractIconExW(LPCWSTR lpszFile, INT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons)
Definition: iconcache.cpp:855
static HICON
Definition: imagelist.c:80
HICON hIcon
Definition: msconfig.c:44
BOOL bSmallIcons
Definition: settings.h:12
LONG_PTR LPARAM
Definition: windef.h:208
UINT_PTR WPARAM
Definition: windef.h:207
#define LR_LOADFROMFILE
Definition: winuser.h:1103
#define IMAGE_ICON
Definition: winuser.h:212
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
Definition: cursoricon.c:2540
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2390

Referenced by CAsyncLoadIcon::StartTasks().

◆ DeleteMenuEx()

BOOL DeleteMenuEx ( _In_ HMENU  hMenu,
_In_ UINT  uPosition,
_In_ UINT  uFlags 
)

Definition at line 23 of file appview.cpp.

27{
28 INT pos;
29 MENUITEMINFOW mii = { sizeof(mii), MIIM_FTYPE, 0 };
30 bool bIsValidItem1, bIsValidItem2;
31 bool bIsSep1, bIsSep2;
32
34 pos = (INT)uPosition;
35 else
36 pos = ::GetMenuPosFromID(hMenu, uPosition);
37 if (pos < 0)
38 return FALSE;
39
40 bIsValidItem1 = ((pos > 0) && ::GetMenuItemInfoW(hMenu, pos - 1, TRUE, &mii));
41 bIsSep1 = bIsValidItem1 && !!(mii.fType & MFT_SEPARATOR);
42
43 bIsValidItem2 = ::GetMenuItemInfoW(hMenu, pos + 1, TRUE, &mii);
44 bIsSep2 = bIsValidItem2 && !!(mii.fType & MFT_SEPARATOR);
45
46 if (bIsSep1 && !bIsSep2 && !bIsValidItem2)
47 pos = pos - 1; // Delete separator only if pos+1 has no item
48 else if (!bIsSep1 && bIsSep2 && !bIsValidItem1)
49 pos = pos + 1; // Delete separator only if pos-1 has no item
50 else if (bIsSep1 && bIsSep2)
51 pos = pos + 1;
52 else
53 pos = -1;
54
55 // Delete one of the separators if necessary
56 if (pos != -1)
58
59 // Finally, delete the menu item itself.
60 return ::DeleteMenu(hMenu, uPosition, uFlags);
61}
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
UINT uFlags
Definition: api.c:59
INT WINAPI GetMenuPosFromID(HMENU hMenu, UINT wID)
Definition: ordinal.c:4514
#define INT
Definition: polytest.cpp:20
int32_t INT
Definition: typedefs.h:58
#define MIIM_FTYPE
Definition: winuser.h:740
BOOL WINAPI DeleteMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
#define MFT_SEPARATOR
Definition: winuser.h:755
#define MF_BYPOSITION
Definition: winuser.h:203
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)

Referenced by CApplicationView::ProcessWindowMessage().

◆ ScrnshotDownloadCallback()

int ScrnshotDownloadCallback ( pASYNCINET  AsyncInet,
ASYNC_EVENT  Event,
WPARAM  wParam,
LPARAM  lParam,
VOID Extension 
)

Definition at line 320 of file appview.cpp.

321{
323 switch (Event)
324 {
325 case ASYNCINET_DATA:
327 WriteFile(DownloadParam->hFile, (LPCVOID)wParam, (DWORD)lParam, &BytesWritten, NULL);
328 break;
330 CloseHandle(DownloadParam->hFile);
332 DownloadParam->hwndNotify, WM_RAPPS_DOWNLOAD_COMPLETE, (WPARAM)ERROR_SUCCESS, (LPARAM)DownloadParam);
333 break;
335 CloseHandle(DownloadParam->hFile);
337 DownloadParam->hwndNotify, WM_RAPPS_DOWNLOAD_COMPLETE, (WPARAM)ERROR_CANCELLED, (LPARAM)DownloadParam);
338 break;
339 case ASYNCINET_ERROR:
340 CloseHandle(DownloadParam->hFile);
341 SendMessage(DownloadParam->hwndNotify, WM_RAPPS_DOWNLOAD_COMPLETE, wParam, (LPARAM)DownloadParam);
342 break;
343 default:
345 break;
346 }
347 return 0;
348}
#define ATLASSERT(x)
Definition: CComVariant.cpp:10
#define WM_RAPPS_DOWNLOAD_COMPLETE
Definition: appview.h:39
@ ASYNCINET_ERROR
Definition: asyncinet.h:15
@ ASYNCINET_COMPLETE
Definition: asyncinet.h:9
@ ASYNCINET_CANCELLED
Definition: asyncinet.h:12
@ ASYNCINET_DATA
Definition: asyncinet.h:7
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define ERROR_SUCCESS
Definition: deptool.c:10
#define CloseHandle
Definition: compat.h:739
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:24
unsigned long DWORD
Definition: ntddk_ex.h:95
_Inout_opt_ PUNICODE_STRING Extension
Definition: fltkernel.h:1092
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesWritten
Definition: wdfiotarget.h:960
CONST void * LPCVOID
Definition: windef.h:191
#define ERROR_CANCELLED
Definition: winerror.h:726
#define SendMessage
Definition: winuser.h:5863

Referenced by CAppScrnshotPreview::DisplayImage().

Variable Documentation

◆ g_AsyncIconTaskId

UINT g_AsyncIconTaskId = 0
static

◆ g_AsyncIconTasks

◆ g_DefaultPackageIconILIdx

int g_DefaultPackageIconILIdx = I_IMAGENONE
static

Definition at line 17 of file appview.cpp.

Referenced by CAppsListView::AddApplication(), and CAppsListView::SetDisplayAppType().

◆ g_hDefaultPackageIcon

◆ g_IconSize

UINT g_IconSize = 0

Definition at line 18 of file appview.cpp.

Referenced by AsyncLoadIconProc(), and CAppsListView::SetDisplayAppType().