[RAPPS] Replaced my @gmail.com email with @reactos,org one & Removed my copyright...
[reactos.git] / reactos / base / applications / rapps / settingsdlg.cpp
index 527227c..b56923a 100644 (file)
@@ -1,44 +1,49 @@
 /*
- * PROJECT:         ReactOS Applications Manager
- * LICENSE:         GPL - See COPYING in the top level directory
- * FILE:            base/applications/rapps/settingsdlg.cpp
- * PURPOSE:         Settings Dialog
- * PROGRAMMERS:     Dmitry Chapyshev (dmitry@reactos.org)
+ * PROJECT:     ReactOS Applications Manager
+ * LICENSE:     GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
+ * FILE:        base/applications/rapps/settingsdlg.cpp
+ * PURPOSE:     Settings Dialog
+ * COPYRIGHT:   Copyright 2009 Dmitry Chapyshev           (dmitry@reactos.org)
+ *              Copyright 2017 Alexander Shaposhnikov     (sanchaez@reactos.org)
  */
+#include "defines.h"
 
-#include "rapps.h"
+#include "dialogs.h"
 
 SETTINGS_INFO NewSettingsInfo;
 
-#define IS_CHECKED(a, b) \
-    a = (SendDlgItemMessage(hDlg, b, BM_GETCHECK, 0, 0) == BST_CHECKED) ? TRUE : FALSE
-
-BOOL
-ChooseFolder(HWND hwnd)
+BOOL ChooseFolder(HWND hwnd)
 {
     BOOL bRet = FALSE;
-    BROWSEINFO bi;
-    WCHAR szPath[MAX_PATH], szBuf[MAX_STR_LEN];
+    BROWSEINFOW bi;
+    ATL::CStringW szChooseFolderText;
 
-    LoadStringW(hInst, IDS_CHOOSE_FOLDER_TEXT, szBuf, _countof(szBuf));
+    szChooseFolderText.LoadStringW(IDS_CHOOSE_FOLDER_TEXT);
 
     ZeroMemory(&bi, sizeof(bi));
     bi.hwndOwner = hwnd;
-    bi.pidlRoot  = NULL;
-    bi.lpszTitle = szBuf;
-    bi.ulFlags   = BIF_USENEWUI | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | /* BIF_BROWSEFILEJUNCTIONS | */ BIF_VALIDATE;
+    bi.pidlRoot = NULL;
+    bi.lpszTitle = szChooseFolderText.GetString();
+    bi.ulFlags = BIF_USENEWUI | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | /* BIF_BROWSEFILEJUNCTIONS | */ BIF_VALIDATE;
 
     if (SUCCEEDED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
     {
-        LPITEMIDLIST lpItemList = SHBrowseForFolder(&bi);
-        if (lpItemList && SHGetPathFromIDList(lpItemList, szPath))
+        ATL::CStringW szBuf;
+
+        LPITEMIDLIST lpItemList = SHBrowseForFolderW(&bi);
+        if (lpItemList && SHGetPathFromIDListW(lpItemList, szBuf.GetBuffer(MAX_PATH)))
         {
-            if (szPath[0] != 0)
+            szBuf.ReleaseBuffer();
+            if (!szBuf.IsEmpty())
             {
-                SetDlgItemTextW(hwnd, IDC_DOWNLOAD_DIR_EDIT, szPath);
+                SetDlgItemTextW(hwnd, IDC_DOWNLOAD_DIR_EDIT, szBuf.GetString());
                 bRet = TRUE;
             }
         }
+        else
+        {
+            szBuf.ReleaseBuffer();
+        }
 
         CoTaskMemFree(lpItemList);
         CoUninitialize();
@@ -47,35 +52,39 @@ ChooseFolder(HWND hwnd)
     return bRet;
 }
 
-static VOID
-InitSettingsControls(HWND hDlg, PSETTINGS_INFO Info)
+namespace
 {
-    SendDlgItemMessage(hDlg, IDC_SAVE_WINDOW_POS, BM_SETCHECK, Info->bSaveWndPos, 0);
-    SendDlgItemMessage(hDlg, IDC_UPDATE_AVLIST, BM_SETCHECK, Info->bUpdateAtStart, 0);
-    SendDlgItemMessage(hDlg, IDC_LOG_ENABLED, BM_SETCHECK, Info->bLogEnabled, 0);
-    SendDlgItemMessage(hDlg, IDC_DEL_AFTER_INSTALL, BM_SETCHECK, Info->bDelInstaller, 0);
+    inline BOOL IsCheckedDlgItem(HWND hDlg, INT nIDDlgItem)
+    {
+        return (SendDlgItemMessageW(hDlg, nIDDlgItem, BM_GETCHECK, 0, 0) == BST_CHECKED) ? TRUE : FALSE;
+    }
 
-    SetWindowTextW(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT),
-                   Info->szDownloadDir);
+    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);
+        SendDlgItemMessageW(hDlg, IDC_DEL_AFTER_INSTALL, BM_SETCHECK, Info->bDelInstaller, 0);
 
-    CheckRadioButton(hDlg, IDC_PROXY_DEFAULT, IDC_USE_PROXY, IDC_PROXY_DEFAULT+Info->Proxy);
+        SetWindowTextW(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT),
+                       Info->szDownloadDir);
 
