diff options
Diffstat (limited to 'indra/newview/llfloaterchatterbox.h')
-rw-r--r-- | indra/newview/llfloaterchatterbox.h | 101 |
1 files changed, 11 insertions, 90 deletions
diff --git a/indra/newview/llfloaterchatterbox.h b/indra/newview/llfloaterchatterbox.h index 3adbd14370..e6a2e30ba6 100644 --- a/indra/newview/llfloaterchatterbox.h +++ b/indra/newview/llfloaterchatterbox.h @@ -42,15 +42,16 @@ class LLTabContainer; -class LLFloaterChatterBox : public LLMultiFloater, public LLUISingleton<LLFloaterChatterBox, LLFloaterChatterBox> +class LLFloaterChatterBox : public LLMultiFloater { public: LLFloaterChatterBox(const LLSD& seed); virtual ~LLFloaterChatterBox(); - + + /*virtual*/ BOOL postBuild(); /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask); /*virtual*/ void draw(); - /*virtual*/ void onOpen(); + /*virtual*/ void onOpen(const LLSD& key); /*virtual*/ void onClose(bool app_quitting); /*virtual*/ void setMinimized(BOOL minimized); @@ -59,108 +60,28 @@ public: BOOL select_added_floater, LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END); + static LLFloaterChatterBox* getInstance(); // *TODO:Skinning Deprecate static LLFloater* getCurrentVoiceFloater(); - // visibility policy for LLUISingleton - static bool visible(LLFloater* instance, const LLSD& key) - { - LLFloater* floater_to_check = ((LLFloaterChatterBox*)instance)->getFloater(key); - - if (floater_to_check) - { - return floater_to_check->isInVisibleChain(); - } - - // otherwise use default visibility rule for chatterbox - return VisibilityPolicy<LLFloater>::visible(instance, key); - } - - static void show(LLFloater* instance, const LLSD& key) - { - LLFloater* floater_to_show = ((LLFloaterChatterBox*)instance)->getFloater(key); - VisibilityPolicy<LLFloater>::show(instance, key); - - if (floater_to_show) - { - floater_to_show->open(); - } - } - - static void hide(LLFloater* instance, const LLSD& key) - { - VisibilityPolicy<LLFloater>::hide(instance, key); - } - -private: - LLFloater* getFloater(const LLSD& key) - { - LLFloater* floater = NULL; - - //try to show requested session - LLUUID session_id = key.asUUID(); - if (session_id.notNull()) - { - floater = LLIMMgr::getInstance()->findFloaterBySession(session_id); - } - - // if TRUE, show tab for active voice channel, otherwise, just show last tab - if (key.asBoolean()) - { - floater = getCurrentVoiceFloater(); - } - - return floater; - } - protected: LLFloater* mActiveVoiceFloater; }; -class LLFloaterMyFriends : public LLFloater, public LLUISingleton<LLFloaterMyFriends, LLFloaterMyFriends> +class LLFloaterMyFriends : public LLFloater { public: LLFloaterMyFriends(const LLSD& seed); virtual ~LLFloaterMyFriends(); - virtual BOOL postBuild(); - - void onClose(bool app_quitting); + /*virtual*/ BOOL postBuild(); + /*virtual*/ void onOpen(const LLSD& key); + /*virtual*/ void onClose(bool app_quitting); + static LLFloaterMyFriends* getInstance(); // *TODO:Skinning Deprecate + static void* createFriendsPanel(void* data); static void* createGroupsPanel(void* data); - - // visibility policy for LLUISingleton - static bool visible(LLFloater* instance, const LLSD& key) - { - LLFloaterMyFriends* floaterp = (LLFloaterMyFriends*)instance; - return floaterp->isInVisibleChain() && floaterp->mTabs->getCurrentPanelIndex() == key.asInteger(); - } - - static void show(LLFloater* instance, const LLSD& key) - { - VisibilityPolicy<LLFloater>::show(instance, key); - // garbage values in id will be interpreted as 0, or the friends tab - ((LLFloaterMyFriends*)instance)->mTabs->selectTab(key); - } - - static void hide(LLFloater* instance, const LLSD& key) - { - if (visible(instance, key)) - { - if(instance->getHost()) - { - LLFloaterChatterBox::hideInstance(); - } - else - { - VisibilityPolicy<LLFloater>::hide(instance, key); - } - } - } - -protected: - LLTabContainer* mTabs; }; #endif // LL_LLFLOATERCHATTERBOX_H |