summaryrefslogtreecommitdiff
path: root/indra/newview/llsyswellwindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llsyswellwindow.h')
-rw-r--r--indra/newview/llsyswellwindow.h51
1 files changed, 47 insertions, 4 deletions
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
index adbc83677d..fea145a17e 100644
--- a/indra/newview/llsyswellwindow.h
+++ b/indra/newview/llsyswellwindow.h
@@ -46,7 +46,8 @@
class LLFlatListView;
class LLChiclet;
class LLIMChiclet;
-
+class LLScriptChiclet;
+class LLSysWellChiclet;
class LLSysWellWindow : public LLDockableFloater
@@ -78,6 +79,8 @@ public:
void onStartUpToastClick(S32 x, S32 y, MASK mask);
+ void setSysWellChiclet(LLSysWellChiclet* chiclet) { mSysWellChiclet = chiclet; }
+
// size constants for the window and for its elements
static const S32 MAX_WINDOW_HEIGHT = 200;
static const S32 MIN_WINDOW_WIDTH = 318;
@@ -104,12 +107,18 @@ protected:
virtual const std::string& getAnchorViewName() = 0;
void reshapeWindow();
+ void releaseNewMessagesState();
// pointer to a corresponding channel's instance
LLNotificationsUI::LLScreenChannel* mChannel;
LLFlatListView* mMessageList;
/**
+ * Reference to an appropriate Well chiclet to release "new message" state. EXT-3147
+ */
+ LLSysWellChiclet* mSysWellChiclet;
+
+ /**
* Special panel which is used as separator of Notifications & IM Rows.
* It is always presents in the list and shown when it is necessary.
* It should be taken into account when reshaping and checking list size
@@ -126,14 +135,12 @@ protected:
*
* It contains a list of notifications that have not been responded to.
*/
-class LLNotificationWellWindow : public LLSysWellWindow, public LLInitClass<LLNotificationWellWindow>
+class LLNotificationWellWindow : public LLSysWellWindow
{
public:
LLNotificationWellWindow(const LLSD& key);
static LLNotificationWellWindow* getInstance(const LLSD& key = LLSD());
- static void initClass() { getInstance(); }
-
/*virtual*/ BOOL postBuild();
/*virtual*/ void setVisible(BOOL visible);
@@ -181,11 +188,16 @@ public:
/*virtual*/ void sessionRemoved(const LLUUID& session_id);
/*virtual*/ void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id);
+ void addObjectRow(const LLUUID& object_id, bool new_message = false);
+ void removeObjectRow(const LLUUID& object_id);
+
protected:
/*virtual*/ const std::string& getAnchorViewName() { return IM_WELL_ANCHOR_NAME; }
private:
LLChiclet * findIMChiclet(const LLUUID& sessionId);
+ LLChiclet* findObjectChiclet(const LLUUID& object_id);
+
void addIMRow(const LLUUID& sessionId, S32 chicletCounter, const std::string& name, const LLUUID& otherParticipantId);
void delIMRow(const LLUUID& sessionId);
@@ -210,6 +222,37 @@ private:
LLButton* mCloseBtn;
const LLSysWellWindow* mParent;
};
+
+ class ObjectRowPanel: public LLPanel
+ {
+ typedef enum e_object_type
+ {
+ OBJ_UNKNOWN,
+
+ OBJ_SCRIPT,
+ OBJ_GIVE_INVENTORY,
+ OBJ_LOAD_URL
+ }EObjectType;
+
+ public:
+ ObjectRowPanel(const LLUUID& object_id, bool new_message = false);
+ virtual ~ObjectRowPanel();
+ /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
+ /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
+ /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
+ private:
+ void onClosePanel();
+ static EObjectType getObjectType(const LLNotificationPtr& notification);
+ void initChiclet(const LLUUID& object_id, bool new_message = false);
+ std::string getObjectName(const LLUUID& object_id);
+
+ typedef std::map<std::string, EObjectType> object_type_map;
+ static object_type_map initObjectTypeMap();
+ public:
+ LLIMChiclet* mChiclet;
+ private:
+ LLButton* mCloseBtn;
+ };
};
#endif // LL_LLSYSWELLWINDOW_H