[RAPPS] CMainWindow: use more atl
[reactos.git] / base / applications / rapps / gui.cpp
index adba84a..ad2a13f 100644 (file)
@@ -26,8 +26,6 @@
 #define LISTVIEW_ICON_SIZE 24
 #define TREEVIEW_ICON_SIZE 24
 
-HWND hListView = NULL;
-
 INT GetSystemColorDepth()
 {
     DEVMODEW pDevMode;
@@ -508,24 +506,6 @@ public:
         bIsAscending = !bIsAscending;
     }
 
-    PVOID GetLParam(INT Index)
-    {
-        INT ItemIndex;
-
-        if (Index == -1)
-        {
-            ItemIndex = (INT) SendMessage(LVM_GETNEXTITEM, -1, LVNI_FOCUSED);
-            if (ItemIndex == -1)
-                return NULL;
-        }
-        else
-        {
-            ItemIndex = Index;
-        }
-
-        return (PVOID) GetItemData(ItemIndex);
-    }
-
     BOOL AddColumn(INT Index, ATL::CStringW& Text, INT Width, INT Format)
     {
         return AddColumn(Index, const_cast<LPWSTR>(Text.GetString()), Width, Format);
@@ -822,38 +802,33 @@ private:
         // UpdateApplicationsList(ENUM_ALL_COMPONENTS);
     }
 
-    HTREEITEM AddCategory(HTREEITEM hRootItem, UINT TextIndex, UINT IconIndex)
-    {
-        return m_TreeView->AddCategory(hRootItem, TextIndex, IconIndex);
-    }
-
     VOID InitCategoriesList()
     {
         HTREEITEM hRootItemInstalled, hRootItemAvailable;
 
-        hRootItemInstalled = AddCategory(TVI_ROOT, IDS_INSTALLED, IDI_CATEGORY);
-        AddCategory(hRootItemInstalled, IDS_APPLICATIONS, IDI_APPS);
-        AddCategory(hRootItemInstalled, IDS_UPDATES, IDI_APPUPD);
-
-        AddCategory(TVI_ROOT, IDS_SELECTEDFORINST, IDI_SELECTEDFORINST);
-
-        hRootItemAvailable = AddCategory(TVI_ROOT, IDS_AVAILABLEFORINST, IDI_CATEGORY);
-        AddCategory(hRootItemAvailable, IDS_CAT_AUDIO, IDI_CAT_AUDIO);
-        AddCategory(hRootItemAvailable, IDS_CAT_VIDEO, IDI_CAT_VIDEO);
-        AddCategory(hRootItemAvailable, IDS_CAT_GRAPHICS, IDI_CAT_GRAPHICS);
-        AddCategory(hRootItemAvailable, IDS_CAT_GAMES, IDI_CAT_GAMES);
-        AddCategory(hRootItemAvailable, IDS_CAT_INTERNET, IDI_CAT_INTERNET);
-        AddCategory(hRootItemAvailable, IDS_CAT_OFFICE, IDI_CAT_OFFICE);
-        AddCategory(hRootItemAvailable, IDS_CAT_DEVEL, IDI_CAT_DEVEL);
-        AddCategory(hRootItemAvailable, IDS_CAT_EDU, IDI_CAT_EDU);
-        AddCategory(hRootItemAvailable, IDS_CAT_ENGINEER, IDI_CAT_ENGINEER);
-        AddCategory(hRootItemAvailable, IDS_CAT_FINANCE, IDI_CAT_FINANCE);
-        AddCategory(hRootItemAvailable, IDS_CAT_SCIENCE, IDI_CAT_SCIENCE);
-        AddCategory(hRootItemAvailable, IDS_CAT_TOOLS, IDI_CAT_TOOLS);
-        AddCategory(hRootItemAvailable, IDS_CAT_DRIVERS, IDI_CAT_DRIVERS);
-        AddCategory(hRootItemAvailable, IDS_CAT_LIBS, IDI_CAT_LIBS);
-        AddCategory(hRootItemAvailable, IDS_CAT_THEMES, IDI_CAT_THEMES);
-        AddCategory(hRootItemAvailable, IDS_CAT_OTHER, IDI_CAT_OTHER);
+        hRootItemInstalled = m_TreeView->AddCategory(TVI_ROOT, IDS_INSTALLED, IDI_CATEGORY);
+        m_TreeView->AddCategory(hRootItemInstalled, IDS_APPLICATIONS, IDI_APPS);
+        m_TreeView->AddCategory(hRootItemInstalled, IDS_UPDATES, IDI_APPUPD);
+
+        m_TreeView->AddCategory(TVI_ROOT, IDS_SELECTEDFORINST, IDI_SELECTEDFORINST);
+
+        hRootItemAvailable = m_TreeView->AddCategory(TVI_ROOT, IDS_AVAILABLEFORINST, IDI_CATEGORY);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_AUDIO, IDI_CAT_AUDIO);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_VIDEO, IDI_CAT_VIDEO);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_GRAPHICS, IDI_CAT_GRAPHICS);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_GAMES, IDI_CAT_GAMES);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_INTERNET, IDI_CAT_INTERNET);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_OFFICE, IDI_CAT_OFFICE);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_DEVEL, IDI_CAT_DEVEL);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_EDU, IDI_CAT_EDU);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_ENGINEER, IDI_CAT_ENGINEER);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_FINANCE, IDI_CAT_FINANCE);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_SCIENCE, IDI_CAT_SCIENCE);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_TOOLS, IDI_CAT_TOOLS);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_DRIVERS, IDI_CAT_DRIVERS);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_LIBS, IDI_CAT_LIBS);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_THEMES, IDI_CAT_THEMES);
+        m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_OTHER, IDI_CAT_OTHER);
 
         m_TreeView->SetImageList();
         m_TreeView->Expand(hRootItemInstalled, TVE_EXPAND);
