#include "priv.h"
#include "shbrows2.h"
#include "commonsb.h"
#include "resource.h"

//
//
//  If you want NT5 defines in the above headerfiles, you gotta set _WIN32_WINNT
//  to 0x0500, which the standard browseui build does not do...
//
//  So we do it here in nt5.cpp.
//
//


// WM_APPCOMMAND handling
//
typedef struct tagAppCmd
{
    UINT idAppCmd;
    UINT idCmd;
} APPCMD;

BOOL CShellBrowser2::_OnAppCommand(WPARAM wParam, LPARAM lParam)
{
    static APPCMD rgcmd[] =
    {
        { APPCOMMAND_BROWSER_BACKWARD, FCIDM_NAVIGATEBACK },
        { APPCOMMAND_BROWSER_FORWARD, FCIDM_NAVIGATEFORWARD },
        { APPCOMMAND_BROWSER_REFRESH, FCIDM_REFRESH },
        { APPCOMMAND_BROWSER_STOP, FCIDM_STOP },
        { APPCOMMAND_BROWSER_SEARCH, FCIDM_VBBSEARCHBAND }, // FCIDM_SEARCHPAGE ?
        { APPCOMMAND_BROWSER_FAVORITES, FCIDM_VBBFAVORITESBAND },
        { APPCOMMAND_BROWSER_HOME, FCIDM_STARTPAGE },
        { APPCOMMAND_LAUNCH_MAIL, FCIDM_MAIL }
    };

    UINT idAppCmd = GET_APPCOMMAND_LPARAM(lParam);
    BOOL bRet = FALSE;

    for (int i = 0 ; i < ARRAYSIZE(rgcmd) ; i++)
    {
        if (rgcmd[i].idAppCmd == idAppCmd)
        {
            OnCommand(GET_WM_COMMAND_MPS(rgcmd[i].idCmd,
                                         GET_WM_COMMAND_HWND(wParam, lParam),
                                         GET_WM_COMMAND_CMD(wParam, lParam)));
            bRet = TRUE;
            break;
        }
    }
    return bRet;
}

// Our NT5 version of the WndProc
//
LPARAM CShellBrowser2::_WndProcBSNT5(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    LPARAM lRet = 0;
    switch(uMsg)
    {
       case WM_APPCOMMAND:
       {
          if (_OnAppCommand(wParam, lParam))
             lRet = 1;
          break;
       }
       default:
          break;
    }

    return lRet;
}