summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/app_settings/settings.xml8
-rw-r--r--indra/newview/llchiclet.cpp65
-rw-r--r--indra/newview/llchiclet.h5
-rw-r--r--indra/newview/llfloaterimcontainer.cpp17
-rw-r--r--indra/newview/llfloaterimcontainer.h1
-rw-r--r--indra/newview/llfloaterimsessiontab.cpp10
-rw-r--r--indra/newview/llimview.cpp2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/toolbar.xml4
8 files changed, 41 insertions, 71 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index b703b9cc8e..be793a344c 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -13142,10 +13142,10 @@
<key>Value</key>
<real>50.0</real>
</map>
- <key>WellIconFlashCount</key>
+ <key>FlashCount</key>
<map>
<key>Comment</key>
- <string>Number of flashes of IM Well and Notification Well icons after which flashing buttons stay lit up. Requires restart.</string>
+ <string>Number of flashes of item. Requires restart.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -13153,10 +13153,10 @@
<key>Value</key>
<integer>3</integer>
</map>
- <key>WellIconFlashPeriod</key>
+ <key>FlashPeriod</key>
<map>
<key>Comment</key>
- <string>Period at which IM Well and Notification Well icons flash (seconds). Requires restart.</string>
+ <string>Period at which item flash (seconds). Requires restart.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 64d8a68a99..d6860640b7 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -67,60 +67,6 @@ boost::signals2::signal<LLChiclet* (const LLUUID&),
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
-/**
- * Updates the Well's 'Lit' state to flash it when "new messages" are come.
- *
- * It gets callback which will be called 2*N times with passed period. See EXT-3147
- */
-class LLSysWellChiclet::FlashToLitTimer : public LLEventTimer
-{
-public:
- typedef boost::function<void()> callback_t;
-
- /**
- * Constructor.
- *
- * @param count - how many times callback should be called (twice to not change original state)
- * @param period - how frequently callback should be called
- * @param cb - callback to be called each tick
- */
- FlashToLitTimer(S32 count, F32 period, callback_t cb)
- : LLEventTimer(period)
- , mCallback(cb)
- , mFlashCount(2 * count)
- , mCurrentFlashCount(0)
- {
- mEventTimer.stop();
- }
-
- BOOL tick()
- {
- mCallback();
-
- if (++mCurrentFlashCount == mFlashCount) mEventTimer.stop();
- return FALSE;
- }
-
- void flash()
- {
- mCurrentFlashCount = 0;
- mEventTimer.start();
- }
-
- void stopFlashing()
- {
- mEventTimer.stop();
- }
-
-private:
- callback_t mCallback;
-
- /**
- * How many times Well will blink.
- */
- S32 mFlashCount;
- S32 mCurrentFlashCount;
-};
LLSysWellChiclet::Params::Params()
: button("button")
@@ -145,13 +91,8 @@ LLSysWellChiclet::LLSysWellChiclet(const Params& p)
mButton = LLUICtrlFactory::create<LLButton>(button_params);
addChild(mButton);
- // use settings from settings.xml to be able change them via Debug settings. See EXT-5973.
- // Due to Timer is implemented as derived class from EventTimer it is impossible to change period
- // in runtime. So, both settings are made as required restart.
- static S32 flash_to_lit_count = gSavedSettings.getS32("WellIconFlashCount");
- static F32 flash_period = gSavedSettings.getF32("WellIconFlashPeriod");
- mFlashToLitTimer = new FlashToLitTimer(flash_to_lit_count, flash_period, boost::bind(&LLSysWellChiclet::changeLitState, this));
+ mFlashToLitTimer = new LLFlashTimer(boost::bind(&LLSysWellChiclet::changeLitState, this, _1));
}
LLSysWellChiclet::~LLSysWellChiclet()
@@ -191,7 +132,7 @@ void LLSysWellChiclet::setToggleState(BOOL toggled) {
mButton->setToggleState(toggled);
}
-void LLSysWellChiclet::changeLitState()
+void LLSysWellChiclet::changeLitState(bool blink)
{
setNewMessagesState(!mIsNewMessagesState);
}
@@ -320,7 +261,7 @@ void LLIMWellChiclet::messageCountChanged(const LLSD& session_data)
// we have to flash to 'Lit' state each time new unread message is coming.
if (counter > mCounter && im_not_visible)
{
- mFlashToLitTimer->flash();
+ mFlashToLitTimer->startFlashing();
}
else if (counter == 0)
{
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index d6be2df103..79ffad92ef 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -29,6 +29,7 @@
#include "llavatariconctrl.h"
#include "llbutton.h"
+#include "llflashtimer.h"
#include "llpanel.h"
#include "lltextbox.h"
#include "lloutputmonitorctrl.h"
@@ -844,7 +845,7 @@ protected:
* There is an assumption that it will be called 2*N times to do not change its start state.
* @see FlashToLitTimer
*/
- void changeLitState();
+ void changeLitState(bool blink);
/**
* Displays menu.
@@ -860,7 +861,7 @@ protected:
S32 mMaxDisplayedCount;
bool mIsNewMessagesState;
- FlashToLitTimer* mFlashToLitTimer;
+ LLFlashTimer* mFlashToLitTimer;
LLContextMenu* mContextMenu;
};
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index aebfdb5bce..90ddeef5bb 100644
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -41,6 +41,7 @@
#include "llcallbacklist.h"
#include "llgroupactions.h"
#include "llgroupiconctrl.h"
+#include "llflashtimer.h"
#include "llfloateravatarpicker.h"
#include "llfloaterpreference.h"
#include "llimview.h"
@@ -1154,6 +1155,7 @@ void LLFloaterIMContainer::selectConversation(const LLUUID& session_id)
}
}
+
// Synchronous select the conversation item and the conversation floater
BOOL LLFloaterIMContainer::selectConversationPair(const LLUUID& session_id, bool select_widget)
{
@@ -1593,7 +1595,22 @@ void LLFloaterIMContainer::reSelectConversation()
{
selectFloater(session_floater);
}
+}
+void LLFloaterIMContainer::flashConversationItemWidget(const LLUUID& session_id, bool is_flashes)
+{
+ LLFolderViewItem* widget = get_ptr_in_map(mConversationsWidgets,session_id);
+ if (widget)
+ {
+ if (is_flashes)
+ {
+ widget->getFlashTimer()->startFlashing();
+ }
+ else
+ {
+ widget->getFlashTimer()->stopFlashing();
+ }
+ }
}
// EOF
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
index afc8d00174..9112b54018 100644
--- a/indra/newview/llfloaterimcontainer.h
+++ b/indra/newview/llfloaterimcontainer.h
@@ -164,6 +164,7 @@ public:
void setTimeNow(const LLUUID& session_id, const LLUUID& participant_id);
void setNearbyDistances();
void reSelectConversation();
+ void flashConversationItemWidget(const LLUUID& session_id, bool is_flashes);
private:
LLConversationViewSession* createConversationItemWidget(LLConversationItem* item);
diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp
index 69b42cdd6d..42e7e6cb55 100644
--- a/indra/newview/llfloaterimsessiontab.cpp
+++ b/indra/newview/llfloaterimsessiontab.cpp
@@ -40,6 +40,7 @@
#include "llfloaterimsession.h"
#include "llfloaterimcontainer.h" // to replace separate IM Floaters with multifloater container
#include "lllayoutstack.h"
+#include "lltoolbarview.h"
#include "llfloaterimnearbychat.h"
const F32 REFRESH_INTERVAL = 0.2f;
@@ -328,11 +329,20 @@ std::string LLFloaterIMSessionTab::appendTime()
void LLFloaterIMSessionTab::appendMessage(const LLChat& chat, const LLSD &args)
{
+
// Update the participant activity time
LLFloaterIMContainer* im_box = LLFloaterIMContainer::findInstance();
if (im_box)
{
im_box->setTimeNow(mSessionID,chat.mFromID);
+
+ // TODO: Warning! The next two lines of code are included below only temporarily
+ // to demonstrate the correct format call the appropriate functions.
+ // They should be moved to the right places when working on CHUI-486. ~Alex ProductEngine.
+ // ---- start demo ----
+ im_box->flashConversationItemWidget(mSessionID, true); // flashing of the conversation's item
+ gToolBarView->flashCommand(LLCommandId("chat"), true); // flashing of the FUI button "Chat"
+ // ---- end demo -----
}
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index e2b678626b..b5dc4a7967 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -2808,7 +2808,7 @@ void LLIMMgr::inviteToSession(
{
bool isRejectGroupCall = (gSavedSettings.getBOOL("VoiceCallsRejectGroup") && (notify_box_type == "VoiceInviteGroup"));
bool isRejectNonFriendCall = (gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL));
- bool isRejectDoNotDisturb = gAgent.isDoNotDisturb();
+ bool isRejectDoNotDisturb = (gAgent.isDoNotDisturb() && !hasSession(session_id));
if (isRejectGroupCall || isRejectNonFriendCall || isRejectDoNotDisturb)
{
if (isRejectDoNotDisturb && !isRejectGroupCall && !isRejectNonFriendCall)
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
index 0aa478ace9..55ae158c00 100644
--- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -30,8 +30,8 @@
image_overlay_alignment="left"
use_ellipses="true"
auto_resize="true"
- button_flash_count="99999"
- button_flash_rate="1.0"
+ button_flash_count="3"
+ button_flash_rate="0.25"
flash_color="EmphasisColor"/>
<button_icon pad_left="10"
pad_right="10"