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.h286
1 files changed, 286 insertions, 0 deletions
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
new file mode 100644
index 0000000000..f2b859a090
--- /dev/null
+++ b/indra/newview/llchiclet.h
@@ -0,0 +1,286 @@
+/**
+* @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
+
+#include "llpanel.h"
+
+class LLTextBox;
+class LLIconCtrl;
+class LLAvatarIconCtrl;
+class LLVoiceControlPanel;
+class LLOutputMonitorCtrl;
+
+class LLChiclet : public LLUICtrl
+{
+public:
+
+ struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
+ {
+ Params(){};
+ };
+
+ virtual ~LLChiclet();
+
+ virtual void setCounter(S32 counter) = 0;
+
+ virtual S32 getCounter() = 0;
+
+ virtual void setShowCounter(bool show) {mShowCounter = show;};
+
+ virtual bool getShowCounter() {return mShowCounter;};
+
+ virtual boost::signals::connection setLeftButtonClickCallback(
+ const commit_callback_t& cb);
+
+protected:
+
+ friend class LLUICtrlFactory;
+ LLChiclet(const Params& p);
+
+ virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
+
+protected:
+ S32 mCounter;
+ bool mShowCounter;
+};
+
+class LLIMChiclet : public LLChiclet
+{
+public:
+ static LLChiclet* create(LLSD* imSessionId = NULL);
+
+ void setCounter(S32);
+
+ S32 getCounter() {return mCounter;};
+
+ const LLSD& getIMSessionId() const {return mIMSessionId;};
+
+ void setIMSessionId(LLSD* imSessionId) {if (imSessionId) mIMSessionId = *imSessionId;};
+ void setIMSessionName(const std::string& name);
+ void setOtherParticipantId(const LLUUID& other_participant_id);
+
+ void setShowSpeaker(bool show);
+
+ bool getShowSpeaker() {return mShowSpeaker;};
+
+ enum SpeakerStatus
+ {
+ SPREAKER_ACTIVE,
+ SPEAKER_IDLE
+ };
+
+ void setSpeakerStatus(SpeakerStatus status);
+
+ SpeakerStatus getSpeakerStatus() {return mSpeakerStatus;};
+
+ ~LLIMChiclet();
+
+protected:
+ LLIMChiclet(const LLChiclet::Params& p);
+ friend class LLUICtrlFactory;
+
+ S32 calcCounterWidth();
+
+ //overrides
+public:
+
+ void setShowCounter(bool show);
+
+ void draw();
+
+ LLRect getRequiredRect();
+
+protected:
+ LLAvatarIconCtrl* mAvatar;
+ LLTextBox* mCounterText;
+ LLIconCtrl* mSpeaker;
+
+ LLSD mIMSessionId;
+ bool mShowSpeaker;
+ SpeakerStatus mSpeakerStatus;
+};
+
+class LLNotificationChiclet : public LLChiclet
+{
+public:
+
+ struct Params : public LLInitParam::Block<Params, LLChiclet::Params>
+ {
+ Optional<LLUIImage*>
+ image_unselected,
+ image_selected,
+ image_hover_selected,
+ image_hover_unselected,
+ image_disabled_selected,
+ image_disabled,
+ image_overlay;
+
+ Optional<S32>
+ label_left;
+
+ Params();
+ };
+
+ static LLChiclet* create(const Params& p);
+
+ void setCounter(S32 counter);
+
+ S32 getCounter() {return mCounter;};
+
+ boost::signals::connection setClickCallback(const commit_callback_t& cb);
+
+ virtual ~ LLNotificationChiclet();
+
+protected:
+ LLNotificationChiclet(const Params& p);
+ friend class LLUICtrlFactory;
+
+protected:
+ LLButton* mButton;
+ LLTextBox* mCounterText;
+};
+
+class LLChicletPanel : public LLPanel
+{
+public:
+
+ struct Params : public LLInitParam::Block<Params, LLPanel::Params>
+ {
+ Params(){};
+ };
+
+ static LLChicletPanel* create();
+
+ LLChiclet* createChiclet(LLSD* imSessionId = NULL, S32 pos = 0);
+
+ bool addChiclet(LLChiclet*, S32 pos);
+
+ LLChiclet* getChiclet(S32 pos);
+
+ LLChiclet* findIMChiclet(LLSD* imSessionId);
+
+ S32 getChicletCount() {return mChicletList.size();};
+
+ void removeChiclet(S32 pos);
+
+ void removeChiclet(LLChiclet*);
+
+ void removeIMChiclet(LLSD* imSessionId);
+
+ void removeAll();
+
+ void arrange();
+
+ ~LLChicletPanel();
+
+ void scrollLeft();
+
+ void scrollRight();
+
+ void onLeftScrollClick();
+
+ void onRightScrollClick();
+
+ boost::signals::connection setChicletClickCallback(
+ const commit_callback_t& cb);
+
+ void onChicletClick(LLUICtrl*ctrl,const LLSD&param);
+
+ //overrides
+public:
+
+ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE );
+
+ void draw();
+
+ BOOL postBuild();
+
+protected:
+ LLChicletPanel(const Params&p);
+ friend class LLUICtrlFactory;
+
+ bool needsScrolling();
+
+ bool canScrollRight();
+
+ bool canScrollLeft();
+
+ enum ScrollDirection
+ {
+ SCROLL_LEFT = 1,
+ SCROLL_RIGHT = -1
+ };
+
+ void scroll(ScrollDirection direction);
+
+ typedef std::vector<LLChiclet*> chiclet_list_t;
+
+ void removeChiclet(chiclet_list_t::iterator it);
+
+ BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
+
+protected:
+
+ chiclet_list_t mChicletList;
+ LLButton* mLeftScroll;
+ LLButton* mRightScroll;
+ S32 mFirstToShow;
+ S32 mLastToShow;
+ LLPanel* mScrollArea;
+};
+
+
+class LLTalkButton : public LLUICtrl
+{
+public:
+
+ virtual ~LLTalkButton();
+
+ void onClick_SpeakBtn();
+ void onClick_ShowBtn();
+
+ void draw();
+
+protected:
+ friend class LLUICtrlFactory;
+ LLTalkButton(const LLUICtrl::Params& p);
+
+private:
+ LLButton* mSpeakBtn;
+ LLButton* mShowBtn;
+ LLVoiceControlPanel* mPrivateCallPanel;
+ LLOutputMonitorCtrl* mOutputMonitor;
+};
+
+#endif // LL_LLCHICLET_H