зеркало из https://github.com/mozilla/gecko-dev.git
269 строки
6.7 KiB
C++
Executable File
269 строки
6.7 KiB
C++
Executable File
/* -*- 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.
|
|
*/
|
|
|
|
// This file contains the declarations of the various Bookmark Quick
|
|
// File classes.
|
|
|
|
|
|
#if !defined(__QUICKFIL_H__)
|
|
#define __QUICKFIL_H__
|
|
|
|
#ifndef __AFXWIN_H__
|
|
#error include 'stdafx.h' before including this file for PCH
|
|
#endif
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Class: CTreeItemList
|
|
*
|
|
* DESCRIPTION:
|
|
* This is a collection class for holding CTreeItem objects.
|
|
*
|
|
****************************************************************************/
|
|
|
|
class CTreeItem;
|
|
#define CTreeItemListBase CPtrArray
|
|
|
|
class CTreeItemList : public CTreeItemListBase
|
|
{
|
|
public:
|
|
CTreeItemList();
|
|
virtual ~CTreeItemList();
|
|
|
|
int Add(CTreeItem * pItem)
|
|
{
|
|
return(CTreeItemListBase::Add(pItem));
|
|
}
|
|
CTreeItem * Get(int nIndex) const
|
|
{
|
|
return((CTreeItem *)GetAt(nIndex));
|
|
}
|
|
|
|
protected:
|
|
|
|
private:
|
|
|
|
}; // END OF CLASS CTreeItemList()
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Class: CTreeItem
|
|
*
|
|
* DESCRIPTION:
|
|
* This class provides an abstract object for representing an item
|
|
* within a hierarchical tree.
|
|
*
|
|
****************************************************************************/
|
|
|
|
class CTreeItem
|
|
{
|
|
public:
|
|
CTreeItem(CBitmap * pUnselectedImg, CBitmap *pSelectedImg, const UINT uID, const CString & strLabel,
|
|
CMenu *pSubMenu = NULL);
|
|
virtual ~CTreeItem();
|
|
|
|
CTreeItemList * GetSubItems()
|
|
{
|
|
return(&m_SubItems);
|
|
}
|
|
|
|
CMenu * GetSubMenu(void)
|
|
{
|
|
return(m_pSubMenu);
|
|
}
|
|
|
|
CBitmap * GetUnselectedImage() const
|
|
{
|
|
return (m_pUnselectedImg);
|
|
}
|
|
|
|
CBitmap * GetSelectedImage() const
|
|
{
|
|
return(m_pSelectedImg);
|
|
}
|
|
const UINT GetID() const
|
|
{
|
|
return(m_uID);
|
|
}
|
|
|
|
const CString & GetLabel() const
|
|
{
|
|
return(m_strLabel);
|
|
}
|
|
|
|
void SetUnselectedBitmapSize(CSize size)
|
|
{
|
|
m_unselectedBitmapSize = size;
|
|
}
|
|
|
|
CSize GetUnselectedBitmapSize(void)
|
|
{
|
|
return m_unselectedBitmapSize;
|
|
}
|
|
|
|
void SetSelectedBitmapSize(CSize size)
|
|
{
|
|
m_selectedBitmapSize = size;
|
|
}
|
|
|
|
CSize GetSelectedBitmapSize(void)
|
|
{
|
|
return m_selectedBitmapSize;
|
|
}
|
|
|
|
void SetTextSize(CSize size)
|
|
{
|
|
m_textSize = size;
|
|
}
|
|
|
|
CSize GetTextSize(void)
|
|
{
|
|
return m_textSize;
|
|
}
|
|
|
|
void SetAcceleratorSize(CSize size)
|
|
{
|
|
m_accelSize = size;
|
|
}
|
|
|
|
CSize GetAcceleratorSize(void)
|
|
{
|
|
return m_accelSize;
|
|
}
|
|
|
|
// Aurora improvements to handle custom icons and arbitrary URLs.
|
|
void SetIcon(void* pIcon, IconType iconType) { m_pCustomIcon = pIcon; m_nIconType = iconType; }
|
|
HICON GetLocalFileIcon() { return (HICON)m_pCustomIcon; }
|
|
CRDFImage* GetCustomIcon() { return (CRDFImage*)m_pCustomIcon; }
|
|
IconType GetIconType() { return m_nIconType; }
|
|
|
|
protected:
|
|
CBitmap * m_pUnselectedImg; // Image to be displayed for this item when unselected
|
|
CBitmap * m_pSelectedImg; // Image to be displayed for this item when selected
|
|
UINT m_uID; // Unique item identifier
|
|
CString m_strLabel; // Text label for this item
|
|
|
|
CSize m_unselectedBitmapSize; // The size of the unselected bitmap
|
|
CSize m_selectedBitmapSize; // The size of the selected bitmap
|
|
CSize m_textSize; // The size of the text in the font when this is calculated
|
|
CSize m_accelSize; // The size of the accelerator in the font when this is calculated
|
|
CTreeItemList m_SubItems; // List of items subordinate to this one
|
|
CMenu *m_pSubMenu;
|
|
|
|
void* m_pCustomIcon;
|
|
IconType m_nIconType;
|
|
|
|
private:
|
|
|
|
}; // END OF CLASS CTreeItem()
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Class: CTreeMenu
|
|
*
|
|
* DESCRIPTION:
|
|
* This class provides a custom, owner draw menu object for displaying
|
|
* graphics as well as text in a menu item. A group of these objects
|
|
* can be used to construct a hierarchical list.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#define CTreeMenuBase CMenu
|
|
|
|
class CTreeMenu : public CTreeMenuBase, public CCustomImageObject
|
|
{
|
|
public:
|
|
CTreeMenu();
|
|
~CTreeMenu();
|
|
|
|
BOOL AddItem(CTreeItem * pItem, int nPosition = 0, CTreeMenu *pSubMenu = NULL, void* pCustomIcon = NULL, IconType m_nIconType = BUILTIN_BITMAP);
|
|
BOOL Create()
|
|
{
|
|
return(CreatePopupMenu());
|
|
}
|
|
void ClearItems(int start, int fromEnd);
|
|
void CalculateItemDimensions(void);
|
|
CMenu * FindMenu(CString& menuName);
|
|
// if nCommand is 0, then the mnemonic is for a submenu
|
|
void AddMnemonic(TCHAR cMnemonic, UINT nCommand, int nPosition);
|
|
// if nCommand is 0 then mnemonic is for a submenu
|
|
// it returns FALSE if there is no mnemonic
|
|
BOOL GetMnemonic(TCHAR cMnemonic, UINT &nCommand, int &nPosition);
|
|
void SetParent(CWnd *pParent) { m_pParent = pParent;}
|
|
|
|
virtual void LoadComplete(HT_Resource r);
|
|
|
|
protected:
|
|
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMI);
|
|
virtual void DrawItem(LPDRAWITEMSTRUCT lpDI);
|
|
virtual CSize DrawImage(CDC * pDC, const CRect & rect, CTreeItem * pItem, BOOL bIsSelected);
|
|
virtual void DeleteMnemonics(void);
|
|
|
|
private:
|
|
int m_WidestImage;
|
|
int m_WidestText;
|
|
int m_WidestAccelerator;
|
|
CTreeItemList m_itemList;
|
|
CMapWordToPtr m_mnemonicMap;
|
|
CWnd *m_pParent;
|
|
private:
|
|
CSize MeasureBitmap(CBitmap *pBitmap);
|
|
CSize MeasureText(CString text);
|
|
|
|
|
|
}; // END OF CLASS CTreeMenu()
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Class: CPopupTree
|
|
*
|
|
* DESCRIPTION:
|
|
* This class represents a hierarchical popup menu object that can be
|
|
* used for selecting from a list of sub-categorized items.
|
|
*
|
|
****************************************************************************/
|
|
|
|
class CPopupTree
|
|
{
|
|
public:
|
|
CPopupTree(CTreeItemList * pItems);
|
|
virtual ~CPopupTree();
|
|
|
|
BOOL Activate(int nX, int nY, CWnd * pParent);
|
|
|
|
protected:
|
|
void BuildMenu(CTreeMenu * pMenu, CTreeItemList * pItems);
|
|
|
|
CTreeItemList * m_pTree; // Contains entire tree of abstract item
|
|
// objects. The menu is constructed from
|
|
// this.
|
|
|
|
private:
|
|
CObArray m_GarbageList; // Used for garbage collection, since we
|
|
// dynamically allocate stuff within a
|
|
// recursive function.
|
|
|
|
|
|
}; // END OF CLASS CPopupTree()
|
|
|
|
|
|
#endif // __QUICKFIL_H__
|