[OSK] Implement the welcome box (#1007)
authorBișoc George <fraizeraust99@gmail.com>
Sat, 17 Nov 2018 20:27:33 +0000 (21:27 +0100)
committerHermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Sat, 17 Nov 2018 20:27:33 +0000 (21:27 +0100)
In Windows XP, both in On-Screen Keyboard and in Magnify there is a welcome box which is shown upon startup of the application. This feature is already implemented for Magnify in ReactOS which however in On-Screen Keyboard is still unimplemented.

22 files changed:
base/applications/osk/CMakeLists.txt
base/applications/osk/lang/ar-DZ.rc
base/applications/osk/lang/cs-CZ.rc
base/applications/osk/lang/de-DE.rc
base/applications/osk/lang/en-GB.rc
base/applications/osk/lang/en-US.rc
base/applications/osk/lang/es-ES.rc
base/applications/osk/lang/fr-CA.rc
base/applications/osk/lang/fr-FR.rc
base/applications/osk/lang/he-IL.rc
base/applications/osk/lang/it-IT.rc
base/applications/osk/lang/pl-PL.rc
base/applications/osk/lang/ro-RO.rc
base/applications/osk/lang/ru-RU.rc
base/applications/osk/lang/tr-TR.rc
base/applications/osk/lang/zh-CN.rc
base/applications/osk/lang/zh-TW.rc
base/applications/osk/main.c
base/applications/osk/main.h
base/applications/osk/osk_res.h
base/applications/osk/settings.c [new file with mode: 0644]
base/applications/osk/settings.h [new file with mode: 0644]

index a6451ea..51ff4f3 100644 (file)
@@ -1,7 +1,7 @@
 
 file(GLOB osk_rc_deps res/*.*)
 add_rc_deps(rsrc.rc ${osk_rc_deps})
-add_executable(osk main.c rsrc.rc)
+add_executable(osk main.c settings.c rsrc.rc)
 set_module_type(osk win32gui UNICODE)
 add_importlibs(osk comdlg32 shell32 user32 gdi32 advapi32 comctl32 msvcrt kernel32)
 add_cd_file(TARGET osk DESTINATION reactos/system32 FOR all)
index fa99def..3fc9a27 100644 (file)
@@ -125,4 +125,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 7361e3c..f3d03f7 100644 (file)
@@ -125,4 +125,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 704dfed..02f714e 100644 (file)
@@ -126,4 +126,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index e3e541b..03572dd 100644 (file)
@@ -126,4 +126,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 9c29b65..890894b 100644 (file)
@@ -125,4 +125,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,443,15,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 5fe5697..aa8c6a3 100644 (file)
@@ -127,4 +127,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 0cbbf7a..faa3b5c 100644 (file)
@@ -126,4 +126,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 5e12634..5c49048 100644 (file)
@@ -126,4 +126,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 52d0887..7be0c02 100644 (file)
@@ -125,4 +125,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 3af1a12..6a7a34e 100644 (file)
@@ -126,4 +126,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,443,15,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 4c89b54..8e97f98 100644 (file)
@@ -125,4 +125,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 4910a6f..7a4d358 100644 (file)
@@ -126,4 +126,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,443,15,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 3a04288..a551634 100644 (file)
@@ -125,4 +125,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,443,15,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 107233d..1d1f16c 100644 (file)
@@ -125,4 +125,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 33d219a..e873cc4 100644 (file)
@@ -127,4 +127,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 3a9325d..e387795 100644 (file)
@@ -127,4 +127,16 @@ BEGIN
     CONTROL         "",IDC_LED_SCROLL,"Static",SS_CENTER|SS_NOTIFY,580,16,4,3
 END
 
+IDD_WARNINGDIALOG_OSK DIALOGEX 0, 0, 250, 97
+STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "On-Screen Keyboard"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 193, 76, 50, 14
+    ICON IDI_OSK, IDC_STATIC, 7, 17, 20, 20
+    LTEXT "On-Screen Keyboard provides a minimum level of functionality for mobility-impaired users. Mobility-impaired users will need a utility program with higher functionality for daily use.", IDC_STATIC, 36, 7, 207, 33
+    CONTROL "Do not show this message again", IDC_SHOWWARNINGCHECK, "Button",
+            BS_AUTOCHECKBOX | WS_TABSTOP, 43, 80, 137, 10
+END
+
 /* EOF */
index 9932f79..6c17933 100644 (file)
@@ -9,6 +9,7 @@
 /* INCLUDES *******************************************************************/
 
 #include "osk.h"
+#include "settings.h"
 
 /* GLOBALS ********************************************************************/
 
@@ -57,6 +58,47 @@ int OSK_SetImage(int IdDlgItem, int IdResource)
     return TRUE;
 }
 
+/***********************************************************************
+ *
+ *          OSK_WarningProc
+ *
+ *  Function handler for the warning dialog box on startup
+ */
+INT_PTR CALLBACK OSK_WarningProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+    UNREFERENCED_PARAMETER(lParam);
+
+    switch (Msg)
+    {
+        case WM_INITDIALOG:
+        {
+            return TRUE;
+        }
+
+        case WM_COMMAND:
+        {
+            switch (LOWORD(wParam))
+            {
+                case IDC_SHOWWARNINGCHECK:
+                {
+                    Globals.bShowWarning = !IsDlgButtonChecked(hDlg, IDC_SHOWWARNINGCHECK);
+                    return TRUE;
+                }
+
+                case IDOK:
+                case IDCANCEL:
+                {
+                    EndDialog(hDlg, LOWORD(wParam));
+                    return TRUE;
+                }
+            }
+            break;
+        }
+    }
+
+    return FALSE;
+}
+
 
 /***********************************************************************
  *
@@ -74,6 +116,9 @@ int OSK_DlgInitDialog(HWND hDlg)
     /* Save handle */
     Globals.hMainWnd = hDlg;
 
