* Sync up to trunk head (r65074).
[reactos.git] / dll / cpl / desk / appearance.c
index 1d707ca..2bd561a 100644 (file)
 /******************************************************************************/
 
 static void
-AppearancePage_ShowColorScemes(GLOBALS *g, HWND hwndColor, INT ThemeId)
+AppearancePage_UpdateThemePreview(HWND hwndDlg, GLOBALS *g)
 {
-       int i, iListIndex;
-
-       SendMessage(hwndColor, CB_RESETCONTENT , 0, 0);
-
-       if(g->bThemeActive == FALSE)
-       {
-               for(i = 0; i < g_TemplateCount; i++)
-               {
-                       iListIndex = SendMessage(hwndColor, CB_ADDSTRING, 0, (LPARAM)g_ColorSchemes[i].strLegacyName);
-                       SendMessage(hwndColor, CB_SETITEMDATA, iListIndex, i);
-                       if (lstrcmp(g_ColorSchemes[i].strKeyName, g->strSelectedStyle) == 0)
-                       {
-                               g->SchemeId = i;
-                               SendMessage(hwndColor, CB_SETCURSEL, (WPARAM)iListIndex, 0);
-                       }
-               }
-       }
-       else
-       {
-               PTHEME pTheme = (PTHEME)DSA_GetItemPtr(g->Themes, ThemeId);
-               for(i = 0; i < pTheme->ColorsCount; i++)
-               {
-                       PTHEME_STYLE pStyleName;
-                       pStyleName = (PTHEME_STYLE)DSA_GetItemPtr(pTheme->Colors, i);
-                       iListIndex = SendMessage(hwndColor, CB_ADDSTRING, 0, (LPARAM)pStyleName->DisplayName);
-                       SendMessage(hwndColor, CB_SETITEMDATA, iListIndex, i);
-                       if(i == 0 || (g->pszColorName && wcscmp(pStyleName->StlyeName, g->pszColorName) == 0))
-                       {
-                               g->SchemeId = i;
-                               SendMessage(hwndColor, CB_SETCURSEL, (WPARAM)iListIndex, 0);
-                       }
-               }
-       }
+    if (g->ActiveTheme.ThemeActive)
+    {
+        RECT rcWindow;
+
+        GetClientRect(GetDlgItem(hwndDlg, IDC_APPEARANCE_PREVIEW), &rcWindow);
+        if (DrawThemePreview(g->hdcThemePreview, &g->Scheme, &g->ActiveTheme, &rcWindow))
+        {
+            SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SET_HDC_PREVIEW, 0, (LPARAM)g->hdcThemePreview);
+            return;
+        }
+    }
+
+    SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->Scheme);
+    SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SET_HDC_PREVIEW, 0, 0);
+}
+
+static void 
+AppearancePage_LoadSelectedScheme(HWND hwndDlg, GLOBALS *g)
+{
+    if (g->ActiveTheme.ThemeActive == FALSE )
+    {
+        LoadSchemeFromReg(&g->Scheme, &g->ActiveTheme);
+    }
+    else
+    { 
+        LoadSchemeFromTheme(&g->Scheme, &g->ActiveTheme);
+    }
+
+    g_GlobalData.desktop_color = g->Scheme.crColor[COLOR_DESKTOP];
+}
+
+static void
+AppearancePage_ShowStyles(HWND hwndDlg, int nIDDlgItem, PTHEME_STYLE pStyles, PTHEME_STYLE pActiveStyle)
+{
+    int iListIndex;
+    HWND hwndList = GetDlgItem(hwndDlg, nIDDlgItem);
+    PTHEME_STYLE pCurrentStyle;
+
+    SendMessage(hwndList, CB_RESETCONTENT , 0, 0);
+
+    for (pCurrentStyle = pStyles;
+         pCurrentStyle;
+         pCurrentStyle = pCurrentStyle->NextStyle)
+    {
+        iListIndex = SendMessage(hwndList, CB_ADDSTRING, 0, (LPARAM)pCurrentStyle->DisplayName);
+        SendMessage(hwndList, CB_SETITEMDATA, iListIndex, (LPARAM)pCurrentStyle);
+        if (pCurrentStyle == pActiveStyle)
+        {
+            SendMessage(hwndList, CB_SETCURSEL, (WPARAM)iListIndex, 0);
+        }
+    }
+}
+
+static void
+AppearancePage_ShowColorSchemes(HWND hwndDlg, GLOBALS *g)
+{
+    AppearancePage_ShowStyles(hwndDlg, 
+                              IDC_APPEARANCE_COLORSCHEME, 
+                              g->ActiveTheme.Theme->ColoursList, 
+                              g->ActiveTheme.Color);
+}
+
+static void
+AppearancePage_ShowSizes(HWND hwndDlg, GLOBALS *g)
+{
+    PTHEME_STYLE pSizes;
+
+    if (g->ActiveTheme.Theme->SizesList)
+        pSizes = g->ActiveTheme.Theme->SizesList;
+    else
+        pSizes = g->ActiveTheme.Color->ChildStyle;
+
+    AppearancePage_ShowStyles(hwndDlg, 
+                              IDC_APPEARANCE_SIZE, 
+                              pSizes, 
+                              g->ActiveTheme.Size);
 }
 
 static INT_PTR
 AppearancePage_OnInit(HWND hwndDlg)
 {
-       INT i, /*TemplateCount,*/ iListIndex;
-       HWND hwndColor, hwndTheme;
-       GLOBALS *g;
-
-       g = (GLOBALS*)LocalAlloc(LPTR, sizeof(GLOBALS));
-       if (g == NULL)
-               return FALSE;
-
-       SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)g);
-
-       LoadCurrentScheme(&g->Scheme);
-       g->SchemeAdv = g->Scheme;
-       g->bThemeChanged = FALSE;
-       g->bSchemeChanged = FALSE;
-       g->hBoldFont = g->hItalicFont = NULL;
-       g->hbmpColor[0] = g->hbmpColor[1] = g->hbmpColor[2] = NULL;
-       g->bInitializing = FALSE;
-       g->bThemeActive = FALSE;
-
-       LoadThemes(g);
-
-       /*TemplateCount = */ LoadSchemePresetEntries(g->strSelectedStyle);
-
-       hwndColor = GetDlgItem(hwndDlg, IDC_APPEARANCE_COLORSCHEME);
-       g->SchemeId = -1;
-       g->bInitializing = TRUE;
-
-       hwndTheme = GetDlgItem(hwndDlg, IDC_APPEARANCE_VISUAL_STYLE);
-       for(i = 0; i < g->ThemesCount; i++)
-       {
-               PTHEME pTheme = (PTHEME)DSA_GetItemPtr(g->Themes, i);
-               iListIndex = SendMessage(hwndTheme, CB_ADDSTRING, 0, (LPARAM)pTheme->displayName);
-               SendMessage(hwndTheme, CB_SETITEMDATA, iListIndex, i);
-               if((!pTheme->themeFileName && !IsThemeActive()) || 
-                  (pTheme->themeFileName && g->pszThemeFileName && wcscmp(pTheme->themeFileName, g->pszThemeFileName) == 0 ))
-               {
-                       g->ThemeId = i;
-                       g->bThemeActive = (pTheme->themeFileName != NULL);
-                       SendMessage(hwndTheme, CB_SETCURSEL, (WPARAM)iListIndex, 0);
-                       AppearancePage_ShowColorScemes(g, hwndColor, i);
-               }
-
-       }
-
-       g->bInitializing = FALSE;
-
-       return FALSE;
+    INT iListIndex;
+    HWND hwndTheme;
+    GLOBALS *g;
+    RECT rcPreview;
+    HDC hdcScreen;
+    PTHEME pTheme;
+
+    g = (GLOBALS*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBALS));
+    if (g == NULL)
+        return FALSE;
+
+    SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)g);
+
+    g->bInitializing = TRUE;
+
+    if (!LoadCurrentScheme(&g->Scheme))
+        return FALSE;
+
+    g->pThemes = LoadThemes();
+    if (g->pThemes)
+    {
+        if (!GetActiveTheme(g->pThemes, &g->ActiveTheme))
+            g->ActiveTheme.ThemeActive = FALSE;
+
+        /* 
+         * Keep a copy of the selected classic theme in order to select this
+         * when user selects the classic theme (and not a horrible random theme )
+         */
+        if (!GetActiveClassicTheme(g->pThemes, &g->ClassicTheme))
+        {
+            g->ClassicTheme.Theme = g->pThemes;
+            g->ClassicTheme.Color = g->pThemes->ColoursList;
+            g->ClassicTheme.Size = g->ClassicTheme.Color->ChildStyle;
+        }
+
+        if (g->ActiveTheme.ThemeActive == FALSE)
+            g->ActiveTheme = g->ClassicTheme;
+
+        GetClientRect(GetDlgItem(hwndDlg, IDC_APPEARANCE_PREVIEW), &rcPreview);
+
+        hdcScreen = GetDC(NULL);
+        g->hbmpThemePreview = CreateCompatibleBitmap(hdcScreen, rcPreview.right, rcPreview.bottom);
+        g->hdcThemePreview = CreateCompatibleDC(hdcScreen);
+        SelectObject(g->hdcThemePreview, g->hbmpThemePreview);
+        ReleaseDC(NULL, hdcScreen);
+
+        hwndTheme = GetDlgItem(hwndDlg, IDC_APPEARANCE_VISUAL_STYLE);
+
+        for (pTheme = g->pThemes; pTheme; pTheme = pTheme->NextTheme)
+        {
+            iListIndex = SendMessage(hwndTheme, CB_ADDSTRING, 0, (LPARAM)pTheme->DisplayName);
+            SendMessage(hwndTheme, CB_SETITEMDATA, iListIndex, (LPARAM)pTheme);
+            if (pTheme == g->ActiveTheme.Theme)
+            {
+                SendMessage(hwndTheme, CB_SETCURSEL, (WPARAM)iListIndex, 0);
+            }
+        }
+
+        if (g->ActiveTheme.Theme)
+        {
+            AppearancePage_ShowColorSchemes(hwndDlg, g);
+            AppearancePage_ShowSizes(hwndDlg, g);
+            AppearancePage_UpdateThemePreview(hwndDlg, g);
+        }
+    }
+    g->bInitializing = FALSE;
+
+    return FALSE;
 }
 
 static VOID
 AppearancePage_OnDestroy(HWND hwndDlg, GLOBALS *g)
 {
-       LocalFree(g);
+    HeapFree(GetProcessHeap(), 0, g);
 }
 
