[RAPPS] Show the user that there are no search results
authorMark Jansen <mark.jansen@reactos.org>
Thu, 30 Dec 2021 19:17:32 +0000 (20:17 +0100)
committerMark Jansen <mark.jansen@reactos.org>
Fri, 31 Dec 2021 20:27:48 +0000 (21:27 +0100)
CORE-17944

30 files changed:
base/applications/rapps/appview.cpp
base/applications/rapps/gui.cpp
base/applications/rapps/include/appview.h
base/applications/rapps/include/resource.h
base/applications/rapps/lang/bg-BG.rc
base/applications/rapps/lang/cs-CZ.rc
base/applications/rapps/lang/de-DE.rc
base/applications/rapps/lang/en-US.rc
base/applications/rapps/lang/es-ES.rc
base/applications/rapps/lang/et-EE.rc
base/applications/rapps/lang/fr-FR.rc
base/applications/rapps/lang/he-IL.rc
base/applications/rapps/lang/hu-HU.rc
base/applications/rapps/lang/id-ID.rc
base/applications/rapps/lang/it-IT.rc
base/applications/rapps/lang/ja-JP.rc
base/applications/rapps/lang/no-NO.rc
base/applications/rapps/lang/pl-PL.rc
base/applications/rapps/lang/pt-BR.rc
base/applications/rapps/lang/pt-PT.rc
base/applications/rapps/lang/ro-RO.rc
base/applications/rapps/lang/ru-RU.rc
base/applications/rapps/lang/sk-SK.rc
base/applications/rapps/lang/sq-AL.rc
base/applications/rapps/lang/sv-SE.rc
base/applications/rapps/lang/tr-TR.rc
base/applications/rapps/lang/uk-UA.rc
base/applications/rapps/lang/zh-CN.rc
base/applications/rapps/lang/zh-HK.rc
base/applications/rapps/lang/zh-TW.rc

index 09bbb17..7cffc37 100644 (file)
@@ -1127,6 +1127,30 @@ CAppsListView::~CAppsListView()
     }
 }
 
+LRESULT
+CAppsListView::OnEraseBackground(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
+{
+    LRESULT lRes = this->DefWindowProc(uMsg, wParam, lParam);
+    if (!m_Watermark.IsEmpty())
+    {
+        RECT rc;
+        GetClientRect(&rc);
+        HGDIOBJ oldFont = SelectFont(HDC(wParam), GetStockFont(DEFAULT_GUI_FONT));
+        DrawShadowText(
+            HDC(wParam), m_Watermark.GetString(), m_Watermark.GetLength(), &rc,
+            DT_CENTER | DT_VCENTER | DT_NOPREFIX | DT_SINGLELINE, GetSysColor(COLOR_GRAYTEXT),
+            GetSysColor(COLOR_GRAYTEXT), 1, 1);
+        SelectFont(HDC(wParam), oldFont);
+    }
+    return lRes;
+}
+
+VOID CAppsListView::SetWatermark(const CStringW& Text)
+{
+    m_Watermark = Text;
+}
+
+
 VOID CAppsListView::SetCheckboxesVisible(BOOL bIsVisible)
 {
     if (bIsVisible)
@@ -1279,6 +1303,12 @@ HWND CAppsListView::Create(HWND hwndParent)
     SetImageList(m_hImageListView, LVSIL_SMALL);
     SetImageList(m_hImageListView, LVSIL_NORMAL);
 
+#pragma push_macro("SubclassWindow")
+#undef SubclassWindow
+    m_hWnd = NULL;
+    SubclassWindow(hwnd);
+#pragma pop_macro("SubclassWindow")
+
     return hwnd;
 }
 
@@ -2015,6 +2045,13 @@ BOOL CApplicationView::AddAvailableApplication(CAvailableApplicationInfo *AvlbAp
     return m_ListView->AddAvailableApplication(AvlbAppInfo, InitCheckState, param);
 }
 
+VOID CApplicationView::SetWatermark(const CStringW& Text)
+{
+    ATLASSERT(GetItemCount() == 0);
+
+    m_ListView->SetWatermark(Text);
+}
+
 void CApplicationView::CheckAll()
 {
     m_ListView->CheckAll();
index 8b26bc2..a7590e5 100644 (file)
@@ -706,6 +706,14 @@ VOID CMainWindow::UpdateApplicationsList(INT EnumType)
     m_ApplicationView->SetRedraw(TRUE);
     m_ApplicationView->RedrawWindow(0, 0, RDW_INVALIDATE | RDW_ALLCHILDREN); // force the child window to repaint
     UpdateStatusBarText();
+
+    CStringW text;
+    if (m_ApplicationView->GetItemCount() == 0 && !szSearchPattern.IsEmpty())
+    {
+        text.LoadString(IDS_NO_SEARCH_RESULTS);
+    }
+    m_ApplicationView->SetWatermark(text);
+
     bUpdating = FALSE;
 }
 
index 7a6374c..206f99e 100644 (file)
@@ -201,7 +201,7 @@ public:
 };
 
 class CAppsListView :