@@ -898,8 +873,7 @@ private:
         m_ListView->m_HorizontalAlignment = UiAlign_Stretch;
         m_HSplitter->First().Append(m_ListView);
 
-        hListView = m_ListView->Create(m_hWnd);
-        return hListView != NULL;
+        return m_ListView->Create(m_hWnd) != NULL;
     }
 
     BOOL CreateRichEdit()
@@ -1583,7 +1557,7 @@ private:
             break;
 
         case ID_SEARCH:
-            ::SetFocus(m_SearchBar->m_hWnd);
+            m_SearchBar->SetFocus();
             break;
 
         case ID_INSTALL:
@@ -1647,7 +1621,7 @@ private:
 
         while (Count >= 0)
         {
-            Info = (PINSTALLED_INFO) ListViewGetlParam(Count);
+            Info = (PINSTALLED_INFO) m_ListView->GetItemData(Count);
             if (Info)
             {
                 RegCloseKey(Info->hSubKey);
@@ -1702,7 +1676,7 @@ private:
         INT Index;
         HICON hIcon = NULL;
 
-        HIMAGELIST hImageListView = ListView_GetImageList(hListView, LVSIL_SMALL);
+        HIMAGELIST hImageListView = (HIMAGELIST)m_ListView->SendMessage(LVM_GETIMAGELIST, LVSIL_SMALL, 0);
 
         if (!SearchPatternMatch(Info->m_szName.GetString(), szSearchPattern) &&
             !SearchPatternMatch(Info->m_szDesc.GetString(), szSearchPattern))
@@ -1876,116 +1850,37 @@ public:
 
         return CWindowImpl::Create(NULL, r, szWindowName.GetString(), WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE);
     }
-
-    CStatusBar * GetStatusBar()
-    {
-        return m_StatusBar;
-    }
-
-    CAppsListView * GetListView()
-    {
-        return m_ListView;
-    }
-
-    CRichEdit * GetRichEdit()
-    {
-        return m_RichEdit;
-    }
-
-    CAvailableApps * GetAvailableApps()
-    {
-        return &m_AvailableApps;
-    }
 };
 
