[SHELLFIND] Add search functionality
[reactos.git] / dll / win32 / browseui / shellfind / CSearchBar.cpp
index 7efcd2b..d09c478 100644 (file)
@@ -46,31 +46,43 @@ void CSearchBar::InitializeSearchBar()
         m_hWnd, NULL,
         _AtlBaseModule.GetModuleInstance(), NULL);
 
-    CreateWindowExW(0, WC_STATIC, L"A &word or phrase in the file:",
+    CreateWindowExW(0, WC_STATIC, L"All or part &of the file name:",
         WS_CHILD | WS_VISIBLE,
         10, 50, 500, 20,
         m_hWnd, NULL,
         _AtlBaseModule.GetModuleInstance(), NULL);
-    CreateWindowExW(WS_EX_CLIENTEDGE, WC_EDITW, NULL,
+    m_fileName = CreateWindowExW(WS_EX_CLIENTEDGE, WC_EDITW, NULL,
         WS_BORDER | WS_CHILD | WS_VISIBLE,
         10, 70, 100, 20,
         m_hWnd, NULL,
         _AtlBaseModule.GetModuleInstance(), NULL);
 
-    CreateWindowExW(0, WC_STATIC, L"&Look in:",
+    CreateWindowExW(0, WC_STATIC, L"A &word or phrase in the file:",
         WS_CHILD | WS_VISIBLE,
         10, 100, 500, 20,
         m_hWnd, NULL,
         _AtlBaseModule.GetModuleInstance(), NULL);
-    CreateWindowExW(WS_EX_CLIENTEDGE, WC_EDITW, NULL,
+    m_query = CreateWindowExW(WS_EX_CLIENTEDGE, WC_EDITW, NULL,
         WS_BORDER | WS_CHILD | WS_VISIBLE,
         10, 120, 100, 20,
         m_hWnd, NULL,
         _AtlBaseModule.GetModuleInstance(), NULL);
+    Edit_LimitText(m_query, MAX_PATH);
+
+    CreateWindowExW(0, WC_STATIC, L"&Look in:",
+        WS_CHILD | WS_VISIBLE,
+        10, 150, 500, 20,
+        m_hWnd, NULL,
+        _AtlBaseModule.GetModuleInstance(), NULL);
+    m_path = CreateWindowExW(WS_EX_CLIENTEDGE, WC_EDITW, NULL,
+        WS_BORDER | WS_CHILD | WS_VISIBLE,
+        10, 180, 100, 20,
+        m_hWnd, NULL,
+        _AtlBaseModule.GetModuleInstance(), NULL);
 
     CreateWindowExW(0, WC_BUTTON, L"Sea&rch",
         WS_BORDER | WS_CHILD | WS_VISIBLE,
-        10, 150, 100, 20,
+        10, 210, 100, 20,
         m_hWnd, NULL,
         _AtlBaseModule.GetModuleInstance(), NULL);
 }
@@ -177,7 +189,7 @@ LRESULT CSearchBar::OnSearchButtonClicked(WORD wNotifyCode, WORD wID, HWND hWndC
         if (FAILED_UNEXPECTEDLY(hr))
             return hr;
 
-        LPITEMIDLIST findFolderPidl;
+        CComHeapPtr<ITEMIDLIST> findFolderPidl;
         hr = SHParseDisplayName(szShellGuid, NULL, &findFolderPidl, 0, NULL);
         if (FAILED_UNEXPECTEDLY(hr))
             return hr;
@@ -187,10 +199,11 @@ LRESULT CSearchBar::OnSearchButtonClicked(WORD wNotifyCode, WORD wID, HWND hWndC
             return hr;
     }
 
-    GetSearchResultsFolder(&pShellBrowser, &hwnd, NULL);
-    if (hwnd)
-        // TODO: Use message ID in header file
-        ::PostMessageW(hwnd, WM_USER + 1, 0, (LPARAM) StrDupW(L"Starting search..."));
+    hr = GetSearchResultsFolder(*pShellBrowser, &hwnd, NULL);
+    if (FAILED_UNEXPECTEDLY(hr))
+        return hr;
+
+    ::PostMessageW(hwnd, WM_SEARCH_START, 0, (LPARAM) StrDupW(L"Starting search..."));
 
     return S_OK;
 }
@@ -202,8 +215,7 @@ LRESULT CSearchBar::OnClicked(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHa
     if (SUCCEEDED(hr))
     {
         LPCWSTR path = L"C:\\readme.txt";
-        // TODO: Use message ID in header file
-        ::PostMessageW(hwnd, WM_USER, 0, (LPARAM) StrDupW(path));
+        ::PostMessageW(hwnd, WM_SEARCH_ADD_RESULT, 0, (LPARAM) StrDupW(path));
     }
 
     return 0;