-    public CUiWindow<CListView>
+    public CUiWindow<CWindowImpl<CAppsListView, CListView>>
 {
     struct SortContext
     {
@@ -221,11 +221,20 @@ class CAppsListView :
     APPLICATION_VIEW_TYPE ApplicationViewType = AppViewTypeEmpty;
 
     HIMAGELIST m_hImageListView = NULL;
+    CStringW m_Watermark;
+
+    BEGIN_MSG_MAP(CAppsListView)
+        MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackground)
+    END_MSG_MAP()
+
+
+    LRESULT OnEraseBackground(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
 
 public:
     CAppsListView();
     ~CAppsListView();
 
+    VOID SetWatermark(const CStringW& Text);
     VOID SetCheckboxesVisible(BOOL bIsVisible);
 
     VOID ColumnClick(LPNMLISTVIEW pnmv);
@@ -372,6 +381,8 @@ public:
 
     BOOL AddInstalledApplication(CInstalledApplicationInfo *InstAppInfo, LPVOID param);
     BOOL AddAvailableApplication(CAvailableApplicationInfo *AvlbAppInfo, BOOL InitCheckState, LPVOID param);
+    VOID SetWatermark(const CStringW& Text);
+
 
     void CheckAll();
     PVOID GetFocusedItemData();
index 023fcdd..bb4249c 100644 (file)
 #define IDS_APP_DISPLAY_DETAILS  133
 #define IDS_APP_DISPLAY_LIST     134
 #define IDS_APP_DISPLAY_TILE     135
+#define IDS_NO_SEARCH_RESULTS    136
 
 /* Tooltips */
 #define IDS_TOOLTIP_INSTALL      200
index 82f7814..f81020f 100644 (file)
@@ -218,6 +218,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index e29d47a..e2670f3 100644 (file)
@@ -219,6 +219,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 93ebd35..476cd6d 100644 (file)
@@ -214,6 +214,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "Liste"
     IDS_APP_DISPLAY_TILE "Kacheln"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 3f151c1..4c4c8bf 100644 (file)
@@ -214,6 +214,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 6bbec17..12c7aa8 100644 (file)
@@ -217,6 +217,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 659c28d..8db7393 100644 (file)
@@ -222,6 +222,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 6ee7947..499cdda 100644 (file)
@@ -214,6 +214,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Détails"
     IDS_APP_DISPLAY_LIST "Liste"
     IDS_APP_DISPLAY_TILE "Tuile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 306fe22..ff689d5 100644 (file)
@@ -220,6 +220,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 2e1bb14..50c6ae4 100644 (file)
@@ -216,6 +216,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Részletek"
     IDS_APP_DISPLAY_LIST "Lista"
     IDS_APP_DISPLAY_TILE "Csempe"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 4907c52..c8b11eb 100644 (file)
@@ -214,6 +214,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index ebe78af..1ca702e 100644 (file)
@@ -214,6 +214,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 7c26a55..6d11465 100644 (file)
@@ -214,6 +214,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 043f551..605c223 100644 (file)
@@ -214,6 +214,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 3b82b31..c32f173 100644 (file)
@@ -223,6 +223,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Szczegóły"
     IDS_APP_DISPLAY_LIST "Lista"
     IDS_APP_DISPLAY_TILE "Kafelki"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index d507c54..1bd4c71 100644 (file)
@@ -216,6 +216,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index c9cf992..c7c0fbd 100644 (file)
@@ -216,6 +216,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index c958987..cfd6b0e 100644 (file)
@@ -223,6 +223,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 0ae6e33..71efe68 100644 (file)
@@ -214,6 +214,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 1b261b2..f029af6 100644 (file)
@@ -219,6 +219,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 0ee3a66..99b2838 100644 (file)
@@ -218,6 +218,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 5c3800d..46c7a7d 100644 (file)
@@ -221,6 +221,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 53b348f..a03094e 100644 (file)
@@ -216,6 +216,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Detaylar"
     IDS_APP_DISPLAY_LIST "Liste"
     IDS_APP_DISPLAY_TILE "Karo"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 46bfb10..c618712 100644 (file)
@@ -222,6 +222,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "Details"
     IDS_APP_DISPLAY_LIST "List"
     IDS_APP_DISPLAY_TILE "Tile"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index f82334f..3cec27c 100644 (file)
@@ -217,6 +217,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "细节"
     IDS_APP_DISPLAY_LIST "列表"
     IDS_APP_DISPLAY_TILE "卡片"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index 24552ce..a259434 100644 (file)
@@ -222,6 +222,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "詳細資料"
     IDS_APP_DISPLAY_LIST "列表"
     IDS_APP_DISPLAY_TILE "並排"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE
index ecec54f..fa25f1c 100644 (file)
@@ -222,6 +222,7 @@ BEGIN
     IDS_APP_DISPLAY_DETAILS "詳情"
     IDS_APP_DISPLAY_LIST "列表"
     IDS_APP_DISPLAY_TILE "卡片"
+    IDS_NO_SEARCH_RESULTS "No search results"
 END
 
 STRINGTABLE