summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorVadim Savchuk <vsavchuk@productengine.com>2009-11-11 21:11:54 +0200
committerVadim Savchuk <vsavchuk@productengine.com>2009-11-11 21:11:54 +0200
commit2fd51b4c711aa7ab70da6d7e7dfcb380b87cbedf (patch)
treed6c326869cd36b48dbc2b654783552bf3de7f1ba /indra/newview
parent6146cfc5c1c14f106b54b7394db6286d9b7bb67a (diff)
parent196e350629fb258acb8c0d784fdcfd50866b92ef (diff)
Manual merge.
Resolved conflicts in panel_bottomtray.xml and llavataractions.cpp. --HG-- branch : product-engine
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/app_settings/logcontrol.xml1
-rw-r--r--indra/newview/llavataractions.cpp1
-rw-r--r--indra/newview/llbottomtray.cpp407
-rw-r--r--indra/newview/llbottomtray.h33
-rw-r--r--indra/newview/llchathistory.cpp16
-rw-r--r--indra/newview/llchathistory.h4
-rw-r--r--indra/newview/llchiclet.cpp7
-rw-r--r--indra/newview/llimview.cpp7
-rw-r--r--indra/newview/llnearbychatbar.cpp3
-rw-r--r--indra/newview/llpanelimcontrolpanel.cpp7
-rw-r--r--indra/newview/llsidetray.cpp10
-rw-r--r--indra/newview/llsidetray.h3
-rw-r--r--indra/newview/skins/default/colors.xml2
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_bottomtray.xml27
-rw-r--r--indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_side_tray.xml6
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml1
18 files changed, 411 insertions, 127 deletions
diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index d7bb64ce8a..ec80d2d014 100644
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -34,6 +34,7 @@
</array>
<key>classes</key>
<array>
+ <string>LLBottomTray</string>
</array>
<key>files</key>
<array>
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 4456e0aa74..f631978565 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -54,6 +54,7 @@
#include "llmutelist.h"
#include "llrecentpeople.h"
#include "llsidetray.h"
+#include "lltrans.h"
#include "llviewerobjectlist.h"
#include "llviewermessage.h" // for handle_lure
#include "llviewerregion.h"
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 832694873f..204d7d23fa 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -50,6 +50,8 @@ LLBottomTray::LLBottomTray(const LLSD&)
mSpeakBtn(NULL),
mNearbyChatBar(NULL),
mToolbarStack(NULL)
+, mMovementButton(NULL)
+// Add more members
{
mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
@@ -72,6 +74,8 @@ LLBottomTray::LLBottomTray(const LLSD&)
//destroyed LLBottomTray requires some subsystems that are long gone
//LLUI::getRootView()->addChild(this);
+ initStateProcessedObjectMap();
+
// Necessary for focus movement among child controls
setFocusRoot(TRUE);
}
@@ -254,10 +258,11 @@ void LLBottomTray::showSnapshotButton(BOOL visible)
namespace
{
- const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel";
- const std::string& PANEL_CHATBAR_NAME = "chat_bar";
- const std::string& PANEL_MOVEMENT_NAME = "movement_panel";
- const std::string& PANEL_CAMERA_NAME = "cam_panel";
+ const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel";
+ const std::string& PANEL_CHATBAR_NAME = "chat_bar";
+ const std::string& PANEL_MOVEMENT_NAME = "movement_panel";
+ const std::string& PANEL_CAMERA_NAME = "cam_panel";
+ const std::string& PANEL_GESTURE_NAME = "gesture_panel";
}
BOOL LLBottomTray::postBuild()
@@ -283,159 +288,393 @@ BOOL LLBottomTray::postBuild()
return TRUE;
}
+void LLBottomTray::log(LLView* panel, const std::string& descr)
+{
+ if (NULL == panel) return;
+ LLView* layout = panel->getParent();
+ lldebugs << descr << ": "
+ << "panel: " << panel->getName()
+ << ", rect: " << panel->getRect()
+
+
+ << "layout: " << layout->getName()
+ << ", rect: " << layout->getRect()
+ << llendl
+ ;
+}
+
void LLBottomTray::verifyChildControlsSizes()
{
LLRect rect = mChicletPanel->getRect();
+ /*
if (rect.getWidth() < mChicletPanel->getMinWidth())
{
+ llwarns << "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ: chiclet panel less then min" << llendl;
mChicletPanel->reshape(mChicletPanel->getMinWidth(), rect.getHeight());
}
-
+*/
rect = mNearbyChatBar->getRect();
+/*
if (rect.getWidth() < mNearbyChatBar->getMinWidth())
{
+ llwarns << "WWWWWWWWWWWWWWWWWWWWWWWWWWWWW: near chat panel less then min" << llendl;
mNearbyChatBar->reshape(mNearbyChatBar->getMinWidth(), rect.getHeight());
}
- else if (rect.getWidth() > mNearbyChatBar->getMaxWidth())
+ else
+*/
+ if (rect.getWidth() > mNearbyChatBar->getMaxWidth())
{
+ llerrs << "WWWWWWWWWWWWWWWWWWWWWWWWWWWWW: near chat panel more then max width" << llendl;
+
rect.setLeftTopAndSize(rect.mLeft, rect.mTop, mNearbyChatBar->getMaxWidth(), rect.getHeight());
mNearbyChatBar->reshape(mNearbyChatBar->getMaxWidth(), rect.getHeight());
mNearbyChatBar->setRect(rect);
}
}
-
+#define __FEATURE_EXT_991
void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
{
+ lldebugs << "****************************************" << llendl;
+
+ S32 current_width = getRect().getWidth();
+ lldebugs << "Reshaping: "
+ << ", width: " << width
+ << ", height: " << height
+ << ", called_from_parent: " << called_from_parent
+ << ", cur width: " << current_width
+ << ", cur height: " << getRect().getHeight()
+ << llendl;
+
+ if (mNearbyChatBar) log(mNearbyChatBar, "before");
+ if (mChicletPanel) log(mChicletPanel, "before");
if (mChicletPanel && mToolbarStack && mNearbyChatBar)
{
-#ifdef __FEATURE_EXT_991__
- BOOL shrink = width < getRect().getWidth();
- const S32 MIN_RENDERED_CHARS = 3;
-#endif
+ mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
+ verifyChildControlsSizes();
+ updateResizeState(width, current_width);
+ }
- verifyChildControlsSizes();
- updateResizeState(width, height);
+ LLPanel::reshape(width, height, called_from_parent);
+
+
+ if (mNearbyChatBar) log(mNearbyChatBar, "after");
+ if (mChicletPanel) log(mChicletPanel, "after");
+}
+
+void LLBottomTray::updateResizeState(S32 new_width, S32 cur_width)
+{
+ mResizeState = RS_NORESIZE;
+ MASK compensative_view_item_mask = RS_CHATBAR_INPUT;
+ LLPanel* compansative_view = mNearbyChatBar;
+
+ S32 delta_width = new_width - cur_width;
+// if (delta_width == 0) return;
+ bool shrink = new_width < cur_width;
+
+ const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth();
+ const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth();
+
+ const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth();
+ const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth();
+ const S32 chatbar_panel_max_width = mNearbyChatBar->getMaxWidth();
+
+ lldebugs << "chatbar_panel_width: " << chatbar_panel_width
+ << ", chatbar_panel_min_width: " << chatbar_panel_min_width
+ << ", chatbar_panel_max_width: " << chatbar_panel_max_width
+ << ", chiclet_panel_width: " << chiclet_panel_width
+ << ", chiclet_panel_min_width: " << chiclet_panel_min_width
+ << llendl;
+
+ bool still_should_be_processed = true;
+ // bottom tray is narrowed
+ if (shrink)
+ {
+ S32 compensative_delta_width = 0;
+ if (chiclet_panel_width > chiclet_panel_min_width)
+ {
+ // we have some space to decrease chiclet panel
+ S32 panel_delta_min = chiclet_panel_width - chiclet_panel_min_width;
+ mResizeState |= RS_CHICLET_PANEL;
+
+ S32 delta_panel = llmin(-delta_width, panel_delta_min);
+
+ lldebugs << "delta_width: " << delta_width
+ << ", panel_delta_min: " << panel_delta_min
+ << ", delta_panel: " << delta_panel
+ << llendl;
+
+ // is chiclet panel width enough to process resizing?
+ delta_width += panel_delta_min;
- switch (mResizeState)
+ still_should_be_processed = delta_width < 0;
+
+ mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - delta_panel, mChicletPanel->getParent()->getRect().getHeight());
+ log(mChicletPanel, "after processing panel decreasing via chiclet panel");
+
+ lldebugs << "RS_CHICLET_PANEL"
+ << ", delta_width: " << delta_width
+ << llendl;
+ }
+
+ if (still_should_be_processed && chatbar_panel_width > chatbar_panel_min_width)
{
- case STATE_CHICLET_PANEL:
- mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
+ // we have some space to decrease chatbar panel
+ S32 panel_delta_min = chatbar_panel_width - chatbar_panel_min_width;
+ mResizeState |= RS_CHATBAR_INPUT;
- mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, FALSE);
- mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, FALSE);
- mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE);
+ S32 delta_panel = llmin(-delta_width, panel_delta_min);
- break;
- case STATE_CHATBAR_INPUT:
- mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, TRUE);
+ // is chatbar panel width enough to process resizing?
+ delta_width += panel_delta_min;
+
- mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, FALSE);
- mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, FALSE);
- mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE);
+ still_should_be_processed = delta_width < 0;
- break;
+ mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() - delta_panel, mNearbyChatBar->getRect().getHeight());
-#ifdef __FEATURE_EXT_991__
+ lldebugs << "RS_CHATBAR_INPUT"
+ << ", delta_panel: " << delta_panel
+ << ", delta_width: " << delta_width
+ << llendl;
- case STATE_BUTTONS:
- mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, TRUE);
- mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, TRUE);
+ log(mChicletPanel, "after nearby was processed");
- mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, FALSE);
- mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, FALSE);
+ }
+ if (still_should_be_processed)
+ {
+ mResizeState |= compensative_view_item_mask;
- if (shrink)
+ if (mSnapshotPanel->getVisible())
{
+ mResizeState |= RS_BUTTON_SNAPSHOT;
+ delta_width += mSnapshotPanel->getRect().getWidth();
- if (mSnapshotPanel->getVisible())
+ if (delta_width > 0)
{
- showSnapshotButton(FALSE);
+ compensative_delta_width += delta_width;
}
+ lldebugs << "RS_BUTTON_SNAPSHOT"
+ << ", compensative_delta_width: " << compensative_delta_width
+ << ", delta_width: " << delta_width
+ << llendl;
+ showSnapshotButton(false);
+ }
- if (mCamPanel->getVisible() && mCamButton->getLastDrawCharsCount() < MIN_RENDERED_CHARS)
+ if (delta_width < 0 && mCamPanel->getVisible())
+ {
+ mResizeState |= RS_BUTTON_CAMERA;
+ delta_width += mCamPanel->getRect().getWidth();
+ if (delta_width > 0)
{
- showCameraButton(FALSE);
+ compensative_delta_width += delta_width;
}
+ lldebugs << "RS_BUTTON_CAMERA"
+ << ", compensative_delta_width: " << compensative_delta_width
+ << ", delta_width: " << delta_width
+ << llendl;
+ showCameraButton(false);
+ }
- if (mMovementPanel->getVisible() && mMovementButton->getLastDrawCharsCount() < MIN_RENDERED_CHARS)
+ if (delta_width < 0 && mMovementPanel->getVisible())
+ {
+ mResizeState |= RS_BUTTON_MOVEMENT;
+ delta_width += mMovementPanel->getRect().getWidth();
+ if (delta_width > 0)
{
- showMoveButton(FALSE);
+ compensative_delta_width += delta_width;
}
-
+ lldebugs << "RS_BUTTON_MOVEMENT"
+ << ", compensative_delta_width: " << compensative_delta_width
+ << ", delta_width: " << delta_width
+ << llendl;
+ showMoveButton(false);
}
- else
- {
- showMoveButton(TRUE);
- mMovementPanel->draw();
- if (mMovementButton->getLastDrawCharsCount() >= MIN_RENDERED_CHARS)
- {
- showMoveButton(TRUE);
- }
- else
+ if (delta_width < 0 && mGesturePanel->getVisible())
+ {
+ mResizeState |= RS_BUTTON_GESTURES;
+ delta_width += mGesturePanel->getRect().getWidth();
+ if (delta_width > 0)
{
- showMoveButton(FALSE);
+ compensative_delta_width += delta_width;
}
+ lldebugs << "RS_BUTTON_GESTURES"
+ << ", compensative_delta_width: " << compensative_delta_width
+ << ", delta_width: " << delta_width
+ << llendl;
+ showGestureButton(false);
+ }
+
+ if (delta_width < 0)
+ {
+ llwarns << "WARNING: there is no enough room for bottom tray, resizing still should be processed" << llendl;
}
- break;
-#endif
- default:
- break;
+ if (compensative_delta_width != 0)
+ {
+ if (compansative_view) log(compansative_view, "before applying compensative width: ");
+ compansative_view->reshape(compansative_view->getRect().getWidth() + compensative_delta_width, compansative_view->getRect().getHeight() );
+ if (compansative_view) log(compansative_view, "after applying compensative width: ");
+ lldebugs << compensative_delta_width << llendl;
+
+ }
}
}
+ // bottom tray is widen
+ else
+ {
+ processWidthIncreased(delta_width);
+ }
- LLPanel::reshape(width, height, called_from_parent);
+ lldebugs << "New resize state: " << mResizeState << llendl;
}
-void LLBottomTray::updateResizeState(S32 width, S32 height)
+void LLBottomTray::processWidthDecreased(S32 delta_width)
{
- mResizeState = STATE_BUTTONS;
- const S32 chiclet_panel_width = mChicletPanel->getRect().getWidth();
+}
+
+void LLBottomTray::processWidthIncreased(S32 delta_width)
+{
+ const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth();
const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth();
const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth();
const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth();
const S32 chatbar_panel_max_width = mNearbyChatBar->getMaxWidth();
- // bottom tray is narrowed
- if (width < getRect().getWidth())
+ const S32 chatbar_available_shrink_width = chatbar_panel_width - chatbar_panel_min_width;
+ const S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width;
+
+ // how many room we have to show hidden buttons
+ S32 available_width = delta_width + chatbar_available_shrink_width + available_width_chiclet;
+ S32 buttons_required_width = 0; //How many room will take shown buttons
+
+ if (available_width > 0)
{
- if (chiclet_panel_width > chiclet_panel_min_width)
- {
- mResizeState = STATE_CHICLET_PANEL;
- }
- else if (chatbar_panel_width > chatbar_panel_min_width)
- {
- mResizeState = STATE_CHATBAR_INPUT;
- }
- else
- {
- mResizeState = STATE_BUTTONS;
- }
+ lldebugs << "Trying to process: RS_BUTTON_GESTURES" << llendl;
+ processShowButton(RS_BUTTON_GESTURES, &available_width, &buttons_required_width);
}
- // bottom tray is widen
- else
+
+ if (available_width > 0)
+ {
+ lldebugs << "Trying to process: RS_BUTTON_MOVEMENT" << llendl;
+ processShowButton(RS_BUTTON_MOVEMENT, &available_width, &buttons_required_width);
+ }
+
+ if (available_width > 0)
+ {
+ lldebugs << "Trying to process: RS_BUTTON_CAMERA" << llendl;
+ processShowButton(RS_BUTTON_CAMERA, &available_width, &buttons_required_width);
+ }
+
+ if (available_width > 0)
+ {
+ lldebugs << "Trying to process: RS_BUTTON_SNAPSHOT" << llendl;
+ processShowButton(RS_BUTTON_SNAPSHOT, &available_width, &buttons_required_width);
+ }
+
+ // if we have to show some buttons but whidth increasing is not enough...
+ if (buttons_required_width > 0 && delta_width < buttons_required_width)
{
-#ifdef __FEATURE_EXT_991__
- if (!mMovementPanel->getVisible())
+ // ... let's shrink nearby chat & chiclet panels
+ S32 required_to_process_width = buttons_required_width;
+
+ // 1. use delta width of resizing
+ required_to_process_width -= delta_width;
+
+ // 2. use width available via decreasing of nearby chat panel
+ S32 chatbar_shrink_width = required_to_process_width;
+ if (chatbar_available_shrink_width < chatbar_shrink_width)
{
- mResizeState = STATE_BUTTONS;
+ chatbar_shrink_width = chatbar_available_shrink_width;
}
- else
-#endif
- if (chatbar_panel_width < chatbar_panel_max_width)
+
+ log(mNearbyChatBar, "increase width: before applying compensative width: ");
+ mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() - chatbar_shrink_width, mNearbyChatBar->getRect().getHeight() );
+ if (mNearbyChatBar) log(mNearbyChatBar, "after applying compensative width: ");
+ lldebugs << chatbar_shrink_width << llendl;
+
+ // 3. use width available via decreasing of chiclet panel
+ required_to_process_width -= chatbar_shrink_width;
+
+ if (required_to_process_width > 0)
{
- mResizeState = STATE_CHATBAR_INPUT;
+ mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - required_to_process_width, mChicletPanel->getParent()->getRect().getHeight());
+ log(mChicletPanel, "after applying compensative width for chiclets: ");
+ lldebugs << required_to_process_width << llendl;
}
- else
+
+ }
+
+ // shown buttons take some space, rest should be processed by nearby chatbar & chiclet panels
+ delta_width -= buttons_required_width;
+
+ // how many space can nearby chatbar take?
+ S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth();
+ if (delta_width > 0 && chatbar_panel_width_ < chatbar_panel_max_width)
+ {
+ mResizeState |= RS_CHATBAR_INPUT;
+ S32 delta_panel_max = chatbar_panel_max_width - chatbar_panel_width_;
+ S32 delta_panel = llmin(delta_width, delta_panel_max);
+ delta_width -= delta_panel_max;
+ mNearbyChatBar->reshape(chatbar_panel_width_ + delta_panel, mNearbyChatBar->getRect().getHeight());
+ }
+}
+
+bool LLBottomTray::processShowButton(EResizeState shown_object_type, S32* available_width, S32* buttons_required_width)
+{
+ LLPanel* panel = mStateProcessedObjectMap[shown_object_type];
+ if (NULL == panel)
+ {
+ lldebugs << "There is no object to process for state: " << shown_object_type << llendl;
+ return false;
+ }
+ bool can_be_shown = canButtonBeShown(panel);
+ if (can_be_shown)
+ {
+ //validate if we have enough room to show this button
+ const S32 required_width = panel->getRect().getWidth();
+ can_be_shown = *available_width >= required_width;
+ if (can_be_shown)
{
- mResizeState = STATE_CHICLET_PANEL;
+ *available_width -= required_width;
+ *buttons_required_width += required_width;
+
+ switch (shown_object_type)
+ {
+ case RS_BUTTON_GESTURES: showGestureButton(true); break;
+ case RS_BUTTON_MOVEMENT: showMoveButton(true); break;
+ case RS_BUTTON_CAMERA: showCameraButton(true); break;
+ case RS_BUTTON_SNAPSHOT: showSnapshotButton(true); break;
+ default:
+ llwarns << "Unexpected type of button to be shown: " << shown_object_type << llendl;
+ }
+
+ lldebugs << "processing object type: " << shown_object_type
+ << ", buttons_required_width: " << buttons_required_width
+ << llendl;
}
}
+ return can_be_shown;
+}
+bool LLBottomTray::canButtonBeShown(LLPanel* panel) const
+{
+ bool can_be_shown = !panel->getVisible();
+ if (can_be_shown)
+ {
+ // *TODO: mantipov: synchronize with situation when button was hidden via context menu;
+ }
+ return can_be_shown;
+}
- // TODO: finish implementation
+void LLBottomTray::initStateProcessedObjectMap()
+{
+ mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_GESTURES, mGesturePanel));
+ mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, mMovementPanel));
+ mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, mCamPanel));
+ mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SNAPSHOT, mSnapshotPanel));
}
+//EOF
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index 02588a1975..6509fea63d 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -52,6 +52,7 @@ class LLBottomTray
, public LLPanel
, public LLIMSessionObserver
{
+ LOG_CLASS(LLBottomTray);
friend class LLSingleton<LLBottomTray>;
public:
~LLBottomTray();
@@ -82,18 +83,32 @@ public:
void showSnapshotButton(BOOL visible);
private:
-
- enum EResizeState
+ typedef enum e_resize_status_type
{
- STATE_CHICLET_PANEL = 1,
- STATE_CHATBAR_INPUT,
- STATE_BUTTONS
- };
-
- void updateResizeState(S32 width, S32 height);
+ RS_NORESIZE = 0x0000
+ , RS_CHICLET_PANEL = 0x0001
+ , RS_CHATBAR_INPUT = 0x0002
+ , RS_BUTTON_SNAPSHOT = 0x0004
+ , RS_BUTTON_CAMERA = 0x0008
+ , RS_BUTTON_MOVEMENT = 0x0010
+ , RS_BUTTON_GESTURES = 0x0020
+ , RS_BUTTON_SPEAK = 0x0040
+ , RS_RESIZABLE_BUTTONS = /*RS_BUTTON_SNAPSHOT | */RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES
+ }EResizeState;
+
+ void updateResizeState(S32 new_width, S32 cur_width);
void verifyChildControlsSizes();
+ void processWidthDecreased(S32 delta_width);
+ void processWidthIncreased(S32 delta_width);
+ void log(LLView* panel, const std::string& descr);
+ bool processShowButton(EResizeState shown_object_type, S32* available_width, S32* buttons_required_width);
+ bool canButtonBeShown(LLPanel* panel) const;
+ void initStateProcessedObjectMap();
+
+ MASK mResizeState;
- EResizeState mResizeState;
+ typedef std::map<EResizeState, LLPanel*> state_object_map_t;
+ state_object_map_t mStateProcessedObjectMap;
protected:
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 6cdec469dc..d1922cfd6e 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -174,7 +174,7 @@ public:
const std::string& getFirstName() const { return mFirstName; }
const std::string& getLastName () const { return mLastName; }
- void setup(const LLChat& chat)
+ void setup(const LLChat& chat,const LLStyle::Params& style_params)
{
mAvatarID = chat.mFromID;
mSourceType = chat.mSourceType;
@@ -184,8 +184,11 @@ public:
mSourceType = CHAT_SOURCE_SYSTEM;
}
-
LLTextBox* userName = getChild<LLTextBox>("user_name");
+
+ LLUIColor color = style_params.color;
+ userName->setReadOnlyColor(color);
+ userName->setColor(color);
if(!chat.mFromName.empty())
{
@@ -197,6 +200,7 @@ public:
std::string SL = LLTrans::getString("SECOND_LIFE");
userName->setValue(SL);
}
+
LLTextBox* timeBox = getChild<LLTextBox>("time_box");
timeBox->setValue(formatCurrentTime());
@@ -322,17 +326,17 @@ LLView* LLChatHistory::getSeparator()
return separator;
}
-LLView* LLChatHistory::getHeader(const LLChat& chat)
+LLView* LLChatHistory::getHeader(const LLChat& chat,const LLStyle::Params& style_params)
{
LLChatHistoryHeader* header = LLChatHistoryHeader::createInstance(mMessageHeaderFilename);
- header->setup(chat);
+ header->setup(chat,style_params);
return header;
}
void LLChatHistory::appendWidgetMessage(const LLChat& chat, LLStyle::Params& style_params)
{
LLView* view = NULL;
- std::string view_text = "\n[" + formatCurrentTime() + "]:[" + chat.mFromName + "] ";;
+ std::string view_text = "\n[" + formatCurrentTime() + "] " + chat.mFromName + ": ";
LLInlineViewSegment::Params p;
p.force_newline = true;
@@ -347,7 +351,7 @@ void LLChatHistory::appendWidgetMessage(const LLChat& chat, LLStyle::Params& sty
}
else
{
- view = getHeader(chat);
+ view = getHeader(chat,style_params);
if (getText().size() == 0)
p.top_pad = 0;
else
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index 3789ebff4e..f0944042af 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -94,11 +94,9 @@ class LLChatHistory : public LLTextEditor
LLView* getSeparator();
/**
* Builds a message header.
- * @param from owner of a message.
- * @param time time of a message.
* @return pointer to LLView header object.
*/
- LLView* getHeader(const LLChat& chat);
+ LLView* getHeader(const LLChat& chat,const LLStyle::Params& style_params);
public:
~LLChatHistory();
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 09de23deac..b919195fb2 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -791,11 +791,13 @@ LLChicletPanel::Params::Params()
chiclet_padding = 3;
scrolling_offset = 40;
+/*
if (!min_width.isProvided())
{
// min_width = 4 chiclets + 3 paddings
- min_width = 179 + 3*chiclet_padding;
+ min_width = 180 + 3*chiclet_padding;
}
+*/
};
LLChicletPanel::LLChicletPanel(const Params&p)
@@ -809,6 +811,7 @@ LLChicletPanel::LLChicletPanel(const Params&p)
, mShowControls(true)
{
LLPanel::Params panel_params;
+ panel_params.follows.flags(FOLLOWS_LEFT | FOLLOWS_RIGHT);
mScrollArea = LLUICtrlFactory::create<LLPanel>(panel_params,this);
// important for Show/Hide Camera and Move controls menu in bottom tray to work properly
@@ -1059,7 +1062,7 @@ void LLChicletPanel::reshape(S32 width, S32 height, BOOL called_from_parent )
width, scroll_button_rect.mBottom));
mScrollArea->setRect(LLRect(scroll_button_rect.getWidth() + SCROLL_BUTTON_PAD,
height, width - scroll_button_rect.getWidth() - SCROLL_BUTTON_PAD, 0));
- mShowControls = width > mMinWidth;
+ mShowControls = width >= mMinWidth;
mScrollArea->setVisible(mShowControls);
trimChiclets();
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index b1ffe70e25..be5fbdbbf8 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -439,8 +439,11 @@ bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, co
addToHistory(session_id, from, from_id, utf8_text);
if (log2file) logToFile(session_id, from, from_id, utf8_text);
- //we do not count system messages
- if (from_id.notNull()) session->mNumUnread++;
+ //we do not count system messages and our messages
+ if (from_id.notNull() && from_id != gAgentID && SYSTEM_FROM != from)
+ {
+ session->mNumUnread++;
+ }
// notify listeners
LLSD arg;
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index d54545971b..3993431311 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -260,6 +260,8 @@ bool LLNearbyChatBar::instanceExists()
void LLNearbyChatBar::draw()
{
+// TODO: mantipov: remove
+/*
LLRect rect = getRect();
S32 max_width = getMaxWidth();
@@ -269,6 +271,7 @@ void LLNearbyChatBar::draw()
reshape(rect.getWidth(), rect.getHeight(), FALSE);
setRect(rect);
}
+*/
displaySpeakingIndicator();
LLPanel::draw();
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index 5a0c1164de..1770138b3e 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -181,7 +181,14 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)
LLIMModel::LLIMSession* im_session =
im_model.findIMSession(session_id);
if( im_session && !im_session->mOtherParticipantIsAvatar )
+ {
childSetEnabled("view_profile_btn", FALSE);
+ childSetEnabled("add_friend_btn", FALSE);
+
+ childSetEnabled("share_btn", FALSE);
+ childSetEnabled("teleport_btn", FALSE);
+ childSetEnabled("pay_btn", FALSE);
+ }
}
void LLPanelIMControlPanel::nameUpdatedCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group)
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index 3d0b4de88a..e8f310c27e 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -353,7 +353,8 @@ bool LLSideTray::selectTabByName (const std::string& name)
return true;
}
-LLButton* LLSideTray::createButton (const std::string& name,const std::string& image,LLUICtrl::commit_callback_t callback)
+LLButton* LLSideTray::createButton (const std::string& name,const std::string& image,const std::string& tooltip,
+ LLUICtrl::commit_callback_t callback)
{
static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());
@@ -374,6 +375,9 @@ LLButton* LLSideTray::createButton (const std::string& name,const std::string& i
LLButton* button = LLUICtrlFactory::create<LLButton> (bparams);
button->setLabel(name);
button->setClickedCallback(callback);
+
+ if(tooltip!="Home")
+ button->setToolTip(tooltip);
if(image.length())
{
@@ -412,12 +416,12 @@ void LLSideTray::createButtons ()
// change if the home screen becomes its own tab.
if (name == "sidebar_home")
{
- mCollapseButton = createButton("",sidebar_tab->mImage,
+ mCollapseButton = createButton("",sidebar_tab->mImage,sidebar_tab->getTabTitle(),
boost::bind(&LLSideTray::onToggleCollapse, this));
}
else
{
- LLButton* button = createButton("",sidebar_tab->mImage,
+ LLButton* button = createButton("",sidebar_tab->mImage,sidebar_tab->getTabTitle(),
boost::bind(&LLSideTray::onTabButtonClick, this, name));
mTabButtons[name] = button;
}
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
index 5bb17eedd5..8b30199c45 100644
--- a/indra/newview/llsidetray.h
+++ b/indra/newview/llsidetray.h
@@ -141,7 +141,8 @@ protected:
LLSideTrayTab* getTab (const std::string& name);
void createButtons ();
- LLButton* createButton (const std::string& name,const std::string& image,LLUICtrl::commit_callback_t callback);
+ LLButton* createButton (const std::string& name,const std::string& image,const std::string& tooltip,
+ LLUICtrl::commit_callback_t callback);
void arrange ();
void reflectCollapseChange();
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 7e19a80c10..028a5844c6 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -513,7 +513,7 @@
reference="White" />
<color
name="ObjectChatColor"
- reference="LtGray" />
+ reference="0.7 0.8 0.9 1" />
<color
name="OverdrivenColor"
value="1 0 0 1" />
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index ccd8bc569e..96c6d970c2 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5013,6 +5013,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you a
name="GodMessage"
type="notify">
[NAME]
+
[MESSAGE]
</notification>
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index 5ceb0b39a2..8188016455 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -45,7 +45,7 @@
min_height="23"
width="310"
top="0"
- min_width="310"
+ min_width="192"
name="chat_bar"
user_resize="false"
filename="panel_nearby_chat_bar.xml" />
@@ -94,11 +94,11 @@
min_height="28"
width="82"
top_delta="0"
- min_width="76"
+ min_width="82"
name="gesture_panel"
user_resize="false">
<gesture_combo_box
- follows="right"
+ follows="left|right"
height="23"
label="Gesture"
layout="topleft"
@@ -129,8 +129,9 @@
layout="topleft"
min_height="28"
name="movement_panel"
+ user_resize="false"
width="80"
- min_width="76">
+ min_width="80">
<button
follows="left|right"
height="23"
@@ -166,10 +167,10 @@
height="28"
layout="topleft"
min_height="28"
- min_width="76"
+ min_width="80"
name="cam_panel"
- top_delta="-10"
- width="100">
+ user_resize="false"
+ width="80">
<button
follows="left|right"
height="23"
@@ -205,6 +206,7 @@
follows="left|right"
height="28"
layout="topleft"
+ min_width="40"
name="snapshot_panel"
width="40">
<button
@@ -231,15 +233,18 @@
top="0"
name="chiclet_list_panel"
width="189"
- min_width="189"
+ min_width="180"
user_resize="false"
auto_resize="true">
+<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
+as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
<chiclet_panel
mouse_opaque="false"
follows="left|right"
height="28"
layout="topleft"
left="0"
+ min_width="180"
name="chiclet_list"
top="0"
chiclet_padding="3"
@@ -313,9 +318,9 @@
/>
<unread_notifications
width="34"
- height="23"
- left="22"
- top="23" />
+ height="20"
+ left="0"
+ top="19" />
</chiclet_notification>
</layout_panel>
<icon
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
index a12797d96b..1ef845b769 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
@@ -9,7 +9,7 @@
top="21"
width="310">
<string name="min_width">
- 310
+ 192
</string>
<string name="max_width">
320
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml
index a9874f4553..a419a02d75 100644
--- a/indra/newview/skins/default/xui/en/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml
@@ -94,7 +94,7 @@
<sidetray_tab
name="sidebar_me"
help_topic="sidebar_me"
- tab_title="Me"
+ tab_title="My Profile"
description="Edit your public profile and Picks."
image="TabIcon_Me_Off"
image_selected="TabIcon_Me_Selected"
@@ -112,7 +112,7 @@
<sidetray_tab
name="sidebar_appearance"
help_topic="sidebar_appearance"
- tab_title="Appearance"
+ tab_title="My Appearance"
description="Change your appearance and current look."
image="TabIcon_Appearance_Off"
image_selected="TabIcon_Appearance_Selected"
@@ -131,7 +131,7 @@
<sidetray_tab
name="sidebar_inventory"
help_topic="sidebar_inventory"
- tab_title="Inventory"
+ tab_title="My Inventory"
description="Browse your inventory."
image="TabIcon_Things_Off"
image_selected="TabIcon_Things_Selected"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index b0a406a277..ea66bfa197 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2850,7 +2850,6 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
<string name="IM_to_label">To</string>
<string name="IM_moderator_label">(Moderator)</string>
-
<string name="ringing-im">
Joining Voice Chat...
</string>