-    if(IDC_PROXY_DEFAULT + Info->Proxy == IDC_USE_PROXY)
-    {
-        EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), TRUE);
-        EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), TRUE);
-    }
+        CheckRadioButton(hDlg, IDC_PROXY_DEFAULT, IDC_USE_PROXY, IDC_PROXY_DEFAULT + Info->Proxy);
 
-    SetWindowTextW(GetDlgItem(hDlg, IDC_PROXY_SERVER), Info->szProxyServer);
-    SetWindowTextW(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), Info->szNoProxyFor);
-}
+        if (IDC_PROXY_DEFAULT + Info->Proxy == IDC_USE_PROXY)
+        {
+            EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), TRUE);
+            EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), TRUE);
+        }
 
-static
-INT_PTR CALLBACK
-SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
-{
-    switch (Msg)
+        SetWindowTextW(GetDlgItem(hDlg, IDC_PROXY_SERVER), Info->szProxyServer);
+        SetWindowTextW(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), Info->szNoProxyFor);
+    }
+
+    INT_PTR CALLBACK SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
     {
+        switch (Msg)
+        {
         case WM_INITDIALOG:
         {
             NewSettingsInfo = SettingsInfo;
@@ -87,116 +96,123 @@ SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
         {
             switch (LOWORD(wParam))
             {
-                case IDC_CHOOSE:
-                    ChooseFolder(hDlg);
-                    break;
-
-                case IDC_SAVE_WINDOW_POS:
-                    IS_CHECKED(NewSettingsInfo.bSaveWndPos, IDC_SAVE_WINDOW_POS);
-                    break;
-
-                case IDC_UPDATE_AVLIST:
-                    IS_CHECKED(NewSettingsInfo.bUpdateAtStart, IDC_UPDATE_AVLIST);
-                    break;
-
-                case IDC_LOG_ENABLED:
-                    IS_CHECKED(NewSettingsInfo.bLogEnabled, IDC_LOG_ENABLED);
-                    break;
-
-                case IDC_DEL_AFTER_INSTALL:
-                    IS_CHECKED(NewSettingsInfo.bDelInstaller, IDC_DEL_AFTER_INSTALL);
-                    break;
-
-                case IDC_PROXY_DEFAULT:
-                    NewSettingsInfo.Proxy = 0;
-                    EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), FALSE);
-                    EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), FALSE);
-                    break;
-
-                case IDC_NO_PROXY:
-                    NewSettingsInfo.Proxy = 1;
-                    EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), FALSE);
-                    EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), FALSE);
-                    break;
-
-                case IDC_USE_PROXY:
-                    NewSettingsInfo.Proxy = 2;
-                    EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), TRUE);
-                    EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), TRUE);
-                    break;
-
-                case IDC_DEFAULT_SETTINGS:
-                    FillDefaultSettings(&NewSettingsInfo);
-                    InitSettingsControls(hDlg, &NewSettingsInfo);
-                    break;
-
-                case IDOK:
-                {
-                    WCHAR szDir[MAX_PATH];
-                    WCHAR szProxy[MAX_PATH];
-                    WCHAR szNoProxy[MAX_PATH];
-                    DWORD dwAttr;
+            case IDC_CHOOSE:
+                ChooseFolder(hDlg);
+                break;
 
-                    GetWindowTextW(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT),
-                                   szDir, MAX_PATH);
+            case IDC_SAVE_WINDOW_POS:
+                NewSettingsInfo.bSaveWndPos = IsCheckedDlgItem(hDlg, IDC_SAVE_WINDOW_POS);
+                break;
 
-                    GetWindowTextW(GetDlgItem(hDlg, IDC_PROXY_SERVER),
-                                   szProxy, MAX_PATH);
-                    StringCbCopyW(NewSettingsInfo.szProxyServer, sizeof(NewSettingsInfo.szProxyServer), szProxy);
+            case IDC_UPDATE_AVLIST:
+                NewSettingsInfo.bUpdateAtStart = IsCheckedDlgItem(hDlg, IDC_UPDATE_AVLIST);
+                break;
 
-                    GetWindowTextW(GetDlgItem(hDlg, IDC_NO_PROXY_FOR),
-                                   szNoProxy, MAX_PATH);
-                    StringCbCopyW(NewSettingsInfo.szNoProxyFor, sizeof(NewSettingsInfo.szNoProxyFor), szNoProxy);
+            case IDC_LOG_ENABLED:
+                NewSettingsInfo.bLogEnabled = IsCheckedDlgItem(hDlg, IDC_LOG_ENABLED);
+                break;
 
