https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a236c39ee547e7690dfd2f856b42986f50891f1a

commit a236c39ee547e7690dfd2f856b42986f50891f1a
Author:     Whindmar Saksit <whinds...@proton.me>
AuthorDate: Sun Feb 23 19:27:02 2025 +0100
Commit:     GitHub <nore...@github.com>
CommitDate: Sun Feb 23 19:27:02 2025 +0100

    [RAPPS] Added option to display small application icons (#7723)
---
 base/applications/rapps/appview.cpp        |  14 ++--
 base/applications/rapps/include/resource.h |  11 ++-
 base/applications/rapps/include/settings.h |   1 +
 base/applications/rapps/lang/bg-BG.rc      |   8 +-
 base/applications/rapps/lang/cs-CZ.rc      |   8 +-
 base/applications/rapps/lang/de-DE.rc      |   8 +-
 base/applications/rapps/lang/en-US.rc      |   8 +-
 base/applications/rapps/lang/es-ES.rc      |   8 +-
 base/applications/rapps/lang/et-EE.rc      |   8 +-
 base/applications/rapps/lang/fr-FR.rc      |   8 +-
 base/applications/rapps/lang/he-IL.rc      |   8 +-
 base/applications/rapps/lang/hu-HU.rc      |   8 +-
 base/applications/rapps/lang/id-ID.rc      |   8 +-
 base/applications/rapps/lang/it-IT.rc      |   8 +-
 base/applications/rapps/lang/ja-JP.rc      |   8 +-
 base/applications/rapps/lang/no-NO.rc      |   8 +-
 base/applications/rapps/lang/pl-PL.rc      |   8 +-
 base/applications/rapps/lang/pt-BR.rc      |   8 +-
 base/applications/rapps/lang/pt-PT.rc      |   8 +-
 base/applications/rapps/lang/ro-RO.rc      |   8 +-
 base/applications/rapps/lang/ru-RU.rc      |   8 +-
 base/applications/rapps/lang/sk-SK.rc      |   8 +-
 base/applications/rapps/lang/sq-AL.rc      |   8 +-
 base/applications/rapps/lang/sv-SE.rc      |   8 +-
 base/applications/rapps/lang/tr-TR.rc      |   8 +-
 base/applications/rapps/lang/uk-UA.rc      |   8 +-
 base/applications/rapps/lang/zh-CN.rc      |   8 +-
 base/applications/rapps/lang/zh-HK.rc      |   8 +-
 base/applications/rapps/lang/zh-TW.rc      |   8 +-
 base/applications/rapps/settings.cpp       |   1 +
 base/applications/rapps/settingsdlg.cpp    | 127 +++++++++++++++++++++++------
 31 files changed, 252 insertions(+), 110 deletions(-)

diff --git a/base/applications/rapps/appview.cpp 
b/base/applications/rapps/appview.cpp
index 248050ebb92..d8e40ab77f7 100644
--- a/base/applications/rapps/appview.cpp
+++ b/base/applications/rapps/appview.cpp
@@ -15,6 +15,7 @@ using namespace Gdiplus;
 
 HICON g_hDefaultPackageIcon = NULL;
 static int g_DefaultPackageIconILIdx = I_IMAGENONE;
+UINT g_IconSize = 0;
 
 // **** Menu helpers ****
 
@@ -1063,9 +1064,11 @@ AsyncLoadIconProc(LPVOID Param)
         if (task->TaskId == g_AsyncIconTaskId)
         {
             HICON hIcon;
+            HICON *phBigIcon = SettingsInfo.bSmallIcons ? NULL : &hIcon;
+            HICON *phSmallIcon = phBigIcon ? NULL : &hIcon;
             if (!task->Parse)
-                hIcon = (HICON)LoadImageW(NULL, task->Location, IMAGE_ICON, 0, 
0, LR_LOADFROMFILE | LR_DEFAULTSIZE);
-            else if (!ExtractIconExW(task->Location, 
PathParseIconLocationW(task->Location), &hIcon, NULL, 1))
+                hIcon = (HICON)LoadImageW(NULL, task->Location, IMAGE_ICON, 
g_IconSize, g_IconSize, LR_LOADFROMFILE);
+            else if (!ExtractIconExW(task->Location, 
PathParseIconLocationW(task->Location), phBigIcon, phSmallIcon, 1))
                 hIcon = NULL;
 
             if (hIcon)
@@ -1392,13 +1395,14 @@ CAppsListView::SetDisplayAppType(APPLICATION_VIEW_TYPE 
AppType)
     if (!g_hDefaultPackageIcon)
     {
         ImageList_Destroy(m_hImageListView);
-        UINT IconSize = GetSystemMetrics(SM_CXICON);
+        g_IconSize = GetSystemMetrics(SettingsInfo.bSmallIcons ? SM_CXSMICON : 
SM_CXICON);
+        g_IconSize = max(g_IconSize, 8);
         UINT ilc = GetSystemColorDepth() | ILC_MASK;
-        m_hImageListView = ImageList_Create(IconSize, IconSize, ilc, 0, 1);
+        m_hImageListView = ImageList_Create(g_IconSize, g_IconSize, ilc, 0, 1);
         SetImageList(m_hImageListView, LVSIL_SMALL);
         SetImageList(m_hImageListView, LVSIL_NORMAL);
         g_hDefaultPackageIcon = (HICON)LoadImageW(hInst, 
MAKEINTRESOURCEW(IDI_MAIN),
-                                                  IMAGE_ICON, IconSize, 
IconSize, LR_SHARED);
+                                                  IMAGE_ICON, g_IconSize, 
g_IconSize, LR_SHARED);
     }
     ImageList_RemoveAll(m_hImageListView);
 
diff --git a/base/applications/rapps/include/resource.h 
b/base/applications/rapps/include/resource.h
index 1e0f1de14a3..2d832027eb9 100644
--- a/base/applications/rapps/include/resource.h
+++ b/base/applications/rapps/include/resource.h
@@ -1,4 +1,5 @@
 #pragma once
+#define LVCHECKSTYLES LVS_REPORT | LVS_NOCOLUMNHEADER | LVS_SINGLESEL | 
LVS_SORTASCENDING
 
 /* Icons */
 #define IDI_MAIN                 10
@@ -40,11 +41,11 @@
 #define IDC_STATUSBAR            1000
 #define IDC_DOWNLOAD_PROGRESS    1001
 #define IDC_DOWNLOAD_STATUS      1002
-#define IDC_SAVE_WINDOW_POS      1003
-#define IDC_UPDATE_AVLIST        1004
+#define IDC_GENERALLIST          1003
+
 #define IDC_DOWNLOAD_DIR_EDIT    1005
 #define IDC_DEL_AFTER_INSTALL    1006
-#define IDC_LOG_ENABLED          1007
+
 #define IDC_CHOOSE               1008
 #define IDC_DEFAULT_SETTINGS     1009
 #define IDC_INSTALL_TEXT         1010
@@ -127,6 +128,10 @@
 #define IDS_APP_DISPLAY_LIST     136
 #define IDS_APP_DISPLAY_TILE     137
 #define IDS_NO_SEARCH_RESULTS    138
+#define IDS_CFG_SAVE_WINDOW_POS  139
+#define IDS_CFG_UPDATE_AVLIST    140
+#define IDS_CFG_LOG_ENABLED      141
+#define IDS_CFG_SMALL_ICONS      142
 
 /* Tooltips */
 #define IDS_TOOLTIP_INSTALL      200
diff --git a/base/applications/rapps/include/settings.h 
b/base/applications/rapps/include/settings.h
index 29f48985e71..51d01a2d27d 100644
--- a/base/applications/rapps/include/settings.h
+++ b/base/applications/rapps/include/settings.h
@@ -9,6 +9,7 @@ struct SETTINGS_INFO
     BOOL bLogEnabled;
     WCHAR szDownloadDir[MAX_PATH];
     BOOL bDelInstaller;
+    BOOL bSmallIcons;
     /* Window Pos */
     BOOL Maximized;
     INT Left;
diff --git a/base/applications/rapps/lang/bg-BG.rc 
b/base/applications/rapps/lang/bg-BG.rc
index 6eb7997ec11..5d8f27e4dba 100644
--- a/base/applications/rapps/lang/bg-BG.rc
+++ b/base/applications/rapps/lang/bg-BG.rc
@@ -49,9 +49,7 @@ CAPTION "Настройки"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Общи", -1, 4, 2, 244, 61
-    AUTOCHECKBOX "&Съхраняване разположението на прозореца", 
IDC_SAVE_WINDOW_POS, 15, 12, 223, 12
-    AUTOCHECKBOX "Об&новяване на списъка с достъпните приложения при пускане", 
IDC_UPDATE_AVLIST, 15, 29, 227, 12
-    AUTOCHECKBOX "&Вписване на слаганията и маханията на приложения", 
IDC_LOG_ENABLED, 15, 46, 223, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Сваляне", -1, 4, 65, 244, 51
     LTEXT "Папка за свалените файлове", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -212,6 +210,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Съхраняване разположението на прозореца"
+    IDS_CFG_UPDATE_AVLIST "Обновяване на списъка с достъпните приложения при 
пускане"
+    IDS_CFG_LOG_ENABLED "Вписване на слаганията и маханията на приложения"
+    IDS_CFG_SMALL_ICONS "Малки значета"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/cs-CZ.rc 
b/base/applications/rapps/lang/cs-CZ.rc
index 09f608b43c2..8d336327cfe 100644
--- a/base/applications/rapps/lang/cs-CZ.rc
+++ b/base/applications/rapps/lang/cs-CZ.rc
@@ -50,9 +50,7 @@ CAPTION "Nastavení"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Obecné", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Uložit pozici okna", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "&Aktualizovat seznam dostupných programů při startu 
programu", IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "Ukládat &záznam instalací a odstranění programů", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Stahování", -1, 4, 65, 240, 51
     LTEXT "Složka se staženými soubory:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -213,6 +211,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "Seznam"
     IDS_APP_DISPLAY_TILE "Dlaždice"
     IDS_NO_SEARCH_RESULTS "Žádné výsledky"
+    IDS_CFG_SAVE_WINDOW_POS "Uložit pozici okna"
+    IDS_CFG_UPDATE_AVLIST "Aktualizovat seznam dostupných programů při startu 
programu"
+    IDS_CFG_LOG_ENABLED "Ukládat záznam instalací a odstranění programů"
+    IDS_CFG_SMALL_ICONS "Malé ikony"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/de-DE.rc 
b/base/applications/rapps/lang/de-DE.rc
index 3196296a41f..53d4a111147 100644
--- a/base/applications/rapps/lang/de-DE.rc
+++ b/base/applications/rapps/lang/de-DE.rc
@@ -52,9 +52,7 @@ CAPTION "Einstellungen"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Allgemein", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "Fensterposition &speichern", IDC_SAVE_WINDOW_POS, 15, 12, 
219, 12
-    AUTOCHECKBOX "Beim Start Liste der verfügbaren Programme &aktualisieren", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "Hinzufügen und Entfernen von Programmen mit&loggen", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Download", -1, 4, 65, 240, 51
     LTEXT "Ordner für Downloads:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -215,6 +213,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "Liste"
     IDS_APP_DISPLAY_TILE "Kacheln"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Fensterposition speichern"
+    IDS_CFG_UPDATE_AVLIST "Beim Start Liste der verfügbaren Programme 
aktualisieren"
+    IDS_CFG_LOG_ENABLED "Hinzufügen und Entfernen von Programmen mitloggen"
+    IDS_CFG_SMALL_ICONS "Kleine symbole"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/en-US.rc 
b/base/applications/rapps/lang/en-US.rc
index 558d5132645..499aeb5142d 100644
--- a/base/applications/rapps/lang/en-US.rc
+++ b/base/applications/rapps/lang/en-US.rc
@@ -52,9 +52,7 @@ CAPTION "Settings"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "General", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Save window position", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "&Update the list of accessible programs at start", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Log of installation and removal of programs", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Downloading", -1, 4, 65, 240, 51
     LTEXT "Downloads folder:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -215,6 +213,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Save window position"
+    IDS_CFG_UPDATE_AVLIST "Update the list of accessible programs at start"
+    IDS_CFG_LOG_ENABLED "Log of installation and removal of programs"
+    IDS_CFG_SMALL_ICONS "Small icons"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/es-ES.rc 
b/base/applications/rapps/lang/es-ES.rc
index 23ec16eb993..67f2a930802 100644
--- a/base/applications/rapps/lang/es-ES.rc
+++ b/base/applications/rapps/lang/es-ES.rc
@@ -51,9 +51,7 @@ CAPTION "Ajustes"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "General", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Guardar posición de la ventana", IDC_SAVE_WINDOW_POS, 15, 
12, 219, 12
-    AUTOCHECKBOX "&Actualizar la lista de programas accesibles al comenzar", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Registro de programas instalados y desinstalados", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Descargas", -1, 4, 65, 240, 51
     LTEXT "Carpeta de descargas:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -214,6 +212,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "Lista"
     IDS_APP_DISPLAY_TILE "Título"
     IDS_NO_SEARCH_RESULTS "Búsqueda sin resultados."
+    IDS_CFG_SAVE_WINDOW_POS "Guardar posición de la ventana"
+    IDS_CFG_UPDATE_AVLIST "Actualizar la lista de programas accesibles al 
comenzar"
+    IDS_CFG_LOG_ENABLED "Registro de programas instalados y desinstalados"
+    IDS_CFG_SMALL_ICONS "Iconos pequeños"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/et-EE.rc 
b/base/applications/rapps/lang/et-EE.rc
index 83de8d68f0d..9ab9214ea41 100644
--- a/base/applications/rapps/lang/et-EE.rc
+++ b/base/applications/rapps/lang/et-EE.rc
@@ -49,9 +49,7 @@ CAPTION "Sätted"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Üldine", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Salvesta akna asukoht", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "&Värskenda kättesaadavate programmide nimekirja käivitusel", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "Installeerimiste ja eemalduste &logi", IDC_LOG_ENABLED, 15, 
46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Allalaadimine", -1, 4, 65, 240, 51
     LTEXT "Allalaadimiste kaust:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -212,6 +210,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Salvesta akna asukoht"
+    IDS_CFG_UPDATE_AVLIST "Värskenda kättesaadavate programmide nimekirja 
käivitusel"
+    IDS_CFG_LOG_ENABLED "Installeerimiste ja eemalduste logi"
+    IDS_CFG_SMALL_ICONS "Väikesed ikoonid"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/fr-FR.rc 
b/base/applications/rapps/lang/fr-FR.rc
index 2bc101f0553..ddad6d4c90a 100644
--- a/base/applications/rapps/lang/fr-FR.rc
+++ b/base/applications/rapps/lang/fr-FR.rc
@@ -52,9 +52,7 @@ CAPTION "Configuration"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Général", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Enregistrer la position de la fenêtre", 
IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "&Mettre à jour la liste des programmes accessibles au 
démarrage", IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Journal de l'installation et de la suppression des 
programmes", IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Téléchargement", -1, 4, 65, 240, 51
     LTEXT "Dossier des téléchargements :", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -215,6 +213,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "Liste"
     IDS_APP_DISPLAY_TILE "Tuile"
     IDS_NO_SEARCH_RESULTS "Aucun résultat"
+    IDS_CFG_SAVE_WINDOW_POS "Enregistrer la position de la fenêtre"
+    IDS_CFG_UPDATE_AVLIST "Mettre à jour la liste des programmes accessibles 
au démarrage"
+    IDS_CFG_LOG_ENABLED "Journal de l'installation et de la suppression des 
programmes"
+    IDS_CFG_SMALL_ICONS "Petites icônes"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/he-IL.rc 
b/base/applications/rapps/lang/he-IL.rc
index 369c7b1730d..90837d9fc01 100644
--- a/base/applications/rapps/lang/he-IL.rc
+++ b/base/applications/rapps/lang/he-IL.rc
@@ -52,9 +52,7 @@ CAPTION "הגדרות"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "כללי", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "שמור מיקום חלון", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "עדכן את רשימת התוכניות האפשרויות בהפעלה", IDC_UPDATE_AVLIST, 
15, 29, 222, 12
-    AUTOCHECKBOX "תעד התקנה והסרה של תוכניות", IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "הורדה", -1, 4, 65, 240, 51
     LTEXT "תיקיית הורדות:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -217,6 +215,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "שמור מיקום חלון"
+    IDS_CFG_UPDATE_AVLIST "עדכן את רשימת התוכניות האפשרויות בהפעלה"
+    IDS_CFG_LOG_ENABLED "תעד התקנה והסרה של תוכניות"
+    IDS_CFG_SMALL_ICONS "סמלים קטנים"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/hu-HU.rc 
b/base/applications/rapps/lang/hu-HU.rc
index 2691447be1b..21f7b9b71ee 100644
--- a/base/applications/rapps/lang/hu-HU.rc
+++ b/base/applications/rapps/lang/hu-HU.rc
@@ -49,9 +49,7 @@ CAPTION "Beállítások"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Általános", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Ablak helyének megjegyzése", IDC_SAVE_WINDOW_POS, 15, 12, 
219, 12
-    AUTOCHECKBOX "Elérhető programok listájának &frissítése indításkor", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "Programok telepítésének és eltávolításának &naplózása", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Letöltés", -1, 4, 65, 240, 51
     LTEXT "Letöltés mappája:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -212,6 +210,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "Lista"
     IDS_APP_DISPLAY_TILE "Csempe"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Ablak helyének megjegyzése"
+    IDS_CFG_UPDATE_AVLIST "Elérhető programok listájának frissítése indításkor"
+    IDS_CFG_LOG_ENABLED "Programok telepítésének és eltávolításának naplózása"
+    IDS_CFG_SMALL_ICONS "Kis képek"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/id-ID.rc 
b/base/applications/rapps/lang/id-ID.rc
index ea276805166..1dde61b4136 100644
--- a/base/applications/rapps/lang/id-ID.rc
+++ b/base/applications/rapps/lang/id-ID.rc
@@ -49,9 +49,7 @@ CAPTION "Pengaturan"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Umum", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Simpan posisi jendela", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "&Perbarui daftar program yang bisa diakses saat mulai", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Log pemasangan dan pembongkaran program", IDC_LOG_ENABLED, 
15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Mengunduh", -1, 4, 65, 240, 51
     LTEXT "Folder unduhan:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -212,6 +210,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Simpan posisi jendela"
+    IDS_CFG_UPDATE_AVLIST "Perbarui daftar program yang bisa diakses saat 
mulai"
+    IDS_CFG_LOG_ENABLED "Log pemasangan dan pembongkaran program"
+    IDS_CFG_SMALL_ICONS "Ikon Kecil"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/it-IT.rc 
b/base/applications/rapps/lang/it-IT.rc
index 2effb985435..1075574ba4c 100644
--- a/base/applications/rapps/lang/it-IT.rc
+++ b/base/applications/rapps/lang/it-IT.rc
@@ -51,9 +51,7 @@ CAPTION "Impostazioni"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Generale", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Salva la posizione della finestra", IDC_SAVE_WINDOW_POS, 
15, 12, 219, 12
-    AUTOCHECKBOX "&Aggiorna la lista dei programmi accessibili", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Registra la installazione o disinstallazione dei 
programmi", IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Scaricamenti", -1, 4, 65, 240, 51
     LTEXT "Cartella:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -214,6 +212,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Salva la posizione della finestra"
+    IDS_CFG_UPDATE_AVLIST "Aggiorna la lista dei programmi accessibili"
+    IDS_CFG_LOG_ENABLED "Registra la installazione o disinstallazione dei 
programmi"
+    IDS_CFG_SMALL_ICONS "Icone Piccole"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/ja-JP.rc 
b/base/applications/rapps/lang/ja-JP.rc
index da8c309d313..b62872f52ae 100644
--- a/base/applications/rapps/lang/ja-JP.rc
+++ b/base/applications/rapps/lang/ja-JP.rc
@@ -51,9 +51,7 @@ CAPTION "設定"
 FONT 9, "MS UI Gothic"
 BEGIN
     GROUPBOX "全般", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "ウィンドウの場所を保存する(&S)", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "起動時に利用できるプログラムのリストを更新する(&U)", IDC_UPDATE_AVLIST, 15, 29, 
222, 12
-    AUTOCHECKBOX "プログラムのインストールと削除を記録する(&L)", IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "ダウンロード処理", -1, 4, 65, 240, 51
     LTEXT "ダウンロードするフォルダ:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -214,6 +212,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "リスト"
     IDS_APP_DISPLAY_TILE "タイル"
     IDS_NO_SEARCH_RESULTS "検索結果はありません"
+    IDS_CFG_SAVE_WINDOW_POS "ウィンドウの場所を保存する"
+    IDS_CFG_UPDATE_AVLIST "起動時に利用できるプログラムのリストを更新する"
+    IDS_CFG_LOG_ENABLED "プログラムのインストールと削除を記録する"
+    IDS_CFG_SMALL_ICONS "小さいアイコン"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/no-NO.rc 
b/base/applications/rapps/lang/no-NO.rc
index 239190f4e3f..b271227c78a 100644
--- a/base/applications/rapps/lang/no-NO.rc
+++ b/base/applications/rapps/lang/no-NO.rc
@@ -49,9 +49,7 @@ CAPTION "Settings"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "General", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Save window position", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "&Update the list of accessible programs at start", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Log of installation and removal of programs", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Downloading", -1, 4, 65, 240, 51
     LTEXT "Folder for downloadings:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -212,6 +210,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Save window position"
+    IDS_CFG_UPDATE_AVLIST "Update the list of accessible programs at start"
+    IDS_CFG_LOG_ENABLED "Log of installation and removal of programs"
+    IDS_CFG_SMALL_ICONS "Små ikoner"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/pl-PL.rc 
b/base/applications/rapps/lang/pl-PL.rc
index 034773c2669..1aa2fcc6135 100644
--- a/base/applications/rapps/lang/pl-PL.rc
+++ b/base/applications/rapps/lang/pl-PL.rc
@@ -51,9 +51,7 @@ CAPTION "Ustawienia"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Ogólne", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Zapisz pozycję okna", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "&Aktualizuj listę dostępnych programów przy każdym 
uruchomieniu", IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "Zapisuj &dziennik instalacji i usuwania programów", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Pobieranie", -1, 4, 65, 240, 51
     LTEXT "Katalog dla pobranych plików:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -214,6 +212,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "Lista"
     IDS_APP_DISPLAY_TILE "Kafelki"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Zapisz pozycję okna"
+    IDS_CFG_UPDATE_AVLIST "Aktualizuj listę dostępnych programów przy każdym 
uruchomieniu"
+    IDS_CFG_LOG_ENABLED "Zapisuj dziennik instalacji i usuwania programów"
+    IDS_CFG_SMALL_ICONS "Małe ikony"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/pt-BR.rc 
b/base/applications/rapps/lang/pt-BR.rc
index f939d288965..807615a63ca 100644
--- a/base/applications/rapps/lang/pt-BR.rc
+++ b/base/applications/rapps/lang/pt-BR.rc
@@ -49,9 +49,7 @@ CAPTION "Configurações"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Geral", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Salvar posição da janela", IDC_SAVE_WINDOW_POS, 15, 12, 
219, 12
-    AUTOCHECKBOX "&Atualizar esta lista de programas ao iniciar", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Registro de instalação e remoção de programas", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Baixando", -1, 4, 65, 240, 51
     LTEXT "Pasta de download:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -212,6 +210,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Salvar posição da janela"
+    IDS_CFG_UPDATE_AVLIST "Atualizar esta lista de programas ao iniciar"
+    IDS_CFG_LOG_ENABLED "Registro de instalação e remoção de programas"
+    IDS_CFG_SMALL_ICONS "Ícones pequenos"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/pt-PT.rc 
b/base/applications/rapps/lang/pt-PT.rc
index c24f98afb4a..dfdd2850137 100644
--- a/base/applications/rapps/lang/pt-PT.rc
+++ b/base/applications/rapps/lang/pt-PT.rc
@@ -49,9 +49,7 @@ CAPTION "Configurações"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Geral", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Guardar posição da janela", IDC_SAVE_WINDOW_POS, 15, 12, 
219, 12
-    AUTOCHECKBOX "&Actualizar a lista de programas ao iniciar", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Registar a instalação e remoção de programas", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "A carregar", -1, 4, 65, 240, 51
     LTEXT "Pasta de download:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -212,6 +210,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "Lista"
     IDS_APP_DISPLAY_TILE "Cabeçalho"
     IDS_NO_SEARCH_RESULTS "Busca sem resultados"
+    IDS_CFG_SAVE_WINDOW_POS "Guardar posição da janela"
+    IDS_CFG_UPDATE_AVLIST "Actualizar a lista de programas ao iniciar"
+    IDS_CFG_LOG_ENABLED "Registar a instalação e remoção de programas"
+    IDS_CFG_SMALL_ICONS "Ícones pequenos"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/ro-RO.rc 
b/base/applications/rapps/lang/ro-RO.rc
index f4092694c58..ba9421f37fe 100644
--- a/base/applications/rapps/lang/ro-RO.rc
+++ b/base/applications/rapps/lang/ro-RO.rc
@@ -51,9 +51,7 @@ CAPTION "Setări"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "General", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Salvare a poziției ferestrei", IDC_SAVE_WINDOW_POS, 15, 12, 
219, 12
-    AUTOCHECKBOX "&Actualizare la pornire a listei programelor disponibile", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "Menținere a j&urnalului de instalare/dezinstalare a 
programelor", IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Descărcări", -1, 4, 65, 240, 51
     LTEXT "Folderul pentru descărcări:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -214,6 +212,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "Listă"
     IDS_APP_DISPLAY_TILE "Dale"
     IDS_NO_SEARCH_RESULTS "Niciun rezultat al căutării"
+    IDS_CFG_SAVE_WINDOW_POS "Salvare a poziției ferestrei"
+    IDS_CFG_UPDATE_AVLIST "Actualizare la pornire a listei programelor 
disponibile"
+    IDS_CFG_LOG_ENABLED "Menținere a jurnalului de instalare/dezinstalare a 
programelor"
+    IDS_CFG_SMALL_ICONS "Pictograme mici"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/ru-RU.rc 
b/base/applications/rapps/lang/ru-RU.rc
index 5e9f71915be..6b119334886 100644
--- a/base/applications/rapps/lang/ru-RU.rc
+++ b/base/applications/rapps/lang/ru-RU.rc
@@ -54,9 +54,7 @@ CAPTION "Параметры"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Общие", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Сохранять положение окна", IDC_SAVE_WINDOW_POS, 15, 12, 
219, 12
-    AUTOCHECKBOX "&Обновлять список доступных программ при запуске", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Вести лог установки/удаления программ", IDC_LOG_ENABLED, 
15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Загрузка", -1, 4, 65, 240, 51
     LTEXT "Папка для загрузок:", -1, 16, 75, 77, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -217,6 +215,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "Список"
     IDS_APP_DISPLAY_TILE "Плитка"
     IDS_NO_SEARCH_RESULTS "Ничего не найдено"
+    IDS_CFG_SAVE_WINDOW_POS "Сохранять положение окна"
+    IDS_CFG_UPDATE_AVLIST "Обновлять список доступных программ при запуске"
+    IDS_CFG_LOG_ENABLED "Вести лог установки/удаления программ"
+    IDS_CFG_SMALL_ICONS "Мелкие значки"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/sk-SK.rc 
b/base/applications/rapps/lang/sk-SK.rc
index f8202c7333c..44932a0b4e3 100644
--- a/base/applications/rapps/lang/sk-SK.rc
+++ b/base/applications/rapps/lang/sk-SK.rc
@@ -50,9 +50,7 @@ CAPTION "Nastavenia"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Všeobecné", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Uložiť pozíciu okna", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "&Aktualizovať zoznam dostupných programov pri spustení", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Záznam o inštalovaní a odstránení programov", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Sťahovanie", -1, 4, 65, 240, 51
     LTEXT "Priečinok pre sťahovanie:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -213,6 +211,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "Zoznam"
     IDS_APP_DISPLAY_TILE "Dlaždice"
     IDS_NO_SEARCH_RESULTS "Žiadne výsledky"
+    IDS_CFG_SAVE_WINDOW_POS "Uložiť pozíciu okna"
+    IDS_CFG_UPDATE_AVLIST "Aktualizovať zoznam dostupných programov pri 
spustení"
+    IDS_CFG_LOG_ENABLED "Záznam o inštalovaní a odstránení programov"
+    IDS_CFG_SMALL_ICONS "Malé ikony"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/sq-AL.rc 
b/base/applications/rapps/lang/sq-AL.rc
index a9f60543bff..77feaa24eda 100644
--- a/base/applications/rapps/lang/sq-AL.rc
+++ b/base/applications/rapps/lang/sq-AL.rc
@@ -49,9 +49,7 @@ CAPTION "Konfigurime"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Pergjithshem", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "Ruaj pozicionin e dritare", IDC_SAVE_WINDOW_POS, 15, 12, 
219, 12
-    AUTOCHECKBOX "&Updejto listen e programeve te aksesuar ne start", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Log instalalimin dhe heqjen e programeve", IDC_LOG_ENABLED, 
15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Shkarko", -1, 4, 65, 240, 51
     LTEXT "Dosja e shkarkimit:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -212,6 +210,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Ruaj pozicionin e dritare"
+    IDS_CFG_UPDATE_AVLIST "Updejto listen e programeve te aksesuar ne start"
+    IDS_CFG_LOG_ENABLED "Log instalalimin dhe heqjen e programeve"
+    IDS_CFG_SMALL_ICONS "Ikonat e vogla"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/sv-SE.rc 
b/base/applications/rapps/lang/sv-SE.rc
index a9cb657a4e0..c14b19adb51 100644
--- a/base/applications/rapps/lang/sv-SE.rc
+++ b/base/applications/rapps/lang/sv-SE.rc
@@ -49,9 +49,7 @@ CAPTION "Inställningar"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Allmänna", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Spara fönsterposition", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "&Uppdatera listan med tillgängliga program vid start", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Logga ur installation och borttagning program", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Nerladding", -1, 4, 65, 240, 51
     LTEXT "Mapp för nerladdningar:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -212,6 +210,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Spara fönsterposition"
+    IDS_CFG_UPDATE_AVLIST "Uppdatera listan med tillgängliga program vid start"
+    IDS_CFG_LOG_ENABLED "Logga ur installation och borttagning program"
+    IDS_CFG_SMALL_ICONS "Små ikoner"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/tr-TR.rc 
b/base/applications/rapps/lang/tr-TR.rc
index 74a2fa7c531..c33ab128536 100644
--- a/base/applications/rapps/lang/tr-TR.rc
+++ b/base/applications/rapps/lang/tr-TR.rc
@@ -51,9 +51,7 @@ CAPTION "Ayarlar"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Genel", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Pencere Konumunu Kaydet", IDC_SAVE_WINDOW_POS, 15, 12, 219, 
12
-    AUTOCHECKBOX "&Başlangıçta Erişilebilir Programların Listesini Yenile", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "P&rogramların Kurulma ve Kaldırma Günlüğünü Sakla", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "İndirme", -1, 4, 65, 240, 51
     LTEXT "İndirme Dizini:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -214,6 +212,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "Liste"
     IDS_APP_DISPLAY_TILE "Karo"
     IDS_NO_SEARCH_RESULTS "Arama sonucu yok"
+    IDS_CFG_SAVE_WINDOW_POS "Pencere Konumunu Kaydet"
+    IDS_CFG_UPDATE_AVLIST "Başlangıçta Erişilebilir Programların Listesini 
Yenile"
+    IDS_CFG_LOG_ENABLED "Programların Kurulma ve Kaldırma Günlüğünü Sakla"
+    IDS_CFG_SMALL_ICONS "Küçük simgeler"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/uk-UA.rc 
b/base/applications/rapps/lang/uk-UA.rc
index f3c6fd904f3..35cb17f24f2 100644
--- a/base/applications/rapps/lang/uk-UA.rc
+++ b/base/applications/rapps/lang/uk-UA.rc
@@ -52,9 +52,7 @@ CAPTION "Налаштування"
 FONT 8, "MS Shell Dlg"
 BEGIN
     GROUPBOX "Загальні", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "&Зберігати положення вікна", IDC_SAVE_WINDOW_POS, 15, 12, 
219, 12
-    AUTOCHECKBOX "&Оновлювати список наявних програм при запуску", 
IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "&Вести звіт встановлення/видалення програм", 
IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "Завантаження", -1, 4, 65, 240, 51
     LTEXT "Тека для завантажень:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -215,6 +213,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
     IDS_NO_SEARCH_RESULTS "No search results"
+    IDS_CFG_SAVE_WINDOW_POS "Зберігати положення вікна"
+    IDS_CFG_UPDATE_AVLIST "Оновлювати список наявних програм при запуску"
+    IDS_CFG_LOG_ENABLED "Вести звіт встановлення/видалення програм"
+    IDS_CFG_SMALL_ICONS "Дрібні значки"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/zh-CN.rc 
b/base/applications/rapps/lang/zh-CN.rc
index 9ef28009d91..7eed7260cbf 100644
--- a/base/applications/rapps/lang/zh-CN.rc
+++ b/base/applications/rapps/lang/zh-CN.rc
@@ -53,9 +53,7 @@ CAPTION "设置"
 FONT 9, "宋体"
 BEGIN
     GROUPBOX "常规", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "保存窗口位置(&S)", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "启动时更新可获得的程序列表(&U)", IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "将程序的安装和卸载记录到日志(&L)", IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "下载设置", -1, 4, 65, 240, 51
     LTEXT "下载文件夹:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -216,6 +214,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "列表"
     IDS_APP_DISPLAY_TILE "卡片"
     IDS_NO_SEARCH_RESULTS "无搜索结果"
+    IDS_CFG_SAVE_WINDOW_POS "保存窗口位置"
+    IDS_CFG_UPDATE_AVLIST "启动时更新可获得的程序列表"
+    IDS_CFG_LOG_ENABLED "将程序的安装和卸载记录到日志"
+    IDS_CFG_SMALL_ICONS "小图标"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/zh-HK.rc 
b/base/applications/rapps/lang/zh-HK.rc
index 6d3492616f6..2340b0963c6 100644
--- a/base/applications/rapps/lang/zh-HK.rc
+++ b/base/applications/rapps/lang/zh-HK.rc
@@ -50,9 +50,7 @@ CAPTION "設定"
 FONT 9, "新細明體"
 BEGIN
     GROUPBOX "一般", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "儲存視窗位置(&S)", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "啟動時更新可獲得的程式列表(&U)", IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "將程式的安裝和解除安裝記錄到記錄檔(&L)", IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "正在下載", -1, 4, 65, 240, 51
     LTEXT "下載資料夾:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -213,6 +211,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "列表"
     IDS_APP_DISPLAY_TILE "並排"
     IDS_NO_SEARCH_RESULTS "沒有搜尋結果"
+    IDS_CFG_SAVE_WINDOW_POS "儲存視窗位置"
+    IDS_CFG_UPDATE_AVLIST "啟動時更新可獲得的程式列表"
+    IDS_CFG_LOG_ENABLED "將程式的安裝和解除安裝記錄到記錄檔"
+    IDS_CFG_SMALL_ICONS "小圖示"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/lang/zh-TW.rc 
b/base/applications/rapps/lang/zh-TW.rc
index 6e0584d8b6e..a3befd8880d 100644
--- a/base/applications/rapps/lang/zh-TW.rc
+++ b/base/applications/rapps/lang/zh-TW.rc
@@ -50,9 +50,7 @@ CAPTION "設定"
 FONT 9, "新細明體"
 BEGIN
     GROUPBOX "一般", -1, 4, 2, 240, 61
-    AUTOCHECKBOX "儲存視窗位置(&S)", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
-    AUTOCHECKBOX "啟動時更新可獲得的程式列表(&U)", IDC_UPDATE_AVLIST, 15, 29, 222, 12
-    AUTOCHECKBOX "記錄程式的安裝和解除安裝過程(&L)", IDC_LOG_ENABLED, 15, 46, 219, 12
+    CONTROL "", IDC_GENERALLIST, "SysListView32", WS_TABSTOP | LVCHECKSTYLES, 
15, 12, 219, 46, WS_EX_STATICEDGE
     GROUPBOX "正在下載", -1, 4, 65, 240, 51
     LTEXT "下載資料夾:", -1, 16, 75, 100, 9
     EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | 
WS_GROUP | ES_AUTOHSCROLL
@@ -213,6 +211,10 @@ BEGIN
     IDS_APP_DISPLAY_LIST "列表"
     IDS_APP_DISPLAY_TILE "並排"
     IDS_NO_SEARCH_RESULTS "沒有搜尋結果"
+    IDS_CFG_SAVE_WINDOW_POS "儲存視窗位置"
+    IDS_CFG_UPDATE_AVLIST "啟動時更新可獲得的程式列表"
+    IDS_CFG_LOG_ENABLED "記錄程式的安裝和解除安裝過程"
+    IDS_CFG_SMALL_ICONS "小圖示"
 END
 
 STRINGTABLE
diff --git a/base/applications/rapps/settings.cpp 
b/base/applications/rapps/settings.cpp
index b23c2dd7a49..e87d5d0315c 100644
--- a/base/applications/rapps/settings.cpp
+++ b/base/applications/rapps/settings.cpp
@@ -118,6 +118,7 @@ AddInfoFields(ATL::CAtlList<SettingsField *> &infoFields, 
SETTINGS_INFO &setting
     infoFields.AddTail(new SettingsFieldBool(&(settings.bLogEnabled), 
L"bLogEnabled"));
     infoFields.AddTail(new SettingsFieldString(settings.szDownloadDir, 
MAX_PATH, L"szDownloadDir"));
     infoFields.AddTail(new SettingsFieldBool(&(settings.bDelInstaller), 
L"bDelInstaller"));
+    infoFields.AddTail(new SettingsFieldBool(&(settings.bSmallIcons), 
L"SmallIcons"));
     infoFields.AddTail(new SettingsFieldBool(&(settings.Maximized), 
L"WindowPosMaximized"));
     infoFields.AddTail(new SettingsFieldInt(&(settings.Left), 
L"WindowPosLeft"));
     infoFields.AddTail(new SettingsFieldInt(&(settings.Top), L"WindowPosTop"));
diff --git a/base/applications/rapps/settingsdlg.cpp 
b/base/applications/rapps/settingsdlg.cpp
index 92782d59484..56efc75193c 100644
--- a/base/applications/rapps/settingsdlg.cpp
+++ b/base/applications/rapps/settingsdlg.cpp
@@ -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);
 }

Reply via email to