-// global interface
-CMainWindow * g_MainWindow;
-
-HWND CreateMainWindow()
-{
-    g_MainWindow = new CMainWindow();
-    return g_MainWindow->Create();
-}
-
-DWORD_PTR ListViewGetlParam(INT item)
-{
-    if (item < 0)
-    {
-        item = g_MainWindow->GetListView()->GetSelectionMark();
-    }
-    return g_MainWindow->GetListView()->GetItemData(item);
-}
-
-VOID SetStatusBarText(LPCWSTR szText)
-{
-    g_MainWindow->GetStatusBar()->SetText(szText);
-}
-
-INT ListViewAddItem(INT ItemIndex, INT IconIndex, LPWSTR lpName, LPARAM lParam)
-{
-    return g_MainWindow->GetListView()->AddItem(ItemIndex, IconIndex, lpName, lParam);
-}
-
-VOID NewRichEditText(LPCWSTR szText, DWORD flags)
-{
-    g_MainWindow->GetRichEdit()->SetText(szText, flags);
-}
-
-VOID InsertRichEditText(LPCWSTR szText, DWORD flags)
-{
-    g_MainWindow->GetRichEdit()->InsertText(szText, flags);
-}
-
-CAvailableApps* GetAvailableApps()
-{
-    return g_MainWindow->GetAvailableApps();
-}
-
-// ATL version of functions above
-VOID SetStatusBarText(const ATL::CStringW& szText)
-{
-    SetStatusBarText(szText.GetString());
-}
-
-INT ListViewAddItem(INT ItemIndex, INT IconIndex, const ATL::CStringW& Name, LPARAM lParam)
-{
-    return ListViewAddItem(ItemIndex, IconIndex, const_cast<LPWSTR>(Name.GetString()), lParam);
-}
-
-VOID NewRichEditText(const ATL::CStringW& szText, DWORD flags)
-{
-    NewRichEditText(szText.GetString(), flags);
-}
-
-VOID InsertRichEditText(const ATL::CStringW& szText, DWORD flags)
-{
-    InsertRichEditText(szText.GetString(), flags);
-}
-
 VOID ShowMainWindow(INT nShowCmd)
 {
     HACCEL KeyBrd;
     MSG Msg;
 
-    hMainWnd = CreateMainWindow();
+    CMainWindow* wnd = new CMainWindow();
+    if (!wnd)
+        return;
 
-    if (hMainWnd)
-    {
-        /* Maximize it if we must */
-        ShowWindow(hMainWnd, ((SettingsInfo.bSaveWndPos && SettingsInfo.Maximized) ? SW_MAXIMIZE : nShowCmd));
-        UpdateWindow(hMainWnd);
+    hMainWnd = wnd->Create();
+    if (!hMainWnd)
+        return;
 
-        /* Load the menu hotkeys */
-        KeyBrd = LoadAcceleratorsW(NULL, MAKEINTRESOURCEW(HOTKEYS));
+    /* Maximize it if we must */
+    wnd->ShowWindow((SettingsInfo.bSaveWndPos && SettingsInfo.Maximized) ? SW_MAXIMIZE : nShowCmd);
+    wnd->UpdateWindow();
 
-        /* Message Loop */
-        while (GetMessageW(&Msg, NULL, 0, 0))
+    /* Load the menu hotkeys */
+    KeyBrd = LoadAcceleratorsW(NULL, MAKEINTRESOURCEW(HOTKEYS));
+
+    /* Message Loop */
+    while (GetMessageW(&Msg, NULL, 0, 0))
+    {
+        if (!TranslateAcceleratorW(hMainWnd, KeyBrd, &Msg))
         {
-            if (!TranslateAcceleratorW(hMainWnd, KeyBrd, &Msg))
-            {
-                TranslateMessage(&Msg);
-                DispatchMessageW(&Msg);
-            }
+            TranslateMessage(&Msg);
+            DispatchMessageW(&Msg);
         }
-    }    
+    }
+
+    delete wnd;
 }