-                    dwAttr = GetFileAttributesW(szDir);
-                    if (dwAttr != INVALID_FILE_ATTRIBUTES &&
-                        (dwAttr & FILE_ATTRIBUTE_DIRECTORY))
-                    {
-                        StringCbCopyW(NewSettingsInfo.szDownloadDir,
-                                      sizeof(NewSettingsInfo.szDownloadDir),
-                                      szDir);
-                    }
-                    else
-                    {
-                        WCHAR szMsgText[MAX_STR_LEN];
+            case IDC_DEL_AFTER_INSTALL:
+                NewSettingsInfo.bDelInstaller = IsCheckedDlgItem(hDlg, IDC_DEL_AFTER_INSTALL);
+                break;
 
-                        LoadStringW(hInst,
-                                    IDS_CHOOSE_FOLDER_ERROR,
-                                    szMsgText, _countof(szMsgText));
+            case IDC_PROXY_DEFAULT:
+                NewSettingsInfo.Proxy = 0;
+                EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), FALSE);
+                EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), FALSE);
+                break;
 
-                        if (MessageBoxW(hDlg, szMsgText, NULL, MB_YESNO) == IDYES)
-                        {
-                            if (CreateDirectoryW(szDir, NULL))
-                            {
-                                EndDialog(hDlg, LOWORD(wParam));
-                            }
-                        }
-                        else
+            case IDC_NO_PROXY:
+                NewSettingsInfo.Proxy = 1;
+                EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), FALSE);
+                EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), FALSE);
+                break;
+
+            case IDC_USE_PROXY:
+                NewSettingsInfo.Proxy = 2;
+                EnableWindow(GetDlgItem(hDlg, IDC_PROXY_SERVER), TRUE);
+                EnableWindow(GetDlgItem(hDlg, IDC_NO_PROXY_FOR), TRUE);
+                break;
+
+            case IDC_DEFAULT_SETTINGS:
+                FillDefaultSettings(&NewSettingsInfo);
+                InitSettingsControls(hDlg, &NewSettingsInfo);
+                break;
+
+            case IDOK:
+            {
+                ATL::CStringW szDir;
+                ATL::CStringW szProxy;
+                ATL::CStringW szNoProxy;
+                DWORD dwAttr;
+
+                GetWindowTextW(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT),
+                               szDir.GetBuffer(MAX_PATH), MAX_PATH);
+                szDir.ReleaseBuffer();
+
+                GetWindowTextW(GetDlgItem(hDlg, IDC_PROXY_SERVER),
+                               szProxy.GetBuffer(MAX_PATH), MAX_PATH);
+                szProxy.ReleaseBuffer();
+                ATL::CStringW::CopyChars(NewSettingsInfo.szProxyServer,
+                                         _countof(NewSettingsInfo.szProxyServer),
+                                         szProxy.GetString(),
+                                         szProxy.GetLength() + 1);
+
+                GetWindowTextW(GetDlgItem(hDlg, IDC_NO_PROXY_FOR),
+                               szNoProxy.GetBuffer(MAX_PATH), MAX_PATH);
+                szNoProxy.ReleaseBuffer();
+                ATL::CStringW::CopyChars(NewSettingsInfo.szNoProxyFor,
+                                         _countof(NewSettingsInfo.szNoProxyFor),
+                                         szNoProxy.GetString(),
+                                         szNoProxy.GetLength() + 1);
+
+                dwAttr = GetFileAttributesW(szDir.GetString());
+                if (dwAttr != INVALID_FILE_ATTRIBUTES &&
+                    (dwAttr & FILE_ATTRIBUTE_DIRECTORY))
+                {
+                    ATL::CStringW::CopyChars(NewSettingsInfo.szDownloadDir,
+                                             _countof(NewSettingsInfo.szDownloadDir),
+                                             szDir.GetString(),
+                                             szDir.GetLength() + 1);
+                }
+                else
+                {
+                    ATL::CStringW szMsgText;
+                    szMsgText.LoadStringW(IDS_CHOOSE_FOLDER_ERROR);
+
+                    if (MessageBoxW(hDlg, szMsgText.GetString(), NULL, MB_YESNO) == IDYES)
+                    {
+                        if (CreateDirectoryW(szDir.GetString(), NULL))
                         {
-                            SetFocus(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT));
-                            break;
+                            EndDialog(hDlg, LOWORD(wParam));
                         }
                     }
-
-                    SettingsInfo = NewSettingsInfo;
-                    SaveSettings(GetParent(hDlg));
-                    EndDialog(hDlg, LOWORD(wParam));
+                    else
+                    {
+                        SetFocus(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT));
+                        break;
+                    }
                 }
-                break;
 
-                case IDCANCEL:
-                    EndDialog(hDlg, LOWORD(wParam));
-                    break;
+                SettingsInfo = NewSettingsInfo;
+                SaveSettings(GetParent(hDlg));
+                EndDialog(hDlg, LOWORD(wParam));
+            }
+            break;
+
+            case IDCANCEL:
+                EndDialog(hDlg, LOWORD(wParam));
+                break;
             }
         }
         break;
-    }
+        }
 
-    return FALSE;
+        return FALSE;
+    }
 }
 
-VOID
-CreateSettingsDlg(HWND hwnd)
+VOID CreateSettingsDlg(HWND hwnd)
 {
     DialogBoxW(hInst,
                MAKEINTRESOURCEW(IDD_SETTINGS_DIALOG),