windows-nt/Source/XPSP1/NT/admin/activec/inc/columninfo.h
2020-09-26 16:20:57 +08:00

155 lines
4.4 KiB
C++

//+-------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1994 - 1999
//
// File: columninfo.h
//
// Contents: Classes related to column persistence.
//
//
// Note: The classes in this file (CColumnInfo, CColumnInfoList)
// were in nodemgr/colwidth.h. They are moved here so that
// if columns change conui can ask nodemgr to persist data
// or conui can set headers by asking nodemgr for data.
//
// History: 04-Apr-00 AnandhaG Created
//
//--------------------------------------------------------------------
#ifndef COLUMNINFO_H_
#define COLUMNINFO_H_
#pragma once
using namespace std;
//+-------------------------------------------------------------------
//
// Class: CColumnInfo
//
// Purpose: The minimum information about a column that will be
// persisted. (Width, order, format which can be hidden status)
//
// History: 10-27-1998 AnandhaG Created
//
//--------------------------------------------------------------------
class CColumnInfo : public CSerialObject, public CXMLObject
{
public:
CColumnInfo () : m_nCol(-1), m_nWidth(-1), m_nFormat(0)
{}
CColumnInfo (INT nCol, INT nWidth, INT nFormat)
: m_nCol(nCol), m_nWidth(nWidth), m_nFormat(nFormat)
{}
CColumnInfo(const CColumnInfo& colInfo)
{
m_nFormat = colInfo.m_nFormat;
m_nWidth = colInfo.m_nWidth;
m_nCol = colInfo.m_nCol;
}
CColumnInfo& operator=(const CColumnInfo& colInfo)
{
if (this != &colInfo)
{
m_nCol = colInfo.m_nCol;
m_nFormat = colInfo.m_nFormat;
m_nWidth = colInfo.m_nWidth;
}
return (*this);
}
bool operator ==(const CColumnInfo &colinfo) const
{
return ( (m_nCol == colinfo.m_nCol) &&
(m_nFormat == colinfo.m_nFormat) &&
(m_nWidth == colinfo.m_nWidth) );
}
// Temp members so that CNode can access & modify data. Should be removed soon.
public:
INT GetColIndex () const {return m_nCol;}
INT GetColWidth () const {return m_nWidth;}
bool IsColHidden () const {return (m_nFormat & HDI_HIDDEN);}
void SetColIndex (INT nCol) {m_nCol = nCol;}
void SetColWidth (INT nWidth) {m_nWidth = nWidth;}
void SetColHidden(bool bHidden = true)
{
if (bHidden)
m_nFormat |= HDI_HIDDEN;
else
m_nFormat &= ~HDI_HIDDEN;
}
protected:
INT m_nCol; // The index supplied when snapin inserted the column.
// This is not the index viewed by the user.
INT m_nWidth;
INT m_nFormat;
protected:
// CSerialObject methods
virtual UINT GetVersion() {return 1;}
virtual HRESULT ReadSerialObject (IStream &stm, UINT nVersion /*,LARGE_INTEGER nBytes*/);
protected:
DEFINE_XML_TYPE(XML_TAG_COLUMN_INFO);
virtual void Persist(CPersistor &persistor);
};
//+-------------------------------------------------------------------
//
// Class: ColPosCompare
//
// Purpose: Compare the column position in CColumnInfo and the given position.
// This is used to reorder/search the columns.
//
// History: 10-27-1998 AnandhaG Created
//
//--------------------------------------------------------------------
struct ColPosCompare : public std::binary_function<const CColumnInfo, INT, bool>
{
bool operator() (const CColumnInfo colinfo, INT nCol) const
{
return (nCol == colinfo.GetColIndex());
}
};
//+-------------------------------------------------------------------
//
// Class: CColumnInfoList
//
// Purpose: linked list with CColumnInfo's.
//
// History: 02-11-1999 AnandhaG Created
//
//--------------------------------------------------------------------
typedef list<CColumnInfo> CIL_base;
class CColumnInfoList : public XMLListCollectionImp<CIL_base>, public CSerialObject
{
public:
friend class CColumnSetData;
public:
CColumnInfoList ()
{
}
~CColumnInfoList()
{
}
protected:
DEFINE_XML_TYPE(XML_TAG_COLUMN_INFO_LIST);
// CSerialObject methods
virtual UINT GetVersion() {return 1;}
virtual HRESULT ReadSerialObject (IStream &stm, UINT nVersion /*,LARGE_INTEGER nBytes*/);
};
#endif // COLUMNINFO_H_