+    /* Load the settings from the registry hive */
+    LoadDataFromRegistry();
+
     /* Get screen info */
     memset(&Pt, 0, sizeof(Pt));
     monitor = MonitorFromPoint(Pt, MONITOR_DEFAULTTOPRIMARY );
@@ -115,6 +160,12 @@ int OSK_DlgInitDialog(HWND hDlg)
     /* Set a timer for periodics tasks */
     Globals.iTimer = SetTimer(hDlg, 0, 200, NULL);
 
+    /* If the member of the struct (bShowWarning) is set then display the dialog box */
+    if (Globals.bShowWarning)
+    {
+        DialogBox(Globals.hInstance, MAKEINTRESOURCE(IDD_WARNINGDIALOG_OSK), Globals.hMainWnd, OSK_WarningProc);
+    }
+
     return TRUE;
 }
 
@@ -139,6 +190,9 @@ int OSK_DlgClose(void)
     /* delete GDI objects */
     if (Globals.hBrushGreenLed) DeleteObject(Globals.hBrushGreenLed);
 
+    /* Save the settings to the registry hive */
+    SaveDataToRegistry();
+
     return TRUE;
 }
 
index 9c698e6..ca7922d 100644 (file)
@@ -23,6 +23,7 @@ typedef struct
     UINT_PTR   iTimer;
     /* FIXME: To be deleted when ReactOS will support WS_EX_NOACTIVATE */
     HWND       hActiveWnd;
+    BOOL       bShowWarning;
 } OSK_GLOBALS;
 
 /* DEFINES ********************************************************************/
index 3c88d8b..120632d 100644 (file)
@@ -11,6 +11,7 @@
 #define IDC_LED_NUM             100
 #define IDC_LED_CAPS            101
 #define IDC_LED_SCROLL          102
+#define IDC_SHOWWARNINGCHECK    103
 
 #define IDI_OSK                 200
 #define IDI_BACK                201
@@ -28,6 +29,8 @@
 #define IDI_RIGHT               213
 #define IDI_BOTTOM              214
 
