summaryrefslogtreecommitdiff
path: root/indra/newview/llchiclet.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llchiclet.h')
-rw-r--r--indra/newview/llchiclet.h527
1 files changed, 287 insertions, 240 deletions
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index bb5dc1e550..1ea141e6c4 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -1,34 +1,34 @@
/**
-* @file llchiclet.h
-* @brief LLChiclet class header file
-*
-* $LicenseInfo:firstyear=2002&license=viewergpl$
-*
-* Copyright (c) 2002-2009, Linden Research, Inc.
-*
-* Second Life Viewer Source Code
-* The source code in this file ("Source Code") is provided by Linden Lab
-* to you under the terms of the GNU General Public License, version 2.0
-* ("GPL"), unless you have obtained a separate licensing agreement
-* ("Other License"), formally executed by you and Linden Lab. Terms of
-* the GPL can be found in doc/GPL-license.txt in this distribution, or
-* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
-*
-* There are special exceptions to the terms and conditions of the GPL as
-* it is applied to this Source Code. View the full text of the exception
-* in the file doc/FLOSS-exception.txt in this software distribution, or
-* online at
-* http://secondlifegrid.net/programs/open_source/licensing/flossexception
-*
-* By copying, modifying or distributing this software, you acknowledge
-* that you have read and understood your obligations described above,
-* and agree to abide by those obligations.
-*
-* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
-* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
-* COMPLETENESS OR PERFORMANCE.
-* $/LicenseInfo$
-*/
+ * @file llchiclet.h
+ * @brief LLChiclet class header file
+ *
+ * $LicenseInfo:firstyear=2002&license=viewergpl$
+ *
+ * Copyright (c) 2002-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
#ifndef LL_LLCHICLET_H
#define LL_LLCHICLET_H
@@ -44,9 +44,9 @@ class LLVoiceControlPanel;
class LLMenuGL;
class LLIMFloater;
-/*
+/**
* Class for displaying amount of messages/notifications(unread).
-*/
+ */
class LLChicletNotificationCounterCtrl : public LLTextBox
{
public:
@@ -57,30 +57,30 @@ public:
{};
};
- /*
+ /**
* Sets number of notifications
- */
+ */
virtual void setCounter(S32 counter);
- /*
+ /**
* Returns number of notifications
- */
+ */
virtual S32 getCounter() const { return mCounter; }
- /*
+ /**
* Returns width, required to display amount of notifications in text form.
* Width is the only valid value.
- */
+ */
/*virtual*/ LLRect getRequiredRect();
- /*
+ /**
* Sets number of notifications using LLSD
- */
+ */
/*virtual*/ void setValue(const LLSD& value);
- /*
+ /**
* Returns number of notifications wrapped in LLSD
- */
+ */
/*virtual*/ LLSD getValue() const;
protected:
@@ -94,9 +94,9 @@ private:
S32 mInitialWidth;
};
-/*
+/**
* Class for displaying avatar's icon in P2P chiclet.
-*/
+ */
class LLChicletAvatarIconCtrl : public LLAvatarIconCtrl
{
public:
@@ -147,9 +147,9 @@ protected:
std::string mDefaultIcon;
};
-/*
+/**
* Class for displaying of speaker's voice indicator
-*/
+ */
class LLChicletSpeakerCtrl : public LLOutputMonitorCtrl
{
public:
@@ -164,7 +164,7 @@ protected:
friend class LLUICtrlFactory;
};
-/*
+/**
* Base class for all chiclets.
*/
class LLChiclet : public LLUICtrl
@@ -180,59 +180,59 @@ public:
/*virtual*/ ~LLChiclet();
- /*
+ /**
* Associates chat session id with chiclet.
- */
+ */
virtual void setSessionId(const LLUUID& session_id) { mSessionId = session_id; }
- /*
+ /**
* Returns associated chat session.
- */
+ */
virtual const LLUUID& getSessionId() const { return mSessionId; }
- /*
+ /**
* Sets number of unread notifications.
- */
+ */
virtual void setCounter(S32 counter) = 0;
- /*
+ /**
* Returns number of unread notifications.
- */
+ */
virtual S32 getCounter() = 0;
- /*
+ /**
* Sets show counter state.
- */
+ */
virtual void setShowCounter(bool show) { mShowCounter = show; }
- /*
+ /**
* Returns show counter state.
- */
+ */
virtual bool getShowCounter() {return mShowCounter;};
- /*
+ /**
* Connects chiclet clicked event with callback.
- */
+ */
/*virtual*/ boost::signals2::connection setLeftButtonClickCallback(
const commit_callback_t& cb);
typedef boost::function<void (LLChiclet* ctrl, const LLSD& param)>
chiclet_size_changed_callback_t;
- /*
+ /**
* Connects chiclets size changed event with callback.
- */
+ */
virtual boost::signals2::connection setChicletSizeChangedCallback(
const chiclet_size_changed_callback_t& cb);
- /*
+ /**
* Sets IM Session id using LLSD
- */
+ */
/*virtual*/ LLSD getValue() const;
- /*
+ /**
* Returns IM Session id using LLSD
- */
+ */
/*virtual*/ void setValue(const LLSD& value);
protected:
@@ -240,14 +240,14 @@ protected:
friend class LLUICtrlFactory;
LLChiclet(const Params& p);
- /*
+ /**
* Notifies subscribers about click on chiclet.
- */
+ */
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
- /*
+ /**
* Notifies subscribers about chiclet size changed event.
- */
+ */
virtual void onChicletSizeChanged();
private:
@@ -263,11 +263,11 @@ private:
};
-/*
-* Base class for Instant Message chiclets.
-* IMChiclet displays icon, number of unread messages(optional)
-* and voice chat status(optional).
-*/
+/**
+ * Base class for Instant Message chiclets.
+ * IMChiclet displays icon, number of unread messages(optional)
+ * and voice chat status(optional).
+ */
class LLIMChiclet : public LLChiclet
{
public:
@@ -288,50 +288,50 @@ public:
/*virtual*/ ~LLIMChiclet() {};
- /*
+ /**
* Sets IM session name. This name will be displayed in chiclet tooltip.
- */
+ */
virtual void setIMSessionName(const std::string& name) { setToolTip(name); }
- /*
+ /**
* Sets id of person/group user is chatting with.
* Session id should be set before calling this
- */
+ */
virtual void setOtherParticipantId(const LLUUID& other_participant_id) { mOtherParticipantId = other_participant_id; }
- /*
+ /**
* Gets id of person/group user is chatting with.
*/
virtual LLUUID getOtherParticipantId() { return mOtherParticipantId; }
- /*
- * Init Speaker Control with speaker's ID
- */
+ /**
+ * Init Speaker Control with speaker's ID
+ */
virtual void initSpeakerControl();
- /*
+ /**
* set status (Shows/Hide) for voice control.
- */
+ */
virtual void setShowSpeaker(bool show);
- /*
+ /**
* Returns voice chat status control visibility.
- */
+ */
virtual bool getShowSpeaker() {return mShowSpeaker;};
- /*
- * Shows/Hides for voice control for a chiclet.
- */
+ /**
+ * Shows/Hides for voice control for a chiclet.
+ */
virtual void toggleSpeakerControl();
- /*
- * Shows/hides overlay icon concerning new unread messages.
- */
+ /**
+ * Shows/hides overlay icon concerning new unread messages.
+ */
virtual void setShowNewMessagesIcon(bool show);
- /*
- * Returns visibility of overlay icon concerning new unread messages.
- */
+ /**
+ * Returns visibility of overlay icon concerning new unread messages.
+ */
virtual bool getShowNewMessagesIcon();
virtual void draw();
@@ -418,45 +418,45 @@ public:
/* virtual */ void setOtherParticipantId(const LLUUID& other_participant_id);
- /*
- * Sets number of unread messages. Will update chiclet's width if number text
- * exceeds size of counter and notify it's parent about size change.
- */
+ /**
+ * Sets number of unread messages. Will update chiclet's width if number text
+ * exceeds size of counter and notify it's parent about size change.
+ */
/*virtual*/ void setCounter(S32);
- /*
- * Init Speaker Control with speaker's ID
- */
+ /**
+ * Init Speaker Control with speaker's ID
+ */
/*virtual*/ void initSpeakerControl();
- /*
- * Returns number of unread messages.
- */
+ /**
+ * Returns number of unread messages.
+ */
/*virtual*/ S32 getCounter() { return mCounterCtrl->getCounter(); }
protected:
LLIMP2PChiclet(const Params& p);
friend class LLUICtrlFactory;
- /*
- * Creates chiclet popup menu. Will create P2P or Group IM Chat menu
- * based on other participant's id.
- */
+ /**
+ * Creates chiclet popup menu. Will create P2P or Group IM Chat menu
+ * based on other participant's id.
+ */
virtual void createPopupMenu();
- /*
- * Processes clicks on chiclet popup menu.
- */
+ /**
+ * Processes clicks on chiclet popup menu.
+ */
virtual void onMenuItemClicked(const LLSD& user_data);
- /*
- * Displays popup menu.
- */
+ /**
+ * Displays popup menu.
+ */
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
- /*
- * Enables/disables menus based on relationship with other participant.
- */
+ /**
+ * Enables/disables menus based on relationship with other participant.
+ */
virtual void updateMenuItems();
private:
@@ -492,39 +492,39 @@ public:
*/
/*virtual*/ void setSessionId(const LLUUID& session_id);
- /*
- * Sets number of unread messages. Will update chiclet's width if number text
- * exceeds size of counter and notify it's parent about size change.
- */
+ /**
+ * Sets number of unread messages. Will update chiclet's width if number text
+ * exceeds size of counter and notify it's parent about size change.
+ */
/*virtual*/ void setCounter(S32);
- /*
- * Keep Speaker Control with actual speaker's ID
- */
+ /**
+ * Keep Speaker Control with actual speaker's ID
+ */
/*virtual*/ void draw();
- /*
- * Init Speaker Control with speaker's ID
- */
+ /**
+ * Init Speaker Control with speaker's ID
+ */
/*virtual*/ void initSpeakerControl();
- /*
- * Returns number of unread messages.
- */
+ /**
+ * Returns number of unread messages.
+ */
/*virtual*/ S32 getCounter() { return mCounterCtrl->getCounter(); }
protected:
LLAdHocChiclet(const Params& p);
friend class LLUICtrlFactory;
- /*
- * Displays popup menu.
- */
+ /**
+ * Displays popup menu.
+ */
virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
- /*
- * Finds a current speaker and resets the SpeakerControl with speaker's ID
- */
+ /**
+ * Finds a current speaker and resets the SpeakerControl with speaker's ID
+ */
/*virtual*/ void switchToCurrentSpeaker();
private:
@@ -534,6 +534,46 @@ private:
};
/**
+ * Chiclet for script floaters.
+ */
+class LLScriptChiclet : public LLIMChiclet
+{
+public:
+
+ struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
+ {
+ Optional<LLIconCtrl::Params> icon;
+
+ Params();
+ };
+
+ /*virtual*/ void setSessionId(const LLUUID& session_id);
+
+ /*virtual*/ void setCounter(S32 counter){}
+
+ /*virtual*/ S32 getCounter() { return 0; }
+
+ /**
+ * Toggle script floater
+ */
+ /*virtual*/ void onMouseDown();
+
+ /**
+ * Override default handler
+ */
+ /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
+
+protected:
+
+ LLScriptChiclet(const Params&);
+ friend class LLUICtrlFactory;
+
+private:
+
+ LLIconCtrl* mChicletIconCtrl;
+};
+
+/**
* Implements Group chat chiclet.
*/
class LLIMGroupChiclet : public LLIMChiclet, public LLGroupMgrObserver
@@ -559,9 +599,9 @@ public:
*/
/*virtual*/ void setSessionId(const LLUUID& session_id);
- /*
- * Keep Speaker Control with actual speaker's ID
- */
+ /**
+ * Keep Speaker Control with actual speaker's ID
+ */
/*virtual*/ void draw();
/**
@@ -570,20 +610,20 @@ public:
*/
/*virtual*/ void changed(LLGroupChange gc);
- /*
- * Sets number of unread messages. Will update chiclet's width if number text
- * exceeds size of counter and notify it's parent about size change.
- */
+ /**
+ * Sets number of unread messages. Will update chiclet's width if number text
+ * exceeds size of counter and notify it's parent about size change.
+ */
/*virtual*/ void setCounter(S32);
- /*
- * Init Speaker Control with speaker's ID
- */
+ /**
+ * Init Speaker Control with speaker's ID
+ */
/*virtual*/ void initSpeakerControl();
- /*
- * Returns number of unread messages.
- */
+ /**
+ * Returns number of unread messages.
+ */
/*virtual*/ S32 getCounter() { return mCounterCtrl->getCounter(); }
~LLIMGroupChiclet();
@@ -592,25 +632,25 @@ protected:
LLIMGroupChiclet(const Params& p);
friend class LLUICtrlFactory;
- /*
- * Finds a current speaker and resets the SpeakerControl with speaker's ID
- */
+ /**
+ * Finds a current speaker and resets the SpeakerControl with speaker's ID
+ */
/*virtual*/ void switchToCurrentSpeaker();
- /*
- * Creates chiclet popup menu. Will create P2P or Group IM Chat menu
- * based on other participant's id.
- */
+ /**
+ * Creates chiclet popup menu. Will create P2P or Group IM Chat menu
+ * based on other participant's id.
+ */
virtual void createPopupMenu();
- /*
- * Processes clicks on chiclet popup menu.
- */
+ /**
+ * Processes clicks on chiclet popup menu.
+ */
virtual void onMenuItemClicked(const LLSD& user_data);
- /*
- * Displays popup menu.
- */
+ /**
+ * Displays popup menu.
+ */
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
private:
@@ -619,10 +659,10 @@ private:
LLMenuGL* mPopupMenu;
};
-/*
+/**
* Implements notification chiclet. Used to display total amount of unread messages
* across all IM sessions, total amount of system notifications.
-*/
+ */
class LLNotificationChiclet : public LLChiclet
{
public:
@@ -666,10 +706,10 @@ protected:
S32 mCounter;
};
-/*
+/**
* Storage class for all IM chiclets. Provides mechanism to display,
* scroll, create, remove chiclets.
-*/
+ */
class LLChicletPanel : public LLPanel
{
public:
@@ -686,62 +726,62 @@ public:
virtual ~LLChicletPanel();
- /*
+ /**
* Creates chiclet and adds it to chiclet list at specified index.
- */
+ */
template<class T> T* createChiclet(const LLUUID& session_id, S32 index);
- /*
+ /**
* Creates chiclet and adds it to chiclet list at right.
- */
+ */
template<class T> T* createChiclet(const LLUUID& session_id);
- /*
+ /**
* Returns pointer to chiclet of specified type at specified index.
- */
+ */
template<class T> T* getChiclet(S32 index);
- /*
+ /**
* Returns pointer to LLChiclet at specified index.
- */
+ */
LLChiclet* getChiclet(S32 index) { return getChiclet<LLChiclet>(index); }
- /*
+ /**
* Searches a chiclet using IM session id.
- */
+ */
template<class T> T* findChiclet(const LLUUID& im_session_id);
- /*
+ /**
* Returns number of hosted chiclets.
- */
+ */
S32 getChicletCount() {return mChicletList.size();};
- /*
+ /**
* Returns index of chiclet in list.
- */
+ */
S32 getChicletIndex(const LLChiclet* chiclet);
- /*
+ /**
* Removes chiclet by index.
- */
+ */
void removeChiclet(S32 index);
- /*
+ /**
* Removes chiclet by pointer.
- */
+ */
void removeChiclet(LLChiclet* chiclet);
- /*
+ /**
* Removes chiclet by IM session id.
- */
+ */
void removeChiclet(const LLUUID& im_session_id);
- /*
+ /**
* Removes all chiclets.
- */
+ */
void removeAll();
- /*
+ /**
* Scrolls the panel to the specified chiclet
*/
void scrollToChiclet(const LLChiclet* chiclet);
@@ -751,14 +791,14 @@ public:
/*virtual*/ BOOL postBuild();
- /*
- * Handler for the Voice Client's signal. Finds a corresponding chiclet and toggles its SpeakerControl
- */
+ /**
+ * Handler for the Voice Client's signal. Finds a corresponding chiclet and toggles its SpeakerControl
+ */
void onCurrentVoiceChannelChanged(const LLUUID& session_id);
- /*
+ /**
* Reshapes controls and rearranges chiclets if needed.
- */
+ */
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE );
/*virtual*/ void draw();
@@ -769,100 +809,107 @@ protected:
LLChicletPanel(const Params&p);
friend class LLUICtrlFactory;
- S32 calcChickletPanleWidth();
-
- /*
- * Adds chiclet to list and rearranges all chiclets.
- */
+ /**
+ * Adds chiclet to list and rearranges all chiclets.
+ * They should be right aligned, most recent right. See EXT-1293
+ *
+ * It calculates position of the first chiclet in the list. Other chiclets are placed in arrange().
+ *
+ * @see arrange()
+ */
bool addChiclet(LLChiclet*, S32 index);
- /*
- * Arranges chiclets.
- */
+ /**
+ * Arranges chiclets to have them in correct positions.
+ *
+ * Method bases on assumption that first chiclet has correct rect and starts from the its position.
+ *
+ * @see addChiclet()
+ */
void arrange();
- /*
+ /**
* Returns true if chiclets can be scrolled right.
- */
+ */
bool canScrollRight();
- /*
- * Returns true if chiclets can be scrolled left.
- */
+ /**
+ * Returns true if chiclets can be scrolled left.
+ */
bool canScrollLeft();
- /*
- * Shows or hides chiclet scroll buttons if chiclets can or can not be scrolled.
- */
+ /**
+ * Shows or hides chiclet scroll buttons if chiclets can or can not be scrolled.
+ */
void showScrollButtonsIfNeeded();
- /*
+ /**
* Shifts chiclets left or right.
- */
+ */
void shiftChiclets(S32 offset, S32 start_index = 0);
- /*
+ /**
* Removes gaps between first chiclet and scroll area left side,
* last chiclet and scroll area right side.
- */
+ */
void trimChiclets();
- /*
+ /**
* Scrolls chiclets to right or left.
- */
+ */
void scroll(S32 offset);
- /*
+ /**
* Verifies that chiclets can be scrolled left, then calls scroll()
- */
+ */
void scrollLeft();
- /*
+ /**
* Verifies that chiclets can be scrolled right, then calls scroll()
- */
+ */
void scrollRight();
- /*
+ /**
* Callback for left scroll button clicked
- */
+ */
void onLeftScrollClick();
- /*
- * Callback for right scroll button clicked
- */
+ /**
+ * Callback for right scroll button clicked
+ */
void onRightScrollClick();
- /*
- * Callback for right scroll button held down event
- */
+ /**
+ * Callback for right scroll button held down event
+ */
void onLeftScrollHeldDown();
- /*
+ /**
* Callback for left scroll button held down event
*/
void onRightScrollHeldDown();
- /*
+ /**
* Callback for mouse wheel scrolled, calls scrollRight() or scrollLeft()
- */
+ */
BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
- /*
+ /**
* Notifies subscribers about click on chiclet.
* Do not place any code here, instead subscribe on event (see setChicletClickedCallback).
- */
+ */
void onChicletClick(LLUICtrl*ctrl,const LLSD&param);
- /*
+ /**
* Callback for chiclet size changed event, rearranges chiclets.
- */
+ */
void onChicletSizeChanged(LLChiclet* ctrl, const LLSD& param);
typedef std::vector<LLChiclet*> chiclet_list_t;
- /*
+ /**
* Removes chiclet from scroll area and chiclet list.
- */
+ */
void removeChiclet(chiclet_list_t::iterator it);
S32 getChicletPadding() { return mChicletPadding; }