/* -*- 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__