+#define IDD_WARNINGDIALOG_OSK   215
+
 #define IDC_STATIC              -1
 
 
diff --git a/base/applications/osk/settings.c b/base/applications/osk/settings.c
new file mode 100644 (file)
index 0000000..33f8893
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * PROJECT:         ReactOS On-Screen Keyboard
+ * LICENSE:         GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
+ * PURPOSE:         Settings file for warning dialog on startup
+ * COPYRIGHT:       Copyright 2018 Bișoc George (fraizeraust99 at gmail dot com)
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include "osk.h"
+#include "settings.h"
+
+/* FUNCTIONS *******************************************************************/
+
+BOOL LoadDataFromRegistry()
+{
+    HKEY hKey;
+    LONG lResult;
+    DWORD dwData;
+    DWORD cbData = sizeof(DWORD);
+
+    /* Set the structure member to TRUE */
+    Globals.bShowWarning = TRUE;
+
+    /* Open the key, so that we can query it */
+    lResult = RegOpenKeyExW(HKEY_CURRENT_USER,
+                            L"Software\\Microsoft\\osk",
+                            0,
+                            KEY_READ,
+                            &hKey);
+
+    if (lResult != ERROR_SUCCESS)
+    {
+        /* Bail out and return FALSE if we fail */
+        return FALSE;
+    }
+
+    /* Query the key */
+    lResult = RegQueryValueExW(hKey,
+                               L"ShowWarning",
+                               0,
+                               0,
+                               (BYTE *)&dwData,
+                               &cbData);
+
+    if (lResult != ERROR_SUCCESS)
+    {
+        /* Bail out and return FALSE if we fail */
+        RegCloseKey(hKey);
+        return FALSE;
+    }
+
+    /* Load the data value (it can be either FALSE or TRUE depending on the data itself) */
+    Globals.bShowWarning = (dwData != 0);
+    
+    /* If we're here then we succeed, close the key and return TRUE */
+    RegCloseKey(hKey);
+    return TRUE;
+}
+
+BOOL SaveDataToRegistry()
+{
+    HKEY hKey;
+    LONG lResult;
+    DWORD dwData;
+
+    /* If no key has been made, create one */
+    lResult = RegCreateKeyExW(HKEY_CURRENT_USER,
+                              L"Software\\Microsoft\\osk",
+                              0,
+                              NULL,
+                              0,
+                              KEY_WRITE,
+                              NULL,
+                              &hKey,
+                              NULL);
+
+    if (lResult != ERROR_SUCCESS)
+    {
+        /* Bail out and return FALSE if we fail */
+        return FALSE;
+    }
+
+    /* The data value of the subkey will be appended to the warning dialog switch */
+    dwData = Globals.bShowWarning;
+
+    lResult = RegSetValueExW(hKey,
+                             L"ShowWarning",
+                             0,
+                             REG_DWORD,
+                             (BYTE *)&dwData,
+                             sizeof(dwData));
+
+    if (lResult != ERROR_SUCCESS)
+    {
+        /* Bail out and return FALSE if we fail */
+        RegCloseKey(hKey);
+        return FALSE;
+    }
+
+    /* If we're here then we succeed, close the key and return TRUE */
+    RegCloseKey(hKey);
+    return TRUE;
+}
diff --git a/base/applications/osk/settings.h b/base/applications/osk/settings.h
new file mode 100644 (file)
index 0000000..05e122a
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * PROJECT:         ReactOS On-Screen Keyboard
+ * LICENSE:         GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
+ * PURPOSE:         Settings header file with function prototypes
+ * COPYRIGHT:       Copyright 2018 Bișoc George (fraizeraust99 at gmail dot com)
+ */
+
+#ifndef SETTINGS_OSK_H
+#define SETTINGS_OSK_H
+
+BOOL LoadDataFromRegistry(VOID);
+BOOL SaveDataToRegistry(VOID);
+INT_PTR CALLBACK OSK_WarningProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+
+#endif // SETTINGS_OSK_H