// DialogRunOrNot.h : header file
//

#ifdef LONGHEADERFILENAMES
    #include "licenseBmp.h"
#else
    #include "LICENS~1.H"
#endif

/////////////////////////////////////////////////////////////////////////////
// CDialogRunOrNot dialog

class CDialogRunOrNot
    {
// Construction
public:
        CDialogRunOrNot(RRNIN *rrin, RRNOUT* prro, HWND pParent = NULL);   // standard constructor
    ~CDialogRunOrNot();

public:
        LPCTSTR                 ProgramName();
        LPCTSTR                 Publisher();
        LPCTSTR                 Agency();
        BOOL                    FHasEndorsements();
        BOOL                    FLinkProgram();
        BOOL                    FLinkAgency();
        BOOL                    FHasLinks()             { return FHasEndorsements() || FLinkProgram() || FLinkAgency(); }
        BOOL                    FIncludeSeal()  { return m_rrn.fIncludeSeal; }
    BOOL            FTestingOnly()  { return m_rrn.fTestingOnly; }
    BOOL            FCommercial()   { return m_rrn.fCommercial; }
        HBITMAP                 AgencyLogo()    { return m_rrn.hbmpAgencyLogo; }
        FILETIME        ExpirationDate();
        void                    ClickOnLink(RRN);
    HRESULT         GetToolTipText(RRN rrn, LPOLESTR* pwsz);

public:
        RRNOUT*         m_prro;                     // our output data
    HINSTANCE       Hinst();
    int             DoModal();
        BOOL            OnInitDialog();
    HWND            GetWindow();
    void            SetWindow(HWND);

        void            OnOK();
    void            OnCancel();
    void            OnAdvancedButton();
    void            OnPaletteChanged(HWND hwndChanger);
    int             OnQueryNewPalette();


// Implementation
private:
    HWND            m_hWnd;
    HWND            m_hWndParent;
        RRNIN           m_rrn;                          // our input parameters

    enum { CCHMAX = 128 };

        TCHAR       m_szBanter          [CCHMAX];
        TCHAR       m_szAllByPublisher  [CCHMAX];
        TCHAR       m_szAllByAgency     [CCHMAX];

        TCHAR       m_szAgency          [CCHMAX];
        TCHAR       m_szProgram         [CCHMAX];
        TCHAR       m_szPublisher       [CCHMAX];


    void        CopyInto(TCHAR sz[CCHMAX], LPCWSTR);
    void        LoadString(TCHAR sz[CCHMAX], UINT);
    HWND        WindowOf(UINT id);
    void        DoCheck(BOOL fSave, int nIDC, int& value);

public:
    CLicenseBmp m_licenseBmp;
    HCURSOR     m_cursorHand;
        BOOL        m_wildAgency;
        BOOL        m_wildPublisher;
    };

/////////////////////////////////////////////////////////////////////////////

inline HWND CDialogRunOrNot::WindowOf(UINT id)
// Return the HWND of this control of ours
    {
    return ::GetDlgItem(GetWindow(), id);
    }

inline HWND CDialogRunOrNot::GetWindow()
    {
    return m_hWnd;
    }

inline void CDialogRunOrNot::SetWindow(HWND hwnd)
    {
    m_hWnd = hwnd;
    SetWindowLong(hwnd, GWL_USERDATA, (LONG)this);
    }

BOOL CALLBACK RunOrNotDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

inline int CDialogRunOrNot::DoModal()
    {
    return DialogBoxParam
        (
        Hinst(),
        MAKEINTRESOURCE(IDD_RUNORNOT),
        m_hWndParent,
        RunOrNotDialogProc,
        (LPARAM)this
        );
    }

inline HINSTANCE CDialogRunOrNot::Hinst()
    {
    return hinst;
    }

inline void CDialogRunOrNot::OnOK()
        {
        DoCheck(TRUE, IDC_WILDCARDAGENCY,    m_wildAgency);
        DoCheck(TRUE, IDC_WILDCARDPUBLISHER, m_wildPublisher);

        m_prro->rrn             = RRN_YES;
        m_prro->fWildPublisher  = m_wildPublisher;
        m_prro->fWildAgency     = m_wildAgency;

        ::EndDialog(GetWindow(), IDOK);
        }

inline void CDialogRunOrNot::OnCancel()
    {
        m_prro->rrn             = RRN_NO;
        m_prro->fWildPublisher  = FALSE;
        m_prro->fWildAgency     = FALSE;

    ::EndDialog(GetWindow(), IDCANCEL); 
    }