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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llpanelgroup.h
  3.  *
  4.  * $LicenseInfo:firstyear=2006&license=viewergpl$
  5.  * 
  6.  * Copyright (c) 2006-2010, Linden Research, Inc.
  7.  * 
  8.  * Second Life Viewer Source Code
  9.  * The source code in this file ("Source Code") is provided by Linden Lab
  10.  * to you under the terms of the GNU General Public License, version 2.0
  11.  * ("GPL"), unless you have obtained a separate licensing agreement
  12.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  13.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  14.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  15.  * 
  16.  * There are special exceptions to the terms and conditions of the GPL as
  17.  * it is applied to this Source Code. View the full text of the exception
  18.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  19.  * online at
  20.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  21.  * 
  22.  * By copying, modifying or distributing this software, you acknowledge
  23.  * that you have read and understood your obligations described above,
  24.  * and agree to abide by those obligations.
  25.  * 
  26.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  27.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  28.  * COMPLETENESS OR PERFORMANCE.
  29.  * $/LicenseInfo$
  30.  */
  31. #ifndef LL_LLPANELGROUP_H
  32. #define LL_LLPANELGROUP_H
  33. #include "llgroupmgr.h"
  34. #include "llpanel.h"
  35. #include "lltimer.h"
  36. #include "llvoiceclient.h"
  37. struct LLOfferInfo;
  38. const S32 UPDATE_MEMBERS_PER_FRAME = 500;
  39. // Forward declares
  40. class LLPanelGroupTab;
  41. class LLTabContainer;
  42. class LLAgent;
  43. class LLPanelGroup : public LLPanel,
  44.  public LLGroupMgrObserver,
  45.  public LLVoiceClientStatusObserver
  46. {
  47. public:
  48. LLPanelGroup();
  49. virtual ~LLPanelGroup();
  50. virtual BOOL postBuild();
  51. void setGroupID(const LLUUID& group_id);
  52. void draw();
  53. void onOpen(const LLSD& key);
  54. // Group manager observer trigger.
  55. virtual void changed(LLGroupChange gc);
  56. // Implements LLVoiceClientStatusObserver::onChange() to enable the call
  57. // button when voice is available
  58. /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
  59. void showNotice(const std::string& subject,
  60. const std::string& message,
  61. const bool& has_inventory,
  62. const std::string& inventory_name,
  63. LLOfferInfo* inventory_offer);
  64. void notifyObservers();
  65. bool apply();
  66. void refreshData();
  67. void callGroup();
  68. void chatGroup();
  69. virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
  70. static void refreshCreatedGroup(const LLUUID& group_id);
  71. static void showNotice(const std::string& subject,
  72.    const std::string& message,
  73.    const LLUUID& group_id,
  74.    const bool& has_inventory,
  75.    const std::string& inventory_name,
  76.    LLOfferInfo* inventory_offer);
  77. bool notifyChildren (const LLSD& info);
  78. bool handleNotifyCallback(const LLSD&, const LLSD&);
  79. protected:
  80. virtual void update(LLGroupChange gc);
  81. void onBtnCreate();
  82. void onBackBtnClick();
  83. void onBtnJoin();
  84. void onBtnCancel();
  85. static void onBtnApply(void*);
  86. static void onBtnRefresh(void*);
  87. static void onBtnGroupCallClicked(void*);
  88. static void onBtnGroupChatClicked(void*);
  89. void reposButton(const std::string& name);
  90. void reposButtons();
  91. protected:
  92. bool apply(LLPanelGroupTab* tab);
  93. bool canClose();
  94. bool mShowingNotifyDialog;
  95. LLTimer mRefreshTimer;
  96. BOOL mSkipRefresh;
  97. std::string mDefaultNeedsApplyMesg;
  98. std::string mWantApplyMesg;
  99. std::vector<LLPanelGroupTab* > mTabs;
  100. LLButton* mButtonJoin;
  101. LLUICtrl* mJoinText;
  102. };
  103. class LLPanelGroupTab : public LLPanel
  104. {
  105. public:
  106. LLPanelGroupTab();
  107. virtual ~LLPanelGroupTab();
  108. // Triggered when the tab becomes active.
  109. virtual void activate() { }
  110. // Triggered when the tab becomes inactive.
  111. virtual void deactivate() { }
  112. // Asks if something needs to be applied.
  113. // If returning true, this function should modify the message to the user.
  114. virtual bool needsApply(std::string& mesg) { return false; }
  115. // Asks if there is currently a modal dialog being shown.
  116. virtual BOOL hasModal() { return mHasModal; }
  117. // Request to apply current data.
  118. // If returning fail, this function should modify the message to the user.
  119. virtual bool apply(std::string& mesg) { return true; }
  120. // Request a cancel of changes
  121. virtual void cancel() { }
  122. // Triggered when group information changes in the group manager.
  123. virtual void update(LLGroupChange gc) { }
  124. // This just connects the help button callback.
  125. virtual BOOL postBuild();
  126. virtual BOOL isVisibleByAgent(LLAgent* agentp);
  127. virtual void setGroupID(const LLUUID& id) {mGroupID = id;};
  128. void notifyObservers() {};
  129. const LLUUID& getGroupID() const { return mGroupID;}
  130. virtual void setupCtrls (LLPanel* parent) {};
  131. protected:
  132. LLUUID mGroupID;
  133. BOOL mAllowEdit;
  134. BOOL mHasModal;
  135. };
  136. #endif // LL_LLPANELGROUP_H