-static INT
-GetSelectedId(HWND hwndDlg, int nIDDlgItem)
+static PVOID
+GetSelectedData(HWND hwndDlg, int nIDDlgItem)
 {
-       HWND hwndCombo;
-       INT sel;
-
-       hwndCombo = GetDlgItem(hwndDlg, nIDDlgItem);
-       sel = SendMessage(hwndCombo, CB_GETCURSEL, 0, 0);
-       if (sel == CB_ERR)
-               return -1;
-       return (INT)SendMessage(hwndCombo, CB_GETITEMDATA, (WPARAM)sel, 0);
+    HWND hwndCombo;
+    INT sel;
+
+    hwndCombo = GetDlgItem(hwndDlg, nIDDlgItem);
+    sel = SendMessage(hwndCombo, CB_GETCURSEL, 0, 0);
+    if (sel == CB_ERR)
+        return NULL;
+    return (PVOID)SendMessage(hwndCombo, CB_GETITEMDATA, (WPARAM)sel, 0);
 }
 
 INT_PTR CALLBACK
 AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-       GLOBALS *g;
-       LPNMHDR lpnm;
-
-       g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
-
-       switch (uMsg)
-       {
-               case WM_INITDIALOG:
-                       return AppearancePage_OnInit(hwndDlg);
-
-               case WM_DESTROY:
-                       AppearancePage_OnDestroy(hwndDlg, g);
-                       break;
-
-               case WM_COMMAND:
-                       switch (LOWORD(wParam))
-                       {
-                               case IDC_APPEARANCE_EFFECTS:
-                                       if (DialogBoxParam(hApplet, MAKEINTRESOURCE(IDD_EFFAPPEARANCE),
-                                                                          hwndDlg, EffAppearanceDlgProc, (LPARAM)g) == IDOK)
-                                       {
-                                               PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
-                                               g->Scheme = g->SchemeAdv;
-                                               g->bSchemeChanged = TRUE;
-                                               // Effects dialog doesn't change the color scheme, therefore the following lines are commented out, until fixed finally
-                                               //g->SchemeId = -1;     /* Customized */
-                                               //SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_COLORSCHEME, CB_SETCURSEL, (WPARAM)-1, 0);
-                                               //SetDlgItemText(hwndDlg, IDC_APPEARANCE_COLORSCHEME, TEXT(""));
-                                               SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->Scheme);
-                                       }
-                                       break;
-
-                               case IDC_APPEARANCE_ADVANCED:
-                                       if (DialogBoxParam(hApplet, MAKEINTRESOURCE(IDD_ADVAPPEARANCE),
-                                                                          hwndDlg, AdvAppearanceDlgProc, (LPARAM)g) == IDOK)
-                                       {
-                                               PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
-                                               g->bSchemeChanged = TRUE;
-                                               g->Scheme = g->SchemeAdv;
-                                               g->SchemeId = -1;       /* Customized */
-                                               g_GlobalData.desktop_color = g->Scheme.crColor[COLOR_DESKTOP];
-
-                                               SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_COLORSCHEME, CB_SETCURSEL, (WPARAM)-1, 0);
-                                               SetDlgItemText(hwndDlg, IDC_APPEARANCE_COLORSCHEME, TEXT(""));
-
-                                               SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->Scheme);
-                                       }
-                                       break;
-
-                               case IDC_APPEARANCE_COLORSCHEME:
-                                       if (HIWORD(wParam) == CBN_SELCHANGE && !g->bInitializing)
-                                       {
-                                               INT SchemeId = GetSelectedId(hwndDlg, IDC_APPEARANCE_COLORSCHEME);
-
-                                               PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
-
-                                               if(g->bThemeActive == FALSE)
-                                               {
-                                                       COLOR_SCHEME Scheme;
-
-                                                       g->bSchemeChanged = TRUE;
-                                                       if (SchemeId != -1 && LoadSchemeFromReg(&Scheme, SchemeId))
-                                                       {
-                                                               g->Scheme = Scheme;
-                                                               g_GlobalData.desktop_color = g->Scheme.crColor[COLOR_DESKTOP];
-                                                               SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&Scheme);
-                                                       }
-                                               }
-                                               else
-                                               {
-                                                       g->bThemeChanged = TRUE;
-                                               }
-                                       }
-                                       break;
-                               case IDC_APPEARANCE_VISUAL_STYLE:
-                                       if (HIWORD(wParam) == CBN_SELCHANGE && !g->bInitializing)
-                                       {
-                                               INT ThemeId = GetSelectedId(hwndDlg, IDC_APPEARANCE_VISUAL_STYLE);
-                                               HWND hwndColor = GetDlgItem(hwndDlg, IDC_APPEARANCE_COLORSCHEME);
-
-                                               PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
-
-                                               g->bThemeActive = (ThemeId!=0);
-                                               g->bThemeChanged = TRUE;
-                                               AppearancePage_ShowColorScemes(g, hwndColor, ThemeId);
-                                       }
-                                       break;
-                       }
-                       break;
-
-               case WM_NOTIFY:
-                       lpnm = (LPNMHDR)lParam;
-                       switch (lpnm->code)
-                       {
-                               case PSN_APPLY:
-
-                                       g->ThemeId = GetSelectedId(hwndDlg, IDC_APPEARANCE_VISUAL_STYLE);
-                                       g->SchemeId = GetSelectedId(hwndDlg, IDC_APPEARANCE_COLORSCHEME);
-
-                                       if(g->bSchemeChanged)
-                                       {
-                                               ApplyScheme(&g->Scheme, g->SchemeId);
-                                       }
-
-                                       if(g->bThemeChanged)
-                                       {
-                                               PTHEME pTheme = (PTHEME)DSA_GetItemPtr(g->Themes, g->ThemeId);
-                                               ActivateTheme(pTheme, g->SchemeId, 0);
-                                       }
-
-                                       SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->Scheme);
-                                       g->bThemeChanged = FALSE;
-                                       g->bSchemeChanged = FALSE;
-                                       SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, (LONG_PTR)PSNRET_NOERROR);
-                                       return TRUE;
-
-                               case PSN_KILLACTIVE:
-                                       SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, (LONG_PTR)FALSE);
-                                       return TRUE;
-
-                               case PSN_SETACTIVE:
-                                       if (g->Scheme.crColor[COLOR_DESKTOP] != g_GlobalData.desktop_color)
-                                       {
-                                               g->Scheme.crColor[COLOR_DESKTOP] = g_GlobalData.desktop_color;
-                                               SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->Scheme);
-                                       }
-                                       break;
-                       }
-                       break;
-       }
-
-       return FALSE;
+    GLOBALS *g;
+    LPNMHDR lpnm;
+
+    g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
+
+    switch (uMsg)
+    {
+        case WM_INITDIALOG:
+            return AppearancePage_OnInit(hwndDlg);
+
+        case WM_DESTROY:
+            AppearancePage_OnDestroy(hwndDlg, g);
+            break;
+
+        case WM_COMMAND:
+            if(g == NULL || g->bInitializing)
+                return FALSE;
+
+            switch (LOWORD(wParam))
+            {
+                case IDC_APPEARANCE_EFFECTS:
+                    if (DialogBoxParam(hApplet, MAKEINTRESOURCE(IDD_EFFAPPEARANCE),
+                                       hwndDlg, EffAppearanceDlgProc, (LPARAM)g) == IDOK)
+                    {
+                        PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
+                        g->Scheme = g->SchemeAdv;
+                        g->bSchemeChanged = TRUE;
+                    }
+                    break;
+
+                case IDC_APPEARANCE_ADVANCED:
+                    if (DialogBoxParam(hApplet, MAKEINTRESOURCE(IDD_ADVAPPEARANCE),
+                                       hwndDlg, AdvAppearanceDlgProc, (LPARAM)g) == IDOK)
+                    {
+                        PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
+                        g->bSchemeChanged = TRUE;
+                        g->Scheme = g->SchemeAdv;
+                        g_GlobalData.desktop_color = g->Scheme.crColor[COLOR_DESKTOP];
+
+                        AppearancePage_UpdateThemePreview(hwndDlg, g);
+                    }
+                    break;
+
+                case IDC_APPEARANCE_COLORSCHEME:
+                    if (HIWORD(wParam) == CBN_SELCHANGE)
+                    {
+                        g->ActiveTheme.Color = (PTHEME_STYLE)GetSelectedData(hwndDlg, IDC_APPEARANCE_COLORSCHEME);
+                        if (g->ActiveTheme.Color->ChildStyle != NULL)
+                            g->ActiveTheme.Size = g->ActiveTheme.Color->ChildStyle;
+
+                        g->bSchemeChanged = TRUE;
+                        if (g->ActiveTheme.ThemeActive)
+                            g->bThemeChanged = TRUE;
+
+                        PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
+
+                        AppearancePage_LoadSelectedScheme(hwndDlg, g);
+                        AppearancePage_ShowSizes(hwndDlg, g);
+                        AppearancePage_UpdateThemePreview(hwndDlg, g);
+                    }
+                    break;
+
+                case IDC_APPEARANCE_VISUAL_STYLE:
+                    if (HIWORD(wParam) == CBN_SELCHANGE)
+                    {
+                        PTHEME pTheme  = (PTHEME)GetSelectedData(hwndDlg, IDC_APPEARANCE_VISUAL_STYLE);
+                       
+                        if (g->ClassicTheme.Theme == pTheme)
+                            g->ActiveTheme = g->ClassicTheme;
+                        else
+                        {
+                            g->ActiveTheme.Theme = pTheme;
+                            g->ActiveTheme.Size = pTheme->SizesList;
+                            g->ActiveTheme.Color = pTheme->ColoursList;
+                            g->ActiveTheme.ThemeActive = TRUE;
+                        }
+
+                        g->bThemeChanged = TRUE;
+                        g->bSchemeChanged = TRUE;
+
+                        PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
+
+                        AppearancePage_ShowColorSchemes(hwndDlg, g);
+                        AppearancePage_ShowSizes(hwndDlg, g);
+                        AppearancePage_LoadSelectedScheme(hwndDlg, g);
+                        AppearancePage_UpdateThemePreview(hwndDlg, g);
+                    }
+                    break;
+
+                case IDC_APPEARANCE_SIZE:
+                    if (HIWORD(wParam) == CBN_SELCHANGE)
+                    {
+                        g->ActiveTheme.Size = (PTHEME_STYLE)GetSelectedData(hwndDlg, IDC_APPEARANCE_SIZE);
+                        g->bSchemeChanged = TRUE;
+                        if(g->ActiveTheme.ThemeActive)
+                            g->bThemeChanged = TRUE;
+
+                        PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
+
+                        AppearancePage_LoadSelectedScheme(hwndDlg, g);
+                        AppearancePage_UpdateThemePreview(hwndDlg, g);
+                    }
+            }
+            break;
+
+        case WM_NOTIFY:
+            lpnm = (LPNMHDR)lParam;
+            switch (lpnm->code)
+            {
+                case PSN_APPLY:
+
+                    if (g->bThemeChanged)
+                    {
+                        ActivateTheme(&g->ActiveTheme);
+                    }
+
+                    if (g->bSchemeChanged)
+                    {
+                        ApplyScheme(&g->Scheme, &g->ActiveTheme);
+                        if (g->ActiveTheme.ThemeActive == FALSE)
+                            g->ClassicTheme = g->ActiveTheme;
+                    }
+
+                    AppearancePage_UpdateThemePreview(hwndDlg, g);
+                    g->bThemeChanged = FALSE;
+                    g->bSchemeChanged = FALSE;
+                    SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, (LONG_PTR)PSNRET_NOERROR);
+                    return TRUE;
+
+                case PSN_KILLACTIVE:
+                    SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, (LONG_PTR)FALSE);
+                    return TRUE;
+
+                case PSN_SETACTIVE:
+                    if (g->Scheme.crColor[COLOR_DESKTOP] != g_GlobalData.desktop_color)
+                    {
+                        g->Scheme.crColor[COLOR_DESKTOP] = g_GlobalData.desktop_color;
+                        AppearancePage_UpdateThemePreview(hwndDlg, g);
+                    }
+                    break;
+            }
+            break;
+    }
+
+    return FALSE;
 }