save/restore toolbar collapsed state from RDF

This commit is contained in:
danm%netscape.com 1998-09-01 22:48:17 +00:00
parent 5b458783eb
commit 8589f7c2a6
9 changed files with 99 additions and 12 deletions

View File

@ -154,6 +154,7 @@ public:
virtual void RenameCustomizableToolbar(UINT nStringID) = 0;
virtual void FinishedAddingBrowserToolbars()=0;
virtual void SetToolbarStyle( int nToolbarStyle )=0;
virtual void ToolbarActivation()=0;
virtual BOOL CustToolbarShowing()=0;
virtual void ViewCustToolbar(BOOL bShow) = 0;
virtual void Customize()=0;

View File

@ -312,6 +312,11 @@ int CDragToolbar::GetToolbarHeight(void)
return height;
}
void CDragToolbar::SetOpen(BOOL bIsOpen)
{
m_bIsOpen = bIsOpen;
}
void CDragToolbar::SetToolbarStyle(int nToolbarStyle)
{
m_pToolbar->SetToolbarStyle(nToolbarStyle);
@ -927,11 +932,11 @@ CDragToolbar* CCustToolbar::CreateDragBar()
return new CDragToolbar();
}
void CCustToolbar::AddNewWindow(UINT nToolbarID, CToolbarWindow* pWindow, int nPosition, int nNoviceHeight, int nAdvancedHeight,
UINT nTabBitmapIndex, CString tabTip, BOOL bIsNoviceMode, BOOL bIsOpen, BOOL bIsAnimation)
void CCustToolbar::AddNewWindowGuts(UINT nToolbarID, CToolbarWindow* pWindow, int nPosition,
CString tabTip, BOOL bForceOpen, BOOL bIsOpen)
{
if(m_pToolbarArray[nPosition] != NULL || nPosition < 0 || nPosition >= m_nNumToolbars)
if(nPosition < 0 || nPosition >= m_nNumToolbars || m_pToolbarArray[nPosition] != NULL)
nPosition = FindFirstAvailablePosition();
CDragToolbar *pDragToolbar = CreateDragBar();
@ -941,7 +946,10 @@ void CCustToolbar::AddNewWindow(UINT nToolbarID, CToolbarWindow* pWindow, int nP
m_nNumShowing++;
m_pToolbarArray[nPosition] = pDragToolbar;
pWindow->GetToolbar()->ShowWindow(SW_SHOW);
pDragToolbar->SetOpen(bIsOpen);
if (bForceOpen)
pDragToolbar->SetOpen(bIsOpen);
else
bIsOpen = pDragToolbar->GetOpen();
pDragToolbar->SetTabTip(tabTip);
pDragToolbar->SetToolbarID(nToolbarID);
@ -1189,8 +1197,13 @@ void CCustToolbar::SetToolbarStyle(int nToolbarStyle)
m_pParent->RecalcLayout();
RedrawWindow();
}
void CCustToolbar::BeActiveToolbar()
{
for(int i = 0; i < m_nNumToolbars; i++)
if(m_pToolbarArray[i] != NULL)
m_pToolbarArray[i]->BeActiveToolbar();
}
void CCustToolbar::OnUpdateCmdUI( CFrameWnd* pTarget, BOOL bDisableIfNoHndler )

View File

@ -139,7 +139,7 @@ protected:
public:
CDragToolbar();
~CDragToolbar();
int Create(CWnd *pParent, CToolbarWindow *pToolbar);
virtual int Create(CWnd *pParent, CToolbarWindow *pToolbar);
virtual BOOL ShouldClipChildren() { return TRUE; }
@ -149,7 +149,7 @@ public:
void SetMouseOffsetWithinToolbar(int y) { m_mouseDownPoint.y = y; }
void SetShowing(BOOL bIsShowing) { m_bIsShowing = bIsShowing; }
BOOL GetShowing(void) { return m_bIsShowing; }
void SetOpen(BOOL bIsOpen) { m_bIsOpen = bIsOpen; }
virtual void SetOpen(BOOL bIsOpen);
BOOL GetOpen(void) { return m_bIsOpen;}
void SetTabTip(CString tabTip);
CString &GetTabTip (void) { return m_tabTip; }
@ -158,6 +158,7 @@ public:
void SetToolbarID(int nToolbarID) {m_nToolbarID = nToolbarID;}
UINT GetToolbarID(void) { return m_nToolbarID;}
void SetToolbarStyle(int nToolbarStyle);
virtual void BeActiveToolbar() {}
void SetAnimation(CAnimationBar2 *pAnimation);
HTAB_BITMAP GetHTabType(void) { return m_eHTabType;}
void OnUpdateCmdUI( CFrameWnd* pTarget, BOOL bDisableIfNoHndler );
@ -245,9 +246,13 @@ public:
//Creation
int Create(CFrameWnd* pParent, BOOL bHasAnimation);
void AddNewWindow(UINT nToolbarID, CToolbarWindow* pWindow, int nPosition, int nNoviceHeight, int nAdvancedHeight,
UINT nTabBitmapIndex, CString tabTip, BOOL bIsNoviceMode, BOOL bIsOpen,
BOOL bIsAnimation);
inline void AddNewWindow(UINT nToolbarID, CToolbarWindow* pWindow, int nPosition, int nNoviceHeight, int nAdvancedHeight,
UINT nTabBitmapIndex, CString tabTip, BOOL bIsNoviceMode, BOOL bIsOpen, BOOL bIsAnimation)
{ AddNewWindowGuts(nToolbarID, pWindow, nPosition, tabTip, TRUE, bIsOpen); }
inline void AddNewWindow(UINT nToolbarID, CToolbarWindow* pWindow, int nPosition, int nNoviceHeight, int nAdvancedHeight,
UINT nTabBitmapIndex, CString tabTip, BOOL bIsNoviceMode, BOOL bIsAnimation)
{ AddNewWindowGuts(nToolbarID, pWindow, nPosition, tabTip, FALSE, FALSE); }
// Call this function when you are finished adding the toolbars that go in the
// customizable toolbar.
void FinishedAddingNewWindows(void){}
@ -258,6 +263,7 @@ public:
void StopAnimation();
void StartAnimation();
void SetToolbarStyle(int nToolbarStyle);
void BeActiveToolbar();
BOOL IsWindowShowing(CWnd *pToolbar);
BOOL IsWindowShowing(UINT nToolbarID);
@ -321,6 +327,8 @@ public:
protected:
// virtual BOOL OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult );
void AddNewWindowGuts(UINT nToolbarID, CToolbarWindow* pWindow, int nPosition,
CString tabTip, BOOL bForceOpen, BOOL bIsOpen);
int CheckOpenButtons(CPoint point);
int CheckClosedButtons(CPoint point);
BOOL PointInClosedTab(CPoint point, HTAB_BITMAP tabType, int nNumClosedButtons, int nStartX,

View File

@ -69,6 +69,7 @@ BEGIN_MESSAGE_MAP(CMainFrame, CGenericFrame)
ON_WM_INITMENUPOPUP()
ON_WM_MENUSELECT()
ON_WM_SHOWWINDOW()
ON_WM_ACTIVATE()
ON_COMMAND(ID_OPTIONS_TITLELOCATION_BAR, OnOptionsTitlelocationBar)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_TITLELOCATION_BAR, OnUpdateOptionsTitlelocationBar)
ON_WM_TIMER()
@ -587,6 +588,14 @@ void CMainFrame::OnShowWindow (BOOL bShow, UINT nStatus)
RecalcLayout();
}
void CMainFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CGenericFrame::OnActivate(nState, pWndOther, bMinimized);
IChrome *chrome = GetChrome();
if (chrome)
chrome->ToolbarActivation();
}
// returns TRUE if something was added to the folder, false otherwise
BOOL CMainFrame::FileBookmark(HT_Resource pFolder)
{

View File

@ -1015,6 +1015,12 @@ void CGenericChrome::SetToolbarStyle( int nToolbarStyle )
}
}
void CGenericChrome::ToolbarActivation()
{
if (m_pCustToolbar != NULL)
m_pCustToolbar->BeActiveToolbar();
}
BOOL CGenericChrome::CustToolbarShowing(void)
{
return m_pCustToolbar->IsWindowVisible();

View File

@ -261,6 +261,7 @@ public:
virtual void RenameCustomizableToolbar(UINT nStringID);
virtual void FinishedAddingBrowserToolbars();
virtual void SetToolbarStyle( int nToolbarStyle );
virtual void ToolbarActivation();
virtual BOOL CustToolbarShowing();
virtual void ViewCustToolbar(BOOL bShow);
virtual void Customize();

View File

@ -186,6 +186,7 @@ protected:
afx_msg void OnUpdateViewCommandToolbar(CCmdUI* pCmdUI);
afx_msg void OnUpdateViewLocationToolbar(CCmdUI* pCmdUI);
afx_msg void OnUpdateViewCustomToolbar(CCmdUI* pCmdUI);
afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
#ifdef ENDER
afx_msg LONG OnToolController(UINT,LONG);
#endif

View File

@ -1366,7 +1366,7 @@ static void toolbarNotifyProcedure (HT_Notification ns, HT_Resource n, HT_Event
theApp.m_pToolbarStyle, 43, 27, eSMALL_HTAB);
theToolbarHolder->AddNewWindow(ID_PERSONAL_TOOLBAR+toolbarIDCounter, pWindow, toolbarIDCounter, 43, 27, 1,
HT_GetNodeName(HT_TopNode(theNewToolbar->GetHTView())),theApp.m_pToolbarStyle, TRUE, FALSE);
HT_GetNodeName(HT_TopNode(theNewToolbar->GetHTView())),theApp.m_pToolbarStyle, FALSE);
toolbarIDCounter++;
theToolbarHolder->GetCachedParentWindow()->RecalcLayout();
}
@ -1533,6 +1533,7 @@ int CRDFToolbar::Create(CWnd *pParent)
BOOL fixedSize = FALSE;
void* data;
HT_GetTemplateData(topNode, gNavCenter->toolbarButtonsFixedSize, HT_COLUMN_STRING, &data);
if (data)
{
@ -1683,7 +1684,8 @@ void CRDFToolbar::ChangeButtonSizes(void)
/* RDF toolbars get their style info from RDF. App preference settings
make their way into RDF elsewhere. */
void CRDFToolbar::SetToolbarStyle(int nToolbarStyle) {
void CRDFToolbar::SetToolbarStyle(int nToolbarStyle)
{
CNSToolbar2::SetToolbarStyle(GetDisplayMode());
}
@ -2460,6 +2462,44 @@ END_MESSAGE_MAP()
extern HBITMAP m_hTabBitmap;
int CRDFDragToolbar::Create(CWnd *pParent, CToolbarWindow *pToolbar)
{
int rtnval = CDragToolbar::Create(pParent, pToolbar);
if (rtnval)
{
char *data;
CRDFToolbar* pToolbar = (CRDFToolbar*)m_pToolbar->GetToolbar();
HT_Resource top = HT_TopNode(pToolbar->GetHTView());
HT_GetNodeData(top, gNavCenter->toolbarCollapsed, HT_COLUMN_STRING, (void **)&data);
if (data)
{
if (data[0] == 'y' || data[0] == 'Y')
SetOpen(FALSE);
}
}
return rtnval;
}
void CRDFDragToolbar::SetOpen(BOOL bIsOpen)
{
CDragToolbar::SetOpen(bIsOpen);
CopySettingsToRDF();
}
void CRDFDragToolbar::BeActiveToolbar()
{
CopySettingsToRDF();
}
void CRDFDragToolbar::CopySettingsToRDF(void)
{
char *data = GetOpen() ? "no" : "yes";
CRDFToolbar* pToolbar = (CRDFToolbar*)m_pToolbar->GetToolbar();
HT_Resource top = HT_TopNode(pToolbar->GetHTView());
HT_SetNodeData(top, gNavCenter->toolbarCollapsed, HT_COLUMN_STRING, data);
}
void CRDFDragToolbar::OnPaint(void)
{
CPaintDC dcPaint(this); // device context for painting

View File

@ -346,6 +346,14 @@ class CRDFDragToolbar : public CDragToolbar
{
public:
virtual int Create(CWnd *pParent, CToolbarWindow *pToolbar);
virtual void SetOpen(BOOL bIsOpen);
virtual void BeActiveToolbar();
protected:
void CopySettingsToRDF(void);
public:
// Generated message map functions
//{{AFX_MSG(CDragToolbar)
afx_msg void OnPaint(void);