Automated merge with bundle:E:\code\viewer-experience+c:\users\richard\appdata\local\temp\thg.t3awyz\ssh__richard@hg.lindenlab.com_richard_viewer-experience-merge_2xcevh.hg
commit
78d76eb4b0
|
|
@ -171,13 +171,6 @@ viewer-tut-teamcity.email = enus@lindenlab.com
|
|||
viewer-tut-teamcity.build_server = false
|
||||
viewer-tut-teamcity.build_server_tests = false
|
||||
|
||||
# ========================================
|
||||
# experience
|
||||
# ========================================
|
||||
viewer-experience.public_build = false
|
||||
viewer-experience.viewer_channel = "Second Life SkyLight Viewer"
|
||||
viewer-experience.login_channel = "Second Life SkyLight Viewer"
|
||||
|
||||
# =================================================================
|
||||
# asset delivery 2010 projects
|
||||
# =================================================================
|
||||
|
|
|
|||
|
|
@ -108,9 +108,6 @@ static long getDictLong (CFDictionaryRef refDict, CFStringRef key);
|
|||
static EventTypeSpec WindowHandlerEventList[] =
|
||||
{
|
||||
// Window-related events
|
||||
// { kEventClassWindow, kEventWindowCollapsing },
|
||||
// { kEventClassWindow, kEventWindowCollapsed },
|
||||
// { kEventClassWindow, kEventWindowShown },
|
||||
{ kEventClassWindow, kEventWindowActivated },
|
||||
{ kEventClassWindow, kEventWindowDeactivated },
|
||||
{ kEventClassWindow, kEventWindowShown },
|
||||
|
|
@ -121,8 +118,7 @@ static EventTypeSpec WindowHandlerEventList[] =
|
|||
{ kEventClassWindow, kEventWindowClose },
|
||||
{ kEventClassWindow, kEventWindowBoundsChanging },
|
||||
{ kEventClassWindow, kEventWindowBoundsChanged },
|
||||
// { kEventClassWindow, kEventWindowZoomed },
|
||||
// { kEventClassWindow, kEventWindowDrawContent },
|
||||
{ kEventClassWindow, kEventWindowGetIdealSize },
|
||||
|
||||
// Mouse events
|
||||
{ kEventClassMouse, kEventMouseDown },
|
||||
|
|
@ -248,6 +244,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
|
|||
mCursorIgnoreNextDelta = FALSE;
|
||||
mNeedsResize = FALSE;
|
||||
mOverrideAspectRatio = 0.f;
|
||||
mMaximized = FALSE;
|
||||
mMinimized = FALSE;
|
||||
mTSMDocument = NULL; // Just in case.
|
||||
mLanguageTextInputAllowed = FALSE;
|
||||
|
|
@ -455,24 +452,23 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
|
|||
|
||||
if(!mFullscreen && (mWindow == NULL))
|
||||
{
|
||||
Rect window_rect;
|
||||
//int displayWidth = CGDisplayPixelsWide(mDisplay);
|
||||
//int displayHeight = CGDisplayPixelsHigh(mDisplay);
|
||||
//const int menuBarPlusTitleBar = 44; // Ugly magic number.
|
||||
|
||||
LL_DEBUGS("Window") << "createContext: creating window" << LL_ENDL;
|
||||
|
||||
window_rect.left = (long) x;
|
||||
window_rect.right = (long) x + width;
|
||||
window_rect.top = (long) y;
|
||||
window_rect.bottom = (long) y + height;
|
||||
mPreviousWindowRect.left = (long) x;
|
||||
mPreviousWindowRect.right = (long) x + width;
|
||||
mPreviousWindowRect.top = (long) y;
|
||||
mPreviousWindowRect.bottom = (long) y + height;
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
// Create the window
|
||||
//-----------------------------------------------------------------------
|
||||
mWindow = NewCWindow(
|
||||
NULL,
|
||||
&window_rect,
|
||||
&mPreviousWindowRect,
|
||||
mWindowTitle,
|
||||
false, // Create the window invisible. Whoever calls createContext() should show it after any moving/resizing.
|
||||
// noGrowDocProc, // Window with no grow box and no zoom box
|
||||
|
|
@ -481,8 +477,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
|
|||
kFirstWindowOfClass,
|
||||
true,
|
||||
(long)this);
|
||||
|
||||
|
||||
|
||||
if (!mWindow)
|
||||
{
|
||||
setupFailure("Window creation error", "Error", OSMB_OK);
|
||||
|
|
@ -1093,31 +1088,22 @@ BOOL LLWindowMacOSX::getVisible()
|
|||
|
||||
BOOL LLWindowMacOSX::getMinimized()
|
||||
{
|
||||
BOOL result = FALSE;
|
||||
|
||||
// Since the set of states where we want to act "minimized" is non-trivial, it's easier to
|
||||
// track things locally than to try and retrieve the state from the window manager.
|
||||
result = mMinimized;
|
||||
|
||||
return(result);
|
||||
return mMinimized;
|
||||
}
|
||||
|
||||
BOOL LLWindowMacOSX::getMaximized()
|
||||
{
|
||||
BOOL result = FALSE;
|
||||
|
||||
if (mWindow)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
return(result);
|
||||
return mMaximized;
|
||||
}
|
||||
|
||||
BOOL LLWindowMacOSX::maximize()
|
||||
{
|
||||
// TODO
|
||||
return FALSE;
|
||||
if (mWindow && !mMaximized)
|
||||
{
|
||||
ZoomWindow(mWindow, inContent, true);
|
||||
}
|
||||
|
||||
return mMaximized;
|
||||
}
|
||||
|
||||
BOOL LLWindowMacOSX::getFullscreen()
|
||||
|
|
@ -2559,7 +2545,24 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
|
|||
|
||||
GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, ¤tBounds);
|
||||
GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &previousBounds);
|
||||
|
||||
|
||||
// Put an offset into window un-maximize operation since the kEventWindowGetIdealSize
|
||||
// event only allows the specification of size and not position.
|
||||
if (mMaximized)
|
||||
{
|
||||
short leftOffset = mPreviousWindowRect.left - currentBounds.left;
|
||||
currentBounds.left += leftOffset;
|
||||
currentBounds.right += leftOffset;
|
||||
|
||||
short topOffset = mPreviousWindowRect.top - currentBounds.top;
|
||||
currentBounds.top += topOffset;
|
||||
currentBounds.bottom += topOffset;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Store off the size for future un-maximize operations
|
||||
mPreviousWindowRect = previousBounds;
|
||||
}
|
||||
|
||||
if ((currentBounds.right - currentBounds.left) < MIN_WIDTH)
|
||||
{
|
||||
|
|
@ -2578,13 +2581,43 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
|
|||
|
||||
case kEventWindowBoundsChanged:
|
||||
{
|
||||
// Get new window bounds
|
||||
Rect newBounds;
|
||||
|
||||
GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &newBounds);
|
||||
|
||||
// Get previous window bounds
|
||||
Rect oldBounds;
|
||||
GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &oldBounds);
|
||||
|
||||
// Determine if the new size is larger than the old
|
||||
bool newBoundsLarger = ((newBounds.right - newBounds.left) >= (oldBounds.right - oldBounds.left));
|
||||
newBoundsLarger &= ((newBounds.bottom - newBounds.top) >= (oldBounds.bottom - oldBounds.top));
|
||||
|
||||
// Check to see if this is a zoom event (+ button on window pane)
|
||||
unsigned int eventParams;
|
||||
GetEventParameter(event, kEventParamAttributes, typeUInt32, NULL, sizeof(int), NULL, &eventParams);
|
||||
bool isZoomEvent = ((eventParams & kWindowBoundsChangeZoom) != 0);
|
||||
|
||||
// Maximized flag is if zoom event and increasing window size
|
||||
mMaximized = (isZoomEvent && newBoundsLarger);
|
||||
|
||||
aglUpdateContext(mContext);
|
||||
|
||||
mCallbacks->handleResize(this, newBounds.right - newBounds.left, newBounds.bottom - newBounds.top);
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case kEventWindowGetIdealSize:
|
||||
// Only recommend a new ideal size when un-maximizing
|
||||
if (mMaximized == TRUE)
|
||||
{
|
||||
Point nonMaximizedSize;
|
||||
|
||||
nonMaximizedSize.v = mPreviousWindowRect.bottom - mPreviousWindowRect.top;
|
||||
nonMaximizedSize.h = mPreviousWindowRect.right - mPreviousWindowRect.left;
|
||||
|
||||
SetEventParameter(event, kEventParamDimensions, typeQDPoint, sizeof(Point), &nonMaximizedSize);
|
||||
result = noErr;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -156,7 +156,6 @@ protected:
|
|||
static pascal Boolean staticMoveEventComparator( EventRef event, void* data);
|
||||
OSStatus eventHandler (EventHandlerCallRef myHandler, EventRef event);
|
||||
void adjustCursorDecouple(bool warpingMouse = false);
|
||||
void fixWindowSize(void);
|
||||
void stopDockTileBounce();
|
||||
static MASK modifiersToMask(SInt16 modifiers);
|
||||
|
||||
|
|
@ -182,6 +181,7 @@ protected:
|
|||
EventComparatorUPP mMoveEventCampartorUPP;
|
||||
|
||||
Rect mOldMouseClip; // Screen rect to which the mouse cursor was globally constrained before we changed it in clipMouse()
|
||||
Rect mPreviousWindowRect; // Save previous window for un-maximize event
|
||||
Str255 mWindowTitle;
|
||||
double mOriginalAspectRatio;
|
||||
BOOL mSimulatedRightClick;
|
||||
|
|
@ -195,6 +195,7 @@ protected:
|
|||
BOOL mNeedsResize; // Constructor figured out the window is too big, it needs a resize.
|
||||
LLCoordScreen mNeedsResizeSize;
|
||||
F32 mOverrideAspectRatio;
|
||||
BOOL mMaximized;
|
||||
BOOL mMinimized;
|
||||
U32 mFSAASamples;
|
||||
BOOL mForceRebuild;
|
||||
|
|
|
|||
|
|
@ -214,6 +214,7 @@ set(viewer_SOURCE_FILES
|
|||
llfloatersettingsdebug.cpp
|
||||
llfloatersidetraytab.cpp
|
||||
llfloatersnapshot.cpp
|
||||
llfloatersounddevices.cpp
|
||||
llfloatertelehub.cpp
|
||||
llfloatertestinspectors.cpp
|
||||
llfloatertestlistview.cpp
|
||||
|
|
@ -758,6 +759,7 @@ set(viewer_HEADER_FILES
|
|||
llfloatersettingsdebug.h
|
||||
llfloatersidetraytab.h
|
||||
llfloatersnapshot.h
|
||||
llfloatersounddevices.h
|
||||
llfloatertelehub.h
|
||||
llfloatertestinspectors.h
|
||||
llfloatertestlistview.h
|
||||
|
|
|
|||
|
|
@ -11651,10 +11651,10 @@
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>VoiceCallsRejectAll</key>
|
||||
<key>VoiceCallsRejectGroup</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Silently reject all incoming voice calls.</string>
|
||||
<string>Silently reject all incoming group voice calls.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
|
|
|
|||
|
|
@ -117,10 +117,10 @@
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>VoiceCallsRejectAll</key>
|
||||
<key>VoiceCallsRejectGroup</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Silently reject all incoming voice calls.</string>
|
||||
<string>Silently reject all incoming group voice calls.</string>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@
|
|||
#include "llstatusbar.h"
|
||||
#include "llteleportflags.h"
|
||||
#include "lltool.h"
|
||||
#include "lltoolpie.h"
|
||||
#include "lltoolmgr.h"
|
||||
#include "lltrans.h"
|
||||
#include "llurlentry.h"
|
||||
|
|
@ -559,6 +560,8 @@ void LLAgent::setFlying(BOOL fly)
|
|||
// static
|
||||
void LLAgent::toggleFlying()
|
||||
{
|
||||
LLToolPie::instance().stopClickToWalk();
|
||||
|
||||
BOOL fly = !gAgent.getFlying();
|
||||
|
||||
gAgent.mMoveTimer.reset();
|
||||
|
|
|
|||
|
|
@ -378,12 +378,13 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b
|
|||
}
|
||||
|
||||
// We have to enable/disable right and left parts of speak button separately (EXT-4648)
|
||||
mSpeakBtn->setSpeakBtnEnabled(enable);
|
||||
getChild<LLButton>("speak_btn")->setEnabled(enable);
|
||||
|
||||
// skipped to avoid button blinking
|
||||
if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL)
|
||||
{
|
||||
bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
|
||||
mSpeakBtn->setFlyoutBtnEnabled(voice_status);
|
||||
getChild<LLButton>("speak_flyout_btn")->setEnabled(voice_status);
|
||||
if (voice_status)
|
||||
{
|
||||
LLFirstUse::speak(true);
|
||||
|
|
@ -546,17 +547,21 @@ BOOL LLBottomTray::postBuild()
|
|||
setRightMouseDownCallback(boost::bind(&LLBottomTray::showBottomTrayContextMenu,this, _2, _3,_4));
|
||||
|
||||
mSpeakPanel = getChild<LLPanel>("speak_panel");
|
||||
mSpeakBtn = getChild<LLSpeakButton>("talk");
|
||||
LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle());
|
||||
mSpeakBtn = findChild<LLSpeakButton>("talk");
|
||||
if (mSpeakBtn)
|
||||
{
|
||||
LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle());
|
||||
|
||||
// Localization tool doesn't understand custom buttons like <talk_button>
|
||||
mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
|
||||
mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
|
||||
}
|
||||
|
||||
// Both parts of speak button should be initially disabled because
|
||||
// it takes some time between logging in to world and connecting to voice channel.
|
||||
mSpeakBtn->setSpeakBtnEnabled(false);
|
||||
mSpeakBtn->setFlyoutBtnEnabled(false);
|
||||
getChild<LLButton>("speak_btn")->setEnabled(false);
|
||||
getChild<LLButton>("speak_flyout_btn")->setEnabled(false);
|
||||
|
||||
// Localization tool doesn't understand custom buttons like <talk_button>
|
||||
mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
|
||||
mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
|
||||
|
||||
// Registering Chat Bar to receive Voice client status change notifications.
|
||||
LLVoiceClient::getInstance()->addObserver(this);
|
||||
|
|
@ -852,6 +857,10 @@ void LLBottomTray::draw()
|
|||
|
||||
getChild<LLButton>("show_help_btn")->setToggleState(help_floater_visible);
|
||||
|
||||
bool openmic = LLVoiceClient::getInstance()->getUserPTTState();
|
||||
bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled();
|
||||
getChild<LLButton>("speak_btn")->setToggleState(openmic && voiceenabled);
|
||||
getChild<LLOutputMonitorCtrl>("chat_zone_indicator")->setIsMuted(!voiceenabled);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1309,7 +1318,11 @@ void LLBottomTray::processShrinkButtons(S32& required_width, S32& buttons_freed_
|
|||
|
||||
if (possible_shrink_width > 0)
|
||||
{
|
||||
mSpeakBtn->setLabelVisible(false);
|
||||
if (mSpeakBtn)
|
||||
{
|
||||
mSpeakBtn->setLabelVisible(false);
|
||||
}
|
||||
|
||||
mSpeakPanel->reshape(panel_width - possible_shrink_width, mSpeakPanel->getRect().getHeight());
|
||||
|
||||
required_width += possible_shrink_width;
|
||||
|
|
@ -1435,7 +1448,7 @@ bool LLBottomTray::processExtendSpeakButton(S32& available_width)
|
|||
}
|
||||
|
||||
// Reshape the Speak button to its maximum width.
|
||||
mSpeakBtn->setLabelVisible(true);
|
||||
if (mSpeakBtn) mSpeakBtn->setLabelVisible(true);
|
||||
mSpeakPanel->reshape(panel_max_width, mSpeakPanel->getRect().getHeight());
|
||||
|
||||
available_width -= required_headroom;
|
||||
|
|
|
|||
|
|
@ -483,8 +483,9 @@ void LLIMChiclet::setShowSpeaker(bool show)
|
|||
if(needs_resize)
|
||||
{
|
||||
mShowSpeaker = show;
|
||||
toggleSpeakerControl();
|
||||
}
|
||||
|
||||
toggleSpeakerControl();
|
||||
}
|
||||
|
||||
void LLIMChiclet::enableCounterControl(bool enable)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,85 @@
|
|||
/**
|
||||
* @file llfloatersounddevices.cpp
|
||||
* @author Leyla Farazha
|
||||
* @brief Sound Preferences used for minimal skin
|
||||
*
|
||||
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "llfloatersounddevices.h"
|
||||
|
||||
#include "llbottomtray.h"
|
||||
#include "lldraghandle.h"
|
||||
|
||||
#include "llpanelvoicedevicesettings.h"
|
||||
|
||||
// Library includes
|
||||
#include "indra_constants.h"
|
||||
|
||||
// protected
|
||||
LLFloaterSoundDevices::LLFloaterSoundDevices(const LLSD& key)
|
||||
: LLTransientDockableFloater(NULL, false, key)
|
||||
{
|
||||
LLTransientFloaterMgr::getInstance()->addControlView(this);
|
||||
|
||||
// force docked state since this floater doesn't save it between recreations
|
||||
setDocked(true);
|
||||
}
|
||||
|
||||
LLFloaterSoundDevices::~LLFloaterSoundDevices()
|
||||
{
|
||||
LLTransientFloaterMgr::getInstance()->removeControlView(this);
|
||||
}
|
||||
|
||||
// virtual
|
||||
BOOL LLFloaterSoundDevices::postBuild()
|
||||
{
|
||||
LLTransientDockableFloater::postBuild();
|
||||
|
||||
LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_flyout_btn");
|
||||
setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(), LLDockControl::TOP));
|
||||
|
||||
setIsChrome(TRUE);
|
||||
if (mDragHandle)
|
||||
mDragHandle->setTitleVisible(TRUE);
|
||||
updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//virtual
|
||||
void LLFloaterSoundDevices::setDocked(bool docked, bool pop_on_undock/* = true*/)
|
||||
{
|
||||
LLTransientDockableFloater::setDocked(docked, pop_on_undock);
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLFloaterSoundDevices::setFocus( BOOL b )
|
||||
{
|
||||
LLTransientDockableFloater::setFocus(b);
|
||||
|
||||
// Force using active floater transparency
|
||||
// We have to override setFocus() for because selecting an item of the
|
||||
// combobox causes the floater to lose focus and thus become transparent.
|
||||
updateTransparency(TT_ACTIVE);
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
/**
|
||||
* @file llfloatersounddevices.h
|
||||
* @author Leyla Farazha
|
||||
* @brief Sound Preferences used for minimal skin
|
||||
*
|
||||
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLFLOATERSOUNDDEVICES_H
|
||||
#define LL_LLFLOATERSOUNDDEVICES_H
|
||||
|
||||
#include "lltransientdockablefloater.h"
|
||||
|
||||
class LLFloaterSoundDevices : public LLTransientDockableFloater
|
||||
{
|
||||
public:
|
||||
|
||||
LOG_CLASS(LLFloaterSoundDevices);
|
||||
|
||||
LLFloaterSoundDevices(const LLSD& key);
|
||||
~LLFloaterSoundDevices();
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
/*virtual*/ void setDocked(bool docked, bool pop_on_undock = true);
|
||||
/*virtual*/ void setFocus( BOOL b );
|
||||
};
|
||||
|
||||
|
||||
#endif //LL_LLFLOATERSOUNDDEVICES_H
|
||||
|
||||
|
|
@ -2696,10 +2696,10 @@ void LLIMMgr::inviteToSession(
|
|||
|
||||
if (voice_invite)
|
||||
{
|
||||
if ( // if we're rejecting all incoming call requests
|
||||
gSavedSettings.getBOOL("VoiceCallsRejectAll")
|
||||
if ( // if we are rejecting group calls
|
||||
(gSavedSettings.getBOOL("VoiceCallsRejectGroup") && notify_box_type == "VoiceInviteGroup") ||
|
||||
// or we're rejecting non-friend voice calls and this isn't a friend
|
||||
|| (gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL))
|
||||
(gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL))
|
||||
)
|
||||
{
|
||||
// silently decline the call
|
||||
|
|
|
|||
|
|
@ -68,7 +68,6 @@ LLMediaCtrl::Params::Params()
|
|||
: start_url("start_url"),
|
||||
border_visible("border_visible", true),
|
||||
ignore_ui_scale("ignore_ui_scale", true),
|
||||
hide_loading("hide_loading", false),
|
||||
decouple_texture_size("decouple_texture_size", false),
|
||||
texture_width("texture_width", 1024),
|
||||
texture_height("texture_height", 1024),
|
||||
|
|
@ -97,8 +96,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
|
|||
mCurrentNavUrl( "" ),
|
||||
mStretchToFill( true ),
|
||||
mMaintainAspectRatio ( true ),
|
||||
mHideLoading (false),
|
||||
mHidingInitialLoad (false),
|
||||
mDecoupleTextureSize ( false ),
|
||||
mTextureWidth ( 1024 ),
|
||||
mTextureHeight ( 1024 ),
|
||||
|
|
@ -121,8 +118,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
|
|||
|
||||
setBorderVisible(p.border_visible);
|
||||
|
||||
mHideLoading = p.hide_loading;
|
||||
|
||||
setDecoupleTextureSize(p.decouple_texture_size);
|
||||
|
||||
setTextureSize(p.texture_width, p.texture_height);
|
||||
|
|
@ -684,11 +679,6 @@ bool LLMediaCtrl::ensureMediaSourceExists()
|
|||
mMediaSource->clearCache();
|
||||
mClearCache = false;
|
||||
}
|
||||
|
||||
if(mHideLoading)
|
||||
{
|
||||
mHidingInitialLoad = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -756,11 +746,11 @@ void LLMediaCtrl::draw()
|
|||
}
|
||||
}
|
||||
|
||||
if(mHidingInitialLoad)
|
||||
{
|
||||
// If we're hiding loading, don't draw at all.
|
||||
draw_media = false;
|
||||
}
|
||||
// if(mHidingInitialLoad)
|
||||
// {
|
||||
// // If we're hiding loading, don't draw at all.
|
||||
// draw_media = false;
|
||||
// }
|
||||
|
||||
bool background_visible = isBackgroundVisible();
|
||||
bool background_opaque = isBackgroundOpaque();
|
||||
|
|
|
|||
|
|
@ -100,58 +100,6 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
LLLoginRefreshHandler gLoginRefreshHandler;
|
||||
|
||||
|
||||
// helper class that trys to download a URL from a web site and calls a method
|
||||
// on parent class indicating if the web server is working or not
|
||||
class LLIamHereLogin : public LLHTTPClient::Responder
|
||||
{
|
||||
private:
|
||||
LLIamHereLogin( LLPanelLogin* parent ) :
|
||||
mParent( parent )
|
||||
{}
|
||||
|
||||
LLPanelLogin* mParent;
|
||||
|
||||
public:
|
||||
static boost::intrusive_ptr< LLIamHereLogin > build( LLPanelLogin* parent )
|
||||
{
|
||||
return boost::intrusive_ptr< LLIamHereLogin >( new LLIamHereLogin( parent ) );
|
||||
};
|
||||
|
||||
virtual void setParent( LLPanelLogin* parentIn )
|
||||
{
|
||||
mParent = parentIn;
|
||||
};
|
||||
|
||||
// We don't actually expect LLSD back, so need to override completedRaw
|
||||
virtual void completedRaw(U32 status, const std::string& reason,
|
||||
const LLChannelDescriptors& channels,
|
||||
const LLIOPipe::buffer_ptr_t& buffer)
|
||||
{
|
||||
completed(status, reason, LLSD()); // will call result() or error()
|
||||
}
|
||||
|
||||
virtual void result( const LLSD& content )
|
||||
{
|
||||
if ( mParent )
|
||||
mParent->setSiteIsAlive( true );
|
||||
};
|
||||
|
||||
virtual void error( U32 status, const std::string& reason )
|
||||
{
|
||||
if ( mParent )
|
||||
mParent->setSiteIsAlive( false );
|
||||
};
|
||||
};
|
||||
|
||||
// this is global and not a class member to keep crud out of the header file
|
||||
namespace {
|
||||
boost::intrusive_ptr< LLIamHereLogin > gResponsePtr = 0;
|
||||
};
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Public methods
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
@ -163,7 +111,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
|
|||
mLogoImage(),
|
||||
mCallback(callback),
|
||||
mCallbackData(cb_data),
|
||||
mHtmlAvailable( TRUE ),
|
||||
mListener(new LLPanelLoginListener(this))
|
||||
{
|
||||
setBackgroundVisible(FALSE);
|
||||
|
|
@ -193,21 +140,11 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
|
|||
|
||||
buildFromFile( "panel_login.xml");
|
||||
|
||||
// Legacy login web page is hidden under the menu bar.
|
||||
// Adjust reg-in-client web browser widget to not be hidden.
|
||||
if (gSavedSettings.getBOOL("RegInClient"))
|
||||
{
|
||||
reshape(rect.getWidth(), rect.getHeight() - MENU_BAR_HEIGHT);
|
||||
}
|
||||
else
|
||||
{
|
||||
reshape(rect.getWidth(), rect.getHeight());
|
||||
}
|
||||
reshape(rect.getWidth(), rect.getHeight());
|
||||
|
||||
getChild<LLLineEditor>("password_edit")->setKeystrokeCallback(onPassKey, this);
|
||||
|
||||
// change z sort of clickable text to be behind buttons
|
||||
//sendChildToBack(getChildView("channel_text"));
|
||||
sendChildToBack(getChildView("forgot_password_text"));
|
||||
|
||||
if(LLStartUp::getStartSLURL().getType() != LLSLURL::LOCATION)
|
||||
|
|
@ -252,16 +189,10 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
|
|||
LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");
|
||||
web_browser->addObserver(this);
|
||||
|
||||
// Clear the browser's cache to avoid any potential for the cache messing up the login screen.
|
||||
web_browser->clearCache();
|
||||
|
||||
reshapeBrowser();
|
||||
|
||||
// kick off a request to grab the url manually
|
||||
gResponsePtr = LLIamHereLogin::build( this );
|
||||
|
||||
LLHTTPClient::head( LLGridManager::getInstance()->getLoginPage(), gResponsePtr );
|
||||
|
||||
loadLoginPage();
|
||||
|
||||
// Show last logged in user favorites in "Start at" combo.
|
||||
addUsersWithFavoritesToUsername();
|
||||
getChild<LLComboBox>("username_combo")->setTextChangedCallback(boost::bind(&LLPanelLogin::addFavoritesToStartLocation, this));
|
||||
|
|
@ -344,46 +275,10 @@ void LLPanelLogin::reshapeBrowser()
|
|||
reshape( rect.getWidth(), rect.getHeight(), 1 );
|
||||
}
|
||||
|
||||
void LLPanelLogin::setSiteIsAlive( bool alive )
|
||||
{
|
||||
LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");
|
||||
// if the contents of the site was retrieved
|
||||
if ( alive )
|
||||
{
|
||||
if ( web_browser )
|
||||
{
|
||||
loadLoginPage();
|
||||
|
||||
// mark as available
|
||||
mHtmlAvailable = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
// the site is not available (missing page, server down, other badness)
|
||||
{
|
||||
if ( web_browser )
|
||||
{
|
||||
// hide browser control (revealing default one)
|
||||
web_browser->setVisible( FALSE );
|
||||
|
||||
// mark as unavailable
|
||||
mHtmlAvailable = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
LLPanelLogin::~LLPanelLogin()
|
||||
{
|
||||
LLPanelLogin::sInstance = NULL;
|
||||
|
||||
// tell the responder we're not here anymore
|
||||
if ( gResponsePtr )
|
||||
gResponsePtr->setParent( 0 );
|
||||
|
||||
//// We know we're done with the image, so be rid of it.
|
||||
//gTextureList.deleteImage( mLogoImage );
|
||||
|
||||
// Controls having keyboard focus by default
|
||||
// must reset it on destroy. (EXT-2748)
|
||||
gFocusMgr.setDefaultKeyboardFocus(NULL);
|
||||
|
|
@ -406,22 +301,13 @@ void LLPanelLogin::draw()
|
|||
S32 width = getRect().getWidth();
|
||||
S32 height = getRect().getHeight();
|
||||
|
||||
if ( mHtmlAvailable )
|
||||
if (getChild<LLView>("login_widgets")->getVisible())
|
||||
{
|
||||
if (getChild<LLView>("login_widgets")->getVisible())
|
||||
{
|
||||
// draw a background box in black
|
||||
gl_rect_2d( 0, height - 264, width, 264, LLColor4::black );
|
||||
// draw the bottom part of the background image
|
||||
// just the blue background to the native client UI
|
||||
mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// the HTML login page is not available so default to the original screen
|
||||
S32 offscreen_part = height / 3;
|
||||
mLogoImage->draw(0, -offscreen_part, width, height+offscreen_part);
|
||||
// draw a background box in black
|
||||
gl_rect_2d( 0, height - 264, width, 264, LLColor4::black );
|
||||
// draw the bottom part of the background image
|
||||
// just the blue background to the native client UI
|
||||
mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight());
|
||||
};
|
||||
}
|
||||
glPopMatrix();
|
||||
|
|
@ -880,23 +766,10 @@ void LLPanelLogin::loadLoginPage()
|
|||
oStr << "&os=" << os_info;
|
||||
curl_free(os_info);
|
||||
|
||||
|
||||
gViewerWindow->setMenuBackgroundColor(false, !LLGridManager::getInstance()->isInProductionGrid());
|
||||
gLoginMenuBarView->setBackgroundColor(gMenuBarView->getBackgroundColor());
|
||||
|
||||
LLMediaCtrl* web_browser = sInstance->getChild<LLMediaCtrl>("login_html");
|
||||
|
||||
// navigate to the "real" page
|
||||
if (gSavedSettings.getBOOL("RegInClient"))
|
||||
{
|
||||
web_browser->setFocus(TRUE);
|
||||
login_page = sInstance->getString("reg_in_client_url");
|
||||
web_browser->navigateTo(login_page, "text/html");
|
||||
}
|
||||
else
|
||||
{
|
||||
web_browser->navigateTo( oStr.str(), "text/html" );
|
||||
}
|
||||
web_browser->navigateTo( oStr.str(), "text/html" );
|
||||
}
|
||||
|
||||
void LLPanelLogin::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent event)
|
||||
|
|
@ -927,10 +800,6 @@ void LLPanelLogin::onClickConnect(void *)
|
|||
{
|
||||
if (sInstance && sInstance->mCallback)
|
||||
{
|
||||
// tell the responder we're not here anymore
|
||||
if ( gResponsePtr )
|
||||
gResponsePtr->setParent( 0 );
|
||||
|
||||
// JC - Make sure the fields all get committed.
|
||||
sInstance->setFocus(FALSE);
|
||||
|
||||
|
|
@ -998,24 +867,6 @@ void LLPanelLogin::onClickConnect(void *)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// static
|
||||
bool LLPanelLogin::newAccountAlertCallback(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
if (0 == option)
|
||||
{
|
||||
llinfos << "Going to account creation URL" << llendl;
|
||||
LLWeb::loadURLExternal( LLNotifications::instance().getGlobalString("CREATE_ACCOUNT_URL"));
|
||||
}
|
||||
else
|
||||
{
|
||||
sInstance->setFocus(TRUE);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
|
||||
// static
|
||||
void LLPanelLogin::onClickNewAccount(void*)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -89,7 +89,6 @@ private:
|
|||
void addUsersWithFavoritesToUsername();
|
||||
static void onClickConnect(void*);
|
||||
static void onClickNewAccount(void*);
|
||||
// static bool newAccountAlertCallback(const LLSD& notification, const LLSD& response);
|
||||
static void onClickVersion(void*);
|
||||
static void onClickForgotPassword(void*);
|
||||
static void onClickHelp(void*);
|
||||
|
|
@ -114,7 +113,6 @@ private:
|
|||
|
||||
static LLPanelLogin* sInstance;
|
||||
static BOOL sCapslockDidNotification;
|
||||
BOOL mHtmlAvailable;
|
||||
};
|
||||
|
||||
std::string load_password_from_disk(void);
|
||||
|
|
|
|||
|
|
@ -316,6 +316,6 @@ void LLPanelVoiceDeviceSettings::onCommitOutputDevice()
|
|||
if(LLVoiceClient::getInstance())
|
||||
{
|
||||
LLVoiceClient::getInstance()->setRenderDevice(
|
||||
getChild<LLComboBox>("voice_input_device")->getValue().asString());
|
||||
getChild<LLComboBox>("voice_output_device")->getValue().asString());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,26 +54,6 @@ LLSpeakButton::Params::Params()
|
|||
// See widgets/talk_button.xml
|
||||
}
|
||||
|
||||
void LLSpeakButton::draw()
|
||||
{
|
||||
// LLVoiceClient::getInstance() is the authoritative global source of info regarding our open-mic state, we merely reflect that state.
|
||||
bool openmic = LLVoiceClient::getInstance()->getUserPTTState();
|
||||
bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled();
|
||||
mSpeakBtn->setToggleState(openmic && voiceenabled);
|
||||
mOutputMonitor->setIsMuted(!voiceenabled);
|
||||
LLUICtrl::draw();
|
||||
}
|
||||
void LLSpeakButton::setSpeakBtnEnabled(bool enabled)
|
||||
{
|
||||
LLButton* speak_btn = getChild<LLButton>("speak_btn");
|
||||
speak_btn->setEnabled(enabled);
|
||||
}
|
||||
void LLSpeakButton::setFlyoutBtnEnabled(bool enabled)
|
||||
{
|
||||
LLButton* show_btn = getChild<LLBottomtrayButton>("speak_flyout_btn");
|
||||
show_btn->setEnabled(enabled);
|
||||
}
|
||||
|
||||
LLSpeakButton::LLSpeakButton(const Params& p)
|
||||
: LLUICtrl(p)
|
||||
, mOutputMonitor(NULL)
|
||||
|
|
|
|||
|
|
@ -53,12 +53,7 @@ public:
|
|||
};
|
||||
|
||||
/*virtual*/ ~LLSpeakButton();
|
||||
/*virtual*/ void draw();
|
||||
|
||||
// methods for enabling/disabling right and left parts of speak button separately(EXT-4648)
|
||||
void setSpeakBtnEnabled(bool enabled);
|
||||
void setFlyoutBtnEnabled(bool enabled);
|
||||
|
||||
// *HACK: Need to put tooltips in a translatable location,
|
||||
// the panel that contains this button.
|
||||
void setSpeakToolTip(const std::string& msg);
|
||||
|
|
|
|||
|
|
@ -688,6 +688,15 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)
|
|||
return LLTool::handleMouseUp(x, y, mask);
|
||||
}
|
||||
|
||||
void LLToolPie::stopClickToWalk()
|
||||
{
|
||||
mPick.mPosGlobal = gAgent.getPositionGlobal();
|
||||
handle_go_to();
|
||||
if(mAutoPilotDestination)
|
||||
{
|
||||
mAutoPilotDestination->markDead();
|
||||
}
|
||||
}
|
||||
|
||||
BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ public:
|
|||
LLObjectSelection* getLeftClickSelection() { return (LLObjectSelection*)mLeftClickSelection; }
|
||||
void resetSelection();
|
||||
void blockClickToWalk() { mBlockClickToWalk = true; }
|
||||
void stopClickToWalk();
|
||||
|
||||
static void selectionPropertiesReceived();
|
||||
|
||||
|
|
|
|||
|
|
@ -91,6 +91,7 @@
|
|||
#include "llfloatersettingsdebug.h"
|
||||
#include "llfloatersidetraytab.h"
|
||||
#include "llfloatersnapshot.h"
|
||||
#include "llfloatersounddevices.h"
|
||||
#include "llfloatertelehub.h"
|
||||
#include "llfloatertestinspectors.h"
|
||||
#include "llfloatertestlistview.h"
|
||||
|
|
@ -239,6 +240,7 @@ void LLViewerFloaterReg::registerFloaters()
|
|||
LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);
|
||||
LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>);
|
||||
LLFloaterReg::add("side_bar_tab", "floater_side_bar_tab.xml", &LLFloaterReg::build<LLFloaterSideTrayTab>);
|
||||
LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundDevices>);
|
||||
LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);
|
||||
LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRunQueue>);
|
||||
LLFloaterReg::add("stop_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotRunQueue>);
|
||||
|
|
|
|||
|
|
@ -5591,6 +5591,14 @@ class LLToggleHelp : public view_listener_t
|
|||
}
|
||||
};
|
||||
|
||||
class LLToggleSpeak : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
LLVoiceClient::getInstance()->toggleUserPTTState();
|
||||
return true;
|
||||
}
|
||||
};
|
||||
class LLShowSidetrayPanel : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
|
|
@ -8187,6 +8195,7 @@ void initialize_menus()
|
|||
commit.add("BuyCurrency", boost::bind(&handle_buy_currency));
|
||||
view_listener_t::addMenu(new LLShowHelp(), "ShowHelp");
|
||||
view_listener_t::addMenu(new LLToggleHelp(), "ToggleHelp");
|
||||
view_listener_t::addMenu(new LLToggleSpeak(), "ToggleSpeak");
|
||||
view_listener_t::addMenu(new LLPromptShowURL(), "PromptShowURL");
|
||||
view_listener_t::addMenu(new LLShowAgentProfile(), "ShowAgentProfile");
|
||||
view_listener_t::addMenu(new LLToggleAgentProfile(), "ToggleAgentProfile");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater
|
||||
border_visible="false"
|
||||
border="false"
|
||||
legacy_header_height="18"
|
||||
can_minimize="true"
|
||||
can_resize="true"
|
||||
can_close="false"
|
||||
save_dock_state="true"
|
||||
save_visibility="true"
|
||||
save_rect="true"
|
||||
single_instance="true"
|
||||
bevel_style="in"
|
||||
height="140"
|
||||
layout="topleft"
|
||||
name="floater_sound_devices"
|
||||
title="Sound Devices"
|
||||
width="315">
|
||||
<panel
|
||||
layout="topleft"
|
||||
follows="all"
|
||||
filename="panel_sound_devices.xml"
|
||||
name="device_settings_panel"
|
||||
width="300"
|
||||
left="2"
|
||||
top="26"
|
||||
class="panel_voice_device_settings"/>
|
||||
</floater>
|
||||
|
|
@ -8,12 +8,6 @@
|
|||
tab_stop="false"
|
||||
name="main_view"
|
||||
width="1024">
|
||||
<panel top="0"
|
||||
follows="all"
|
||||
height="768"
|
||||
mouse_opaque="false"
|
||||
name="login_panel_holder"
|
||||
width="1024"/>
|
||||
<layout_stack border_size="0"
|
||||
follows="all"
|
||||
mouse_opaque="false"
|
||||
|
|
@ -133,7 +127,14 @@
|
|||
user_resize="false"
|
||||
visible="false"
|
||||
width="333"/>
|
||||
</layout_stack>
|
||||
</layout_stack>
|
||||
<panel top="0"
|
||||
follows="all"
|
||||
height="500"
|
||||
mouse_opaque="false"
|
||||
name="login_panel_holder"
|
||||
width="1024"/>
|
||||
|
||||
<panel follows="all"
|
||||
height="500"
|
||||
left="0"
|
||||
|
|
@ -171,6 +172,7 @@
|
|||
top="0"
|
||||
width="1024"
|
||||
visible="false"/>
|
||||
|
||||
<view mouse_opaque="false"
|
||||
follows="all"
|
||||
name="menu_bar_holder"
|
||||
|
|
|
|||
|
|
@ -2696,7 +2696,7 @@
|
|||
<menu_item_call
|
||||
label="Web Content Browser"
|
||||
name="Web Content Browser"
|
||||
shortcut="control|alt|W">
|
||||
shortcut="control|shift|Z">
|
||||
<menu_item_call.on_click
|
||||
function="Advanced.WebContentTest"
|
||||
parameter="http://google.com"/>
|
||||
|
|
|
|||
|
|
@ -478,164 +478,13 @@
|
|||
name="device_settings_btn"
|
||||
width="190">
|
||||
</button>
|
||||
<panel
|
||||
background_visible="false"
|
||||
bg_alpha_color="DkGray"
|
||||
visiblity_control="ShowDeviceSettings"
|
||||
border="false"
|
||||
follows="top|left"
|
||||
height="100"
|
||||
label="Device Settings"
|
||||
layout="topleft"
|
||||
left_delta="-2"
|
||||
name="device_settings_panel"
|
||||
class="panel_voice_device_settings"
|
||||
width="470"
|
||||
top_pad="0">
|
||||
<panel.string
|
||||
name="default_text">
|
||||
Default
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="default system device">
|
||||
Default system device
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="no device">
|
||||
No device
|
||||
</panel.string>
|
||||
<icon
|
||||
height="18"
|
||||
image_name="Microphone_On"
|
||||
left_delta="4"
|
||||
name="microphone_icon"
|
||||
mouse_opaque="false"
|
||||
top="7"
|
||||
visible="true"
|
||||
width="18" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
font.style="BOLD"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left_pad="3"
|
||||
name="Input"
|
||||
width="70">
|
||||
Input
|
||||
</text>
|
||||
<combo_box
|
||||
height="23"
|
||||
control_name="VoiceInputAudioDevice"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
max_chars="128"
|
||||
name="voice_input_device"
|
||||
top_delta="-5"
|
||||
width="200" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left_delta="-70"
|
||||
name="My volume label"
|
||||
top_pad="4"
|
||||
width="200">
|
||||
My volume:
|
||||
</text>
|
||||
<slider_bar
|
||||
control_name="AudioLevelMic"
|
||||
follows="left|top"
|
||||
height="17"
|
||||
increment="0.025"
|
||||
initial_value="1.0"
|
||||
layout="topleft"
|
||||
left_delta="-6"
|
||||
max_val="2"
|
||||
name="mic_volume_slider"
|
||||
tool_tip="Change the volume using this slider"
|
||||
top_pad="-1"
|
||||
width="220" />
|
||||
<text
|
||||
type="string"
|
||||
text_color="EmphasisColor"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="wait_text"
|
||||
top_delta="-1"
|
||||
width="110">
|
||||
Please wait
|
||||
</text>
|
||||
<locate
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="bar0"
|
||||
top_delta="-2"
|
||||
width="20" />
|
||||
<locate
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="bar1"
|
||||
top_delta="0"
|
||||
width="20" />
|
||||
<locate
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="bar2"
|
||||
top_delta="0"
|
||||
width="20" />
|
||||
<locate
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="bar3"
|
||||
top_delta="0"
|
||||
width="20" />
|
||||
<locate
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="bar4"
|
||||
top_delta="0"
|
||||
width="20" />
|
||||
<icon
|
||||
height="18"
|
||||
image_name="Parcel_Voice_Light"
|
||||
left="5"
|
||||
name="speaker_icon"
|
||||
mouse_opaque="false"
|
||||
top_pad="3"
|
||||
visible="true"
|
||||
width="22" />
|
||||
<text
|
||||
font.style="BOLD"
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="15"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
name="Output"
|
||||
width="70">
|
||||
Output
|
||||
</text>
|
||||
<combo_box
|
||||
control_name="VoiceOutputAudioDevice"
|
||||
height="23"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
max_chars="128"
|
||||
name="voice_output_device"
|
||||
top_delta="-3"
|
||||
width="200" />
|
||||
</panel>
|
||||
</panel>
|
||||
<panel
|
||||
layout="topleft"
|
||||
filename="panel_sound_devices.xml"
|
||||
visiblity_control="ShowDeviceSettings"
|
||||
name="device_settings_panel"
|
||||
top="314"
|
||||
width="345"
|
||||
left="18"
|
||||
class="panel_voice_device_settings"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,163 @@
|
|||
<panel
|
||||
background_visible="false"
|
||||
bg_alpha_color="DkGray"
|
||||
follows="all"
|
||||
height="200"
|
||||
label="Device Settings"
|
||||
layout="topleft"
|
||||
name="device_settings_panel"
|
||||
width="360">
|
||||
<panel.string
|
||||
name="default_text">
|
||||
Default
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="default system device">
|
||||
Default system device
|
||||
</panel.string>
|
||||
<panel.string
|
||||
name="no device">
|
||||
No device
|
||||
</panel.string>
|
||||
<icon
|
||||
height="18"
|
||||
image_name="Microphone_On"
|
||||
left_delta="4"
|
||||
name="microphone_icon"
|
||||
mouse_opaque="false"
|
||||
top="7"
|
||||
layout="topleft"
|
||||
visible="true"
|
||||
width="18" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
font.style="BOLD"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left_pad="3"
|
||||
name="Input"
|
||||
width="70">
|
||||
Input
|
||||
</text>
|
||||
<combo_box
|
||||
height="23"
|
||||
control_name="VoiceInputAudioDevice"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
max_chars="128"
|
||||
name="voice_input_device"
|
||||
top_delta="-5"
|
||||
width="200" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left_delta="-70"
|
||||
name="My volume label"
|
||||
top_pad="4"
|
||||
width="200">
|
||||
My volume:
|
||||
</text>
|
||||
<slider_bar
|
||||
control_name="AudioLevelMic"
|
||||
follows="top|right|left"
|
||||
height="17"
|
||||
increment="0.025"
|
||||
initial_value="1.0"
|
||||
layout="topleft"
|
||||
left_delta="-6"
|
||||
max_val="2"
|
||||
name="mic_volume_slider"
|
||||
tool_tip="Change the volume using this slider"
|
||||
top_pad="-1"
|
||||
width="220" />
|
||||
<text
|
||||
type="string"
|
||||
text_color="EmphasisColor"
|
||||
length="1"
|
||||
follows="right|top"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="wait_text"
|
||||
top_delta="-1"
|
||||
width="110">
|
||||
Please wait
|
||||
</text>
|
||||
<locate
|
||||
follows="right|top"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="bar0"
|
||||
top_delta="-2"
|
||||
width="20" />
|
||||
<locate
|
||||
follows="right|top"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="bar1"
|
||||
top_delta="0"
|
||||
width="20" />
|
||||
<locate
|
||||
follows="right|top"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="bar2"
|
||||
top_delta="0"
|
||||
width="20" />
|
||||
<locate
|
||||
follows="right|top"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="bar3"
|
||||
top_delta="0"
|
||||
width="20" />
|
||||
<locate
|
||||
follows="right|top"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="bar4"
|
||||
top_delta="0"
|
||||
width="20" />
|
||||
<icon
|
||||
height="18"
|
||||
image_name="Parcel_Voice_Light"
|
||||
left="5"
|
||||
name="speaker_icon"
|
||||
mouse_opaque="false"
|
||||
top_pad="3"
|
||||
visible="true"
|
||||
width="22" />
|
||||
<text
|
||||
font.style="BOLD"
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="15"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
name="Output"
|
||||
width="70">
|
||||
Output
|
||||
</text>
|
||||
<combo_box
|
||||
control_name="VoiceOutputAudioDevice"
|
||||
height="23"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
max_chars="128"
|
||||
name="voice_output_device"
|
||||
top_delta="-3"
|
||||
width="200" />
|
||||
</panel>
|
||||
|
|
@ -21,6 +21,7 @@
|
|||
width="20" />
|
||||
<chiclet_im_p2p.avatar_icon
|
||||
bottom="3"
|
||||
color="white"
|
||||
follows="left|top|bottom"
|
||||
height="20"
|
||||
left="2"
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 993 B |
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
|
|
@ -6,4 +6,6 @@
|
|||
<texture name="bottomtray_close_off" file_name="bottomtray/close_off.png" preload="true" />
|
||||
<texture name="bottomtray_close_over" file_name="bottomtray/close_over.png" preload="true" />
|
||||
<texture name="bottomtray_close_press" file_name="bottomtray/close_press.png" preload="true" />
|
||||
</textures>
|
||||
<texture name="Speak_Btn_Off" file_name="bottomtray/Speak_Btn_Off.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
|
||||
<texture name="Speak_Btn_Selected_Press" file_name="bottomtray/Speak_Btn_Selected_Press.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
|
||||
</textures>
|
||||
|
|
|
|||
|
|
@ -8,13 +8,6 @@
|
|||
tab_stop="false"
|
||||
name="main_view"
|
||||
width="1024">
|
||||
<panel top="0"
|
||||
follows="all"
|
||||
height="768"
|
||||
mouse_opaque="false"
|
||||
name="login_panel_holder"
|
||||
width="1024"/>
|
||||
|
||||
<layout_stack border_size="0"
|
||||
follows="all"
|
||||
mouse_opaque="false"
|
||||
|
|
@ -96,6 +89,14 @@
|
|||
name="stand_stop_flying_container"
|
||||
visible="false"
|
||||
width="500"/>
|
||||
|
||||
<panel top="0"
|
||||
follows="all"
|
||||
height="500"
|
||||
mouse_opaque="false"
|
||||
name="login_panel_holder"
|
||||
width="1024"/>
|
||||
|
||||
<panel follows="all"
|
||||
height="500"
|
||||
left="0"
|
||||
|
|
|
|||
|
|
@ -12,16 +12,16 @@
|
|||
focus_root="true"
|
||||
top="28"
|
||||
width="1310">
|
||||
<string
|
||||
<string
|
||||
name="DragIndicationImageName"
|
||||
value="Accordion_ArrowOpened_Off" />
|
||||
<string
|
||||
<string
|
||||
name="SpeakBtnToolTip"
|
||||
value="Turns microphone on/off" />
|
||||
<string
|
||||
<string
|
||||
name="VoiceControlBtnToolTip"
|
||||
value="Shows/hides voice control panel" />
|
||||
<layout_stack
|
||||
<layout_stack
|
||||
border_size="0"
|
||||
clip="false"
|
||||
follows="all"
|
||||
|
|
@ -33,12 +33,12 @@
|
|||
orientation="horizontal"
|
||||
top="0"
|
||||
width="1310">
|
||||
<layout_panel
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
user_resize="false"
|
||||
min_width="2"
|
||||
width="2" />
|
||||
<layout_panel
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
layout="topleft"
|
||||
max_width="320"
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
name="chat_bar_layout_panel"
|
||||
user_resize="true"
|
||||
width="308" >
|
||||
<panel
|
||||
<panel
|
||||
name="chat_bar"
|
||||
filename="panel_nearby_chat_bar.xml"
|
||||
left="0"
|
||||
|
|
@ -61,6 +61,79 @@
|
|||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="left|right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
min_height="28"
|
||||
min_width="35"
|
||||
mouse_opaque="false"
|
||||
name="speak_panel"
|
||||
top_delta="0"
|
||||
user_resize="false"
|
||||
width="85">
|
||||
<button
|
||||
follows="left|right"
|
||||
height="23"
|
||||
layout="topleft"
|
||||
label="Speak"
|
||||
left="0"
|
||||
name="speak_btn"
|
||||
tool_tip="Turn your microphone on and off"
|
||||
pad_right="30"
|
||||
halign="center"
|
||||
use_ellipses="true"
|
||||
tab_stop="true"
|
||||
is_toggle="true"
|
||||
image_selected="Speak_Btn_Selected_Press"
|
||||
image_unselected="Speak_Btn_Off"
|
||||
image_pressed="Speak_Btn_Selected_Press"
|
||||
image_pressed_selected="Speak_Btn_Selected_Press"
|
||||
top="5"
|
||||
width="85">
|
||||
|
||||
<commit_callback
|
||||
function="ToggleSpeak"
|
||||
parameter="f1_help" />
|
||||
</button>
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="left|right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
min_height="28"
|
||||
min_width="20"
|
||||
mouse_opaque="false"
|
||||
name="speak_flyout_panel"
|
||||
top_delta="0"
|
||||
user_resize="false"
|
||||
width="20">
|
||||
<button
|
||||
follows="left|right"
|
||||
width="20"
|
||||
top="5"
|
||||
left="0"
|
||||
height="23"
|
||||
name="speak_flyout_btn"
|
||||
label=""
|
||||
tab_stop="false"
|
||||
tool_tip="Change your sound preferences"
|
||||
is_toggle="true"
|
||||
image_disabled="ComboButton_UpOff"
|
||||
image_unselected="ComboButton_UpOff"
|
||||
image_selected="ComboButton_On"
|
||||
image_pressed="ComboButton_UpSelected"
|
||||
image_pressed_selected="ComboButton_Selected">
|
||||
<init_callback
|
||||
function="Button.SetDockableFloaterToggle"
|
||||
parameter="sound_devices" />
|
||||
</button>
|
||||
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
|
|
@ -70,7 +143,7 @@
|
|||
name="gesture_panel"
|
||||
top_delta="0"
|
||||
user_resize="false"
|
||||
width="85">
|
||||
width="88">
|
||||
<gesture_combo_list
|
||||
follows="left|right"
|
||||
height="23"
|
||||
|
|
@ -78,20 +151,20 @@
|
|||
layout="topleft"
|
||||
get_more="false"
|
||||
view_all="false"
|
||||
left="0"
|
||||
left="3"
|
||||
name="Gesture"
|
||||
tool_tip="Shows/hides gestures"
|
||||
tool_tip="Make your avatar do things"
|
||||
top="5"
|
||||
width="82">
|
||||
<combo_button
|
||||
<combo_button
|
||||
pad_right="10"
|
||||
can_drag="false"
|
||||
use_ellipses="true" />
|
||||
<combo_list
|
||||
<combo_list
|
||||
page_lines="17" />
|
||||
</gesture_combo_list>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
</gesture_combo_list>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="left|right"
|
||||
height="28"
|
||||
|
|
@ -102,7 +175,7 @@
|
|||
name="cam_panel"
|
||||
user_resize="false"
|
||||
width="83">
|
||||
<bottomtray_button
|
||||
<bottomtray_button
|
||||
can_drag="false"
|
||||
follows="left|right"
|
||||
height="23"
|
||||
|
|
@ -114,16 +187,16 @@
|
|||
layout="topleft"
|
||||
left="0"
|
||||
name="camera_btn"
|
||||
tool_tip="Shows/hides camera controls"
|
||||
tool_tip="Control your camera angle"
|
||||
top="5"
|
||||
use_ellipses="true"
|
||||
width="80">
|
||||
<init_callback
|
||||
<init_callback
|
||||
function="Button.SetDockableFloaterToggle"
|
||||
parameter="camera" />
|
||||
</bottomtray_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
</bottomtray_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="left|right"
|
||||
height="28"
|
||||
|
|
@ -132,7 +205,7 @@
|
|||
name="splitter_panel"
|
||||
user_resize="false"
|
||||
width="17">
|
||||
<icon
|
||||
<icon
|
||||
follows="left|bottom"
|
||||
height="18"
|
||||
width="2"
|
||||
|
|
@ -140,8 +213,8 @@
|
|||
image_name="Button_Separator"
|
||||
name="separator"
|
||||
top="7"/>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="left|right"
|
||||
height="28"
|
||||
|
|
@ -152,7 +225,7 @@
|
|||
name="avatar_and_destinations_panel"
|
||||
user_resize="false"
|
||||
width="103">
|
||||
<bottomtray_button
|
||||
<bottomtray_button
|
||||
can_drag="false"
|
||||
follows="left|right"
|
||||
height="23"
|
||||
|
|
@ -163,16 +236,16 @@
|
|||
layout="topleft"
|
||||
left="0"
|
||||
name="destination_btn"
|
||||
tool_tip="Shows destinations window"
|
||||
tool_tip="Travel through Second Life"
|
||||
top="5"
|
||||
is_toggle="true"
|
||||
use_ellipses="true"
|
||||
width="100">
|
||||
<bottomtray_button.commit_callback
|
||||
<bottomtray_button.commit_callback
|
||||
function="Destination.show" />
|
||||
</bottomtray_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
</bottomtray_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="left|right"
|
||||
height="28"
|
||||
|
|
@ -183,7 +256,7 @@
|
|||
name="avatar_and_destinations_panel"
|
||||
user_resize="false"
|
||||
width="103">
|
||||
<bottomtray_button
|
||||
<bottomtray_button
|
||||
can_drag="false"
|
||||
follows="left|right"
|
||||
height="23"
|
||||
|
|
@ -196,13 +269,14 @@
|
|||
name="avatar_btn"
|
||||
top="5"
|
||||
is_toggle="true"
|
||||
tool_tip="Change your appearance"
|
||||
use_ellipses="true"
|
||||
width="100">
|
||||
<bottomtray_button.commit_callback
|
||||
<bottomtray_button.commit_callback
|
||||
function="Avatar.show" />
|
||||
</bottomtray_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
</bottomtray_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="left|right"
|
||||
height="28"
|
||||
|
|
@ -211,7 +285,7 @@
|
|||
name="splitter_panel"
|
||||
user_resize="false"
|
||||
width="17">
|
||||
<icon
|
||||
<icon
|
||||
follows="left|bottom"
|
||||
height="18"
|
||||
width="2"
|
||||
|
|
@ -219,8 +293,8 @@
|
|||
image_name="Button_Separator"
|
||||
name="separator"
|
||||
top="7"/>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="right"
|
||||
height="28"
|
||||
|
|
@ -232,7 +306,7 @@
|
|||
top_delta="0"
|
||||
user_resize="false"
|
||||
width="105">
|
||||
<bottomtray_button
|
||||
<bottomtray_button
|
||||
can_drag="false"
|
||||
follows="left|right"
|
||||
height="23"
|
||||
|
|
@ -243,17 +317,17 @@
|
|||
layout="topleft"
|
||||
left="0"
|
||||
name="show_people_button"
|
||||
tool_tip="Shows people window"
|
||||
tool_tip="Find people in Second Life"
|
||||
top="5"
|
||||
is_toggle="true"
|
||||
use_ellipses="true"
|
||||
width="100">
|
||||
<bottomtray_button.commit_callback
|
||||
<bottomtray_button.commit_callback
|
||||
function="ShowSidetrayPanel"
|
||||
parameter="panel_people" />
|
||||
</bottomtray_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
</bottomtray_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="right"
|
||||
height="28"
|
||||
|
|
@ -265,7 +339,7 @@
|
|||
top_delta="0"
|
||||
user_resize="false"
|
||||
width="105">
|
||||
<bottomtray_button
|
||||
<bottomtray_button
|
||||
can_drag="false"
|
||||
follows="left|right"
|
||||
height="23"
|
||||
|
|
@ -276,17 +350,17 @@
|
|||
layout="topleft"
|
||||
left="0"
|
||||
name="show_profile_btn"
|
||||
tool_tip="Shows profile window"
|
||||
tool_tip="View and edit your Profile"
|
||||
is_toggle="true"
|
||||
top="5"
|
||||
use_ellipses="true"
|
||||
width="100">
|
||||
<bottomtray_button.commit_callback
|
||||
<bottomtray_button.commit_callback
|
||||
function="ToggleAgentProfile"
|
||||
parameter="agent"/>
|
||||
</bottomtray_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
</bottomtray_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="right"
|
||||
height="28"
|
||||
|
|
@ -298,7 +372,7 @@
|
|||
top_delta="0"
|
||||
user_resize="false"
|
||||
width="105">
|
||||
<bottomtray_button
|
||||
<bottomtray_button
|
||||
can_drag="false"
|
||||
follows="left|right"
|
||||
height="23"
|
||||
|
|
@ -309,17 +383,17 @@
|
|||
layout="topleft"
|
||||
left="0"
|
||||
name="show_help_btn"
|
||||
tool_tip="Open Second Life How To topics"
|
||||
tool_tip="View Second Life help info"
|
||||
is_toggle="true"
|
||||
top="5"
|
||||
use_ellipses="true"
|
||||
width="100">
|
||||
<bottomtray_button.commit_callback
|
||||
<bottomtray_button.commit_callback
|
||||
function="ToggleHelp"
|
||||
parameter="f1_help" />
|
||||
</bottomtray_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
</bottomtray_button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
follows="left|right"
|
||||
height="30"
|
||||
layout="topleft"
|
||||
|
|
@ -329,9 +403,9 @@
|
|||
top="0"
|
||||
user_resize="false"
|
||||
width="189">
|
||||
<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
|
||||
<!--*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
|
||||
<chiclet_panel
|
||||
chiclet_padding="4"
|
||||
follows="left|right"
|
||||
height="24"
|
||||
|
|
@ -342,7 +416,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
|
|||
name="chiclet_list"
|
||||
top="7"
|
||||
width="189">
|
||||
<button
|
||||
<button
|
||||
auto_resize="true"
|
||||
follows="right"
|
||||
height="29"
|
||||
|
|
@ -359,7 +433,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
|
|||
top="-28"
|
||||
visible="false"
|
||||
width="7" />
|
||||
<button
|
||||
<button
|
||||
auto_resize="true"
|
||||
follows="right"
|
||||
height="29"
|
||||
|
|
@ -376,13 +450,13 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
|
|||
top="-28"
|
||||
visible="false"
|
||||
width="7" />
|
||||
</chiclet_panel>
|
||||
</layout_panel>
|
||||
<layout_panel auto_resize="false"
|
||||
</chiclet_panel>
|
||||
</layout_panel>
|
||||
<layout_panel auto_resize="false"
|
||||
user_resize="false"
|
||||
width="4"
|
||||
min_width="4"/>
|
||||
<layout_panel
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="right"
|
||||
height="28"
|
||||
|
|
@ -393,7 +467,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
|
|||
top="0"
|
||||
user_resize="false"
|
||||
width="37">
|
||||
<chiclet_im_well
|
||||
<chiclet_im_well
|
||||
follows="right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
|
|
@ -402,7 +476,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
|
|||
name="im_well"
|
||||
top="0"
|
||||
width="35">
|
||||
<!--
|
||||
<!--
|
||||
Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
|
||||
xml attribute Description
|
||||
image_unselected "Unlit" - there are no new messages
|
||||
|
|
@ -410,7 +484,7 @@ image_selected "Unlit" + "Selected" - there are no new messages and the
|
|||
image_pressed "Lit" - there are new messages
|
||||
image_pressed_selected "Lit" + "Selected" - there are new messages and the Well is open
|
||||
-->
|
||||
<button
|
||||
<button
|
||||
auto_resize="true"
|
||||
follows="right"
|
||||
halign="center"
|
||||
|
|
@ -425,13 +499,13 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
|
|||
name="Unread IM messages"
|
||||
tool_tip="Conversations"
|
||||
width="34">
|
||||
<init_callback
|
||||
<init_callback
|
||||
function="Button.SetDockableFloaterToggle"
|
||||
parameter="im_well_window" />
|
||||
</button>
|
||||
</chiclet_im_well>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
</button>
|
||||
</chiclet_im_well>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="right"
|
||||
height="28"
|
||||
|
|
@ -442,7 +516,7 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
|
|||
top="0"
|
||||
user_resize="false"
|
||||
width="37">
|
||||
<chiclet_notification
|
||||
<chiclet_notification
|
||||
follows="right"
|
||||
height="23"
|
||||
layout="topleft"
|
||||
|
|
@ -451,7 +525,7 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
|
|||
name="notification_well"
|
||||
top="5"
|
||||
width="35">
|
||||
<button
|
||||
<button
|
||||
auto_resize="true"
|
||||
bottom_pad="3"
|
||||
follows="right"
|
||||
|
|
@ -467,7 +541,7 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
|
|||
name="Unread"
|
||||
tool_tip="Notifications"
|
||||
width="34">
|
||||
<init_callback
|
||||
<init_callback
|
||||
function="Button.SetDockableFloaterToggle"
|
||||
parameter="notification_well_window" />
|
||||
</button>
|
||||
|
|
@ -479,5 +553,5 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
|
|||
min_width="4"
|
||||
name="DUMMY2"
|
||||
width="8" />
|
||||
</layout_stack>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
|
|
|
|||
Loading…
Reference in New Issue