home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * The contents of this file are subject to the Netscape Public License
- * Version 1.0 (the "NPL"); you may not use this file except in
- * compliance with the NPL. You may obtain a copy of the NPL at
- * http://www.mozilla.org/NPL/
- *
- * Software distributed under the NPL is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
- * for the specific language governing rights and limitations under the
- * NPL.
- *
- * The Initial Developer of this code under the NPL is Netscape
- * Communications Corporation. Portions created by Netscape are
- * Copyright (C) 1998 Netscape Communications Corporation. All Rights
- * Reserved.
- */
-
- ///
- //
- // STATBAR.H
- //
- // DESCRIPTION:
- // This file contains the declaration of the CNetscapeStatusBar
- // class.
- //
- // CREATED: 03/01/96, 12:11:57 AUTHOR: Scott Jones
- //
- ///
-
-
- #if !defined(__STATBAR_H__)
- #define __STATBAR_H__
-
- #ifndef __AFXWIN_H__
- #error include 'stdafx.h' before including this file for PCH
- #endif
-
- #include "taskbar.h"
-
- /****************************************************************************
- *
- * Class: CNetscapeStatusBar
- *
- * DESCRIPTION:
- * This object encapsulates the functionality of our status bar. We do
- * some special things, like the progress bar and security icon.
- *
- ****************************************************************************/
-
- typedef int EStatBarMode;
-
- #define eSBM_INVALID -1
- #define eSBM_Simple 0
- #define eSBM_Panes 1
- #define eSBM_LAST 2 // Derived classes can have modes starting with this enum
-
- #define CNetscapeStatusBarBase CStatusBar
-
- class CNetscapeStatusBar : public CNetscapeStatusBarBase
- {
- // Must do this so we can use IsKindOf
- DECLARE_DYNAMIC(CNetscapeStatusBar)
-
- public:
- CNetscapeStatusBar();
- ~CNetscapeStatusBar();
- BOOL Create( CWnd *pParent, BOOL bSecurityStatus = TRUE, BOOL bTaskbar = TRUE );
-
- BOOL SetIndicators( const UINT* lpIDArray, int nIDCount );
- BOOL ResetPanes( EStatBarMode enStatBarMode, BOOL bForce = FALSE );
-
- void SetPercentDone( const int32 nPercent );
-
- EStatBarMode GetStatBarMode() { return m_enStatBarMode; }
-
- void ShowTaskBar( int iCmdShow );
-
- void StartAnimation();
- void StopAnimation();
-
- BOOL SetTaskBarPaneWidth( int iWidth );
- BOOL SetTaskBarSize( CDockedTaskBar *pTaskBar );
-
- #ifdef _WIN32
- CWnd *SetParent( CWnd *pWndNewParent );
- #endif
-
- protected:
- virtual BOOL CreateDefaultPanes();
- virtual void SaveModeState();
- virtual void SetupMode();
-
- virtual BOOL PreTranslateMessage( MSG *pMsg );
-
- protected:
- //{{AFX_MSG(CNetscapeStatusBar)
- afx_msg void OnPaint();
- afx_msg void OnDestroy();
- afx_msg void OnSize(UINT nType, int cx, int cy);
- afx_msg void OnLButtonDown( UINT nFlags, CPoint point );
- //}}AFX_MSG
-
- protected:
- void DrawProgressBar();
- void DrawSecureStatus(HDC hdc);
- void DrawSignedStatus(HDC hdc);
-
- // Pulsing vapor trails (aka Cylon) mode methods
- protected:
- void StartPulse();
- void StopPulse();
- void PulsingVaporTrails();
- static void CALLBACK EXPORT PulseTimerProc( HWND, UINT, UINT, DWORD );
-
- private:
- class CParentSubclass // Subclasses parent's window
- {
- public:
- CParentSubclass( CWnd *pParent, CNetscapeStatusBar *pStatusBar );
- ~CParentSubclass();
-
- public:
- void SetPrevMode( EStatBarMode enPrevMode ) { m_enPrevMode = enPrevMode; }
- EStatBarMode GetPrevMode() { return m_enPrevMode; }
-
- void StartMonitor();
- void StopMonitor();
-
- public:
- static LRESULT CALLBACK EXPORT ParentSubclassProc( HWND, UINT, WPARAM, LPARAM );
- static void CALLBACK EXPORT MonitorTimerProc( HWND, UINT, UINT, DWORD );
-
- private:
- CNetscapeStatusBar * m_pStatusBar;
- CWnd * m_pParent;
- WNDPROC m_pfOldWndProc;
-
- EStatBarMode m_enPrevMode;
-
- UINT m_uTimerId;
- };
- friend class CParentSubclass;
- friend LRESULT CALLBACK EXPORT CParentSubclass::ParentSubclassProc( HWND, UINT, WPARAM, LPARAM );
-
- private:
- DECLARE_MESSAGE_MAP()
-
- public:
- CFrameGlue *m_pProxy2Frame; // Used while serving OLE container; mainly for JavaScript
-
- protected:
- int32 m_nDone; // Percentage for progress
-
- int32 m_iAnimRef; // Non-zero if animation in progress for parent frame window
-
- UINT m_uTimerId;
- UINT m_uVaporPos;
-
- BOOL m_bTaskbar;
-
- BOOL m_bSecurityStatus;
-
- EStatBarMode m_enStatBarMode;
-
- CNetscapeStatusBar::CParentSubclass *pParentSubclass;
-
- CNSToolTip2 *m_pTooltip;
-
- static HBITMAP sm_hbmpSecure;
- static SIZE sm_sizeSecure;
- static int sm_iRefCount;
-
- // Mode state info for particular pane modes
- private:
- int m_iStatBarPaneWidth; // eSBM_Panes: save the width of the Taskbar pane
- CDockedTaskBar * m_pTaskBar; // Set if the task bar needs resizing
-
- UINT *m_anIDSaved; // Save the panes we were displaying
- int m_iSavedCount;
- };
-
- #endif // __STATBAR_H__
-