llscrolllistcell.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:7k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llscrolllistcell.h
  3.  * @brief Scroll lists are composed of rows (items), each of which 
  4.  * contains columns (cells).
  5.  *
  6.  * $LicenseInfo:firstyear=2007&license=viewergpl$
  7.  * 
  8.  * Copyright (c) 2007-2010, Linden Research, Inc.
  9.  * 
  10.  * Second Life Viewer Source Code
  11.  * The source code in this file ("Source Code") is provided by Linden Lab
  12.  * to you under the terms of the GNU General Public License, version 2.0
  13.  * ("GPL"), unless you have obtained a separate licensing agreement
  14.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  15.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  16.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  17.  * 
  18.  * There are special exceptions to the terms and conditions of the GPL as
  19.  * it is applied to this Source Code. View the full text of the exception
  20.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  21.  * online at
  22.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  23.  * 
  24.  * By copying, modifying or distributing this software, you acknowledge
  25.  * that you have read and understood your obligations described above,
  26.  * and agree to abide by those obligations.
  27.  * 
  28.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  29.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  30.  * COMPLETENESS OR PERFORMANCE.
  31.  * $/LicenseInfo$
  32.  */
  33. #ifndef LLSCROLLLISTCELL_H
  34. #define LLSCROLLLISTCELL_H
  35. #include "llfontgl.h" // HAlign
  36. #include "llpointer.h" // LLPointer<>
  37. #include "lluistring.h"
  38. #include "v4color.h"
  39. #include "llui.h"
  40. class LLCheckBoxCtrl;
  41. class LLSD;
  42. class LLUIImage;
  43. /*
  44.  * Represents a cell in a scrollable table.
  45.  *
  46.  * Sub-classes must return height and other properties 
  47.  * though width accessors are implemented by the base class.
  48.  * It is therefore important for sub-class constructors to call
  49.  * setWidth() with realistic values.
  50.  */
  51. class LLScrollListCell
  52. {
  53. public:
  54. struct Params : public LLInitParam::Block<Params>
  55. {
  56. Optional<std::string> type,
  57. column;
  58. Optional<S32> width;
  59. Optional<bool> enabled,
  60. visible;
  61. Optional<void*> userdata;
  62. Optional<LLSD> value;
  63. Optional<std::string> tool_tip;
  64. Optional<const LLFontGL*> font;
  65. Optional<LLColor4> font_color;
  66. Optional<LLFontGL::HAlign> font_halign;
  67. Optional<LLColor4> color;
  68. Params()
  69. : type("type", "text"),
  70. column("column"),
  71. width("width"),
  72. enabled("enabled", true),
  73. visible("visible", true),
  74. value("value"),
  75. tool_tip("tool_tip", ""),
  76. font("font", LLFontGL::getFontSansSerifSmall()),
  77. font_color("font_color", LLColor4::black),
  78. color("color", LLColor4::white),
  79. font_halign("halign", LLFontGL::LEFT)
  80. {
  81. addSynonym(column, "name");
  82. addSynonym(font_color, "font-color");
  83. }
  84. };
  85. static LLScrollListCell* create(const Params&);
  86. LLScrollListCell(const LLScrollListCell::Params&);
  87. virtual ~LLScrollListCell() {};
  88. virtual void draw(const LLColor4& color, const LLColor4& highlight_color) const {}; // truncate to given width, if possible
  89. virtual S32 getWidth() const {return mWidth;}
  90. virtual S32 getContentWidth() const { return 0; }
  91. virtual S32 getHeight() const { return 0; }
  92. virtual const LLSD getValue() const;
  93. virtual void setValue(const LLSD& value) { }
  94. virtual const std::string &getToolTip() const { return mToolTip; }
  95. virtual void setToolTip(const std::string &str) { mToolTip = str; }
  96. virtual BOOL getVisible() const { return TRUE; }
  97. virtual void setWidth(S32 width) { mWidth = width; }
  98. virtual void highlightText(S32 offset, S32 num_chars) {}
  99. virtual BOOL isText() const { return FALSE; }
  100. virtual BOOL needsToolTip() const { return ! mToolTip.empty(); }
  101. virtual void setColor(const LLColor4&) {}
  102. virtual void onCommit() {};
  103. virtual BOOL handleClick() { return FALSE; }
  104. virtual void setEnabled(BOOL enable) { }
  105. private:
  106. S32 mWidth;
  107. std::string mToolTip;
  108. };
  109. class LLScrollListSpacer : public LLScrollListCell
  110. {
  111. public:
  112. LLScrollListSpacer(const LLScrollListCell::Params& p) : LLScrollListCell(p) {}
  113. /*virtual*/ ~LLScrollListSpacer() {};
  114. /*virtual*/ void draw(const LLColor4& color, const LLColor4& highlight_color) const {}
  115. };
  116. /*
  117.  * Cell displaying a text label.
  118.  */
  119. class LLScrollListText : public LLScrollListCell
  120. {
  121. public:
  122. LLScrollListText(const LLScrollListCell::Params&);
  123. /*virtual*/ ~LLScrollListText();
  124. /*virtual*/ void    draw(const LLColor4& color, const LLColor4& highlight_color) const;
  125. /*virtual*/ S32 getContentWidth() const;
  126. /*virtual*/ S32 getHeight() const;
  127. /*virtual*/ void setValue(const LLSD& value);
  128. /*virtual*/ const LLSD getValue() const;
  129. /*virtual*/ BOOL getVisible() const;
  130. /*virtual*/ void highlightText(S32 offset, S32 num_chars);
  131. /*virtual*/ void setColor(const LLColor4&);
  132. /*virtual*/ BOOL isText() const;
  133. /*virtual*/ const std::string & getToolTip() const;
  134. /*virtual*/ BOOL needsToolTip() const;
  135. void setText(const LLStringExplicit& text);
  136. void setFontStyle(const U8 font_style);
  137. private:
  138. LLUIString mText;
  139. const LLFontGL* mFont;
  140. LLColor4 mColor;
  141. U8 mUseColor;
  142. LLFontGL::HAlign mFontAlignment;
  143. BOOL mVisible;
  144. S32 mHighlightCount;
  145. S32 mHighlightOffset;
  146. LLPointer<LLUIImage> mRoundedRectImage;
  147. static U32 sCount;
  148. };
  149. /*
  150.  * Cell displaying an image.
  151.  */
  152. class LLScrollListIcon : public LLScrollListCell
  153. {
  154. public:
  155. LLScrollListIcon(const LLScrollListCell::Params& p);
  156. /*virtual*/ ~LLScrollListIcon();
  157. /*virtual*/ void draw(const LLColor4& color, const LLColor4& highlight_color) const;
  158. /*virtual*/ S32 getWidth() const;
  159. /*virtual*/ S32 getHeight() const;
  160. /*virtual*/ const LLSD getValue() const;
  161. /*virtual*/ void setColor(const LLColor4&);
  162. /*virtual*/ void setValue(const LLSD& value);
  163. private:
  164. LLPointer<LLUIImage> mIcon;
  165. LLColor4 mColor;
  166. LLFontGL::HAlign mAlignment;
  167. };
  168. /*
  169.  * An interactive cell containing a check box.
  170.  */
  171. class LLScrollListCheck : public LLScrollListCell
  172. {
  173. public:
  174. LLScrollListCheck( const LLScrollListCell::Params&);
  175. /*virtual*/ ~LLScrollListCheck();
  176. /*virtual*/ void draw(const LLColor4& color, const LLColor4& highlight_color) const;
  177. /*virtual*/ S32 getHeight() const { return 0; } 
  178. /*virtual*/ const LLSD getValue() const;
  179. /*virtual*/ void setValue(const LLSD& value);
  180. /*virtual*/ void onCommit();
  181. /*virtual*/ BOOL handleClick();
  182. /*virtual*/ void setEnabled(BOOL enable);
  183. LLCheckBoxCtrl* getCheckBox() { return mCheckBox; }
  184. private:
  185. LLCheckBoxCtrl* mCheckBox;
  186. };
  187. class LLScrollListDate : public LLScrollListText
  188. {
  189. public:
  190. LLScrollListDate( const LLScrollListCell::Params& p );
  191. virtual void setValue(const LLSD& value);
  192. virtual const LLSD getValue() const;
  193. private:
  194. LLDate mDate;
  195. };
  196. #endif