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

游戏引擎

开发平台:

C++ Builder

  1. /**
  2.  * @file   llviewmodel.cpp
  3.  * @author Nat Goodspeed
  4.  * @date   2008-08-08
  5.  * @brief  Implementation for llviewmodel.
  6.  * 
  7.  * $LicenseInfo:firstyear=2008&license=viewergpl$
  8.  * 
  9.  * Copyright (c) 2008-2010, Linden Research, Inc.
  10.  * 
  11.  * Second Life Viewer Source Code
  12.  * The source code in this file ("Source Code") is provided by Linden Lab
  13.  * to you under the terms of the GNU General Public License, version 2.0
  14.  * ("GPL"), unless you have obtained a separate licensing agreement
  15.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  16.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  17.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  18.  * 
  19.  * There are special exceptions to the terms and conditions of the GPL as
  20.  * it is applied to this Source Code. View the full text of the exception
  21.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  22.  * online at
  23.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  24.  * 
  25.  * By copying, modifying or distributing this software, you acknowledge
  26.  * that you have read and understood your obligations described above,
  27.  * and agree to abide by those obligations.
  28.  * 
  29.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  30.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  31.  * COMPLETENESS OR PERFORMANCE.
  32.  * $/LicenseInfo$
  33.  */
  34. // Precompiled header
  35. #include "linden_common.h"
  36. // associated header
  37. #include "llviewmodel.h"
  38. // STL headers
  39. // std headers
  40. // external library headers
  41. // other Linden headers
  42. ///
  43. LLViewModel::LLViewModel()
  44.  : mDirty(false)
  45. {
  46. }
  47. /// Instantiate an LLViewModel with an existing data value
  48. LLViewModel::LLViewModel(const LLSD& value)
  49.   : mDirty(false)
  50. {
  51.     setValue(value);
  52. }
  53. /// Update the stored value
  54. void LLViewModel::setValue(const LLSD& value)
  55. {
  56.     mValue = value;
  57.     mDirty = true;
  58. }
  59. LLSD LLViewModel::getValue() const
  60. {
  61.     return mValue;
  62. }
  63. ////////////////////////////////////////////////////////////////////////////
  64. ///
  65. LLTextViewModel::LLTextViewModel()
  66.   : LLViewModel(false),
  67. mUpdateFromDisplay(false)
  68. {
  69. }
  70. /// Instantiate an LLViewModel with an existing data value
  71. LLTextViewModel::LLTextViewModel(const LLSD& value)
  72.   : LLViewModel(value),
  73. mUpdateFromDisplay(false)
  74. {
  75. }
  76. /// Update the stored value
  77. void LLTextViewModel::setValue(const LLSD& value)
  78. {
  79. LLViewModel::setValue(value);
  80.     mDisplay = utf8str_to_wstring(value.asString());
  81.     // mDisplay and mValue agree
  82.     mUpdateFromDisplay = false;
  83. }
  84. void LLTextViewModel::setDisplay(const LLWString& value)
  85. {
  86.     // This is the strange way to alter the value. Normally we'd setValue()
  87.     // and do the utf8str_to_wstring() to get the corresponding mDisplay
  88.     // value. But a text editor might want to edit the display string
  89.     // directly, then convert back to UTF8 on commit.
  90.     mDisplay = value;
  91.     mDirty = true;
  92.     // Don't immediately convert to UTF8 -- do it lazily -- we expect many
  93.     // more setDisplay() calls than getValue() calls. Just flag that it needs
  94.     // doing.
  95.     mUpdateFromDisplay = true;
  96. }
  97. LLSD LLTextViewModel::getValue() const
  98. {
  99.     // Has anyone called setDisplay() since the last setValue()? If so, have
  100.     // to convert mDisplay back to UTF8.
  101.     if (mUpdateFromDisplay)
  102.     {
  103.         // The fact that we're lazily updating fields in this object should be
  104.         // transparent to clients, which is why this method is left
  105.         // conventionally const. Nor do we particularly want to make these
  106.         // members mutable. Just cast away constness in this one place.
  107.         LLTextViewModel* nthis = const_cast<LLTextViewModel*>(this);
  108.         nthis->mUpdateFromDisplay = false;
  109.         nthis->mValue = wstring_to_utf8str(mDisplay);
  110.     }
  111.     return LLViewModel::getValue();
  112. }
  113. ////////////////////////////////////////////////////////////////////////////
  114. LLListViewModel::LLListViewModel(const LLSD& values)
  115.   : LLViewModel()
  116. {
  117. }
  118. void LLListViewModel::addColumn(const LLSD& column, EAddPosition pos)
  119. {
  120. }
  121. void LLListViewModel::clearColumns()
  122. {
  123. }
  124. void LLListViewModel::setColumnLabel(const std::string& column, const std::string& label)
  125. {
  126. }
  127. LLScrollListItem* LLListViewModel::addElement(const LLSD& value, EAddPosition pos,
  128.                                          void* userdata)
  129. {
  130.     return NULL;
  131. }
  132. LLScrollListItem* LLListViewModel::addSimpleElement(const std::string& value, EAddPosition pos,
  133.                                                const LLSD& id)
  134. {
  135.     return NULL;
  136. }
  137. void LLListViewModel::clearRows()
  138. {
  139. }
  140. void LLListViewModel::sortByColumn(const std::string& name, bool ascending)
  141. {
  142. }