mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 07:23:13 +00:00
[RAPPS] Added option to display small application icons (#7723)
This commit is contained in:
parent
46d01bc7fd
commit
a236c39ee5
31 changed files with 252 additions and 110 deletions
|
@ -7,7 +7,7 @@
|
|||
*/
|
||||
#include "rapps.h"
|
||||
|
||||
SETTINGS_INFO NewSettingsInfo;
|
||||
SETTINGS_INFO *g_pNewSettingsInfo;
|
||||
|
||||
static int CALLBACK
|
||||
BrowseFolderCallback(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
|
||||
|
@ -23,7 +23,7 @@ BrowseFolderCallback(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
|
|||
return 0;
|
||||
}
|
||||
|
||||
BOOL
|
||||
static BOOL
|
||||
ChooseFolder(HWND hwnd)
|
||||
{
|
||||
BOOL bRet = FALSE;
|
||||
|
@ -65,7 +65,7 @@ ChooseFolder(HWND hwnd)
|
|||
return bRet;
|
||||
}
|
||||
|
||||
BOOL
|
||||
static BOOL
|
||||
IsUrlValid(const WCHAR *Url)
|
||||
{
|
||||
URL_COMPONENTSW UrlComponmentInfo = {0};
|
||||
|
@ -94,18 +94,74 @@ IsUrlValid(const WCHAR *Url)
|
|||
|
||||
namespace
|
||||
{
|
||||
inline BOOL
|
||||
static inline BOOL
|
||||
IsCheckedDlgItem(HWND hDlg, INT nIDDlgItem)
|
||||
{
|
||||
return (SendDlgItemMessageW(hDlg, nIDDlgItem, BM_GETCHECK, 0, 0) == BST_CHECKED) ? TRUE : FALSE;
|
||||
return SendDlgItemMessageW(hDlg, nIDDlgItem, BM_GETCHECK, 0, 0) == BST_CHECKED;
|
||||
}
|
||||
|
||||
VOID
|
||||
static inline void
|
||||
AdjustListViewHeader(HWND hWndList)
|
||||
{
|
||||
ListView_SetColumnWidth(hWndList, 0, LVSCW_AUTOSIZE_USEHEADER);
|
||||
}
|
||||
|
||||
static void
|
||||
HandleGeneralListItems(HWND hWndList, PSETTINGS_INFO Load, PSETTINGS_INFO Save)
|
||||
{
|
||||
PSETTINGS_INFO Info = Load ? Load : Save;
|
||||
const struct {
|
||||
WORD Id;
|
||||
BOOL *Setting;
|
||||
} Map[] = {
|
||||
{ IDS_CFG_SAVE_WINDOW_POS, &Info->bSaveWndPos },
|
||||
{ IDS_CFG_UPDATE_AVLIST, &Info->bUpdateAtStart },
|
||||
{ IDS_CFG_LOG_ENABLED, &Info->bLogEnabled },
|
||||
{ IDS_CFG_SMALL_ICONS, &Info->bSmallIcons },
|
||||
};
|
||||
|
||||
if (Load)
|
||||
{
|
||||
UINT ExStyle = LVS_EX_CHECKBOXES | LVS_EX_LABELTIP;
|
||||
ListView_SetExtendedListViewStyleEx(hWndList, ExStyle, ExStyle);
|
||||
LVCOLUMN lvc;
|
||||
lvc.mask = LVCF_TEXT | LVCF_SUBITEM;
|
||||
lvc.iSubItem = 0;
|
||||
lvc.pszText = const_cast<PWSTR>(L"");
|
||||
ListView_InsertColumn(hWndList, 0, &lvc);
|
||||
|
||||
CStringW Name;
|
||||
for (SIZE_T i = 0; i < _countof(Map); ++i)
|
||||
{
|
||||
LVITEMW Item;
|
||||
Item.mask = LVIF_TEXT | LVIF_PARAM;
|
||||
Item.iItem = 0x7fff;
|
||||
Item.iSubItem = 0;
|
||||
Item.lParam = Map[i].Id;
|
||||
Name.LoadStringW(Map[i].Id);
|
||||
Item.pszText = const_cast<PWSTR>(Name.GetString());
|
||||
Item.iItem = ListView_InsertItem(hWndList, &Item);
|
||||
ListView_SetCheckState(hWndList, Item.iItem, *Map[i].Setting);
|
||||
}
|
||||
ListView_SetItemState(hWndList, 0, -1, LVIS_FOCUSED | LVIS_SELECTED);
|
||||
AdjustListViewHeader(hWndList);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (SIZE_T i = 0; i < _countof(Map); ++i)
|
||||
{
|
||||
LVFINDINFOW FindInfo = { LVFI_PARAM, NULL, Map[i].Id };
|
||||
int Idx = ListView_FindItem(hWndList, -1, &FindInfo);
|
||||
if (Idx >= 0)
|
||||
*Map[i].Setting = ListView_GetCheckState(hWndList, Idx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static VOID
|
||||
InitSettingsControls(HWND hDlg, PSETTINGS_INFO Info)
|
||||
{
|
||||
SendDlgItemMessageW(hDlg, IDC_SAVE_WINDOW_POS, BM_SETCHECK, Info->bSaveWndPos, 0);
|
||||
SendDlgItemMessageW(hDlg, IDC_UPDATE_AVLIST, BM_SETCHECK, Info->bUpdateAtStart, 0);
|
||||
SendDlgItemMessageW(hDlg, IDC_LOG_ENABLED, BM_SETCHECK, Info->bLogEnabled, 0);
|
||||
HandleGeneralListItems(GetDlgItem(hDlg, IDC_GENERALLIST), Info, NULL);
|
||||
SendDlgItemMessageW(hDlg, IDC_DEL_AFTER_INSTALL, BM_SETCHECK, Info->bDelInstaller, 0);
|
||||
|
||||
HWND hCtl = GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT);
|
||||
|
@ -134,16 +190,24 @@ InitSettingsControls(HWND hDlg, PSETTINGS_INFO Info)
|
|||
SetWindowTextW(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), Info->szNoProxyFor);
|
||||
}
|
||||
|
||||
INT_PTR CALLBACK
|
||||
static INT_PTR CALLBACK
|
||||
SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
SETTINGS_INFO &NewSettingsInfo = *g_pNewSettingsInfo;
|
||||
|
||||
switch (Msg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
NewSettingsInfo = SettingsInfo;
|
||||
InitSettingsControls(hDlg, &SettingsInfo);
|
||||
return TRUE;
|
||||
|
||||
case WM_SETTINGCHANGE:
|
||||
case WM_THEMECHANGED:
|
||||
case WM_SYSCOLORCHANGE:
|
||||
SendMessage(GetDlgItem(hDlg, IDC_GENERALLIST), Msg, wParam, lParam);
|
||||
AdjustListViewHeader(GetDlgItem(hDlg, IDC_GENERALLIST));
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
|
@ -152,18 +216,6 @@ SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
|
|||
ChooseFolder(hDlg);
|
||||
break;
|
||||
|
||||
case IDC_SAVE_WINDOW_POS:
|
||||
NewSettingsInfo.bSaveWndPos = IsCheckedDlgItem(hDlg, IDC_SAVE_WINDOW_POS);
|
||||
break;
|
||||
|
||||
case IDC_UPDATE_AVLIST:
|
||||
NewSettingsInfo.bUpdateAtStart = IsCheckedDlgItem(hDlg, IDC_UPDATE_AVLIST);
|
||||
break;
|
||||
|
||||
case IDC_LOG_ENABLED:
|
||||
NewSettingsInfo.bLogEnabled = IsCheckedDlgItem(hDlg, IDC_LOG_ENABLED);
|
||||
break;
|
||||
|
||||
case IDC_DEL_AFTER_INSTALL:
|
||||
NewSettingsInfo.bDelInstaller = IsCheckedDlgItem(hDlg, IDC_DEL_AFTER_INSTALL);
|
||||
break;
|
||||
|
@ -203,6 +255,13 @@ SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
case IDOK:
|
||||
{
|
||||
HandleGeneralListItems(GetDlgItem(hDlg, IDC_GENERALLIST), NULL, &NewSettingsInfo);
|
||||
if (SettingsInfo.bSmallIcons != NewSettingsInfo.bSmallIcons)
|
||||
{
|
||||
SendMessageW(hMainWnd, WM_SETTINGCHANGE, SPI_SETICONMETRICS, 0); // Note: WM_SETTINGCHANGE cannot be posted
|
||||
PostMessageW(hMainWnd, WM_COMMAND, ID_REFRESH, 0);
|
||||
}
|
||||
|
||||
CStringW szDir;
|
||||
CStringW szSource;
|
||||
CStringW szProxy;
|
||||
|
@ -281,8 +340,25 @@ SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
|
|||
EndDialog(hDlg, LOWORD(wParam));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
NMITEMACTIVATE &nmia = *(NMITEMACTIVATE*)lParam;
|
||||
if (wParam == IDC_GENERALLIST && nmia.hdr.code == NM_CLICK)
|
||||
{
|
||||
LVHITTESTINFO lvhti;
|
||||
lvhti.pt = nmia.ptAction;
|
||||
if (nmia.iItem != -1 && ListView_HitTest(nmia.hdr.hwndFrom, &lvhti) != -1)
|
||||
{
|
||||
if (lvhti.flags & (LVHT_ONITEMICON | LVHT_ONITEMLABEL))
|
||||
ListView_SetCheckState(nmia.hdr.hwndFrom, nmia.iItem,
|
||||
!ListView_GetCheckState(nmia.hdr.hwndFrom, nmia.iItem));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
|
@ -292,5 +368,8 @@ SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
|
|||
VOID
|
||||
CreateSettingsDlg(HWND hwnd)
|
||||
{
|
||||
SETTINGS_INFO NewSettingsInfo = SettingsInfo;
|
||||
g_pNewSettingsInfo = &NewSettingsInfo;
|
||||
|
||||
DialogBoxW(hInst, MAKEINTRESOURCEW(IDD_SETTINGS_DIALOG), hwnd, SettingsDlgProc);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue